=============================================================================== 0004acec : uint32_t TOD_MICROSECONDS_TO_TICKS( uint32_t microseconds ) { return (microseconds / rtems_configuration_get_microseconds_per_tick()); } 4acec: 41f9 0006 1a30 lea 61a30 ,%a0 <== NOT EXECUTED #include uint32_t TOD_MICROSECONDS_TO_TICKS( uint32_t microseconds ) { 4acf2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return (microseconds / rtems_configuration_get_microseconds_per_tick()); } 4acf6: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4acfa: 4e5e unlk %fp <== NOT EXECUTED 4acfc: 4c50 0000 remul %a0@,%d0,%d0 <== NOT EXECUTED ... =============================================================================== 00046c1c : #include uint32_t TOD_MILLISECONDS_TO_TICKS( uint32_t milliseconds ) { 46c1c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return (milliseconds / rtems_configuration_get_milliseconds_per_tick()); 46c20: 2039 0005 dd50 movel 5dd50 ,%d0 <== NOT EXECUTED #include uint32_t TOD_MILLISECONDS_TO_TICKS( uint32_t milliseconds ) { 46c26: 2f02 movel %d2,%sp@- <== NOT EXECUTED return (milliseconds / rtems_configuration_get_milliseconds_per_tick()); 46c28: 243c 0000 03e8 movel #1000,%d2 <== NOT EXECUTED 46c2e: 4c42 0000 remul %d2,%d0,%d0 <== NOT EXECUTED } 46c32: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 46c36: 4c40 2002 remul %d0,%d2,%d2 <== NOT EXECUTED 46c3a: 2002 movel %d2,%d0 <== NOT EXECUTED 46c3c: 241f movel %sp@+,%d2 <== NOT EXECUTED 46c3e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004c74c : uint32_t TOD_TICKS_PER_SECOND_method(void) { return (TOD_MICROSECONDS_PER_SECOND / rtems_configuration_get_microseconds_per_tick()); } 4c74c: 41f9 0005 cba0 lea 5cba0 ,%a0 <== NOT EXECUTED #include #include #include uint32_t TOD_TICKS_PER_SECOND_method(void) { 4c752: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return (TOD_MICROSECONDS_PER_SECOND / rtems_configuration_get_microseconds_per_tick()); } 4c756: 203c 000f 4240 movel #1000000,%d0 <== NOT EXECUTED 4c75c: 4e5e unlk %fp <== NOT EXECUTED 4c75e: 4c50 0000 remul %a0@,%d0,%d0 <== NOT EXECUTED =============================================================================== 00045f80 <_API_Mutex_Unlock>: #include void _API_Mutex_Unlock( API_Mutex_Control *the_mutex ) { 45f80: 4e56 0000 linkw %fp,#0 rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 45f84: 2039 0005 e478 movel 5e478 <_Thread_Dispatch_disable_level>,%d0 45f8a: 5280 addql #1,%d0 45f8c: 206e 0008 moveal %fp@(8),%a0 45f90: 23c0 0005 e478 movel %d0,5e478 <_Thread_Dispatch_disable_level> _Thread_Disable_dispatch(); _CORE_mutex_Surrender( 45f96: 42a7 clrl %sp@- 45f98: 2f28 0008 movel %a0@(8),%sp@- 45f9c: 4868 0010 pea %a0@(16) 45fa0: 4eb9 0004 6204 jsr 46204 <_CORE_mutex_Surrender> &the_mutex->Mutex, the_mutex->Object.id, NULL ); _Thread_Enable_dispatch(); 45fa6: 4fef 000c lea %sp@(12),%sp } 45faa: 4e5e unlk %fp _CORE_mutex_Surrender( &the_mutex->Mutex, the_mutex->Object.id, NULL ); _Thread_Enable_dispatch(); 45fac: 4ef9 0004 779a jmp 4779a <_Thread_Enable_dispatch> ... =============================================================================== 0004e5b4 <_Barrier_Translate_core_barrier_return_code>: #if defined(RTEMS_DEBUG) if ( the_barrier_status > CORE_BARRIER_STATUS_LAST ) return RTEMS_INTERNAL_ERROR; #endif return _Barrier_Translate_core_barrier_return_code_[the_barrier_status]; } 4e5b4: 41f9 0005 f168 lea 5f168 <_Barrier_Translate_core_barrier_return_code_>,%a0<== NOT EXECUTED }; rtems_status_code _Barrier_Translate_core_barrier_return_code ( CORE_barrier_Status the_barrier_status ) { 4e5ba: 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]; } 4e5be: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4e5c2: 4e5e unlk %fp <== NOT EXECUTED 4e5c4: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED ... =============================================================================== 00048128 <_CORE_RWLock_Initialize>: void _CORE_RWLock_Initialize( CORE_RWLock_Control *the_rwlock, CORE_RWLock_Attributes *the_rwlock_attributes ) { 48128: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4812c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED the_rwlock->Attributes = *the_rwlock_attributes; 48130: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED 48134: 2151 0040 movel %a1@,%a0@(64) <== NOT EXECUTED /* the_rwlock->number_of_waiting_threads = 0; */ the_rwlock->number_of_readers = 0; 48138: 42a8 0048 clrl %a0@(72) <== NOT EXECUTED the_rwlock->current_state = CORE_RWLOCK_UNLOCKED; 4813c: 42a8 0044 clrl %a0@(68) <== NOT EXECUTED _Thread_queue_Initialize( 48140: 4878 0003 pea 3 <== NOT EXECUTED 48144: 2f3c 0002 0000 movel #131072,%sp@- <== NOT EXECUTED 4814a: 42a7 clrl %sp@- <== NOT EXECUTED 4814c: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4814e: 4eb9 0004 9ff4 jsr 49ff4 <_Thread_queue_Initialize> <== NOT EXECUTED 48154: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED &the_rwlock->Wait_queue, THREAD_QUEUE_DISCIPLINE_FIFO, STATES_WAITING_FOR_RWLOCK, CORE_RWLOCK_TIMEOUT ); } 48158: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004815c <_CORE_RWLock_Obtain_for_reading>: * If unlocked, then OK to read. * If locked for reading and no waiters, then OK to read. * If any thread is waiting, then we wait. */ _ISR_Disable( level ); 4815c: 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 ) { 48162: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 48166: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED 4816a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4816e: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED 48172: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED 48176: 1a2e 0013 moveb %fp@(19),%d5 <== NOT EXECUTED ISR_Level level; Thread_Control *executing = _Thread_Executing; 4817a: 2679 0006 1566 moveal 61566 <_Per_CPU_Information+0xc>,%a3 <== NOT EXECUTED * If unlocked, then OK to read. * If locked for reading and no waiters, then OK to read. * If any thread is waiting, then we wait. */ _ISR_Disable( level ); 48180: 40c2 movew %sr,%d2 <== NOT EXECUTED 48182: 8082 orl %d2,%d0 <== NOT EXECUTED 48184: 46c0 movew %d0,%sr <== NOT EXECUTED switch ( the_rwlock->current_state ) { 48186: 202a 0044 movel %a2@(68),%d0 <== NOT EXECUTED 4818a: 6708 beqs 48194 <_CORE_RWLock_Obtain_for_reading+0x38><== NOT EXECUTED 4818c: 7201 moveq #1,%d1 <== NOT EXECUTED 4818e: b280 cmpl %d0,%d1 <== NOT EXECUTED 48190: 662a bnes 481bc <_CORE_RWLock_Obtain_for_reading+0x60><== NOT EXECUTED 48192: 600e bras 481a2 <_CORE_RWLock_Obtain_for_reading+0x46><== NOT EXECUTED case CORE_RWLOCK_UNLOCKED: the_rwlock->current_state = CORE_RWLOCK_LOCKED_FOR_READING; 48194: 7001 moveq #1,%d0 <== NOT EXECUTED the_rwlock->number_of_readers += 1; 48196: 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; 4819a: 2540 0044 movel %d0,%a2@(68) <== NOT EXECUTED the_rwlock->number_of_readers += 1; _ISR_Enable( level ); 4819e: 46c2 movew %d2,%sr <== NOT EXECUTED 481a0: 6014 bras 481b6 <_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 ); 481a2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 481a4: 4eb9 0004 9f60 jsr 49f60 <_Thread_queue_First> <== NOT EXECUTED if ( !waiter ) { 481aa: 588f addql #4,%sp <== NOT EXECUTED 481ac: 4a80 tstl %d0 <== NOT EXECUTED 481ae: 660c bnes 481bc <_CORE_RWLock_Obtain_for_reading+0x60><== NOT EXECUTED the_rwlock->number_of_readers += 1; 481b0: 52aa 0048 addql #1,%a2@(72) <== NOT EXECUTED _ISR_Enable( level ); 481b4: 46c2 movew %d2,%sr <== NOT EXECUTED executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL; 481b6: 42ab 0034 clrl %a3@(52) <== NOT EXECUTED return; 481ba: 6046 bras 48202 <_CORE_RWLock_Obtain_for_reading+0xa6><== NOT EXECUTED /* * If the thread is not willing to wait, then return immediately. */ if ( !wait ) { 481bc: 4a05 tstb %d5 <== NOT EXECUTED 481be: 660a bnes 481ca <_CORE_RWLock_Obtain_for_reading+0x6e><== NOT EXECUTED _ISR_Enable( level ); 481c0: 46c2 movew %d2,%sr <== NOT EXECUTED executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE; 481c2: 7202 moveq #2,%d1 <== NOT EXECUTED 481c4: 2741 0034 movel %d1,%a3@(52) <== NOT EXECUTED 481c8: 6038 bras 48202 <_CORE_RWLock_Obtain_for_reading+0xa6><== NOT EXECUTED 481ca: 7001 moveq #1,%d0 <== NOT EXECUTED 481cc: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED /* * We need to wait to enter this critical section */ _Thread_queue_Enter_critical_section( &the_rwlock->Wait_queue ); executing->Wait.queue = &the_rwlock->Wait_queue; 481d0: 274a 0044 movel %a2,%a3@(68) <== NOT EXECUTED executing->Wait.id = id; 481d4: 2744 0020 movel %d4,%a3@(32) <== NOT EXECUTED executing->Wait.option = CORE_RWLOCK_THREAD_WAITING_FOR_READ; 481d8: 42ab 0030 clrl %a3@(48) <== NOT EXECUTED executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL; 481dc: 42ab 0034 clrl %a3@(52) <== NOT EXECUTED _ISR_Enable( level ); 481e0: 46c2 movew %d2,%sr <== NOT EXECUTED _Thread_queue_Enqueue_with_handler( 481e2: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED 481e6: 223c 0004 834c movel #295756,%d1 <== NOT EXECUTED 481ec: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED timeout, _CORE_RWLock_Timeout ); /* return to API level so it can dispatch and we block */ } 481f0: 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( 481f6: 2d41 0010 movel %d1,%fp@(16) <== NOT EXECUTED timeout, _CORE_RWLock_Timeout ); /* return to API level so it can dispatch and we block */ } 481fa: 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( 481fc: 4ef9 0004 9c4c jmp 49c4c <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED timeout, _CORE_RWLock_Timeout ); /* return to API level so it can dispatch and we block */ } 48202: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 48208: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004820c <_CORE_RWLock_Obtain_for_writing>: * Otherwise, we have to block. * If locked for reading and no waiters, then OK to read. * If any thread is waiting, then we wait. */ _ISR_Disable( level ); 4820c: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED Objects_Id id, bool wait, Watchdog_Interval timeout, CORE_RWLock_API_mp_support_callout api_rwlock_mp_support ) { 48212: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 48216: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED 4821a: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 4821e: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 48222: 242e 0014 movel %fp@(20),%d2 <== NOT EXECUTED ISR_Level level; Thread_Control *executing = _Thread_Executing; 48226: 2079 0006 1566 moveal 61566 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED Objects_Id id, bool wait, Watchdog_Interval timeout, CORE_RWLock_API_mp_support_callout api_rwlock_mp_support ) { 4822c: 182e 0013 moveb %fp@(19),%d4 <== 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 ); 48230: 40c0 movew %sr,%d0 <== NOT EXECUTED 48232: 8280 orl %d0,%d1 <== NOT EXECUTED 48234: 46c1 movew %d1,%sr <== NOT EXECUTED switch ( the_rwlock->current_state ) { 48236: 4aa9 0044 tstl %a1@(68) <== NOT EXECUTED 4823a: 660e bnes 4824a <_CORE_RWLock_Obtain_for_writing+0x3e><== NOT EXECUTED case CORE_RWLOCK_UNLOCKED: the_rwlock->current_state = CORE_RWLOCK_LOCKED_FOR_WRITING; 4823c: 7202 moveq #2,%d1 <== NOT EXECUTED 4823e: 2341 0044 movel %d1,%a1@(68) <== NOT EXECUTED _ISR_Enable( level ); 48242: 46c0 movew %d0,%sr <== NOT EXECUTED executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL; 48244: 42a8 0034 clrl %a0@(52) <== NOT EXECUTED return; 48248: 6044 bras 4828e <_CORE_RWLock_Obtain_for_writing+0x82><== NOT EXECUTED /* * If the thread is not willing to wait, then return immediately. */ if ( !wait ) { 4824a: 4a04 tstb %d4 <== NOT EXECUTED 4824c: 660a bnes 48258 <_CORE_RWLock_Obtain_for_writing+0x4c><== NOT EXECUTED _ISR_Enable( level ); 4824e: 46c0 movew %d0,%sr <== NOT EXECUTED executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE; 48250: 7002 moveq #2,%d0 <== NOT EXECUTED 48252: 2140 0034 movel %d0,%a0@(52) <== NOT EXECUTED 48256: 6036 bras 4828e <_CORE_RWLock_Obtain_for_writing+0x82><== NOT EXECUTED 48258: 7201 moveq #1,%d1 <== NOT EXECUTED 4825a: 2341 0030 movel %d1,%a1@(48) <== NOT EXECUTED /* * We need to wait to enter this critical section */ _Thread_queue_Enter_critical_section( &the_rwlock->Wait_queue ); executing->Wait.queue = &the_rwlock->Wait_queue; 4825e: 2149 0044 movel %a1,%a0@(68) <== NOT EXECUTED executing->Wait.id = id; 48262: 2143 0020 movel %d3,%a0@(32) <== NOT EXECUTED executing->Wait.option = CORE_RWLOCK_THREAD_WAITING_FOR_WRITE; 48266: 2141 0030 movel %d1,%a0@(48) <== NOT EXECUTED executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL; 4826a: 42a8 0034 clrl %a0@(52) <== NOT EXECUTED _ISR_Enable( level ); 4826e: 46c0 movew %d0,%sr <== NOT EXECUTED _Thread_queue_Enqueue_with_handler( 48270: 2d42 000c movel %d2,%fp@(12) <== NOT EXECUTED 48274: 203c 0004 834c movel #295756,%d0 <== NOT EXECUTED 4827a: 2d49 0008 movel %a1,%fp@(8) <== NOT EXECUTED _CORE_RWLock_Timeout ); /* return to API level so it can dispatch and we block */ } 4827e: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED executing->Wait.id = id; executing->Wait.option = CORE_RWLOCK_THREAD_WAITING_FOR_WRITE; executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL; _ISR_Enable( level ); _Thread_queue_Enqueue_with_handler( 48282: 2d40 0010 movel %d0,%fp@(16) <== NOT EXECUTED _CORE_RWLock_Timeout ); /* return to API level so it can dispatch and we block */ } 48286: 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( 48288: 4ef9 0004 9c4c jmp 49c4c <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED _CORE_RWLock_Timeout ); /* return to API level so it can dispatch and we block */ } 4828e: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED 48292: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00048298 <_CORE_RWLock_Release>: * Otherwise, we have to block. * If locked for reading and no waiters, then OK to read. * If any thread is waiting, then we wait. */ _ISR_Disable( level ); 48298: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED */ CORE_RWLock_Status _CORE_RWLock_Release( CORE_RWLock_Control *the_rwlock ) { 4829e: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED ISR_Level level; Thread_Control *executing = _Thread_Executing; 482a2: 2079 0006 1566 moveal 61566 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED */ CORE_RWLock_Status _CORE_RWLock_Release( CORE_RWLock_Control *the_rwlock ) { 482a8: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED 482ac: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED * Otherwise, we have to block. * If locked for reading and no waiters, then OK to read. * If any thread is waiting, then we wait. */ _ISR_Disable( level ); 482b0: 40c0 movew %sr,%d0 <== NOT EXECUTED 482b2: 8280 orl %d0,%d1 <== NOT EXECUTED 482b4: 46c1 movew %d1,%sr <== NOT EXECUTED if ( the_rwlock->current_state == CORE_RWLOCK_UNLOCKED){ 482b6: 222a 0044 movel %a2@(68),%d1 <== NOT EXECUTED 482ba: 660a bnes 482c6 <_CORE_RWLock_Release+0x2e> <== NOT EXECUTED _ISR_Enable( level ); 482bc: 46c0 movew %d0,%sr <== NOT EXECUTED executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE; 482be: 7002 moveq #2,%d0 <== NOT EXECUTED 482c0: 2140 0034 movel %d0,%a0@(52) <== NOT EXECUTED return CORE_RWLOCK_SUCCESSFUL; 482c4: 6078 bras 4833e <_CORE_RWLock_Release+0xa6> <== NOT EXECUTED } if ( the_rwlock->current_state == CORE_RWLOCK_LOCKED_FOR_READING ) { 482c6: 7401 moveq #1,%d2 <== NOT EXECUTED 482c8: b481 cmpl %d1,%d2 <== NOT EXECUTED 482ca: 6610 bnes 482dc <_CORE_RWLock_Release+0x44> <== NOT EXECUTED the_rwlock->number_of_readers -= 1; 482cc: 222a 0048 movel %a2@(72),%d1 <== NOT EXECUTED 482d0: 5381 subql #1,%d1 <== NOT EXECUTED 482d2: 2541 0048 movel %d1,%a2@(72) <== NOT EXECUTED if ( the_rwlock->number_of_readers != 0 ) { 482d6: 6704 beqs 482dc <_CORE_RWLock_Release+0x44> <== NOT EXECUTED /* must be unlocked again */ _ISR_Enable( level ); 482d8: 46c0 movew %d0,%sr <== NOT EXECUTED return CORE_RWLOCK_SUCCESSFUL; 482da: 6062 bras 4833e <_CORE_RWLock_Release+0xa6> <== NOT EXECUTED } } /* CORE_RWLOCK_LOCKED_FOR_WRITING or READING with readers */ executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL; 482dc: 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; 482e0: 42aa 0044 clrl %a2@(68) <== NOT EXECUTED _ISR_Enable( level ); 482e4: 46c0 movew %d0,%sr <== NOT EXECUTED next = _Thread_queue_Dequeue( &the_rwlock->Wait_queue ); 482e6: 2f0a movel %a2,%sp@- <== NOT EXECUTED 482e8: 4eb9 0004 9b0c jsr 49b0c <_Thread_queue_Dequeue> <== NOT EXECUTED if ( next ) { 482ee: 588f addql #4,%sp <== NOT EXECUTED 482f0: 4a80 tstl %d0 <== NOT EXECUTED 482f2: 674a beqs 4833e <_CORE_RWLock_Release+0xa6> <== NOT EXECUTED if ( next->Wait.option == CORE_RWLOCK_THREAD_WAITING_FOR_WRITE ) { 482f4: 7201 moveq #1,%d1 <== NOT EXECUTED 482f6: 2040 moveal %d0,%a0 <== NOT EXECUTED 482f8: b2a8 0030 cmpl %a0@(48),%d1 <== NOT EXECUTED 482fc: 6608 bnes 48306 <_CORE_RWLock_Release+0x6e> <== NOT EXECUTED the_rwlock->current_state = CORE_RWLOCK_LOCKED_FOR_WRITING; 482fe: 7002 moveq #2,%d0 <== NOT EXECUTED 48300: 2540 0044 movel %d0,%a2@(68) <== NOT EXECUTED return CORE_RWLOCK_SUCCESSFUL; 48304: 6038 bras 4833e <_CORE_RWLock_Release+0xa6> <== 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; 48306: 7201 moveq #1,%d1 <== NOT EXECUTED } /* * Must be CORE_RWLOCK_THREAD_WAITING_FOR_READING */ the_rwlock->number_of_readers += 1; 48308: 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 ); 4830c: 49f9 0004 9f60 lea 49f60 <_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 ); 48312: 47f9 0004 9e30 lea 49e30 <_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; 48318: 2541 0044 movel %d1,%a2@(68) <== NOT EXECUTED /* * Now see if more readers can be let go. */ while ( 1 ) { next = _Thread_queue_First( &the_rwlock->Wait_queue ); 4831c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4831e: 4e94 jsr %a4@ <== NOT EXECUTED if ( !next || 48320: 588f addql #4,%sp <== NOT EXECUTED 48322: 4a80 tstl %d0 <== NOT EXECUTED 48324: 6718 beqs 4833e <_CORE_RWLock_Release+0xa6> <== NOT EXECUTED 48326: 7401 moveq #1,%d2 <== NOT EXECUTED 48328: 2040 moveal %d0,%a0 <== NOT EXECUTED 4832a: b4a8 0030 cmpl %a0@(48),%d2 <== NOT EXECUTED 4832e: 670e beqs 4833e <_CORE_RWLock_Release+0xa6> <== NOT EXECUTED next->Wait.option == CORE_RWLOCK_THREAD_WAITING_FOR_WRITE ) return CORE_RWLOCK_SUCCESSFUL; the_rwlock->number_of_readers += 1; 48330: 52aa 0048 addql #1,%a2@(72) <== NOT EXECUTED _Thread_queue_Extract( &the_rwlock->Wait_queue, next ); 48334: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48336: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48338: 4e93 jsr %a3@ <== NOT EXECUTED } 4833a: 508f addql #8,%sp <== NOT EXECUTED 4833c: 60de bras 4831c <_CORE_RWLock_Release+0x84> <== NOT EXECUTED } /* indentation is to match _ISR_Disable at top */ return CORE_RWLOCK_SUCCESSFUL; } 4833e: 4280 clrl %d0 <== NOT EXECUTED 48340: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED 48346: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004834c <_CORE_RWLock_Timeout>: void _CORE_RWLock_Timeout( Objects_Id id, void *ignored ) { 4834c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED Thread_Control *the_thread; Objects_Locations location; the_thread = _Thread_Get( id, &location ); 48350: 486e fffc pea %fp@(-4) <== NOT EXECUTED 48354: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 48358: 4eb9 0004 9810 jsr 49810 <_Thread_Get> <== NOT EXECUTED switch ( location ) { 4835e: 508f addql #8,%sp <== NOT EXECUTED 48360: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 48364: 6618 bnes 4837e <_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 ); 48366: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48368: 4eb9 0004 a060 jsr 4a060 <_Thread_queue_Process_timeout> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void ) { RTEMS_COMPILER_MEMORY_BARRIER(); _Thread_Dispatch_disable_level -= 1; 4836e: 588f addql #4,%sp <== NOT EXECUTED 48370: 2039 0006 10dc movel 610dc <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 48376: 5380 subql #1,%d0 <== NOT EXECUTED 48378: 23c0 0006 10dc movel %d0,610dc <_Thread_Dispatch_disable_level><== NOT EXECUTED _Thread_Unnest_dispatch(); break; } } 4837e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004ba10 <_CORE_barrier_Release>: #else Objects_Id id __attribute__((unused)), CORE_barrier_API_mp_support_callout api_barrier_mp_support __attribute__((unused)) #endif ) { 4ba10: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4ba14: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 4ba18: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED Thread_Control *the_thread; uint32_t count; count = 0; 4ba1c: 4282 clrl %d2 <== NOT EXECUTED while ( (the_thread = _Thread_queue_Dequeue(&the_barrier->Wait_queue)) ) { 4ba1e: 47f9 0004 8aac lea 48aac <_Thread_queue_Dequeue>,%a3 <== NOT EXECUTED 4ba24: 6002 bras 4ba28 <_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++; 4ba26: 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)) ) { 4ba28: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4ba2a: 4e93 jsr %a3@ <== NOT EXECUTED 4ba2c: 588f addql #4,%sp <== NOT EXECUTED 4ba2e: 4a80 tstl %d0 <== NOT EXECUTED 4ba30: 66f4 bnes 4ba26 <_CORE_barrier_Release+0x16> <== NOT EXECUTED #endif count++; } the_barrier->number_of_waiting_threads = 0; return count; } 4ba32: 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; 4ba34: 42aa 0048 clrl %a2@(72) <== NOT EXECUTED return count; } 4ba38: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED 4ba3e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00047018 <_CORE_barrier_Wait>: Thread_Control *executing; ISR_Level level; executing = _Thread_Executing; executing->Wait.return_code = CORE_BARRIER_STATUS_SUCCESSFUL; _ISR_Disable( level ); 47018: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED Objects_Id id, bool wait, Watchdog_Interval timeout, CORE_barrier_API_mp_support_callout api_barrier_mp_support ) { 4701e: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED Thread_Control *executing; ISR_Level level; executing = _Thread_Executing; 47022: 2279 0005 ff06 moveal 5ff06 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED Objects_Id id, bool wait, Watchdog_Interval timeout, CORE_barrier_API_mp_support_callout api_barrier_mp_support ) { 47028: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 4702c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED Thread_Control *executing; ISR_Level level; executing = _Thread_Executing; executing->Wait.return_code = CORE_BARRIER_STATUS_SUCCESSFUL; 47030: 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 ) { 47034: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 47038: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED 4703c: 282e 0018 movel %fp@(24),%d4 <== NOT EXECUTED Thread_Control *executing; ISR_Level level; executing = _Thread_Executing; executing->Wait.return_code = CORE_BARRIER_STATUS_SUCCESSFUL; _ISR_Disable( level ); 47040: 40c1 movew %sr,%d1 <== NOT EXECUTED 47042: 8081 orl %d1,%d0 <== NOT EXECUTED 47044: 46c0 movew %d0,%sr <== NOT EXECUTED the_barrier->number_of_waiting_threads++; 47046: 2028 0048 movel %a0@(72),%d0 <== NOT EXECUTED 4704a: 5280 addql #1,%d0 <== NOT EXECUTED 4704c: 2140 0048 movel %d0,%a0@(72) <== NOT EXECUTED if ( _CORE_barrier_Is_automatic( &the_barrier->Attributes ) ) { 47050: 4aa8 0040 tstl %a0@(64) <== NOT EXECUTED 47054: 6626 bnes 4707c <_CORE_barrier_Wait+0x64> <== NOT EXECUTED if ( the_barrier->number_of_waiting_threads == 47056: b0a8 0044 cmpl %a0@(68),%d0 <== NOT EXECUTED 4705a: 6620 bnes 4707c <_CORE_barrier_Wait+0x64> <== NOT EXECUTED the_barrier->Attributes.maximum_count) { executing->Wait.return_code = CORE_BARRIER_STATUS_AUTOMATICALLY_RELEASED; 4705c: 7001 moveq #1,%d0 <== NOT EXECUTED 4705e: 2340 0034 movel %d0,%a1@(52) <== NOT EXECUTED _ISR_Enable( level ); 47062: 46c1 movew %d1,%sr <== NOT EXECUTED _CORE_barrier_Release( the_barrier, id, api_barrier_mp_support ); 47064: 2d44 0010 movel %d4,%fp@(16) <== NOT EXECUTED 47068: 2d42 000c movel %d2,%fp@(12) <== NOT EXECUTED executing->Wait.queue = &the_barrier->Wait_queue; executing->Wait.id = id; _ISR_Enable( level ); _Thread_queue_Enqueue( &the_barrier->Wait_queue, timeout ); } 4706c: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED if ( _CORE_barrier_Is_automatic( &the_barrier->Attributes ) ) { if ( the_barrier->number_of_waiting_threads == the_barrier->Attributes.maximum_count) { executing->Wait.return_code = CORE_BARRIER_STATUS_AUTOMATICALLY_RELEASED; _ISR_Enable( level ); _CORE_barrier_Release( the_barrier, id, api_barrier_mp_support ); 47070: 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 ); } 47074: 4e5e unlk %fp <== NOT EXECUTED if ( _CORE_barrier_Is_automatic( &the_barrier->Attributes ) ) { if ( the_barrier->number_of_waiting_threads == the_barrier->Attributes.maximum_count) { executing->Wait.return_code = CORE_BARRIER_STATUS_AUTOMATICALLY_RELEASED; _ISR_Enable( level ); _CORE_barrier_Release( the_barrier, id, api_barrier_mp_support ); 47076: 4ef9 0004 ba10 jmp 4ba10 <_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; 4707c: 7001 moveq #1,%d0 <== NOT EXECUTED 4707e: 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; 47082: 2348 0044 movel %a0,%a1@(68) <== NOT EXECUTED executing->Wait.id = id; 47086: 2342 0020 movel %d2,%a1@(32) <== NOT EXECUTED _ISR_Enable( level ); 4708a: 46c1 movew %d1,%sr <== NOT EXECUTED _Thread_queue_Enqueue( &the_barrier->Wait_queue, timeout ); 4708c: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED 47090: 203c 0004 8f00 movel #298752,%d0 <== NOT EXECUTED 47096: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED } 4709a: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED _Thread_queue_Enter_critical_section( &the_barrier->Wait_queue ); executing->Wait.queue = &the_barrier->Wait_queue; executing->Wait.id = id; _ISR_Enable( level ); _Thread_queue_Enqueue( &the_barrier->Wait_queue, timeout ); 4709e: 2d40 0010 movel %d0,%fp@(16) <== NOT EXECUTED } 470a2: 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 ); 470a4: 4ef9 0004 8bec jmp 48bec <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED ... =============================================================================== 00052b1c <_CORE_message_queue_Broadcast>: Objects_Id id __attribute__((unused)), CORE_message_queue_API_mp_support_callout api_message_queue_mp_support __attribute__((unused)), #endif uint32_t *count ) { 52b1c: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 52b20: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@ <== NOT EXECUTED 52b24: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 52b28: 2a2e 000c movel %fp@(12),%d5 <== NOT EXECUTED 52b2c: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED 52b30: 286e 001c moveal %fp@(28),%a4 <== NOT EXECUTED Thread_Control *the_thread; uint32_t number_broadcasted; Thread_Wait_information *waitp; if ( size > the_message_queue->maximum_message_size ) { 52b34: b6aa 004c cmpl %a2@(76),%d3 <== NOT EXECUTED 52b38: 6244 bhis 52b7e <_CORE_message_queue_Broadcast+0x62><== 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 ) { 52b3a: 4aaa 0048 tstl %a2@(72) <== NOT EXECUTED 52b3e: 6610 bnes 52b50 <_CORE_message_queue_Broadcast+0x34><== NOT EXECUTED 52b40: 4282 clrl %d2 <== NOT EXECUTED /* * There must be no pending messages if there is a thread waiting to * receive a message. */ number_broadcasted = 0; while ((the_thread = 52b42: 283c 0005 51d8 movel #348632,%d4 <== NOT EXECUTED const void *source, void *destination, size_t size ) { memcpy(destination, source, size); 52b48: 4bf9 0005 a7e8 lea 5a7e8 ,%a5 <== NOT EXECUTED 52b4e: 601a bras 52b6a <_CORE_message_queue_Broadcast+0x4e><== 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; 52b50: 4294 clrl %a4@ <== NOT EXECUTED 52b52: 6026 bras 52b7a <_CORE_message_queue_Broadcast+0x5e><== NOT EXECUTED 52b54: 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; 52b56: 5282 addql #1,%d2 <== NOT EXECUTED 52b58: 2f05 movel %d5,%sp@- <== NOT EXECUTED 52b5a: 2f2b 002c movel %a3@(44),%sp@- <== NOT EXECUTED 52b5e: 4e95 jsr %a5@ <== NOT EXECUTED buffer, waitp->return_argument_second.mutable_object, size ); *(size_t *) the_thread->Wait.return_argument = size; 52b60: 206b 0028 moveal %a3@(40),%a0 <== NOT EXECUTED 52b64: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 52b68: 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 = 52b6a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 52b6c: 2044 moveal %d4,%a0 <== NOT EXECUTED 52b6e: 4e90 jsr %a0@ <== NOT EXECUTED 52b70: 588f addql #4,%sp <== NOT EXECUTED 52b72: 2640 moveal %d0,%a3 <== NOT EXECUTED 52b74: 4a80 tstl %d0 <== NOT EXECUTED 52b76: 66dc bnes 52b54 <_CORE_message_queue_Broadcast+0x38><== NOT EXECUTED if ( !_Objects_Is_local_id( the_thread->Object.id ) ) (*api_message_queue_mp_support) ( the_thread, id ); #endif } *count = number_broadcasted; 52b78: 2882 movel %d2,%a4@ <== NOT EXECUTED return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL; 52b7a: 4280 clrl %d0 <== NOT EXECUTED 52b7c: 6002 bras 52b80 <_CORE_message_queue_Broadcast+0x64><== NOT EXECUTED Thread_Control *the_thread; uint32_t number_broadcasted; Thread_Wait_information *waitp; if ( size > the_message_queue->maximum_message_size ) { return CORE_MESSAGE_QUEUE_STATUS_INVALID_SIZE; 52b7e: 7001 moveq #1,%d0 <== NOT EXECUTED #endif } *count = number_broadcasted; return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL; } 52b80: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED 52b86: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004baa8 <_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 ) { 4baa8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4baac: 2f0a movel %a2,%sp@- <== NOT EXECUTED /* * This will flush blocked threads whether they were blocked on * a send or receive. */ _Thread_queue_Flush( 4baae: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4bab2: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED void _CORE_message_queue_Close( CORE_message_queue_Control *the_message_queue, Thread_queue_Flush_callout remote_extract_callout, uint32_t status ) { 4bab6: 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( 4baba: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4babc: 4eb9 0004 db7c jsr 4db7c <_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 ) 4bac2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4bac6: 4aaa 0048 tstl %a2@(72) <== NOT EXECUTED 4baca: 670a beqs 4bad6 <_CORE_message_queue_Close+0x2e> <== NOT EXECUTED (void) _CORE_message_queue_Flush_support( the_message_queue ); 4bacc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4bace: 4eb9 0004 bae8 jsr 4bae8 <_CORE_message_queue_Flush_support><== NOT EXECUTED 4bad4: 588f addql #4,%sp <== NOT EXECUTED (void) _Workspace_Free( the_message_queue->message_buffers ); 4bad6: 2d6a 005c 0008 movel %a2@(92),%fp@(8) <== NOT EXECUTED } 4badc: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4bae0: 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 ); 4bae2: 4ef9 0004 e60c jmp 4e60c <_Workspace_Free> <== NOT EXECUTED =============================================================================== 00052bcc <_CORE_message_queue_Flush>: */ uint32_t _CORE_message_queue_Flush( CORE_message_queue_Control *the_message_queue ) { 52bcc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 52bd0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( the_message_queue->number_of_pending_messages != 0 ) 52bd4: 4aa8 0048 tstl %a0@(72) <== NOT EXECUTED 52bd8: 6708 beqs 52be2 <_CORE_message_queue_Flush+0x16> <== NOT EXECUTED return _CORE_message_queue_Flush_support( the_message_queue ); else return 0; } 52bda: 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 ); 52bdc: 4ef9 0005 2be8 jmp 52be8 <_CORE_message_queue_Flush_support><== NOT EXECUTED else return 0; } 52be2: 4280 clrl %d0 <== NOT EXECUTED 52be4: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004bae8 <_CORE_message_queue_Flush_support>: * * For now, though, we are very happy to have a small routine with * fixed execution time that only deals with pending messages. */ _ISR_Disable( level ); 4bae8: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED */ uint32_t _CORE_message_queue_Flush_support( CORE_message_queue_Control *the_message_queue ) { 4baee: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4baf2: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4baf6: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4baf8: 2f0a movel %a2,%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 ); 4bafa: 40c1 movew %sr,%d1 <== NOT EXECUTED 4bafc: 8081 orl %d1,%d0 <== NOT EXECUTED 4bafe: 46c0 movew %d0,%sr <== NOT EXECUTED count = the_message_queue->number_of_pending_messages; the_message_queue->number_of_pending_messages = 0; _ISR_Enable( level ); return count; } 4bb00: 2268 0050 moveal %a0@(80),%a1 <== NOT EXECUTED * fixed execution time that only deals with pending messages. */ _ISR_Disable( level ); inactive_head = _Chain_Head( &the_message_queue->Inactive_messages ); inactive_first = inactive_head->next;; 4bb04: 2468 0068 moveal %a0@(104),%a2 <== NOT EXECUTED count = the_message_queue->number_of_pending_messages; the_message_queue->number_of_pending_messages = 0; _ISR_Enable( level ); return count; } 4bb08: 2668 0058 moveal %a0@(88),%a3 <== NOT EXECUTED inactive_head = _Chain_Head( &the_message_queue->Inactive_messages ); inactive_first = inactive_head->next;; message_queue_first = _Chain_First( &the_message_queue->Pending_messages ); message_queue_last = _Chain_Last( &the_message_queue->Pending_messages ); inactive_head->next = message_queue_first; 4bb0c: 2149 0068 movel %a1,%a0@(104) <== NOT EXECUTED inactive_first->previous = message_queue_last; message_queue_first->previous = inactive_head; _Chain_Initialize_empty( &the_message_queue->Pending_messages ); count = the_message_queue->number_of_pending_messages; 4bb10: 2028 0048 movel %a0@(72),%d0 <== NOT EXECUTED message_queue_first = _Chain_First( &the_message_queue->Pending_messages ); message_queue_last = _Chain_Last( &the_message_queue->Pending_messages ); inactive_head->next = message_queue_first; message_queue_last->next = inactive_first; inactive_first->previous = message_queue_last; 4bb14: 254b 0004 movel %a3,%a2@(4) <== NOT EXECUTED inactive_first = inactive_head->next;; message_queue_first = _Chain_First( &the_message_queue->Pending_messages ); message_queue_last = _Chain_Last( &the_message_queue->Pending_messages ); inactive_head->next = message_queue_first; message_queue_last->next = inactive_first; 4bb18: 268a movel %a2,%a3@ <== NOT EXECUTED * For now, though, we are very happy to have a small routine with * fixed execution time that only deals with pending messages. */ _ISR_Disable( level ); inactive_head = _Chain_Head( &the_message_queue->Inactive_messages ); 4bb1a: 45e8 0068 lea %a0@(104),%a2 <== NOT EXECUTED 4bb1e: 234a 0004 movel %a2,%a1@(4) <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); 4bb22: 43e8 0054 lea %a0@(84),%a1 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); 4bb26: 45e8 0050 lea %a0@(80),%a2 <== NOT EXECUTED Chain_Node *tail = _Chain_Tail( the_chain ); 4bb2a: 2149 0050 movel %a1,%a0@(80) <== NOT EXECUTED head->next = tail; head->previous = NULL; 4bb2e: 42a8 0054 clrl %a0@(84) <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); 4bb32: 214a 0058 movel %a2,%a0@(88) <== NOT EXECUTED message_queue_first->previous = inactive_head; _Chain_Initialize_empty( &the_message_queue->Pending_messages ); count = the_message_queue->number_of_pending_messages; the_message_queue->number_of_pending_messages = 0; 4bb36: 42a8 0048 clrl %a0@(72) <== NOT EXECUTED _ISR_Enable( level ); 4bb3a: 46c1 movew %d1,%sr <== NOT EXECUTED return count; } 4bb3c: 245f moveal %sp@+,%a2 <== NOT EXECUTED 4bb3e: 265f moveal %sp@+,%a3 <== NOT EXECUTED 4bb40: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004de30 <_CORE_message_queue_Initialize>: /* * Round size up to multiple of a pointer for chain init and * check for overflow on adding overhead to each message. */ allocated_message_size = maximum_message_size; if (allocated_message_size & (sizeof(uint32_t) - 1)) { 4de30: 7003 moveq #3,%d0 <== NOT EXECUTED CORE_message_queue_Control *the_message_queue, CORE_message_queue_Attributes *the_message_queue_attributes, uint32_t maximum_pending_messages, size_t maximum_message_size ) { 4de32: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4de36: 222e 0014 movel %fp@(20),%d1 <== NOT EXECUTED 4de3a: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 4de3e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4de42: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED /* * Round size up to multiple of a pointer for chain init and * check for overflow on adding overhead to each message. */ allocated_message_size = maximum_message_size; if (allocated_message_size & (sizeof(uint32_t) - 1)) { 4de46: 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; 4de48: 2542 0044 movel %d2,%a2@(68) <== NOT EXECUTED the_message_queue->number_of_pending_messages = 0; 4de4c: 42aa 0048 clrl %a2@(72) <== NOT EXECUTED the_message_queue->maximum_message_size = maximum_message_size; 4de50: 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; 4de54: 42aa 0060 clrl %a2@(96) <== NOT EXECUTED the_message_queue->notify_argument = the_argument; 4de58: 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)) { 4de5c: 4a80 tstl %d0 <== NOT EXECUTED 4de5e: 670e beqs 4de6e <_CORE_message_queue_Initialize+0x3e><== NOT EXECUTED allocated_message_size += sizeof(uint32_t); 4de60: 2001 movel %d1,%d0 <== NOT EXECUTED 4de62: 5880 addql #4,%d0 <== NOT EXECUTED allocated_message_size &= ~(sizeof(uint32_t) - 1); 4de64: 76fc moveq #-4,%d3 <== NOT EXECUTED 4de66: c083 andl %d3,%d0 <== NOT EXECUTED } if (allocated_message_size < maximum_message_size) 4de68: b280 cmpl %d0,%d1 <== NOT EXECUTED 4de6a: 6272 bhis 4dede <_CORE_message_queue_Initialize+0xae><== NOT EXECUTED 4de6c: 6002 bras 4de70 <_CORE_message_queue_Initialize+0x40><== 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)) { 4de6e: 2001 movel %d1,%d0 <== NOT EXECUTED /* * Calculate how much total memory is required for message buffering and * check for overflow on the multiplication. */ message_buffering_required = (size_t) maximum_pending_messages * (allocated_message_size + sizeof(CORE_message_queue_Buffer_control)); 4de70: 2600 movel %d0,%d3 <== NOT EXECUTED 4de72: 0683 0000 0014 addil #20,%d3 <== NOT EXECUTED /* * Calculate how much total memory is required for message buffering and * check for overflow on the multiplication. */ message_buffering_required = (size_t) maximum_pending_messages * 4de78: 2203 movel %d3,%d1 <== NOT EXECUTED 4de7a: 4c02 1800 mulsl %d2,%d1 <== NOT EXECUTED (allocated_message_size + sizeof(CORE_message_queue_Buffer_control)); if (message_buffering_required < allocated_message_size) 4de7e: b081 cmpl %d1,%d0 <== NOT EXECUTED 4de80: 625c bhis 4dede <_CORE_message_queue_Initialize+0xae><== NOT EXECUTED /* * Attempt to allocate the message memory */ the_message_queue->message_buffers = (CORE_message_queue_Buffer *) _Workspace_Allocate( message_buffering_required ); 4de82: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4de84: 4eb9 0005 0900 jsr 50900 <_Workspace_Allocate> <== NOT EXECUTED if (the_message_queue->message_buffers == 0) 4de8a: 588f addql #4,%sp <== NOT EXECUTED return false; /* * Attempt to allocate the message memory */ the_message_queue->message_buffers = (CORE_message_queue_Buffer *) 4de8c: 2540 005c movel %d0,%a2@(92) <== NOT EXECUTED _Workspace_Allocate( message_buffering_required ); if (the_message_queue->message_buffers == 0) 4de90: 674c beqs 4dede <_CORE_message_queue_Initialize+0xae><== NOT EXECUTED /* * Initialize the pool of inactive messages, pending messages, * and set of waiting threads. */ _Chain_Initialize ( 4de92: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4de94: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4de96: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4de98: 486a 0068 pea %a2@(104) <== NOT EXECUTED 4de9c: 4eb9 0005 2b44 jsr 52b44 <_Chain_Initialize> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); 4dea2: 41ea 0054 lea %a2@(84),%a0 <== NOT EXECUTED allocated_message_size + sizeof( CORE_message_queue_Buffer_control ) ); _Chain_Initialize_empty( &the_message_queue->Pending_messages ); _Thread_queue_Initialize( 4dea6: 7001 moveq #1,%d0 <== NOT EXECUTED 4dea8: 2548 0050 movel %a0,%a2@(80) <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); 4deac: 41ea 0050 lea %a2@(80),%a0 <== NOT EXECUTED Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; head->previous = NULL; 4deb0: 42aa 0054 clrl %a2@(84) <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); 4deb4: 2548 0058 movel %a0,%a2@(88) <== NOT EXECUTED 4deb8: 4878 0006 pea 6 <== NOT EXECUTED 4debc: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 4dec0: 4878 0080 pea 80 <== NOT EXECUTED 4dec4: b090 cmpl %a0@,%d0 <== NOT EXECUTED 4dec6: 57c0 seq %d0 <== NOT EXECUTED 4dec8: 49c0 extbl %d0 <== NOT EXECUTED 4deca: 4480 negl %d0 <== NOT EXECUTED 4decc: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4dece: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4ded0: 4eb9 0004 ffac jsr 4ffac <_Thread_queue_Initialize> <== NOT EXECUTED THREAD_QUEUE_DISCIPLINE_PRIORITY : THREAD_QUEUE_DISCIPLINE_FIFO, STATES_WAITING_FOR_MESSAGE, CORE_MESSAGE_QUEUE_STATUS_TIMEOUT ); return true; 4ded6: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED 4deda: 7001 moveq #1,%d0 <== NOT EXECUTED 4dedc: 6002 bras 4dee0 <_CORE_message_queue_Initialize+0xb0><== NOT EXECUTED */ the_message_queue->message_buffers = (CORE_message_queue_Buffer *) _Workspace_Allocate( message_buffering_required ); if (the_message_queue->message_buffers == 0) return false; 4dede: 4200 clrb %d0 <== NOT EXECUTED STATES_WAITING_FOR_MESSAGE, CORE_MESSAGE_QUEUE_STATUS_TIMEOUT ); return true; } 4dee0: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 4dee6: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00052b88 <_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 ) { 52b88: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 52b8c: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED 52b90: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED 52b94: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 52b98: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 52b9c: 2340 0008 movel %d0,%a1@(8) <== NOT EXECUTED _CORE_message_queue_Append_unprotected(the_message_queue, the_message); else _CORE_message_queue_Prepend_unprotected(the_message_queue, the_message); _ISR_Enable( level ); #else if ( submit_type == CORE_MESSAGE_QUEUE_SEND_REQUEST ) { 52ba0: 0c80 7fff ffff cmpil #2147483647,%d0 <== NOT EXECUTED 52ba6: 6634 bnes 52bdc <_CORE_message_queue_Insert_message+0x54><== NOT EXECUTED _ISR_Disable( level ); 52ba8: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 52bae: 40c2 movew %sr,%d2 <== NOT EXECUTED 52bb0: 8082 orl %d2,%d0 <== NOT EXECUTED 52bb2: 46c0 movew %d0,%sr <== NOT EXECUTED SET_NOTIFY(); 52bb4: 2228 0048 movel %a0@(72),%d1 <== NOT EXECUTED * * INTERRUPT LATENCY: * insert */ void _CORE_message_queue_Insert_message( 52bb8: 57c0 seq %d0 <== NOT EXECUTED _ISR_Enable( level ); #else if ( submit_type == CORE_MESSAGE_QUEUE_SEND_REQUEST ) { _ISR_Disable( level ); SET_NOTIFY(); the_message_queue->number_of_pending_messages++; 52bba: 5281 addql #1,%d1 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected( Chain_Control *the_chain, Chain_Node *the_node ) { Chain_Node *tail = _Chain_Tail( the_chain ); 52bbc: 47e8 0054 lea %a0@(84),%a3 <== NOT EXECUTED * * INTERRUPT LATENCY: * insert */ void _CORE_message_queue_Insert_message( 52bc0: 4480 negl %d0 <== NOT EXECUTED _ISR_Enable( level ); #else if ( submit_type == CORE_MESSAGE_QUEUE_SEND_REQUEST ) { _ISR_Disable( level ); SET_NOTIFY(); the_message_queue->number_of_pending_messages++; 52bc2: 2141 0048 movel %d1,%a0@(72) <== NOT EXECUTED Chain_Node *old_last = tail->previous; 52bc6: 2468 0058 moveal %a0@(88),%a2 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected( Chain_Control *the_chain, Chain_Node *the_node ) { Chain_Node *tail = _Chain_Tail( the_chain ); 52bca: 228b movel %a3,%a1@ <== NOT EXECUTED Chain_Node *old_last = tail->previous; the_node->next = tail; tail->previous = the_node; 52bcc: 2149 0058 movel %a1,%a0@(88) <== NOT EXECUTED old_last->next = the_node; 52bd0: 2489 movel %a1,%a2@ <== NOT EXECUTED the_node->previous = old_last; 52bd2: 234a 0004 movel %a2,%a1@(4) <== NOT EXECUTED _CORE_message_queue_Append_unprotected(the_message_queue, the_message); _ISR_Enable( level ); 52bd6: 46c2 movew %d2,%sr <== NOT EXECUTED 52bd8: 6000 0086 braw 52c60 <_CORE_message_queue_Insert_message+0xd8><== NOT EXECUTED } else if ( submit_type == CORE_MESSAGE_QUEUE_URGENT_REQUEST ) { 52bdc: 0c80 8000 0000 cmpil #-2147483648,%d0 <== NOT EXECUTED 52be2: 6634 bnes 52c18 <_CORE_message_queue_Insert_message+0x90><== NOT EXECUTED _ISR_Disable( level ); 52be4: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 52bea: 40c2 movew %sr,%d2 <== NOT EXECUTED 52bec: 8082 orl %d2,%d0 <== NOT EXECUTED 52bee: 46c0 movew %d0,%sr <== NOT EXECUTED SET_NOTIFY(); 52bf0: 2228 0048 movel %a0@(72),%d1 <== NOT EXECUTED * * INTERRUPT LATENCY: * insert */ void _CORE_message_queue_Insert_message( 52bf4: 57c0 seq %d0 <== NOT EXECUTED _CORE_message_queue_Append_unprotected(the_message_queue, the_message); _ISR_Enable( level ); } else if ( submit_type == CORE_MESSAGE_QUEUE_URGENT_REQUEST ) { _ISR_Disable( level ); SET_NOTIFY(); the_message_queue->number_of_pending_messages++; 52bf6: 5281 addql #1,%d1 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Chain_Prepend_unprotected( Chain_Control *the_chain, Chain_Node *the_node ) { _Chain_Insert_unprotected(_Chain_Head(the_chain), the_node); 52bf8: 45e8 0050 lea %a0@(80),%a2 <== NOT EXECUTED * * INTERRUPT LATENCY: * insert */ void _CORE_message_queue_Insert_message( 52bfc: 4480 negl %d0 <== NOT EXECUTED _CORE_message_queue_Append_unprotected(the_message_queue, the_message); _ISR_Enable( level ); } else if ( submit_type == CORE_MESSAGE_QUEUE_URGENT_REQUEST ) { _ISR_Disable( level ); SET_NOTIFY(); the_message_queue->number_of_pending_messages++; 52bfe: 2141 0048 movel %d1,%a0@(72) <== NOT EXECUTED 52c02: 234a 0004 movel %a2,%a1@(4) <== NOT EXECUTED ) { Chain_Node *before_node; the_node->previous = after_node; before_node = after_node->next; 52c06: 2468 0050 moveal %a0@(80),%a2 <== NOT EXECUTED after_node->next = the_node; 52c0a: 2149 0050 movel %a1,%a0@(80) <== NOT EXECUTED the_node->next = before_node; before_node->previous = the_node; 52c0e: 2549 0004 movel %a1,%a2@(4) <== NOT EXECUTED Chain_Node *before_node; the_node->previous = after_node; before_node = after_node->next; after_node->next = the_node; the_node->next = before_node; 52c12: 228a movel %a2,%a1@ <== NOT EXECUTED _CORE_message_queue_Prepend_unprotected(the_message_queue, the_message); _ISR_Enable( level ); 52c14: 46c2 movew %d2,%sr <== NOT EXECUTED 52c16: 6048 bras 52c60 <_CORE_message_queue_Insert_message+0xd8><== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Chain_Is_tail( Chain_Control *the_chain, const Chain_Node *the_node ) { return (the_node == _Chain_Tail(the_chain)); 52c18: 2208 movel %a0,%d1 <== NOT EXECUTED 52c1a: 0681 0000 0054 addil #84,%d1 <== NOT EXECUTED * the message is actually in the queue at this point. */ if ( notify && the_message_queue->notify_handler ) (*the_message_queue->notify_handler)(the_message_queue->notify_argument); #endif } 52c20: 2468 0050 moveal %a0@(80),%a2 <== NOT EXECUTED int the_priority; the_priority = _CORE_message_queue_Get_message_priority(the_message); the_header = &the_message_queue->Pending_messages; the_node = _Chain_First( the_header ); while ( !_Chain_Is_tail( the_header, the_node ) ) { 52c24: 6008 bras 52c2e <_CORE_message_queue_Insert_message+0xa6><== NOT EXECUTED this_message = (CORE_message_queue_Buffer_control *) the_node; this_priority = _CORE_message_queue_Get_message_priority(this_message); if ( this_priority <= the_priority ) { 52c26: b0aa 0008 cmpl %a2@(8),%d0 <== NOT EXECUTED 52c2a: 6d06 blts 52c32 <_CORE_message_queue_Insert_message+0xaa><== NOT EXECUTED the_node = the_node->next; 52c2c: 2452 moveal %a2@,%a2 <== NOT EXECUTED int the_priority; the_priority = _CORE_message_queue_Get_message_priority(the_message); the_header = &the_message_queue->Pending_messages; the_node = _Chain_First( the_header ); while ( !_Chain_Is_tail( the_header, the_node ) ) { 52c2e: b28a cmpl %a2,%d1 <== NOT EXECUTED 52c30: 66f4 bnes 52c26 <_CORE_message_queue_Insert_message+0x9e><== NOT EXECUTED the_node = the_node->next; continue; } break; } _ISR_Disable( level ); 52c32: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 52c38: 40c2 movew %sr,%d2 <== NOT EXECUTED 52c3a: 8082 orl %d2,%d0 <== NOT EXECUTED 52c3c: 46c0 movew %d0,%sr <== NOT EXECUTED SET_NOTIFY(); 52c3e: 2228 0048 movel %a0@(72),%d1 <== NOT EXECUTED * * INTERRUPT LATENCY: * insert */ void _CORE_message_queue_Insert_message( 52c42: 57c0 seq %d0 <== NOT EXECUTED break; } _ISR_Disable( level ); SET_NOTIFY(); the_message_queue->number_of_pending_messages++; _Chain_Insert_unprotected( the_node->previous, &the_message->Node ); 52c44: 246a 0004 moveal %a2@(4),%a2 <== NOT EXECUTED } break; } _ISR_Disable( level ); SET_NOTIFY(); the_message_queue->number_of_pending_messages++; 52c48: 5281 addql #1,%d1 <== NOT EXECUTED * * INTERRUPT LATENCY: * insert */ void _CORE_message_queue_Insert_message( 52c4a: 4480 negl %d0 <== NOT EXECUTED } break; } _ISR_Disable( level ); SET_NOTIFY(); the_message_queue->number_of_pending_messages++; 52c4c: 2141 0048 movel %d1,%a0@(72) <== NOT EXECUTED ) { Chain_Node *before_node; the_node->previous = after_node; before_node = after_node->next; 52c50: 2652 moveal %a2@,%a3 <== NOT EXECUTED Chain_Node *the_node ) { Chain_Node *before_node; the_node->previous = after_node; 52c52: 234a 0004 movel %a2,%a1@(4) <== NOT EXECUTED before_node = after_node->next; after_node->next = the_node; 52c56: 2489 movel %a1,%a2@ <== NOT EXECUTED the_node->next = before_node; before_node->previous = the_node; 52c58: 2749 0004 movel %a1,%a3@(4) <== NOT EXECUTED Chain_Node *before_node; the_node->previous = after_node; before_node = after_node->next; after_node->next = the_node; the_node->next = before_node; 52c5c: 228b movel %a3,%a1@ <== NOT EXECUTED _Chain_Insert_unprotected( the_node->previous, &the_message->Node ); _ISR_Enable( level ); 52c5e: 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 ) 52c60: 4a00 tstb %d0 <== NOT EXECUTED 52c62: 6716 beqs 52c7a <_CORE_message_queue_Insert_message+0xf2><== NOT EXECUTED 52c64: 2268 0060 moveal %a0@(96),%a1 <== NOT EXECUTED 52c68: 4a89 tstl %a1 <== NOT EXECUTED 52c6a: 670e beqs 52c7a <_CORE_message_queue_Insert_message+0xf2><== NOT EXECUTED (*the_message_queue->notify_handler)(the_message_queue->notify_argument); 52c6c: 2d68 0064 0008 movel %a0@(100),%fp@(8) <== NOT EXECUTED #endif } 52c72: 4cd7 0c04 moveml %sp@,%d2/%a2-%a3 <== NOT EXECUTED 52c76: 4e5e unlk %fp <== NOT EXECUTED * According to POSIX, does this happen before or after the message * is actually enqueued. It is logical to think afterwards, because * the message is actually in the queue at this point. */ if ( notify && the_message_queue->notify_handler ) (*the_message_queue->notify_handler)(the_message_queue->notify_argument); 52c78: 4ed1 jmp %a1@ <== NOT EXECUTED #endif } 52c7a: 4cd7 0c04 moveml %sp@,%d2/%a2-%a3 <== NOT EXECUTED 52c7e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004deec <_CORE_message_queue_Seize>: CORE_message_queue_Buffer_control *the_message; Thread_Control *executing; executing = _Thread_Executing; executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL; _ISR_Disable( level ); 4deec: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED void *buffer, size_t *size_p, bool wait, Watchdog_Interval timeout ) { 4def2: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED ISR_Level level; CORE_message_queue_Buffer_control *the_message; Thread_Control *executing; executing = _Thread_Executing; 4def6: 2079 0006 758a moveal 6758a <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED void *buffer, size_t *size_p, bool wait, Watchdog_Interval timeout ) { 4defc: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@ <== NOT EXECUTED 4df00: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4df04: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 4df08: 2a2e 0010 movel %fp@(16),%d5 <== NOT EXECUTED 4df0c: 226e 0014 moveal %fp@(20),%a1 <== NOT EXECUTED 4df10: 242e 001c movel %fp@(28),%d2 <== NOT EXECUTED 4df14: 182e 001b moveb %fp@(27),%d4 <== NOT EXECUTED ISR_Level level; CORE_message_queue_Buffer_control *the_message; Thread_Control *executing; executing = _Thread_Executing; executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL; 4df18: 42a8 0034 clrl %a0@(52) <== NOT EXECUTED _ISR_Disable( level ); 4df1c: 40c0 movew %sr,%d0 <== NOT EXECUTED 4df1e: 8280 orl %d0,%d1 <== NOT EXECUTED 4df20: 46c1 movew %d1,%sr <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( const Chain_Control *the_chain ) { return _Chain_Immutable_first( the_chain ) == _Chain_Immutable_tail( the_chain ); 4df22: 220a movel %a2,%d1 <== NOT EXECUTED 4df24: 0681 0000 0054 addil #84,%d1 <== 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 ); } 4df2a: 266a 0050 moveal %a2@(80),%a3 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected( Chain_Control *the_chain ) { if ( !_Chain_Is_empty(the_chain)) 4df2e: b28b cmpl %a3,%d1 <== NOT EXECUTED 4df30: 6700 00a6 beqw 4dfd8 <_CORE_message_queue_Seize+0xec> <== NOT EXECUTED Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *old_first = head->next; Chain_Node *new_first = old_first->next; 4df34: 2a53 moveal %a3@,%a5 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_first_unprotected( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); 4df36: 49ea 0050 lea %a2@(80),%a4 <== NOT EXECUTED Chain_Node *old_first = head->next; Chain_Node *new_first = old_first->next; head->next = new_first; 4df3a: 254d 0050 movel %a5,%a2@(80) <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_first_unprotected( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); 4df3e: 2b4c 0004 movel %a4,%a5@(4) <== NOT EXECUTED executing = _Thread_Executing; executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL; _ISR_Disable( level ); the_message = _CORE_message_queue_Get_pending_message( the_message_queue ); if ( the_message != NULL ) { 4df42: 4a8b tstl %a3 <== NOT EXECUTED 4df44: 6700 0092 beqw 4dfd8 <_CORE_message_queue_Seize+0xec> <== NOT EXECUTED the_message_queue->number_of_pending_messages -= 1; 4df48: 53aa 0048 subql #1,%a2@(72) <== NOT EXECUTED _ISR_Enable( level ); 4df4c: 46c0 movew %d0,%sr <== NOT EXECUTED *size_p = the_message->Contents.size; _Thread_Executing->Wait.count = 4df4e: 2079 0006 758a moveal 6758a <_Per_CPU_Information+0xc>,%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; 4df54: 22ab 000c movel %a3@(12),%a1@ <== NOT EXECUTED _Thread_Executing->Wait.count = _CORE_message_queue_Get_message_priority( the_message ); _CORE_message_queue_Copy_buffer( the_message->Contents.buffer, 4df58: 240b movel %a3,%d2 <== NOT EXECUTED 4df5a: 0682 0000 0010 addil #16,%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 = 4df60: 216b 0008 0024 movel %a3@(8),%a0@(36) <== NOT EXECUTED const void *source, void *destination, size_t size ) { memcpy(destination, source, size); 4df66: 49f9 0005 5458 lea 55458 ,%a4 <== NOT EXECUTED 4df6c: 2f11 movel %a1@,%sp@- <== NOT EXECUTED 4df6e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4df70: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4df72: 4e94 jsr %a4@ <== NOT EXECUTED * is not, then we can go ahead and free the buffer. * * NOTE: If we note that the queue was not full before this receive, * then we can avoid this dequeue. */ the_thread = _Thread_queue_Dequeue( &the_message_queue->Wait_queue ); 4df74: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4df76: 4eb9 0004 fc28 jsr 4fc28 <_Thread_queue_Dequeue> <== NOT EXECUTED if ( !the_thread ) { 4df7c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED * is not, then we can go ahead and free the buffer. * * NOTE: If we note that the queue was not full before this receive, * then we can avoid this dequeue. */ the_thread = _Thread_queue_Dequeue( &the_message_queue->Wait_queue ); 4df80: 2040 moveal %d0,%a0 <== NOT EXECUTED if ( !the_thread ) { 4df82: 4a80 tstl %d0 <== NOT EXECUTED 4df84: 661a bnes 4dfa0 <_CORE_message_queue_Seize+0xb4> <== 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 ); 4df86: 45ea 0068 lea %a2@(104),%a2 <== NOT EXECUTED 4df8a: 2d4b 000c movel %a3,%fp@(12) <== NOT EXECUTED 4df8e: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED executing->Wait.return_argument = size_p; /* Wait.count will be filled in with the message priority */ _ISR_Enable( level ); _Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout ); } 4df92: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED 4df98: 4e5e unlk %fp <== NOT EXECUTED 4df9a: 4ef9 0004 dd6c jmp 4dd6c <_Chain_Append> <== NOT EXECUTED */ _CORE_message_queue_Set_message_priority( the_message, the_thread->Wait.count ); the_message->Contents.size = (size_t) the_thread->Wait.option; 4dfa0: 2028 0030 movel %a0@(48),%d0 <== NOT EXECUTED CORE_message_queue_Buffer_control *the_message, int priority ) { #if defined(RTEMS_SCORE_COREMSG_ENABLE_MESSAGE_PRIORITY) the_message->priority = priority; 4dfa4: 2768 0024 0008 movel %a0@(36),%a3@(8) <== NOT EXECUTED 4dfaa: 2740 000c movel %d0,%a3@(12) <== NOT EXECUTED const void *source, void *destination, size_t size ) { memcpy(destination, source, size); 4dfae: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4dfb0: 2f28 002c movel %a0@(44),%sp@- <== NOT EXECUTED 4dfb4: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4dfb6: 4e94 jsr %a4@ <== NOT EXECUTED the_thread->Wait.return_argument_second.immutable_object, the_message->Contents.buffer, the_message->Contents.size ); _CORE_message_queue_Insert_message( 4dfb8: 2d6b 0008 0010 movel %a3@(8),%fp@(16) <== NOT EXECUTED 4dfbe: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4dfc2: 2d4b 000c movel %a3,%fp@(12) <== NOT EXECUTED 4dfc6: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED executing->Wait.return_argument = size_p; /* Wait.count will be filled in with the message priority */ _ISR_Enable( level ); _Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout ); } 4dfca: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED 4dfd0: 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( 4dfd2: 4ef9 0005 2b88 jmp 52b88 <_CORE_message_queue_Insert_message><== NOT EXECUTED return; } #endif } if ( !wait ) { 4dfd8: 4a04 tstb %d4 <== NOT EXECUTED 4dfda: 6612 bnes 4dfee <_CORE_message_queue_Seize+0x102><== NOT EXECUTED _ISR_Enable( level ); 4dfdc: 46c0 movew %d0,%sr <== NOT EXECUTED executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_NOWAIT; 4dfde: 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 ); } 4dfe0: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED #endif } if ( !wait ) { _ISR_Enable( level ); executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_NOWAIT; 4dfe6: 2140 0034 movel %d0,%a0@(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 ); } 4dfea: 4e5e unlk %fp <== NOT EXECUTED 4dfec: 4e75 rts <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Thread_queue_Enter_critical_section ( Thread_queue_Control *the_thread_queue ) { the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED; 4dfee: 7201 moveq #1,%d1 <== NOT EXECUTED 4dff0: 2541 0030 movel %d1,%a2@(48) <== NOT EXECUTED } _Thread_queue_Enter_critical_section( &the_message_queue->Wait_queue ); executing->Wait.queue = &the_message_queue->Wait_queue; executing->Wait.id = id; executing->Wait.return_argument_second.mutable_object = buffer; 4dff4: 2145 002c movel %d5,%a0@(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; 4dff8: 214a 0044 movel %a2,%a0@(68) <== NOT EXECUTED executing->Wait.id = id; 4dffc: 2143 0020 movel %d3,%a0@(32) <== NOT EXECUTED executing->Wait.return_argument_second.mutable_object = buffer; executing->Wait.return_argument = size_p; 4e000: 2149 0028 movel %a1,%a0@(40) <== NOT EXECUTED /* Wait.count will be filled in with the message priority */ _ISR_Enable( level ); 4e004: 46c0 movew %d0,%sr <== NOT EXECUTED _Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout ); 4e006: 49f9 0005 007c lea 5007c <_Thread_queue_Timeout>,%a4 <== NOT EXECUTED 4e00c: 2d42 000c movel %d2,%fp@(12) <== NOT EXECUTED 4e010: 2d4c 0010 movel %a4,%fp@(16) <== NOT EXECUTED 4e014: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED } 4e018: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED 4e01e: 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 ); 4e020: 4ef9 0004 fd68 jmp 4fd68 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED ... =============================================================================== 0004e028 <_CORE_message_queue_Submit>: #endif CORE_message_queue_Submit_types submit_type, bool wait, Watchdog_Interval timeout ) { 4e028: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4e02c: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED 4e030: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4e034: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED 4e038: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED 4e03c: 262e 001c movel %fp@(28),%d3 <== NOT EXECUTED 4e040: 1a2e 0023 moveb %fp@(35),%d5 <== NOT EXECUTED CORE_message_queue_Buffer_control *the_message; Thread_Control *the_thread; if ( size > the_message_queue->maximum_message_size ) { 4e044: b4aa 004c cmpl %a2@(76),%d2 <== NOT EXECUTED 4e048: 6200 00cc bhiw 4e116 <_CORE_message_queue_Submit+0xee><== NOT EXECUTED } /* * Is there a thread currently waiting on this message queue? */ if ( the_message_queue->number_of_pending_messages == 0 ) { 4e04c: 4aaa 0048 tstl %a2@(72) <== NOT EXECUTED 4e050: 662e bnes 4e080 <_CORE_message_queue_Submit+0x58><== NOT EXECUTED the_thread = _Thread_queue_Dequeue( &the_message_queue->Wait_queue ); 4e052: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4e054: 4eb9 0004 fc28 jsr 4fc28 <_Thread_queue_Dequeue> <== NOT EXECUTED if ( the_thread ) { 4e05a: 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 ); 4e05c: 2640 moveal %d0,%a3 <== NOT EXECUTED if ( the_thread ) { 4e05e: 4a80 tstl %d0 <== NOT EXECUTED 4e060: 671e beqs 4e080 <_CORE_message_queue_Submit+0x58><== NOT EXECUTED 4e062: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4e064: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4e066: 2f2b 002c movel %a3@(44),%sp@- <== NOT EXECUTED 4e06a: 4eb9 0005 5458 jsr 55458 <== 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; 4e070: 206b 0028 moveal %a3@(40),%a0 <== NOT EXECUTED #if defined(RTEMS_MULTIPROCESSING) if ( !_Objects_Is_local_id( the_thread->Object.id ) ) (*api_message_queue_mp_support) ( the_thread, id ); #endif return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL; 4e074: 4fef 000c lea %sp@(12),%sp <== 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; 4e078: 2082 movel %d2,%a0@ <== NOT EXECUTED the_thread->Wait.count = (uint32_t) submit_type; 4e07a: 2743 0024 movel %d3,%a3@(36) <== NOT EXECUTED 4e07e: 603c bras 4e0bc <_CORE_message_queue_Submit+0x94><== 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 < 4e080: 202a 0044 movel %a2@(68),%d0 <== NOT EXECUTED 4e084: b0aa 0048 cmpl %a2@(72),%d0 <== NOT EXECUTED 4e088: 6336 blss 4e0c0 <_CORE_message_queue_Submit+0x98><== NOT EXECUTED _CORE_message_queue_Allocate_message_buffer ( CORE_message_queue_Control *the_message_queue ) { return (CORE_message_queue_Buffer_control *) _Chain_Get( &the_message_queue->Inactive_messages ); 4e08a: 486a 0068 pea %a2@(104) <== NOT EXECUTED 4e08e: 4eb9 0004 ddcc jsr 4ddcc <_Chain_Get> <== NOT EXECUTED 4e094: 2640 moveal %d0,%a3 <== NOT EXECUTED const void *source, void *destination, size_t size ) { memcpy(destination, source, size); 4e096: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4e098: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4e09a: 486b 0010 pea %a3@(16) <== NOT EXECUTED 4e09e: 4eb9 0005 5458 jsr 55458 <== NOT EXECUTED _CORE_message_queue_Copy_buffer( buffer, the_message->Contents.buffer, size ); the_message->Contents.size = size; 4e0a4: 2742 000c movel %d2,%a3@(12) <== NOT EXECUTED CORE_message_queue_Buffer_control *the_message, int priority ) { #if defined(RTEMS_SCORE_COREMSG_ENABLE_MESSAGE_PRIORITY) the_message->priority = priority; 4e0a8: 2743 0008 movel %d3,%a3@(8) <== NOT EXECUTED _CORE_message_queue_Set_message_priority( the_message, submit_type ); _CORE_message_queue_Insert_message( 4e0ac: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4e0ae: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4e0b0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4e0b2: 4eb9 0005 2b88 jsr 52b88 <_CORE_message_queue_Insert_message><== NOT EXECUTED the_message_queue, the_message, submit_type ); return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL; 4e0b8: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 4e0bc: 4280 clrl %d0 <== NOT EXECUTED 4e0be: 6060 bras 4e120 <_CORE_message_queue_Submit+0xf8><== 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 ) { 4e0c0: 4a05 tstb %d5 <== NOT EXECUTED 4e0c2: 6756 beqs 4e11a <_CORE_message_queue_Submit+0xf2><== 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() ) { 4e0c4: 4ab9 0006 7586 tstl 67586 <_Per_CPU_Information+0x8> <== NOT EXECUTED 4e0ca: 6652 bnes 4e11e <_CORE_message_queue_Submit+0xf6><== NOT EXECUTED * Thus the unusual choice to open a new scope and declare * it as a variable. Doing this emphasizes how dangerous it * would be to use this variable prior to here. */ { Thread_Control *executing = _Thread_Executing; 4e0cc: 2079 0006 758a moveal 6758a <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED ISR_Level level; _ISR_Disable( level ); 4e0d2: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 4e0d8: 40c1 movew %sr,%d1 <== NOT EXECUTED 4e0da: 8081 orl %d1,%d0 <== NOT EXECUTED 4e0dc: 46c0 movew %d0,%sr <== NOT EXECUTED 4e0de: 7001 moveq #1,%d0 <== NOT EXECUTED 4e0e0: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED _Thread_queue_Enter_critical_section( &the_message_queue->Wait_queue ); executing->Wait.queue = &the_message_queue->Wait_queue; executing->Wait.id = id; 4e0e4: 216e 0014 0020 movel %fp@(20),%a0@(32) <== NOT EXECUTED Thread_Control *executing = _Thread_Executing; ISR_Level level; _ISR_Disable( level ); _Thread_queue_Enter_critical_section( &the_message_queue->Wait_queue ); executing->Wait.queue = &the_message_queue->Wait_queue; 4e0ea: 214a 0044 movel %a2,%a0@(68) <== NOT EXECUTED executing->Wait.id = id; executing->Wait.return_argument_second.immutable_object = buffer; 4e0ee: 2144 002c movel %d4,%a0@(44) <== NOT EXECUTED executing->Wait.option = (uint32_t) size; 4e0f2: 2142 0030 movel %d2,%a0@(48) <== NOT EXECUTED executing->Wait.count = submit_type; 4e0f6: 2143 0024 movel %d3,%a0@(36) <== NOT EXECUTED _ISR_Enable( level ); 4e0fa: 46c1 movew %d1,%sr <== NOT EXECUTED _Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout ); 4e0fc: 4879 0005 007c pea 5007c <_Thread_queue_Timeout> <== NOT EXECUTED 4e102: 2f2e 0024 movel %fp@(36),%sp@- <== NOT EXECUTED 4e106: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4e108: 4eb9 0004 fd68 jsr 4fd68 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED } return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT; 4e10e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4e112: 7007 moveq #7,%d0 <== NOT EXECUTED 4e114: 600a bras 4e120 <_CORE_message_queue_Submit+0xf8><== NOT EXECUTED { CORE_message_queue_Buffer_control *the_message; Thread_Control *the_thread; if ( size > the_message_queue->maximum_message_size ) { return CORE_MESSAGE_QUEUE_STATUS_INVALID_SIZE; 4e116: 7001 moveq #1,%d0 <== NOT EXECUTED 4e118: 6006 bras 4e120 <_CORE_message_queue_Submit+0xf8><== NOT EXECUTED * No message buffers were available so we may need to return an * overflow error or block the sender until the message is placed * on the queue. */ if ( !wait ) { return CORE_MESSAGE_QUEUE_STATUS_TOO_MANY; 4e11a: 7002 moveq #2,%d0 <== NOT EXECUTED 4e11c: 6002 bras 4e120 <_CORE_message_queue_Submit+0xf8><== 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() ) { return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED; 4e11e: 7003 moveq #3,%d0 <== NOT EXECUTED _Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout ); } return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT; #endif } 4e120: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 4e126: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046054 <_CORE_mutex_Initialize>: CORE_mutex_Status _CORE_mutex_Initialize( CORE_mutex_Control *the_mutex, CORE_mutex_Attributes *the_mutex_attributes, uint32_t initial_lock ) { 46054: 4e56 fff4 linkw %fp,#-12 46058: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ /* 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; 4605c: 4878 000e pea e CORE_mutex_Status _CORE_mutex_Initialize( CORE_mutex_Control *the_mutex, CORE_mutex_Attributes *the_mutex_attributes, uint32_t initial_lock ) { 46060: 266e 000c moveal %fp@(12),%a3 46064: 246e 0008 moveal %fp@(8),%a2 /* Add this to the RTEMS environment later ????????? rtems_assert( initial_lock == CORE_MUTEX_LOCKED || initial_lock == CORE_MUTEX_UNLOCKED ); */ the_mutex->Attributes = *the_mutex_attributes; 46068: 2f0b movel %a3,%sp@- 4606a: 486a 0040 pea %a2@(64) CORE_mutex_Status _CORE_mutex_Initialize( CORE_mutex_Control *the_mutex, CORE_mutex_Attributes *the_mutex_attributes, uint32_t initial_lock ) { 4606e: 242e 0010 movel %fp@(16),%d2 /* 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; 46072: 4eb9 0004 d1f8 jsr 4d1f8 the_mutex->lock = initial_lock; the_mutex->blocked_count = 0; if ( initial_lock == CORE_MUTEX_LOCKED ) { 46078: 4fef 000c lea %sp@(12),%sp rtems_assert( initial_lock == CORE_MUTEX_LOCKED || initial_lock == CORE_MUTEX_UNLOCKED ); */ the_mutex->Attributes = *the_mutex_attributes; the_mutex->lock = initial_lock; 4607c: 2542 004e movel %d2,%a2@(78) the_mutex->blocked_count = 0; 46080: 42aa 0056 clrl %a2@(86) if ( initial_lock == CORE_MUTEX_LOCKED ) { 46084: 4a82 tstl %d2 46086: 6638 bnes 460c0 <_CORE_mutex_Initialize+0x6c> the_mutex->nest_count = 1; 46088: 7001 moveq #1,%d0 the_mutex->holder = _Thread_Executing; the_mutex->holder_id = _Thread_Executing->Object.id; if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) || 4608a: 7202 moveq #2,%d1 the_mutex->lock = initial_lock; the_mutex->blocked_count = 0; if ( initial_lock == CORE_MUTEX_LOCKED ) { the_mutex->nest_count = 1; the_mutex->holder = _Thread_Executing; 4608c: 2079 0005 e902 moveal 5e902 <_Per_CPU_Information+0xc>,%a0 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; 46092: 2540 0052 movel %d0,%a2@(82) the_mutex->holder = _Thread_Executing; the_mutex->holder_id = _Thread_Executing->Object.id; 46096: 2568 0008 005e movel %a0@(8),%a2@(94) STATES_WAITING_FOR_MUTEX, CORE_MUTEX_TIMEOUT ); return CORE_MUTEX_STATUS_SUCCESSFUL; } 4609c: 202a 0046 movel %a2@(70),%d0 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; 460a0: 2548 005a movel %a0,%a2@(90) the_mutex->holder_id = _Thread_Executing->Object.id; if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) || 460a4: b280 cmpl %d0,%d1 460a6: 6708 beqs 460b0 <_CORE_mutex_Initialize+0x5c> <== NEVER TAKEN 460a8: 123c 0003 moveb #3,%d1 460ac: b280 cmpl %d0,%d1 460ae: 661c bnes 460cc <_CORE_mutex_Initialize+0x78> <== ALWAYS TAKEN _CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) ) { if ( _Thread_Executing->current_priority < 460b0: 202a 004a movel %a2@(74),%d0 <== NOT EXECUTED 460b4: b0a8 0014 cmpl %a0@(20),%d0 <== NOT EXECUTED 460b8: 6236 bhis 460f0 <_CORE_mutex_Initialize+0x9c> <== 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++; 460ba: 52a8 001c addql #1,%a0@(28) <== NOT EXECUTED 460be: 600c bras 460cc <_CORE_mutex_Initialize+0x78> <== NOT EXECUTED } } else { the_mutex->nest_count = 0; 460c0: 42aa 0052 clrl %a2@(82) the_mutex->holder = NULL; 460c4: 42aa 005a clrl %a2@(90) the_mutex->holder_id = 0; 460c8: 42aa 005e clrl %a2@(94) } _Thread_queue_Initialize( 460cc: 4878 0005 pea 5 460d0: 4878 0400 pea 400 460d4: 4aab 0006 tstl %a3@(6) 460d8: 56c0 sne %d0 460da: 49c0 extbl %d0 460dc: 4480 negl %d0 460de: 2f00 movel %d0,%sp@- 460e0: 2f0a movel %a2,%sp@- 460e2: 4eb9 0004 7e40 jsr 47e40 <_Thread_queue_Initialize> THREAD_QUEUE_DISCIPLINE_FIFO : THREAD_QUEUE_DISCIPLINE_PRIORITY, STATES_WAITING_FOR_MUTEX, CORE_MUTEX_TIMEOUT ); return CORE_MUTEX_STATUS_SUCCESSFUL; 460e8: 4fef 0010 lea %sp@(16),%sp 460ec: 4280 clrl %d0 460ee: 6002 bras 460f2 <_CORE_mutex_Initialize+0x9e> if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) || _CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) ) { if ( _Thread_Executing->current_priority < the_mutex->Attributes.priority_ceiling ) return CORE_MUTEX_STATUS_CEILING_VIOLATED; 460f0: 7006 moveq #6,%d0 <== NOT EXECUTED STATES_WAITING_FOR_MUTEX, CORE_MUTEX_TIMEOUT ); return CORE_MUTEX_STATUS_SUCCESSFUL; } 460f2: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 460f8: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046160 <_CORE_mutex_Seize>: Objects_Id _id, bool _wait, Watchdog_Interval _timeout, ISR_Level _level ) { 46160: 4e56 0000 linkw %fp,#0 _CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level ); 46164: 2039 0005 e478 movel 5e478 <_Thread_Dispatch_disable_level>,%d0 Objects_Id _id, bool _wait, Watchdog_Interval _timeout, ISR_Level _level ) { 4616a: 2f0a movel %a2,%sp@- 4616c: 246e 0008 moveal %fp@(8),%a2 46170: 2f02 movel %d2,%sp@- 46172: 142e 0013 moveb %fp@(19),%d2 _CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level ); 46176: 4a80 tstl %d0 46178: 671c beqs 46196 <_CORE_mutex_Seize+0x36> 4617a: 4a02 tstb %d2 4617c: 6718 beqs 46196 <_CORE_mutex_Seize+0x36> <== NEVER TAKEN 4617e: 7001 moveq #1,%d0 46180: b0b9 0005 e5e4 cmpl 5e5e4 <_System_state_Current>,%d0 46186: 640e bccs 46196 <_CORE_mutex_Seize+0x36> 46188: 4878 0012 pea 12 4618c: 42a7 clrl %sp@- 4618e: 42a7 clrl %sp@- 46190: 4eb9 0004 67b4 jsr 467b4 <_Internal_error_Occurred> 46196: 486e 0018 pea %fp@(24) 4619a: 2f0a movel %a2,%sp@- 4619c: 4eb9 0004 aa08 jsr 4aa08 <_CORE_mutex_Seize_interrupt_trylock> 461a2: 508f addql #8,%sp 461a4: 4a80 tstl %d0 461a6: 6750 beqs 461f8 <_CORE_mutex_Seize+0x98> 461a8: 4a02 tstb %d2 461aa: 6614 bnes 461c0 <_CORE_mutex_Seize+0x60> <== ALWAYS TAKEN 461ac: 202e 0018 movel %fp@(24),%d0 <== NOT EXECUTED 461b0: 46c0 movew %d0,%sr <== NOT EXECUTED 461b2: 2079 0005 e902 moveal 5e902 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 461b8: 7001 moveq #1,%d0 <== NOT EXECUTED 461ba: 2140 0034 movel %d0,%a0@(52) <== NOT EXECUTED 461be: 6038 bras 461f8 <_CORE_mutex_Seize+0x98> <== 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; 461c0: 7001 moveq #1,%d0 461c2: 2079 0005 e902 moveal 5e902 <_Per_CPU_Information+0xc>,%a0 461c8: 2540 0030 movel %d0,%a2@(48) 461cc: 2039 0005 e478 movel 5e478 <_Thread_Dispatch_disable_level>,%d0 461d2: 5280 addql #1,%d0 461d4: 216e 000c 0020 movel %fp@(12),%a0@(32) 461da: 214a 0044 movel %a2,%a0@(68) 461de: 23c0 0005 e478 movel %d0,5e478 <_Thread_Dispatch_disable_level> 461e4: 202e 0018 movel %fp@(24),%d0 461e8: 46c0 movew %d0,%sr 461ea: 2f2e 0014 movel %fp@(20),%sp@- 461ee: 2f0a movel %a2,%sp@- 461f0: 4eb9 0004 60fc jsr 460fc <_CORE_mutex_Seize_interrupt_blocking> 461f6: 508f addql #8,%sp } 461f8: 242e fff8 movel %fp@(-8),%d2 461fc: 246e fffc moveal %fp@(-4),%a2 46200: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000460fc <_CORE_mutex_Seize_interrupt_blocking>: ) { Thread_Control *executing; executing = _Thread_Executing; if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ) { 460fc: 7002 moveq #2,%d0 void _CORE_mutex_Seize_interrupt_blocking( CORE_mutex_Control *the_mutex, Watchdog_Interval timeout ) { 460fe: 4e56 0000 linkw %fp,#0 Thread_Control *executing; executing = _Thread_Executing; 46102: 2279 0005 e902 moveal 5e902 <_Per_CPU_Information+0xc>,%a1 void _CORE_mutex_Seize_interrupt_blocking( CORE_mutex_Control *the_mutex, Watchdog_Interval timeout ) { 46108: 2f0a movel %a2,%sp@- 4610a: 246e 0008 moveal %fp@(8),%a2 4610e: 2f02 movel %d2,%sp@- 46110: 242e 000c movel %fp@(12),%d2 Thread_Control *executing; executing = _Thread_Executing; if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ) { 46114: b0aa 0046 cmpl %a2@(70),%d0 46118: 661e bnes 46138 <_CORE_mutex_Seize_interrupt_blocking+0x3c> if ( the_mutex->holder->current_priority > executing->current_priority ) { 4611a: 206a 005a moveal %a2@(90),%a0 4611e: 2029 0014 movel %a1@(20),%d0 46122: b0a8 0014 cmpl %a0@(20),%d0 46126: 6410 bccs 46138 <_CORE_mutex_Seize_interrupt_blocking+0x3c><== NEVER TAKEN _Thread_Change_priority( 46128: 42a7 clrl %sp@- 4612a: 2f00 movel %d0,%sp@- 4612c: 2f08 movel %a0,%sp@- 4612e: 4eb9 0004 7300 jsr 47300 <_Thread_Change_priority> 46134: 4fef 000c lea %sp@(12),%sp false ); } } the_mutex->blocked_count++; 46138: 52aa 0056 addql #1,%a2@(86) _Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout ); 4613c: 4879 0004 7f10 pea 47f10 <_Thread_queue_Timeout> 46142: 2f02 movel %d2,%sp@- 46144: 2f0a movel %a2,%sp@- 46146: 4eb9 0004 7bfc jsr 47bfc <_Thread_queue_Enqueue_with_handler> _Thread_Enable_dispatch(); } 4614c: 242e fff8 movel %fp@(-8),%d2 } the_mutex->blocked_count++; _Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout ); _Thread_Enable_dispatch(); 46150: 4fef 000c lea %sp@(12),%sp } 46154: 246e fffc moveal %fp@(-4),%a2 46158: 4e5e unlk %fp } the_mutex->blocked_count++; _Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout ); _Thread_Enable_dispatch(); 4615a: 4ef9 0004 779a jmp 4779a <_Thread_Enable_dispatch> =============================================================================== 0004aa08 <_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 ) { 4aa08: 4e56 fff4 linkw %fp,#-12 { Thread_Control *executing; /* disabled when you get here */ executing = _Thread_Executing; 4aa0c: 2279 0005 e902 moveal 5e902 <_Per_CPU_Information+0xc>,%a1 4aa12: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ 4aa16: 206e 0008 moveal %fp@(8),%a0 4aa1a: 246e 000c moveal %fp@(12),%a2 executing->Wait.return_code = CORE_MUTEX_STATUS_SUCCESSFUL; 4aa1e: 42a9 0034 clrl %a1@(52) if ( !_CORE_mutex_Is_locked( the_mutex ) ) { 4aa22: 4aa8 004e tstl %a0@(78) 4aa26: 6700 009e beqw 4aac6 <_CORE_mutex_Seize_interrupt_trylock+0xbe> the_mutex->lock = CORE_MUTEX_LOCKED; the_mutex->holder = executing; the_mutex->holder_id = executing->Object.id; the_mutex->nest_count = 1; 4aa2a: 7001 moveq #1,%d0 if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) || 4aa2c: 7202 moveq #2,%d1 executing = _Thread_Executing; executing->Wait.return_code = CORE_MUTEX_STATUS_SUCCESSFUL; if ( !_CORE_mutex_Is_locked( the_mutex ) ) { the_mutex->lock = CORE_MUTEX_LOCKED; the_mutex->holder = executing; the_mutex->holder_id = executing->Object.id; 4aa2e: 2169 0008 005e movel %a1@(8),%a0@(94) the_mutex->nest_count = 1; 4aa34: 2140 0052 movel %d0,%a0@(82) return _CORE_mutex_Seize_interrupt_trylock_body( the_mutex, level_p ); } 4aa38: 2028 0046 movel %a0@(70),%d0 /* disabled when you get here */ executing = _Thread_Executing; executing->Wait.return_code = CORE_MUTEX_STATUS_SUCCESSFUL; if ( !_CORE_mutex_Is_locked( the_mutex ) ) { the_mutex->lock = CORE_MUTEX_LOCKED; 4aa3c: 42a8 004e clrl %a0@(78) the_mutex->holder = executing; 4aa40: 2149 005a movel %a1,%a0@(90) the_mutex->holder_id = executing->Object.id; the_mutex->nest_count = 1; if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) || 4aa44: b280 cmpl %d0,%d1 4aa46: 6706 beqs 4aa4e <_CORE_mutex_Seize_interrupt_trylock+0x46> 4aa48: 7403 moveq #3,%d2 4aa4a: b480 cmpl %d0,%d2 4aa4c: 6612 bnes 4aa60 <_CORE_mutex_Seize_interrupt_trylock+0x58><== ALWAYS TAKEN _Chain_Prepend_unprotected( &executing->lock_mutex, &the_mutex->queue.lock_queue ); the_mutex->queue.priority_before = executing->current_priority; #endif executing->resource_count++; 4aa4e: 2229 001c movel %a1@(28),%d1 4aa52: 2401 movel %d1,%d2 4aa54: 5282 addql #1,%d2 4aa56: 2342 001c movel %d2,%a1@(28) } if ( !_CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) ) { 4aa5a: 7403 moveq #3,%d2 4aa5c: b480 cmpl %d0,%d2 4aa5e: 6708 beqs 4aa68 <_CORE_mutex_Seize_interrupt_trylock+0x60><== NEVER TAKEN _ISR_Enable( *level_p ); 4aa60: 2012 movel %a2@,%d0 4aa62: 46c0 movew %d0,%sr 4aa64: 6000 008a braw 4aaf0 <_CORE_mutex_Seize_interrupt_trylock+0xe8> */ { Priority_Control ceiling; Priority_Control current; ceiling = the_mutex->Attributes.priority_ceiling; 4aa68: 2028 004a movel %a0@(74),%d0 <== NOT EXECUTED current = executing->current_priority; 4aa6c: 2669 0014 moveal %a1@(20),%a3 <== NOT EXECUTED if ( current == ceiling ) { 4aa70: b08b cmpl %a3,%d0 <== NOT EXECUTED 4aa72: 6606 bnes 4aa7a <_CORE_mutex_Seize_interrupt_trylock+0x72><== NOT EXECUTED _ISR_Enable( *level_p ); 4aa74: 2012 movel %a2@,%d0 <== NOT EXECUTED 4aa76: 46c0 movew %d0,%sr <== NOT EXECUTED 4aa78: 6076 bras 4aaf0 <_CORE_mutex_Seize_interrupt_trylock+0xe8><== NOT EXECUTED return 0; } if ( current > ceiling ) { 4aa7a: b08b cmpl %a3,%d0 <== NOT EXECUTED 4aa7c: 642e bccs 4aaac <_CORE_mutex_Seize_interrupt_trylock+0xa4><== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 4aa7e: 2039 0005 e478 movel 5e478 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4aa84: 5280 addql #1,%d0 <== NOT EXECUTED 4aa86: 23c0 0005 e478 movel %d0,5e478 <_Thread_Dispatch_disable_level><== NOT EXECUTED _Thread_Disable_dispatch(); _ISR_Enable( *level_p ); 4aa8c: 2012 movel %a2@,%d0 <== NOT EXECUTED 4aa8e: 46c0 movew %d0,%sr <== NOT EXECUTED _Thread_Change_priority( 4aa90: 42a7 clrl %sp@- <== NOT EXECUTED 4aa92: 2f28 004a movel %a0@(74),%sp@- <== NOT EXECUTED 4aa96: 2f28 005a movel %a0@(90),%sp@- <== NOT EXECUTED 4aa9a: 4eb9 0004 7300 jsr 47300 <_Thread_Change_priority> <== NOT EXECUTED the_mutex->holder, the_mutex->Attributes.priority_ceiling, false ); _Thread_Enable_dispatch(); 4aaa0: 4eb9 0004 779a jsr 4779a <_Thread_Enable_dispatch> <== NOT EXECUTED 4aaa6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4aaaa: 6044 bras 4aaf0 <_CORE_mutex_Seize_interrupt_trylock+0xe8><== NOT EXECUTED return 0; } /* if ( current < ceiling ) */ { executing->Wait.return_code = CORE_MUTEX_STATUS_CEILING_VIOLATED; 4aaac: 7006 moveq #6,%d0 <== NOT EXECUTED the_mutex->lock = CORE_MUTEX_UNLOCKED; 4aaae: 7401 moveq #1,%d2 <== NOT EXECUTED ); _Thread_Enable_dispatch(); return 0; } /* if ( current < ceiling ) */ { executing->Wait.return_code = CORE_MUTEX_STATUS_CEILING_VIOLATED; 4aab0: 2340 0034 movel %d0,%a1@(52) <== NOT EXECUTED the_mutex->lock = CORE_MUTEX_UNLOCKED; 4aab4: 2142 004e movel %d2,%a0@(78) <== NOT EXECUTED the_mutex->nest_count = 0; /* undo locking above */ 4aab8: 42a8 0052 clrl %a0@(82) <== NOT EXECUTED executing->resource_count--; /* undo locking above */ 4aabc: 2341 001c movel %d1,%a1@(28) <== NOT EXECUTED _ISR_Enable( *level_p ); 4aac0: 2012 movel %a2@,%d0 <== NOT EXECUTED 4aac2: 46c0 movew %d0,%sr <== NOT EXECUTED 4aac4: 602a bras 4aaf0 <_CORE_mutex_Seize_interrupt_trylock+0xe8><== 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 ) ) { 4aac6: 2668 005a moveal %a0@(90),%a3 4aaca: b3cb cmpal %a3,%a1 4aacc: 6626 bnes 4aaf4 <_CORE_mutex_Seize_interrupt_trylock+0xec> switch ( the_mutex->Attributes.lock_nesting_behavior ) { 4aace: 2028 0040 movel %a0@(64),%d0 4aad2: 6708 beqs 4aadc <_CORE_mutex_Seize_interrupt_trylock+0xd4><== NEVER TAKEN 4aad4: 7201 moveq #1,%d1 4aad6: b280 cmpl %d0,%d1 4aad8: 661a bnes 4aaf4 <_CORE_mutex_Seize_interrupt_trylock+0xec><== ALWAYS TAKEN 4aada: 600a bras 4aae6 <_CORE_mutex_Seize_interrupt_trylock+0xde><== NOT EXECUTED case CORE_MUTEX_NESTING_ACQUIRES: the_mutex->nest_count++; 4aadc: 52a8 0052 addql #1,%a0@(82) <== NOT EXECUTED _ISR_Enable( *level_p ); 4aae0: 2012 movel %a2@,%d0 <== NOT EXECUTED 4aae2: 46c0 movew %d0,%sr <== NOT EXECUTED 4aae4: 600a bras 4aaf0 <_CORE_mutex_Seize_interrupt_trylock+0xe8><== NOT EXECUTED return 0; case CORE_MUTEX_NESTING_IS_ERROR: executing->Wait.return_code = CORE_MUTEX_STATUS_NESTING_NOT_ALLOWED; 4aae6: 7402 moveq #2,%d2 <== NOT EXECUTED 4aae8: 2742 0034 movel %d2,%a3@(52) <== NOT EXECUTED _ISR_Enable( *level_p ); 4aaec: 2012 movel %a2@,%d0 <== NOT EXECUTED 4aaee: 46c0 movew %d0,%sr <== NOT EXECUTED return 0; 4aaf0: 4280 clrl %d0 4aaf2: 6002 bras 4aaf6 <_CORE_mutex_Seize_interrupt_trylock+0xee> /* * The mutex is not available and the caller must deal with the possibility * of blocking. */ return 1; 4aaf4: 7001 moveq #1,%d0 4aaf6: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 4aafc: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046204 <_CORE_mutex_Surrender>: #else Objects_Id id __attribute__((unused)), CORE_mutex_API_mp_support_callout api_mutex_mp_support __attribute__((unused)) #endif ) { 46204: 4e56 0000 linkw %fp,#0 46208: 2f0a movel %a2,%sp@- 4620a: 246e 0008 moveal %fp@(8),%a2 Thread_Control *the_thread; Thread_Control *holder; holder = the_mutex->holder; 4620e: 206a 005a moveal %a2@(90),%a0 * allowed when the mutex in quetion is FIFO or simple Priority * discipline. But Priority Ceiling or Priority Inheritance mutexes * must be released by the thread which acquired them. */ if ( the_mutex->Attributes.only_owner_release ) { 46212: 4a2a 0044 tstb %a2@(68) 46216: 670a beqs 46222 <_CORE_mutex_Surrender+0x1e> if ( !_Thread_Is_executing( holder ) ) 46218: b1f9 0005 e902 cmpal 5e902 <_Per_CPU_Information+0xc>,%a0 4621e: 6600 00ba bnew 462da <_CORE_mutex_Surrender+0xd6> return CORE_MUTEX_STATUS_NOT_OWNER_OF_RESOURCE; } /* XXX already unlocked -- not right status */ if ( !the_mutex->nest_count ) 46222: 202a 0052 movel %a2@(82),%d0 46226: 6700 00b6 beqw 462de <_CORE_mutex_Surrender+0xda> return CORE_MUTEX_STATUS_SUCCESSFUL; the_mutex->nest_count--; 4622a: 5380 subql #1,%d0 4622c: 2540 0052 movel %d0,%a2@(82) if ( the_mutex->nest_count != 0 ) { 46230: 6600 00ac bnew 462de <_CORE_mutex_Surrender+0xda> } } else the_mutex->lock = CORE_MUTEX_UNLOCKED; return CORE_MUTEX_STATUS_SUCCESSFUL; } 46234: 202a 0046 movel %a2@(70),%d0 /* * Formally release the mutex before possibly transferring it to a * blocked thread. */ if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) || 46238: 7202 moveq #2,%d1 4623a: b280 cmpl %d0,%d1 4623c: 6708 beqs 46246 <_CORE_mutex_Surrender+0x42> 4623e: 123c 0003 moveb #3,%d1 46242: b280 cmpl %d0,%d1 46244: 6628 bnes 4626e <_CORE_mutex_Surrender+0x6a> <== ALWAYS TAKEN _CORE_mutex_Pop_priority( the_mutex, holder ); if ( pop_status != CORE_MUTEX_STATUS_SUCCESSFUL ) return pop_status; holder->resource_count--; 46246: 2028 001c movel %a0@(28),%d0 4624a: 5380 subql #1,%d0 4624c: 2140 001c movel %d0,%a0@(28) /* * Whether or not someone is waiting for the mutex, an * inherited priority must be lowered if this is the last * mutex (i.e. resource) this task has. */ if ( holder->resource_count == 0 && 46250: 661c bnes 4626e <_CORE_mutex_Surrender+0x6a> holder->real_priority != holder->current_priority ) { 46252: 2028 0018 movel %a0@(24),%d0 /* * Whether or not someone is waiting for the mutex, an * inherited priority must be lowered if this is the last * mutex (i.e. resource) this task has. */ if ( holder->resource_count == 0 && 46256: b0a8 0014 cmpl %a0@(20),%d0 4625a: 6712 beqs 4626e <_CORE_mutex_Surrender+0x6a> holder->real_priority != holder->current_priority ) { _Thread_Change_priority( holder, holder->real_priority, true ); 4625c: 4878 0001 pea 1 46260: 2f00 movel %d0,%sp@- 46262: 2f08 movel %a0,%sp@- 46264: 4eb9 0004 7300 jsr 47300 <_Thread_Change_priority> 4626a: 4fef 000c lea %sp@(12),%sp } } the_mutex->holder = NULL; 4626e: 42aa 005a clrl %a2@(90) the_mutex->holder_id = 0; 46272: 42aa 005e clrl %a2@(94) /* * Now we check if another thread was waiting for this mutex. If so, * transfer the mutex to that thread. */ if ( ( the_thread = _Thread_queue_Dequeue( &the_mutex->Wait_queue ) ) ) { 46276: 2f0a movel %a2,%sp@- 46278: 4eb9 0004 7abc jsr 47abc <_Thread_queue_Dequeue> 4627e: 588f addql #4,%sp 46280: 2040 moveal %d0,%a0 46282: 4a80 tstl %d0 46284: 674a beqs 462d0 <_CORE_mutex_Surrender+0xcc> } else #endif { the_mutex->holder = the_thread; 46286: 2540 005a movel %d0,%a2@(90) the_mutex->holder_id = the_thread->Object.id; the_mutex->nest_count = 1; 4628a: 7001 moveq #1,%d0 switch ( the_mutex->Attributes.discipline ) { 4628c: 7202 moveq #2,%d1 } else #endif { the_mutex->holder = the_thread; the_mutex->holder_id = the_thread->Object.id; 4628e: 2568 0008 005e movel %a0@(8),%a2@(94) the_mutex->nest_count = 1; 46294: 2540 0052 movel %d0,%a2@(82) switch ( the_mutex->Attributes.discipline ) { 46298: 202a 0046 movel %a2@(70),%d0 4629c: b280 cmpl %d0,%d1 4629e: 670a beqs 462aa <_CORE_mutex_Surrender+0xa6> <== ALWAYS TAKEN 462a0: 123c 0003 moveb #3,%d1 <== NOT EXECUTED 462a4: b280 cmpl %d0,%d1 <== NOT EXECUTED 462a6: 6636 bnes 462de <_CORE_mutex_Surrender+0xda> <== NOT EXECUTED 462a8: 6006 bras 462b0 <_CORE_mutex_Surrender+0xac> <== NOT EXECUTED case CORE_MUTEX_DISCIPLINES_FIFO: case CORE_MUTEX_DISCIPLINES_PRIORITY: break; case CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT: _CORE_mutex_Push_priority( the_mutex, the_thread ); the_thread->resource_count++; 462aa: 52a8 001c addql #1,%a0@(28) 462ae: 602e bras 462de <_CORE_mutex_Surrender+0xda> break; case CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING: _CORE_mutex_Push_priority( the_mutex, the_thread ); the_thread->resource_count++; if (the_mutex->Attributes.priority_ceiling < 462b0: 202a 004a movel %a2@(74),%d0 <== NOT EXECUTED _CORE_mutex_Push_priority( the_mutex, the_thread ); the_thread->resource_count++; break; case CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING: _CORE_mutex_Push_priority( the_mutex, the_thread ); the_thread->resource_count++; 462b4: 52a8 001c addql #1,%a0@(28) <== NOT EXECUTED if (the_mutex->Attributes.priority_ceiling < 462b8: b0a8 0014 cmpl %a0@(20),%d0 <== NOT EXECUTED 462bc: 6420 bccs 462de <_CORE_mutex_Surrender+0xda> <== NOT EXECUTED the_thread->current_priority){ _Thread_Change_priority( 462be: 42a7 clrl %sp@- <== NOT EXECUTED 462c0: 2f00 movel %d0,%sp@- <== NOT EXECUTED 462c2: 2f08 movel %a0,%sp@- <== NOT EXECUTED 462c4: 4eb9 0004 7300 jsr 47300 <_Thread_Change_priority> <== NOT EXECUTED 462ca: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 462ce: 600e bras 462de <_CORE_mutex_Surrender+0xda> <== NOT EXECUTED } break; } } } else the_mutex->lock = CORE_MUTEX_UNLOCKED; 462d0: 7001 moveq #1,%d0 462d2: 2540 004e movel %d0,%a2@(78) return CORE_MUTEX_STATUS_SUCCESSFUL; 462d6: 4200 clrb %d0 462d8: 6006 bras 462e0 <_CORE_mutex_Surrender+0xdc> * must be released by the thread which acquired them. */ if ( the_mutex->Attributes.only_owner_release ) { if ( !_Thread_Is_executing( holder ) ) return CORE_MUTEX_STATUS_NOT_OWNER_OF_RESOURCE; 462da: 7003 moveq #3,%d0 <== NOT EXECUTED 462dc: 6002 bras 462e0 <_CORE_mutex_Surrender+0xdc> <== NOT EXECUTED } } } else the_mutex->lock = CORE_MUTEX_UNLOCKED; return CORE_MUTEX_STATUS_SUCCESSFUL; 462de: 4280 clrl %d0 } 462e0: 246e fffc moveal %fp@(-4),%a2 462e4: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004e684 <_CORE_semaphore_Seize>: Thread_Control *executing; ISR_Level level; executing = _Thread_Executing; executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL; _ISR_Disable( level ); 4e684: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED CORE_semaphore_Control *the_semaphore, Objects_Id id, bool wait, Watchdog_Interval timeout ) { 4e68a: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED Thread_Control *executing; ISR_Level level; executing = _Thread_Executing; 4e68e: 2279 0006 387e moveal 6387e <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED CORE_semaphore_Control *the_semaphore, Objects_Id id, bool wait, Watchdog_Interval timeout ) { 4e694: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 4e698: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4e69c: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 4e6a0: 242e 0014 movel %fp@(20),%d2 <== NOT EXECUTED 4e6a4: 182e 0013 moveb %fp@(19),%d4 <== NOT EXECUTED Thread_Control *executing; ISR_Level level; executing = _Thread_Executing; executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL; 4e6a8: 42a9 0034 clrl %a1@(52) <== NOT EXECUTED _ISR_Disable( level ); 4e6ac: 40c0 movew %sr,%d0 <== NOT EXECUTED 4e6ae: 8280 orl %d0,%d1 <== NOT EXECUTED 4e6b0: 46c1 movew %d1,%sr <== NOT EXECUTED if ( the_semaphore->count != 0 ) { 4e6b2: 2228 0048 movel %a0@(72),%d1 <== NOT EXECUTED 4e6b6: 670a beqs 4e6c2 <_CORE_semaphore_Seize+0x3e> <== NOT EXECUTED the_semaphore->count -= 1; 4e6b8: 5381 subql #1,%d1 <== NOT EXECUTED 4e6ba: 2141 0048 movel %d1,%a0@(72) <== NOT EXECUTED _ISR_Enable( level ); 4e6be: 46c0 movew %d0,%sr <== NOT EXECUTED return; 4e6c0: 603c bras 4e6fe <_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 ) { 4e6c2: 4a04 tstb %d4 <== NOT EXECUTED 4e6c4: 660a bnes 4e6d0 <_CORE_semaphore_Seize+0x4c> <== NOT EXECUTED _ISR_Enable( level ); 4e6c6: 46c0 movew %d0,%sr <== NOT EXECUTED executing->Wait.return_code = CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT; 4e6c8: 7001 moveq #1,%d0 <== NOT EXECUTED 4e6ca: 2340 0034 movel %d0,%a1@(52) <== NOT EXECUTED 4e6ce: 602e bras 4e6fe <_CORE_semaphore_Seize+0x7a> <== NOT EXECUTED 4e6d0: 7201 moveq #1,%d1 <== NOT EXECUTED 4e6d2: 2141 0030 movel %d1,%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; 4e6d6: 2348 0044 movel %a0,%a1@(68) <== NOT EXECUTED executing->Wait.id = id; 4e6da: 2343 0020 movel %d3,%a1@(32) <== NOT EXECUTED _ISR_Enable( level ); 4e6de: 46c0 movew %d0,%sr <== NOT EXECUTED _Thread_queue_Enqueue( &the_semaphore->Wait_queue, timeout ); 4e6e0: 2d42 000c movel %d2,%fp@(12) <== NOT EXECUTED 4e6e4: 203c 0004 b558 movel #308568,%d0 <== NOT EXECUTED 4e6ea: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED } 4e6ee: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED */ _Thread_queue_Enter_critical_section( &the_semaphore->Wait_queue ); executing->Wait.queue = &the_semaphore->Wait_queue; executing->Wait.id = id; _ISR_Enable( level ); _Thread_queue_Enqueue( &the_semaphore->Wait_queue, timeout ); 4e6f2: 2d40 0010 movel %d0,%fp@(16) <== NOT EXECUTED } 4e6f6: 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 ); 4e6f8: 4ef9 0004 b244 jmp 4b244 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED } 4e6fe: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED 4e702: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004633c <_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 ) { 4633c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46340: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46342: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED ISR_Level level; CORE_semaphore_Status status; status = CORE_SEMAPHORE_STATUS_SUCCESSFUL; if ( (the_thread = _Thread_queue_Dequeue(&the_semaphore->Wait_queue)) ) { 46346: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46348: 4eb9 0004 7abc jsr 47abc <_Thread_queue_Dequeue> <== NOT EXECUTED 4634e: 588f addql #4,%sp <== NOT EXECUTED 46350: 4a80 tstl %d0 <== NOT EXECUTED 46352: 6624 bnes 46378 <_CORE_semaphore_Surrender+0x3c> <== NOT EXECUTED if ( !_Objects_Is_local_id( the_thread->Object.id ) ) (*api_semaphore_mp_support) ( the_thread, id ); #endif } else { _ISR_Disable( level ); 46354: 303c 0700 movew #1792,%d0 <== NOT EXECUTED 46358: 40c1 movew %sr,%d1 <== NOT EXECUTED 4635a: 8081 orl %d1,%d0 <== NOT EXECUTED 4635c: 46c0 movew %d0,%sr <== NOT EXECUTED if ( the_semaphore->count < the_semaphore->Attributes.maximum_count ) 4635e: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED 46362: b0aa 0040 cmpl %a2@(64),%d0 <== NOT EXECUTED 46366: 640a bccs 46372 <_CORE_semaphore_Surrender+0x36> <== NOT EXECUTED the_semaphore->count += 1; 46368: 5280 addql #1,%d0 <== NOT EXECUTED 4636a: 2540 0048 movel %d0,%a2@(72) <== NOT EXECUTED { Thread_Control *the_thread; ISR_Level level; CORE_semaphore_Status status; status = CORE_SEMAPHORE_STATUS_SUCCESSFUL; 4636e: 4280 clrl %d0 <== NOT EXECUTED 46370: 6002 bras 46374 <_CORE_semaphore_Surrender+0x38> <== NOT EXECUTED } else { _ISR_Disable( level ); if ( the_semaphore->count < the_semaphore->Attributes.maximum_count ) the_semaphore->count += 1; else status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED; 46372: 7004 moveq #4,%d0 <== NOT EXECUTED _ISR_Enable( level ); 46374: 46c1 movew %d1,%sr <== NOT EXECUTED 46376: 6002 bras 4637a <_CORE_semaphore_Surrender+0x3e> <== NOT EXECUTED { Thread_Control *the_thread; ISR_Level level; CORE_semaphore_Status status; status = CORE_SEMAPHORE_STATUS_SUCCESSFUL; 46378: 4280 clrl %d0 <== NOT EXECUTED status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED; _ISR_Enable( level ); } return status; } 4637a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4637e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046c80 <_CORE_spinlock_Initialize>: void _CORE_spinlock_Initialize( CORE_spinlock_Control *the_spinlock, CORE_spinlock_Attributes *the_spinlock_attributes ) { 46c80: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46c84: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED the_spinlock->Attributes = *the_spinlock_attributes; 46c88: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED the_spinlock->lock = 0; the_spinlock->users = 0; the_spinlock->holder = 0; } 46c8c: 4e5e unlk %fp <== NOT EXECUTED CORE_spinlock_Control *the_spinlock, CORE_spinlock_Attributes *the_spinlock_attributes ) { the_spinlock->Attributes = *the_spinlock_attributes; 46c8e: 2091 movel %a1@,%a0@ <== NOT EXECUTED the_spinlock->lock = 0; 46c90: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED the_spinlock->users = 0; 46c94: 42a8 0008 clrl %a0@(8) <== NOT EXECUTED the_spinlock->holder = 0; 46c98: 42a8 000c clrl %a0@(12) <== NOT EXECUTED } ... =============================================================================== 00046ca0 <_CORE_spinlock_Release>: CORE_spinlock_Control *the_spinlock ) { ISR_Level level; _ISR_Disable( level ); 46ca0: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED */ CORE_spinlock_Status _CORE_spinlock_Release( CORE_spinlock_Control *the_spinlock ) { 46ca6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46caa: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED ISR_Level level; _ISR_Disable( level ); 46cae: 40c0 movew %sr,%d0 <== NOT EXECUTED 46cb0: 8280 orl %d0,%d1 <== NOT EXECUTED 46cb2: 46c1 movew %d1,%sr <== NOT EXECUTED /* * It must locked before it can be unlocked. */ if ( the_spinlock->lock == CORE_SPINLOCK_UNLOCKED ) { 46cb4: 2228 0004 movel %a0@(4),%d1 <== NOT EXECUTED 46cb8: 6606 bnes 46cc0 <_CORE_spinlock_Release+0x20> <== NOT EXECUTED _ISR_Enable( level ); 46cba: 46c0 movew %d0,%sr <== NOT EXECUTED return CORE_SPINLOCK_NOT_LOCKED; 46cbc: 7006 moveq #6,%d0 <== NOT EXECUTED 46cbe: 602c bras 46cec <_CORE_spinlock_Release+0x4c> <== NOT EXECUTED } /* * It must locked by the current thread before it can be unlocked. */ if ( the_spinlock->holder != _Thread_Executing->Object.id ) { 46cc0: 2228 000c movel %a0@(12),%d1 <== NOT EXECUTED 46cc4: 2279 0005 f8f2 moveal 5f8f2 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED 46cca: b2a9 0008 cmpl %a1@(8),%d1 <== NOT EXECUTED 46cce: 6706 beqs 46cd6 <_CORE_spinlock_Release+0x36> <== NOT EXECUTED _ISR_Enable( level ); 46cd0: 46c0 movew %d0,%sr <== NOT EXECUTED return CORE_SPINLOCK_NOT_HOLDER; 46cd2: 7002 moveq #2,%d0 <== NOT EXECUTED 46cd4: 6016 bras 46cec <_CORE_spinlock_Release+0x4c> <== NOT EXECUTED } /* * Let it be unlocked. */ the_spinlock->users -= 1; 46cd6: 2228 0008 movel %a0@(8),%d1 <== NOT EXECUTED 46cda: 5381 subql #1,%d1 <== NOT EXECUTED 46cdc: 2141 0008 movel %d1,%a0@(8) <== NOT EXECUTED the_spinlock->lock = CORE_SPINLOCK_UNLOCKED; 46ce0: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED the_spinlock->holder = 0; 46ce4: 42a8 000c clrl %a0@(12) <== NOT EXECUTED _ISR_Enable( level ); 46ce8: 46c0 movew %d0,%sr <== NOT EXECUTED return CORE_SPINLOCK_SUCCESSFUL; 46cea: 4280 clrl %d0 <== NOT EXECUTED } 46cec: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046cf0 <_CORE_spinlock_Wait>: ISR_Level level; #if defined(FUNCTIONALITY_NOT_CURRENTLY_USED_BY_ANY_API) Watchdog_Interval limit = _Watchdog_Ticks_since_boot + timeout; #endif _ISR_Disable( level ); 46cf0: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED CORE_spinlock_Status _CORE_spinlock_Wait( CORE_spinlock_Control *the_spinlock, bool wait, Watchdog_Interval timeout ) { 46cf6: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 46cfa: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED 46cfe: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 46d02: 162e 000f moveb %fp@(15),%d3 <== NOT EXECUTED ISR_Level level; #if defined(FUNCTIONALITY_NOT_CURRENTLY_USED_BY_ANY_API) Watchdog_Interval limit = _Watchdog_Ticks_since_boot + timeout; #endif _ISR_Disable( level ); 46d06: 40c1 movew %sr,%d1 <== NOT EXECUTED 46d08: 8081 orl %d1,%d0 <== NOT EXECUTED 46d0a: 46c0 movew %d0,%sr <== NOT EXECUTED 46d0c: 2001 movel %d1,%d0 <== NOT EXECUTED if ( (the_spinlock->lock == CORE_SPINLOCK_LOCKED) && 46d0e: 206a 0004 moveal %a2@(4),%a0 <== NOT EXECUTED 46d12: 7401 moveq #1,%d2 <== NOT EXECUTED 46d14: b488 cmpl %a0,%d2 <== NOT EXECUTED 46d16: 6616 bnes 46d2e <_CORE_spinlock_Wait+0x3e> <== NOT EXECUTED (the_spinlock->holder == _Thread_Executing->Object.id) ) { 46d18: 226a 000c moveal %a2@(12),%a1 <== NOT EXECUTED 46d1c: 2079 0005 f8f2 moveal 5f8f2 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED #if defined(FUNCTIONALITY_NOT_CURRENTLY_USED_BY_ANY_API) Watchdog_Interval limit = _Watchdog_Ticks_since_boot + timeout; #endif _ISR_Disable( level ); if ( (the_spinlock->lock == CORE_SPINLOCK_LOCKED) && 46d22: b3e8 0008 cmpal %a0@(8),%a1 <== NOT EXECUTED 46d26: 6606 bnes 46d2e <_CORE_spinlock_Wait+0x3e> <== NOT EXECUTED (the_spinlock->holder == _Thread_Executing->Object.id) ) { _ISR_Enable( level ); 46d28: 46c1 movew %d1,%sr <== NOT EXECUTED return CORE_SPINLOCK_HOLDER_RELOCKING; 46d2a: 7001 moveq #1,%d0 <== NOT EXECUTED 46d2c: 6068 bras 46d96 <_CORE_spinlock_Wait+0xa6> <== NOT EXECUTED } the_spinlock->users += 1; 46d2e: 222a 0008 movel %a2@(8),%d1 <== NOT EXECUTED 46d32: 5281 addql #1,%d1 <== NOT EXECUTED */ _ISR_Enable( level ); /* An ISR could occur here */ _Thread_Enable_dispatch(); 46d34: 47f9 0004 8142 lea 48142 <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED /* Another thread could get dispatched here */ /* Reenter the critical sections so we can attempt the lock again. */ _Thread_Disable_dispatch(); _ISR_Disable( level ); 46d3a: 243c 0000 0700 movel #1792,%d2 <== 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; 46d40: 2541 0008 movel %d1,%a2@(8) <== NOT EXECUTED for ( ;; ) { if ( the_spinlock->lock == CORE_SPINLOCK_UNLOCKED ) { 46d44: 222a 0004 movel %a2@(4),%d1 <== NOT EXECUTED 46d48: 661c bnes 46d66 <_CORE_spinlock_Wait+0x76> <== NOT EXECUTED the_spinlock->lock = CORE_SPINLOCK_LOCKED; the_spinlock->holder = _Thread_Executing->Object.id; 46d4a: 2079 0005 f8f2 moveal 5f8f2 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED return CORE_SPINLOCK_HOLDER_RELOCKING; } the_spinlock->users += 1; for ( ;; ) { if ( the_spinlock->lock == CORE_SPINLOCK_UNLOCKED ) { the_spinlock->lock = CORE_SPINLOCK_LOCKED; 46d50: 123c 0001 moveb #1,%d1 <== NOT EXECUTED 46d54: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED the_spinlock->holder = _Thread_Executing->Object.id; 46d58: 2228 0008 movel %a0@(8),%d1 <== NOT EXECUTED 46d5c: 2541 000c movel %d1,%a2@(12) <== NOT EXECUTED _ISR_Enable( level ); 46d60: 46c0 movew %d0,%sr <== NOT EXECUTED return CORE_SPINLOCK_SUCCESSFUL; 46d62: 4280 clrl %d0 <== NOT EXECUTED 46d64: 6030 bras 46d96 <_CORE_spinlock_Wait+0xa6> <== NOT EXECUTED } /* * Spinlock is unavailable. If not willing to wait, return. */ if ( !wait ) { 46d66: 4a03 tstb %d3 <== NOT EXECUTED 46d68: 6610 bnes 46d7a <_CORE_spinlock_Wait+0x8a> <== NOT EXECUTED the_spinlock->users -= 1; 46d6a: 222a 0008 movel %a2@(8),%d1 <== NOT EXECUTED 46d6e: 5381 subql #1,%d1 <== NOT EXECUTED 46d70: 2541 0008 movel %d1,%a2@(8) <== NOT EXECUTED _ISR_Enable( level ); 46d74: 46c0 movew %d0,%sr <== NOT EXECUTED return CORE_SPINLOCK_UNAVAILABLE; 46d76: 7005 moveq #5,%d0 <== NOT EXECUTED 46d78: 601c bras 46d96 <_CORE_spinlock_Wait+0xa6> <== NOT EXECUTED * * A spinlock cannot be deleted while it is being used so we are * safe from deletion. */ _ISR_Enable( level ); 46d7a: 46c0 movew %d0,%sr <== NOT EXECUTED /* An ISR could occur here */ _Thread_Enable_dispatch(); 46d7c: 4e93 jsr %a3@ <== NOT EXECUTED 46d7e: 2039 0005 f468 movel 5f468 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 46d84: 5280 addql #1,%d0 <== NOT EXECUTED 46d86: 23c0 0005 f468 movel %d0,5f468 <_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 ); 46d8c: 2202 movel %d2,%d1 <== NOT EXECUTED 46d8e: 40c0 movew %sr,%d0 <== NOT EXECUTED 46d90: 8280 orl %d0,%d1 <== NOT EXECUTED 46d92: 46c1 movew %d1,%sr <== NOT EXECUTED } 46d94: 60ae bras 46d44 <_CORE_spinlock_Wait+0x54> <== NOT EXECUTED } 46d96: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED 46d9c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046670 <_Chain_Append_with_empty_check>: ) { ISR_Level level; bool was_empty; _ISR_Disable( level ); 46670: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED bool _Chain_Append_with_empty_check( Chain_Control *chain, Chain_Node *node ) { 46676: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4667a: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED 4667e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46680: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 46684: 2f02 movel %d2,%sp@- <== NOT EXECUTED ISR_Level level; bool was_empty; _ISR_Disable( level ); 46686: 40c2 movew %sr,%d2 <== NOT EXECUTED 46688: 8082 orl %d2,%d0 <== NOT EXECUTED 4668a: 46c0 movew %d0,%sr <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( const Chain_Control *the_chain ) { return _Chain_Immutable_first( the_chain ) == _Chain_Immutable_tail( the_chain ); 4668c: 2209 movel %a1,%d1 <== NOT EXECUTED 4668e: 5881 addql #4,%d1 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( const Chain_Control *the_chain ) { return _Chain_Immutable_first( the_chain ) 46690: b291 cmpl %a1@,%d1 <== NOT EXECUTED 46692: 57c0 seq %d0 <== NOT EXECUTED Chain_Control *the_chain, Chain_Node *the_node ) { Chain_Node *tail = _Chain_Tail( the_chain ); Chain_Node *old_last = tail->previous; 46694: 2469 0008 moveal %a1@(8),%a2 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( const Chain_Control *the_chain ) { return _Chain_Immutable_first( the_chain ) 46698: 4480 negl %d0 <== NOT EXECUTED { Chain_Node *tail = _Chain_Tail( the_chain ); Chain_Node *old_last = tail->previous; the_node->next = tail; tail->previous = the_node; 4669a: 2348 0008 movel %a0,%a1@(8) <== NOT EXECUTED ) { Chain_Node *tail = _Chain_Tail( the_chain ); Chain_Node *old_last = tail->previous; the_node->next = tail; 4669e: 2081 movel %d1,%a0@ <== NOT EXECUTED tail->previous = the_node; old_last->next = the_node; the_node->previous = old_last; 466a0: 214a 0004 movel %a2,%a0@(4) <== NOT EXECUTED Chain_Node *tail = _Chain_Tail( the_chain ); Chain_Node *old_last = tail->previous; the_node->next = tail; tail->previous = the_node; old_last->next = the_node; 466a4: 2488 movel %a0,%a2@ <== NOT EXECUTED was_empty = _Chain_Append_with_empty_check_unprotected( chain, node ); _ISR_Enable( level ); 466a6: 46c2 movew %d2,%sr <== NOT EXECUTED return was_empty; } 466a8: 241f movel %sp@+,%d2 <== NOT EXECUTED 466aa: 245f moveal %sp@+,%a2 <== NOT EXECUTED 466ac: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046710 <_Chain_Get_with_empty_check>: ) { ISR_Level level; bool is_empty_now; _ISR_Disable( level ); 46710: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED bool _Chain_Get_with_empty_check( Chain_Control *chain, Chain_Node **node ) { 46716: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4671a: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4671e: 2f0b movel %a3,%sp@- <== NOT EXECUTED 46720: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED 46724: 2f0a movel %a2,%sp@- <== NOT EXECUTED ISR_Level level; bool is_empty_now; _ISR_Disable( level ); 46726: 40c1 movew %sr,%d1 <== NOT EXECUTED 46728: 8081 orl %d1,%d0 <== NOT EXECUTED 4672a: 46c0 movew %d0,%sr <== NOT EXECUTED Chain_Node **the_node ) { bool is_empty_now = true; Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); 4672c: 2008 movel %a0,%d0 <== NOT EXECUTED 4672e: 5880 addql #4,%d0 <== NOT EXECUTED Chain_Node *old_first = head->next; 46730: 2450 moveal %a0@,%a2 <== NOT EXECUTED if ( old_first != tail ) { 46732: b08a cmpl %a2,%d0 <== NOT EXECUTED 46734: 6712 beqs 46748 <_Chain_Get_with_empty_check+0x38><== NOT EXECUTED Chain_Node *new_first = old_first->next; 46736: 2252 moveal %a2@,%a1 <== NOT EXECUTED head->next = new_first; new_first->previous = head; *the_node = old_first; is_empty_now = new_first == tail; 46738: b089 cmpl %a1,%d0 <== NOT EXECUTED 4673a: 57c0 seq %d0 <== NOT EXECUTED Chain_Node *old_first = head->next; if ( old_first != tail ) { Chain_Node *new_first = old_first->next; head->next = new_first; 4673c: 2089 movel %a1,%a0@ <== NOT EXECUTED new_first->previous = head; *the_node = old_first; is_empty_now = new_first == tail; 4673e: 4480 negl %d0 <== NOT EXECUTED if ( old_first != tail ) { Chain_Node *new_first = old_first->next; head->next = new_first; new_first->previous = head; 46740: 2348 0004 movel %a0,%a1@(4) <== NOT EXECUTED *the_node = old_first; 46744: 268a movel %a2,%a3@ <== NOT EXECUTED 46746: 6004 bras 4674c <_Chain_Get_with_empty_check+0x3c><== NOT EXECUTED is_empty_now = new_first == tail; } else *the_node = NULL; 46748: 4293 clrl %a3@ <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Chain_Get_with_empty_check_unprotected( Chain_Control *the_chain, Chain_Node **the_node ) { bool is_empty_now = true; 4674a: 7001 moveq #1,%d0 <== NOT EXECUTED is_empty_now = _Chain_Get_with_empty_check_unprotected( chain, node ); _ISR_Enable( level ); 4674c: 46c1 movew %d1,%sr <== NOT EXECUTED return is_empty_now; } 4674e: 245f moveal %sp@+,%a2 <== NOT EXECUTED 46750: 265f moveal %sp@+,%a3 <== NOT EXECUTED 46752: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000467bc <_Chain_Prepend_with_empty_check>: ) { ISR_Level level; bool was_empty; _ISR_Disable( level ); 467bc: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED bool _Chain_Prepend_with_empty_check( Chain_Control *chain, Chain_Node *node ) { 467c2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 467c6: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED 467ca: 2f0a movel %a2,%sp@- <== NOT EXECUTED 467cc: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED ISR_Level level; bool was_empty; _ISR_Disable( level ); 467d0: 40c1 movew %sr,%d1 <== NOT EXECUTED 467d2: 8081 orl %d1,%d0 <== NOT EXECUTED 467d4: 46c0 movew %d0,%sr <== NOT EXECUTED was_empty = _Chain_Prepend_with_empty_check_unprotected( chain, node ); _ISR_Enable( level ); return was_empty; } 467d6: 2451 moveal %a1@,%a2 <== NOT EXECUTED Chain_Node *the_node ) { Chain_Node *before_node; the_node->previous = after_node; 467d8: 2149 0004 movel %a1,%a0@(4) <== NOT EXECUTED before_node = after_node->next; after_node->next = the_node; 467dc: 22c8 movel %a0,%a1@+ <== NOT EXECUTED the_node->next = before_node; before_node->previous = the_node; 467de: 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; 467e2: 208a movel %a2,%a0@ <== NOT EXECUTED ISR_Level level; bool was_empty; _ISR_Disable( level ); was_empty = _Chain_Prepend_with_empty_check_unprotected( chain, node ); _ISR_Enable( level ); 467e4: 46c1 movew %d1,%sr <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( const Chain_Control *the_chain ) { return _Chain_Immutable_first( the_chain ) 467e6: b3ca cmpal %a2,%a1 <== NOT EXECUTED 467e8: 57c0 seq %d0 <== NOT EXECUTED return was_empty; } 467ea: 245f moveal %sp@+,%a2 <== NOT EXECUTED 467ec: 4480 negl %d0 <== NOT EXECUTED 467ee: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000450a0 <_Event_Seize>: executing = _Thread_Executing; executing->Wait.return_code = RTEMS_SUCCESSFUL; api = executing->API_Extensions[ THREAD_API_RTEMS ]; _ISR_Disable( level ); 450a0: 203c 0000 0700 movel #1792,%d0 rtems_event_set event_in, rtems_option option_set, rtems_interval ticks, rtems_event_set *event_out ) { 450a6: 4e56 ffec linkw %fp,#-20 450aa: 226e 0010 moveal %fp@(16),%a1 450ae: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ rtems_event_set pending_events; ISR_Level level; RTEMS_API_Control *api; Thread_blocking_operation_States sync_state; executing = _Thread_Executing; 450b2: 2479 0005 e902 moveal 5e902 <_Per_CPU_Information+0xc>,%a2 rtems_event_set event_in, rtems_option option_set, rtems_interval ticks, rtems_event_set *event_out ) { 450b8: 242e 0008 movel %fp@(8),%d2 450bc: 262e 000c movel %fp@(12),%d3 450c0: 206e 0014 moveal %fp@(20),%a0 ISR_Level level; RTEMS_API_Control *api; Thread_blocking_operation_States sync_state; executing = _Thread_Executing; executing->Wait.return_code = RTEMS_SUCCESSFUL; 450c4: 42aa 0034 clrl %a2@(52) api = executing->API_Extensions[ THREAD_API_RTEMS ]; 450c8: 266a 00fe moveal %a2@(254),%a3 _ISR_Disable( level ); 450cc: 40c1 movew %sr,%d1 450ce: 8081 orl %d1,%d0 450d0: 46c0 movew %d0,%sr pending_events = api->pending_events; 450d2: 2813 movel %a3@,%d4 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 ); 450d4: 2002 movel %d2,%d0 450d6: c084 andl %d4,%d0 seized_events = _Event_sets_Get( pending_events, event_in ); if ( !_Event_sets_Is_empty( seized_events ) && 450d8: 6716 beqs 450f0 <_Event_Seize+0x50> 450da: b480 cmpl %d0,%d2 450dc: 6706 beqs 450e4 <_Event_Seize+0x44> <== ALWAYS TAKEN (seized_events == event_in || _Options_Is_any( option_set )) ) { 450de: 0803 0001 btst #1,%d3 <== NOT EXECUTED 450e2: 670c beqs 450f0 <_Event_Seize+0x50> <== NOT EXECUTED RTEMS_INLINE_ROUTINE rtems_event_set _Event_sets_Clear( rtems_event_set the_event_set, rtems_event_set the_mask ) { return ( the_event_set & ~(the_mask) ); 450e4: 2400 movel %d0,%d2 450e6: 4682 notl %d2 450e8: c484 andl %d4,%d2 450ea: 2682 movel %d2,%a3@ api->pending_events = _Event_sets_Clear( pending_events, seized_events ); _ISR_Enable( level ); 450ec: 46c1 movew %d1,%sr 450ee: 600e bras 450fe <_Event_Seize+0x5e> *event_out = seized_events; return; } if ( _Options_Is_no_wait( option_set ) ) { 450f0: 0803 0000 btst #0,%d3 450f4: 670e beqs 45104 <_Event_Seize+0x64> <== ALWAYS TAKEN _ISR_Enable( level ); 450f6: 46c1 movew %d1,%sr <== NOT EXECUTED executing->Wait.return_code = RTEMS_UNSATISFIED; 450f8: 720d moveq #13,%d1 <== NOT EXECUTED 450fa: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED *event_out = seized_events; 450fe: 2080 movel %d0,%a0@ return; 45100: 6000 0096 braw 45198 <_Event_Seize+0xf8> * * NOTE: Since interrupts are disabled, this isn't that much of an * issue but better safe than sorry. */ executing->Wait.option = (uint32_t) option_set; executing->Wait.count = (uint32_t) event_in; 45104: 2542 0024 movel %d2,%a2@(36) executing->Wait.return_argument = event_out; _Event_Sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED; 45108: 7401 moveq #1,%d2 * set properly when we are marked as in the event critical section. * * NOTE: Since interrupts are disabled, this isn't that much of an * issue but better safe than sorry. */ executing->Wait.option = (uint32_t) option_set; 4510a: 2543 0030 movel %d3,%a2@(48) executing->Wait.count = (uint32_t) event_in; executing->Wait.return_argument = event_out; 4510e: 2548 0028 movel %a0,%a2@(40) _Event_Sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED; 45112: 23c2 0005 ecd4 movel %d2,5ecd4 <_Event_Sync_state> _ISR_Enable( level ); 45118: 46c1 movew %d1,%sr if ( ticks ) { 4511a: 4a89 tstl %a1 4511c: 6730 beqs 4514e <_Event_Seize+0xae> _Watchdog_Initialize( 4511e: 202a 0008 movel %a2@(8),%d0 Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 45122: 223c 0004 52fc movel #283388,%d1 Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 45128: 42aa 0050 clrl %a2@(80) the_watchdog->routine = routine; 4512c: 2541 0064 movel %d1,%a2@(100) the_watchdog->id = id; 45130: 2540 0068 movel %d0,%a2@(104) the_watchdog->user_data = user_data; 45134: 42aa 006c clrl %a2@(108) Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 45138: 2549 0054 movel %a1,%a2@(84) _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 4513c: 486a 0048 pea %a2@(72) 45140: 4879 0005 e558 pea 5e558 <_Watchdog_Ticks_chain> 45146: 4eb9 0004 8514 jsr 48514 <_Watchdog_Insert> 4514c: 508f addql #8,%sp NULL ); _Watchdog_Insert_ticks( &executing->Timer, ticks ); } _Thread_Set_state( executing, STATES_WAITING_FOR_EVENT ); 4514e: 4878 0100 pea 100 45152: 2f0a movel %a2,%sp@- 45154: 4eb9 0004 7f70 jsr 47f70 <_Thread_Set_state> _ISR_Disable( level ); 4515a: 203c 0000 0700 movel #1792,%d0 45160: 40c1 movew %sr,%d1 45162: 8081 orl %d1,%d0 45164: 46c0 movew %d0,%sr sync_state = _Event_Sync_state; _Event_Sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED; if ( sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) { 45166: 7401 moveq #1,%d2 45168: 508f addql #8,%sp _Thread_Set_state( executing, STATES_WAITING_FOR_EVENT ); _ISR_Disable( level ); sync_state = _Event_Sync_state; 4516a: 2039 0005 ecd4 movel 5ecd4 <_Event_Sync_state>,%d0 _Event_Sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED; 45170: 42b9 0005 ecd4 clrl 5ecd4 <_Event_Sync_state> if ( sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) { 45176: b480 cmpl %d0,%d2 45178: 6604 bnes 4517e <_Event_Seize+0xde> <== NEVER TAKEN _ISR_Enable( level ); 4517a: 46c1 movew %d1,%sr 4517c: 601a bras 45198 <_Event_Seize+0xf8> * 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 ); 4517e: 2d4a 000c movel %a2,%fp@(12) <== NOT EXECUTED 45182: 2d41 0010 movel %d1,%fp@(16) <== NOT EXECUTED } 45186: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== 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 ); 4518c: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED } 45190: 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 ); 45192: 4ef9 0004 72b0 jmp 472b0 <_Thread_blocking_operation_Cancel><== NOT EXECUTED } 45198: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 4519e: 4e5e unlk %fp ... =============================================================================== 000451f8 <_Event_Surrender>: api = the_thread->API_Extensions[ THREAD_API_RTEMS ]; option_set = (rtems_option) the_thread->Wait.option; _ISR_Disable( level ); 451f8: 203c 0000 0700 movel #1792,%d0 */ void _Event_Surrender( Thread_Control *the_thread ) { 451fe: 4e56 ffe8 linkw %fp,#-24 45202: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ 45206: 246e 0008 moveal %fp@(8),%a2 rtems_event_set event_condition; rtems_event_set seized_events; rtems_option option_set; RTEMS_API_Control *api; api = the_thread->API_Extensions[ THREAD_API_RTEMS ]; 4520a: 206a 00fe moveal %a2@(254),%a0 option_set = (rtems_option) the_thread->Wait.option; 4520e: 282a 0030 movel %a2@(48),%d4 _ISR_Disable( level ); 45212: 40c1 movew %sr,%d1 45214: 8081 orl %d1,%d0 45216: 46c0 movew %d0,%sr pending_events = api->pending_events; event_condition = (rtems_event_set) the_thread->Wait.count; 45218: 262a 0024 movel %a2@(36),%d3 RTEMS_INLINE_ROUTINE rtems_event_set _Event_sets_Get( rtems_event_set the_event_set, rtems_event_set the_event_condition ) { return ( the_event_set & the_event_condition ); 4521c: 2003 movel %d3,%d0 api = the_thread->API_Extensions[ THREAD_API_RTEMS ]; option_set = (rtems_option) the_thread->Wait.option; _ISR_Disable( level ); pending_events = api->pending_events; 4521e: 2410 movel %a0@,%d2 45220: c082 andl %d2,%d0 seized_events = _Event_sets_Get( pending_events, event_condition ); /* * No events were seized in this operation */ if ( _Event_sets_Is_empty( seized_events ) ) { 45222: 6606 bnes 4522a <_Event_Surrender+0x32> _ISR_Enable( level ); 45224: 46c1 movew %d1,%sr return; 45226: 6000 00ca braw 452f2 <_Event_Surrender+0xfa> /* * 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() && 4522a: 4ab9 0005 e8fe tstl 5e8fe <_Per_CPU_Information+0x8> 45230: 674a beqs 4527c <_Event_Surrender+0x84> <== ALWAYS TAKEN 45232: b5f9 0005 e902 cmpal 5e902 <_Per_CPU_Information+0xc>,%a2 <== NOT EXECUTED 45238: 6642 bnes 4527c <_Event_Surrender+0x84> <== NOT EXECUTED _Thread_Is_executing( the_thread ) && ((_Event_Sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) || 4523a: 2279 0005 ecd4 moveal 5ecd4 <_Event_Sync_state>,%a1 <== NOT EXECUTED /* * If we are in an ISR and sending to the current thread, then * we have a critical section issue to deal with. */ if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) && 45240: 7a02 moveq #2,%d5 <== NOT EXECUTED 45242: ba89 cmpl %a1,%d5 <== NOT EXECUTED 45244: 670e beqs 45254 <_Event_Surrender+0x5c> <== NOT EXECUTED ((_Event_Sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) || (_Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED)) ) { 45246: 2279 0005 ecd4 moveal 5ecd4 <_Event_Sync_state>,%a1 <== NOT EXECUTED * If we are in an ISR and sending to the current thread, then * we have a critical section issue to deal with. */ if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) && ((_Event_Sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) || 4524c: 1a3c 0001 moveb #1,%d5 <== NOT EXECUTED 45250: ba89 cmpl %a1,%d5 <== NOT EXECUTED 45252: 6628 bnes 4527c <_Event_Surrender+0x84> <== NOT EXECUTED (_Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED)) ) { if ( seized_events == event_condition || _Options_Is_any(option_set) ) { 45254: b680 cmpl %d0,%d3 <== NOT EXECUTED 45256: 6706 beqs 4525e <_Event_Surrender+0x66> <== NOT EXECUTED 45258: 0804 0001 btst #1,%d4 <== NOT EXECUTED 4525c: 671a beqs 45278 <_Event_Surrender+0x80> <== NOT EXECUTED RTEMS_INLINE_ROUTINE rtems_event_set _Event_sets_Clear( rtems_event_set the_event_set, rtems_event_set the_mask ) { return ( the_event_set & ~(the_mask) ); 4525e: 2600 movel %d0,%d3 <== NOT EXECUTED 45260: 4683 notl %d3 <== NOT EXECUTED 45262: c682 andl %d2,%d3 <== NOT EXECUTED 45264: 2083 movel %d3,%a0@ <== NOT EXECUTED api->pending_events = _Event_sets_Clear( pending_events,seized_events ); the_thread->Wait.count = 0; *(rtems_event_set *)the_thread->Wait.return_argument = seized_events; 45266: 206a 0028 moveal %a2@(40),%a0 <== NOT EXECUTED _Thread_Is_executing( the_thread ) && ((_Event_Sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) || (_Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED)) ) { if ( seized_events == event_condition || _Options_Is_any(option_set) ) { api->pending_events = _Event_sets_Clear( pending_events,seized_events ); the_thread->Wait.count = 0; 4526a: 42aa 0024 clrl %a2@(36) <== NOT EXECUTED *(rtems_event_set *)the_thread->Wait.return_argument = seized_events; 4526e: 2080 movel %d0,%a0@ <== NOT EXECUTED _Event_Sync_state = THREAD_BLOCKING_OPERATION_SATISFIED; 45270: 7003 moveq #3,%d0 <== NOT EXECUTED 45272: 23c0 0005 ecd4 movel %d0,5ecd4 <_Event_Sync_state> <== NOT EXECUTED } _ISR_Enable( level ); 45278: 46c1 movew %d1,%sr <== NOT EXECUTED return; 4527a: 6076 bras 452f2 <_Event_Surrender+0xfa> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_event ( States_Control the_states ) { return (the_states & STATES_WAITING_FOR_EVENT); 4527c: 2a2a 0010 movel %a2@(16),%d5 45280: 0285 0000 0100 andil #256,%d5 } /* * Otherwise, this is a normal send to another thread */ if ( _States_Is_waiting_for_event( the_thread->current_state ) ) { 45286: 6768 beqs 452f0 <_Event_Surrender+0xf8> <== NEVER TAKEN if ( seized_events == event_condition || _Options_Is_any( option_set ) ) { 45288: b680 cmpl %d0,%d3 4528a: 6706 beqs 45292 <_Event_Surrender+0x9a> <== ALWAYS TAKEN 4528c: 0804 0001 btst #1,%d4 <== NOT EXECUTED 45290: 675e beqs 452f0 <_Event_Surrender+0xf8> <== NOT EXECUTED 45292: 2600 movel %d0,%d3 45294: 4683 notl %d3 45296: c682 andl %d2,%d3 45298: 2083 movel %d3,%a0@ api->pending_events = _Event_sets_Clear( pending_events, seized_events ); the_thread->Wait.count = 0; *(rtems_event_set *)the_thread->Wait.return_argument = seized_events; 4529a: 206a 0028 moveal %a2@(40),%a0 * Otherwise, this is a normal send to another thread */ if ( _States_Is_waiting_for_event( the_thread->current_state ) ) { if ( seized_events == event_condition || _Options_Is_any( option_set ) ) { api->pending_events = _Event_sets_Clear( pending_events, seized_events ); the_thread->Wait.count = 0; 4529e: 42aa 0024 clrl %a2@(36) *(rtems_event_set *)the_thread->Wait.return_argument = seized_events; 452a2: 2080 movel %d0,%a0@ _ISR_Flash( level ); 452a4: 203c 0000 0700 movel #1792,%d0 452aa: 46c1 movew %d1,%sr 452ac: 8081 orl %d1,%d0 452ae: 46c0 movew %d0,%sr 452b0: 47f9 0004 743c lea 4743c <_Thread_Clear_state>,%a3 if ( !_Watchdog_Is_active( &the_thread->Timer ) ) { 452b6: 7a02 moveq #2,%d5 452b8: baaa 0050 cmpl %a2@(80),%d5 452bc: 6710 beqs 452ce <_Event_Surrender+0xd6> _ISR_Enable( level ); 452be: 46c1 movew %d1,%sr RTEMS_INLINE_ROUTINE void _Thread_Unblock ( Thread_Control *the_thread ) { _Thread_Clear_state( the_thread, STATES_BLOCKED ); 452c0: 2f3c 1003 fff8 movel #268697592,%sp@- 452c6: 2f0a movel %a2,%sp@- 452c8: 4e93 jsr %a3@ 452ca: 508f addql #8,%sp 452cc: 6024 bras 452f2 <_Event_Surrender+0xfa> RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate( Watchdog_Control *the_watchdog ) { the_watchdog->state = WATCHDOG_REMOVE_IT; 452ce: 7003 moveq #3,%d0 452d0: 2540 0050 movel %d0,%a2@(80) _Thread_Unblock( the_thread ); } else { _Watchdog_Deactivate( &the_thread->Timer ); _ISR_Enable( level ); 452d4: 46c1 movew %d1,%sr (void) _Watchdog_Remove( &the_thread->Timer ); 452d6: 486a 0048 pea %a2@(72) 452da: 4eb9 0004 863c jsr 4863c <_Watchdog_Remove> 452e0: 2f3c 1003 fff8 movel #268697592,%sp@- 452e6: 2f0a movel %a2,%sp@- 452e8: 4e93 jsr %a3@ 452ea: 4fef 000c lea %sp@(12),%sp 452ee: 6002 bras 452f2 <_Event_Surrender+0xfa> _Thread_Unblock( the_thread ); } return; } } _ISR_Enable( level ); 452f0: 46c1 movew %d1,%sr <== NOT EXECUTED } 452f2: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 452f8: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000452fc <_Event_Timeout>: void _Event_Timeout( Objects_Id id, void *ignored ) { 452fc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 45300: 2f03 movel %d3,%sp@- <== NOT EXECUTED 45302: 2f02 movel %d2,%sp@- <== NOT EXECUTED Thread_Control *the_thread; Objects_Locations location; ISR_Level level; the_thread = _Thread_Get( id, &location ); 45304: 486e fffc pea %fp@(-4) <== NOT EXECUTED 45308: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4530c: 4eb9 0004 77c0 jsr 477c0 <_Thread_Get> <== NOT EXECUTED switch ( location ) { 45312: 508f addql #8,%sp <== NOT EXECUTED 45314: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 45318: 6656 bnes 45370 <_Event_Timeout+0x74> <== NOT EXECUTED * * If it is not satisfied, then it is "nothing happened" and * this is the "timeout" transition. After a request is satisfied, * a timeout is not allowed to occur. */ _ISR_Disable( level ); 4531a: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED 45320: 40c2 movew %sr,%d2 <== NOT EXECUTED 45322: 8282 orl %d2,%d1 <== NOT EXECUTED 45324: 46c1 movew %d1,%sr <== NOT EXECUTED _ISR_Enable( level ); return; } #endif the_thread->Wait.count = 0; 45326: 2040 moveal %d0,%a0 <== NOT EXECUTED 45328: 42a8 0024 clrl %a0@(36) <== NOT EXECUTED if ( _Thread_Is_executing( the_thread ) ) { 4532c: b0b9 0005 e902 cmpl 5e902 <_Per_CPU_Information+0xc>,%d0 <== NOT EXECUTED 45332: 6614 bnes 45348 <_Event_Timeout+0x4c> <== NOT EXECUTED if ( _Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) 45334: 2239 0005 ecd4 movel 5ecd4 <_Event_Sync_state>,%d1 <== NOT EXECUTED 4533a: 7601 moveq #1,%d3 <== NOT EXECUTED 4533c: b681 cmpl %d1,%d3 <== NOT EXECUTED 4533e: 6608 bnes 45348 <_Event_Timeout+0x4c> <== NOT EXECUTED _Event_Sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT; 45340: 7202 moveq #2,%d1 <== NOT EXECUTED 45342: 23c1 0005 ecd4 movel %d1,5ecd4 <_Event_Sync_state> <== NOT EXECUTED } the_thread->Wait.return_code = RTEMS_TIMEOUT; 45348: 7606 moveq #6,%d3 <== NOT EXECUTED 4534a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4534c: 2143 0034 movel %d3,%a0@(52) <== NOT EXECUTED _ISR_Enable( level ); 45350: 46c2 movew %d2,%sr <== NOT EXECUTED 45352: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED 45358: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4535a: 4eb9 0004 743c jsr 4743c <_Thread_Clear_state> <== NOT EXECUTED _Thread_Unblock( the_thread ); _Thread_Unnest_dispatch(); break; 45360: 508f addql #8,%sp <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void ) { RTEMS_COMPILER_MEMORY_BARRIER(); _Thread_Dispatch_disable_level -= 1; 45362: 2039 0005 e478 movel 5e478 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 45368: 5380 subql #1,%d0 <== NOT EXECUTED 4536a: 23c0 0005 e478 movel %d0,5e478 <_Thread_Dispatch_disable_level><== NOT EXECUTED case OBJECTS_REMOTE: /* impossible */ #endif case OBJECTS_ERROR: break; } } 45370: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 45374: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 45378: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004ab64 <_Heap_Allocate_aligned_with_boundary>: Heap_Control *heap, uintptr_t alloc_size, uintptr_t alignment, uintptr_t boundary ) { 4ab64: 4e56 ffbc linkw %fp,#-68 4ab68: 202e 000c movel %fp@(12),%d0 4ab6c: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ 4ab70: 246e 0008 moveal %fp@(8),%a2 Heap_Statistics *const stats = &heap->stats; uintptr_t const block_size_floor = alloc_size + HEAP_BLOCK_HEADER_SIZE 4ab74: 2e00 movel %d0,%d7 4ab76: 5887 addql #4,%d7 Heap_Control *heap, uintptr_t alloc_size, uintptr_t alignment, uintptr_t boundary ) { 4ab78: 222e 0010 movel %fp@(16),%d1 4ab7c: 2a2e 0014 movel %fp@(20),%d5 Heap_Statistics *const stats = &heap->stats; uintptr_t const block_size_floor = alloc_size + HEAP_BLOCK_HEADER_SIZE - HEAP_ALLOC_BONUS; uintptr_t const page_size = heap->page_size; 4ab80: 2c2a 0010 movel %a2@(16),%d6 Heap_Block *block = NULL; uintptr_t alloc_begin = 0; uint32_t search_count = 0; bool search_again = false; if ( block_size_floor < alloc_size ) { 4ab84: b087 cmpl %d7,%d0 4ab86: 6200 014e bhiw 4acd6 <_Heap_Allocate_aligned_with_boundary+0x172> /* Integer overflow occured */ return NULL; } if ( boundary != 0 ) { 4ab8a: 4a85 tstl %d5 4ab8c: 670c beqs 4ab9a <_Heap_Allocate_aligned_with_boundary+0x36><== ALWAYS TAKEN if ( boundary < alloc_size ) { 4ab8e: b085 cmpl %d5,%d0 <== NOT EXECUTED 4ab90: 6200 0144 bhiw 4acd6 <_Heap_Allocate_aligned_with_boundary+0x172><== NOT EXECUTED return NULL; } if ( alignment == 0 ) { 4ab94: 4a81 tstl %d1 <== NOT EXECUTED 4ab96: 6602 bnes 4ab9a <_Heap_Allocate_aligned_with_boundary+0x36><== NOT EXECUTED alignment = page_size; 4ab98: 2206 movel %d6,%d1 <== NOT EXECUTED uintptr_t const block_begin = (uintptr_t) block; uintptr_t const block_size = _Heap_Block_size( block ); uintptr_t const block_end = block_begin + block_size; uintptr_t const alloc_begin_floor = _Heap_Alloc_area_of_block( block ); uintptr_t const alloc_begin_ceiling = block_end - min_block_size 4ab9a: 2406 movel %d6,%d2 + HEAP_BLOCK_HEADER_SIZE + page_size - 1; uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS; 4ab9c: 7804 moveq #4,%d4 uintptr_t const block_begin = (uintptr_t) block; uintptr_t const block_size = _Heap_Block_size( block ); uintptr_t const block_end = block_begin + block_size; uintptr_t const alloc_begin_floor = _Heap_Alloc_area_of_block( block ); uintptr_t const alloc_begin_ceiling = block_end - min_block_size 4ab9e: 5e82 addql #7,%d2 + HEAP_BLOCK_HEADER_SIZE + page_size - 1; uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS; 4aba0: 9880 subl %d0,%d4 do { Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap ); block = _Heap_Free_list_first( heap ); while ( block != free_list_tail ) { 4aba2: 4283 clrl %d3 if ( stats->max_search < search_count ) { stats->max_search = search_count; } return (void *) alloc_begin; } 4aba4: 206a 0008 moveal %a2@(8),%a0 uintptr_t const block_begin = (uintptr_t) block; uintptr_t const block_size = _Heap_Block_size( block ); uintptr_t const block_end = block_begin + block_size; uintptr_t const alloc_begin_floor = _Heap_Alloc_area_of_block( block ); uintptr_t const alloc_begin_ceiling = block_end - min_block_size 4aba8: 2d42 fff8 movel %d2,%fp@(-8) + HEAP_BLOCK_HEADER_SIZE + page_size - 1; uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS; 4abac: 2d44 fff4 movel %d4,%fp@(-12) 4abb0: 2d47 ffe4 movel %d7,%fp@(-28) 4abb4: 2d46 ffec movel %d6,%fp@(-20) do { Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap ); block = _Heap_Free_list_first( heap ); while ( block != free_list_tail ) { 4abb8: 6000 00ea braw 4aca4 <_Heap_Allocate_aligned_with_boundary+0x140> /* * The HEAP_PREV_BLOCK_USED flag is always set in the block size_and_flag * field. Thus the value is about one unit larger than the real block * size. The greater than operator takes this into account. */ if ( block->size_and_flag > block_size_floor ) { 4abbc: 2428 0004 movel %a0@(4),%d2 4abc0: b4ae ffe4 cmpl %fp@(-28),%d2 4abc4: 6300 00d2 blsw 4ac98 <_Heap_Allocate_aligned_with_boundary+0x134> 4abc8: 43e8 0008 lea %a0@(8),%a1 if ( alignment == 0 ) { 4abcc: 4a81 tstl %d1 4abce: 6606 bnes 4abd6 <_Heap_Allocate_aligned_with_boundary+0x72> RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block( const Heap_Block *block ) { return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE; 4abd0: 2409 movel %a1,%d2 4abd2: 6000 00c6 braw 4ac9a <_Heap_Allocate_aligned_with_boundary+0x136> - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 4abd6: 7cfe moveq #-2,%d6 uintptr_t alignment, uintptr_t boundary ) { uintptr_t const page_size = heap->page_size; uintptr_t const min_block_size = heap->min_block_size; 4abd8: 266a 0014 moveal %a2@(20),%a3 4abdc: c486 andl %d6,%d2 uintptr_t const block_size = _Heap_Block_size( block ); uintptr_t const block_end = block_begin + block_size; uintptr_t const alloc_begin_floor = _Heap_Alloc_area_of_block( block ); uintptr_t const alloc_begin_ceiling = block_end - min_block_size + HEAP_BLOCK_HEADER_SIZE + page_size - 1; 4abde: 282e fff8 movel %fp@(-8),%d4 4abe2: 988b subl %a3,%d4 uintptr_t const page_size = heap->page_size; uintptr_t const min_block_size = heap->min_block_size; uintptr_t const block_begin = (uintptr_t) block; uintptr_t const block_size = _Heap_Block_size( block ); uintptr_t const block_end = block_begin + block_size; 4abe4: d488 addl %a0,%d2 uintptr_t const alloc_begin_floor = _Heap_Alloc_area_of_block( block ); uintptr_t const alloc_begin_ceiling = block_end - min_block_size 4abe6: 2c04 movel %d4,%d6 4abe8: dc82 addl %d2,%d6 + HEAP_BLOCK_HEADER_SIZE + page_size - 1; uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS; uintptr_t alloc_begin = alloc_end - alloc_size; 4abea: d4ae fff4 addl %fp@(-12),%d2 4abee: 2d42 fffc movel %d2,%fp@(-4) RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down( uintptr_t value, uintptr_t alignment ) { return value - (value % alignment); 4abf2: 4c41 2007 remul %d1,%d7,%d2 4abf6: 242e fffc movel %fp@(-4),%d2 4abfa: 9487 subl %d7,%d2 alloc_begin = _Heap_Align_down( alloc_begin, alignment ); /* Ensure that the we have a valid new block at the end */ if ( alloc_begin > alloc_begin_ceiling ) { 4abfc: bc82 cmpl %d2,%d6 4abfe: 640a bccs 4ac0a <_Heap_Allocate_aligned_with_boundary+0xa6><== ALWAYS TAKEN 4ac00: 2806 movel %d6,%d4 <== NOT EXECUTED 4ac02: 4c41 4002 remul %d1,%d2,%d4 <== NOT EXECUTED 4ac06: 9c82 subl %d2,%d6 <== NOT EXECUTED 4ac08: 2406 movel %d6,%d2 <== NOT EXECUTED } alloc_end = alloc_begin + alloc_size; /* Ensure boundary constaint */ if ( boundary != 0 ) { 4ac0a: 4a85 tstl %d5 4ac0c: 675c beqs 4ac6a <_Heap_Allocate_aligned_with_boundary+0x106><== ALWAYS TAKEN /* Ensure that the we have a valid new block at the end */ if ( alloc_begin > alloc_begin_ceiling ) { alloc_begin = _Heap_Align_down( alloc_begin_ceiling, alignment ); } alloc_end = alloc_begin + alloc_size; 4ac0e: 2c02 movel %d2,%d6 <== NOT EXECUTED 4ac10: dc80 addl %d0,%d6 <== NOT EXECUTED /* Ensure boundary constaint */ if ( boundary != 0 ) { uintptr_t const boundary_floor = alloc_begin_floor + alloc_size; 4ac12: 49f1 0800 lea %a1@(00000000,%d0:l),%a4 <== NOT EXECUTED /* Ensure that the we have a valid new block at the end */ if ( alloc_begin > alloc_begin_ceiling ) { alloc_begin = _Heap_Align_down( alloc_begin_ceiling, alignment ); } alloc_end = alloc_begin + alloc_size; 4ac16: 2d46 fff0 movel %d6,%fp@(-16) <== NOT EXECUTED 4ac1a: 2a6e fff0 moveal %fp@(-16),%a5 <== NOT EXECUTED 4ac1e: 4c45 6004 remul %d5,%d4,%d6 <== NOT EXECUTED /* Ensure boundary constaint */ if ( boundary != 0 ) { uintptr_t const boundary_floor = alloc_begin_floor + alloc_size; 4ac22: 2d4c fffc movel %a4,%fp@(-4) <== NOT EXECUTED 4ac26: 2e2e ffe4 movel %fp@(-28),%d7 <== NOT EXECUTED 4ac2a: 9bc4 subal %d4,%a5 <== NOT EXECUTED 4ac2c: 284d moveal %a5,%a4 <== NOT EXECUTED 4ac2e: 2d43 ffe8 movel %d3,%fp@(-24) <== NOT EXECUTED 4ac32: 282e fff0 movel %fp@(-16),%d4 <== NOT EXECUTED 4ac36: 6022 bras 4ac5a <_Heap_Allocate_aligned_with_boundary+0xf6><== NOT EXECUTED uintptr_t boundary_line = _Heap_Align_down( alloc_end, boundary ); while ( alloc_begin < boundary_line && boundary_line < alloc_end ) { if ( boundary_line < boundary_floor ) { 4ac38: b9ee fffc cmpal %fp@(-4),%a4 <== NOT EXECUTED 4ac3c: 6552 bcss 4ac90 <_Heap_Allocate_aligned_with_boundary+0x12c><== NOT EXECUTED return 0; } alloc_begin = boundary_line - alloc_size; 4ac3e: 240c movel %a4,%d2 <== NOT EXECUTED 4ac40: 9480 subl %d0,%d2 <== NOT EXECUTED 4ac42: 2802 movel %d2,%d4 <== NOT EXECUTED 4ac44: 4c41 4003 remul %d1,%d3,%d4 <== NOT EXECUTED 4ac48: 9483 subl %d3,%d2 <== NOT EXECUTED alloc_begin = _Heap_Align_down( alloc_begin, alignment ); alloc_end = alloc_begin + alloc_size; 4ac4a: 2802 movel %d2,%d4 <== NOT EXECUTED 4ac4c: d880 addl %d0,%d4 <== NOT EXECUTED 4ac4e: 2c04 movel %d4,%d6 <== NOT EXECUTED 4ac50: 2a44 moveal %d4,%a5 <== NOT EXECUTED 4ac52: 4c45 6003 remul %d5,%d3,%d6 <== NOT EXECUTED 4ac56: 9bc3 subal %d3,%a5 <== NOT EXECUTED 4ac58: 284d moveal %a5,%a4 <== NOT EXECUTED /* Ensure boundary constaint */ if ( boundary != 0 ) { uintptr_t const boundary_floor = alloc_begin_floor + alloc_size; uintptr_t boundary_line = _Heap_Align_down( alloc_end, boundary ); while ( alloc_begin < boundary_line && boundary_line < alloc_end ) { 4ac5a: b9c2 cmpal %d2,%a4 <== NOT EXECUTED 4ac5c: 6304 blss 4ac62 <_Heap_Allocate_aligned_with_boundary+0xfe><== NOT EXECUTED 4ac5e: b88c cmpl %a4,%d4 <== NOT EXECUTED 4ac60: 62d6 bhis 4ac38 <_Heap_Allocate_aligned_with_boundary+0xd4><== NOT EXECUTED 4ac62: 262e ffe8 movel %fp@(-24),%d3 <== NOT EXECUTED 4ac66: 2d47 ffe4 movel %d7,%fp@(-28) <== NOT EXECUTED boundary_line = _Heap_Align_down( alloc_end, boundary ); } } /* Ensure that the we have a valid new block at the beginning */ if ( alloc_begin >= alloc_begin_floor ) { 4ac6a: b3c2 cmpal %d2,%a1 4ac6c: 622a bhis 4ac98 <_Heap_Allocate_aligned_with_boundary+0x134><== NEVER TAKEN 4ac6e: 2c2e ffec movel %fp@(-20),%d6 4ac72: 2802 movel %d2,%d4 4ac74: 327c fff8 moveaw #-8,%a1 4ac78: 93c8 subal %a0,%a1 uintptr_t alloc_begin, uintptr_t page_size ) { return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size ) - HEAP_BLOCK_HEADER_SIZE); 4ac7a: d3c2 addal %d2,%a1 RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down( uintptr_t value, uintptr_t alignment ) { return value - (value % alignment); 4ac7c: 4c46 4007 remul %d6,%d7,%d4 uintptr_t const alloc_block_begin = (uintptr_t) _Heap_Block_of_alloc_area( alloc_begin, page_size ); uintptr_t const free_size = alloc_block_begin - block_begin; 4ac80: 93c7 subal %d7,%a1 if ( free_size >= min_block_size || free_size == 0 ) { 4ac82: b7c9 cmpal %a1,%a3 4ac84: 6314 blss 4ac9a <_Heap_Allocate_aligned_with_boundary+0x136><== ALWAYS TAKEN return alloc_begin; } } return 0; 4ac86: 4a89 tstl %a1 <== NOT EXECUTED 4ac88: 57c4 seq %d4 <== NOT EXECUTED 4ac8a: 49c4 extbl %d4 <== NOT EXECUTED 4ac8c: c484 andl %d4,%d2 <== NOT EXECUTED 4ac8e: 600a bras 4ac9a <_Heap_Allocate_aligned_with_boundary+0x136><== NOT EXECUTED 4ac90: 262e ffe8 movel %fp@(-24),%d3 <== NOT EXECUTED 4ac94: 2d47 ffe4 movel %d7,%fp@(-28) <== NOT EXECUTED 4ac98: 4282 clrl %d2 ); } } /* Statistics */ ++search_count; 4ac9a: 5283 addql #1,%d3 if ( alloc_begin != 0 ) { 4ac9c: 4a82 tstl %d2 4ac9e: 660e bnes 4acae <_Heap_Allocate_aligned_with_boundary+0x14a> break; } block = block->next; 4aca0: 2068 0008 moveal %a0@(8),%a0 do { Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap ); block = _Heap_Free_list_first( heap ); while ( block != free_list_tail ) { 4aca4: b5c8 cmpal %a0,%a2 4aca6: 6600 ff14 bnew 4abbc <_Heap_Allocate_aligned_with_boundary+0x58> 4acaa: 4282 clrl %d2 4acac: 601a bras 4acc8 <_Heap_Allocate_aligned_with_boundary+0x164> search_again = _Heap_Protection_free_delayed_blocks( heap, alloc_begin ); } while ( search_again ); if ( alloc_begin != 0 ) { /* Statistics */ ++stats->allocs; 4acae: 52aa 0048 addql #1,%a2@(72) stats->searches += search_count; 4acb2: d7aa 004c addl %d3,%a2@(76) block = _Heap_Block_allocate( heap, block, alloc_begin, alloc_size ); 4acb6: 2f00 movel %d0,%sp@- 4acb8: 2f02 movel %d2,%sp@- 4acba: 2f08 movel %a0,%sp@- 4acbc: 2f0a movel %a2,%sp@- 4acbe: 4eb9 0004 66c6 jsr 466c6 <_Heap_Block_allocate> 4acc4: 4fef 0010 lea %sp@(16),%sp boundary ); } /* Statistics */ if ( stats->max_search < search_count ) { 4acc8: b6aa 0044 cmpl %a2@(68),%d3 4accc: 6304 blss 4acd2 <_Heap_Allocate_aligned_with_boundary+0x16e> stats->max_search = search_count; 4acce: 2543 0044 movel %d3,%a2@(68) } return (void *) alloc_begin; 4acd2: 2002 movel %d2,%d0 4acd4: 6002 bras 4acd8 <_Heap_Allocate_aligned_with_boundary+0x174> return NULL; } if ( boundary != 0 ) { if ( boundary < alloc_size ) { return NULL; 4acd6: 4280 clrl %d0 <== NOT EXECUTED if ( stats->max_search < search_count ) { stats->max_search = search_count; } return (void *) alloc_begin; } 4acd8: 4cee 3cfc ffbc moveml %fp@(-68),%d2-%d7/%a2-%a5 4acde: 4e5e unlk %fp ... =============================================================================== 000466c6 <_Heap_Block_allocate>: - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 466c6: 70fe moveq #-2,%d0 Heap_Control *heap, Heap_Block *block, uintptr_t alloc_begin, uintptr_t alloc_size ) { 466c8: 4e56 ffe0 linkw %fp,#-32 466cc: 222e 0010 movel %fp@(16),%d1 466d0: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@ 466d4: 246e 000c moveal %fp@(12),%a2 block->size_and_flag = size | flag; } RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block ) { return block->size_and_flag & HEAP_PREV_BLOCK_USED; 466d8: 7801 moveq #1,%d4 RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block( const Heap_Block *block ) { return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE; 466da: 2841 moveal %d1,%a4 466dc: 518c subql #8,%a4 Heap_Statistics *const stats = &heap->stats; uintptr_t const alloc_area_begin = _Heap_Alloc_area_of_block( block ); uintptr_t const alloc_area_offset = alloc_begin - alloc_area_begin; 466de: 260c movel %a4,%d3 466e0: 968a subl %a2,%d3 } _Heap_Protection_block_initialize( heap, block ); return block; } 466e2: 242a 0004 movel %a2@(4),%d2 - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 466e6: c082 andl %d2,%d0 Heap_Control *heap, Heap_Block *block, uintptr_t alloc_begin, uintptr_t alloc_size ) { 466e8: 266e 0008 moveal %fp@(8),%a3 RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at( const Heap_Block *block, uintptr_t offset ) { return (Heap_Block *) ((uintptr_t) block + offset); 466ec: 4bf2 0800 lea %a2@(00000000,%d0:l),%a5 block->size_and_flag = size | flag; } RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block ) { return block->size_and_flag & HEAP_PREV_BLOCK_USED; 466f0: c8ad 0004 andl %a5@(4),%d4 466f4: 2a2e 0014 movel %fp@(20),%d5 Heap_Block *free_list_anchor = NULL; _HAssert( alloc_area_begin <= alloc_begin ); if ( _Heap_Is_free( block ) ) { 466f8: 4a84 tstl %d4 466fa: 6620 bnes 4671c <_Heap_Block_allocate+0x56> <== NEVER TAKEN return _Heap_Free_list_tail(heap)->prev; } RTEMS_INLINE_ROUTINE void _Heap_Free_list_remove( Heap_Block *block ) { Heap_Block *next = block->next; 466fc: 282a 0008 movel %a2@(8),%d4 Heap_Block *prev = block->prev; prev->next = next; next->prev = prev; 46700: 2244 moveal %d4,%a1 free_list_anchor = block->prev; 46702: 206a 000c moveal %a2@(12),%a0 RTEMS_INLINE_ROUTINE void _Heap_Free_list_remove( Heap_Block *block ) { Heap_Block *next = block->next; Heap_Block *prev = block->prev; prev->next = next; 46706: 2144 0008 movel %d4,%a0@(8) next->prev = prev; 4670a: 2348 000c movel %a0,%a1@(12) _Heap_Free_list_remove( block ); /* Statistics */ --stats->free_blocks; 4670e: 53ab 0038 subql #1,%a3@(56) ++stats->used_blocks; 46712: 52ab 0040 addql #1,%a3@(64) stats->free_size -= _Heap_Block_size( block ); 46716: 91ab 0030 subl %d0,%a3@(48) 4671a: 6002 bras 4671e <_Heap_Block_allocate+0x58> } else { free_list_anchor = _Heap_Free_list_head( heap ); 4671c: 204b moveal %a3,%a0 <== NOT EXECUTED } if ( alloc_area_offset < heap->page_size ) { 4671e: 202b 0010 movel %a3@(16),%d0 46722: b083 cmpl %d3,%d0 46724: 6316 blss 4673c <_Heap_Block_allocate+0x76> Heap_Block *block, Heap_Block *free_list_anchor, uintptr_t alloc_size ) { _Heap_Block_split( heap, block, free_list_anchor, alloc_size ); 46726: 2243 moveal %d3,%a1 46728: 4871 5800 pea %a1@(00000000,%d5:l) 4672c: 2f08 movel %a0,%sp@- 4672e: 2f0a movel %a2,%sp@- 46730: 2f0b movel %a3,%sp@- 46732: 4eba fd5c jsr %pc@(46490 <_Heap_Block_split>) 46736: 4fef 0010 lea %sp@(16),%sp 4673a: 605e bras 4679a <_Heap_Block_allocate+0xd4> RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down( uintptr_t value, uintptr_t alignment ) { return value - (value % alignment); 4673c: 4c40 1003 remul %d0,%d3,%d1 uintptr_t block_end = block_begin + block_size; Heap_Block *const new_block = _Heap_Block_of_alloc_area( alloc_begin, heap->page_size ); uintptr_t const new_block_begin = (uintptr_t) new_block; uintptr_t const new_block_size = block_end - new_block_begin; 46740: 220d movel %a5,%d1 uintptr_t alloc_begin, uintptr_t page_size ) { return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size ) - HEAP_BLOCK_HEADER_SIZE); 46742: 99c3 subal %d3,%a4 block_end = new_block_begin; block_size = block_end - block_begin; 46744: 200c movel %a4,%d0 46746: 908a subl %a2,%d0 _HAssert( block_size >= heap->min_block_size ); _HAssert( new_block_size >= heap->min_block_size ); /* Statistics */ stats->free_size += block_size; 46748: d1ab 0030 addl %d0,%a3@(48) uintptr_t block_end = block_begin + block_size; Heap_Block *const new_block = _Heap_Block_of_alloc_area( alloc_begin, heap->page_size ); uintptr_t const new_block_begin = (uintptr_t) new_block; uintptr_t const new_block_size = block_end - new_block_begin; 4674c: 928c subl %a4,%d1 _HAssert( new_block_size >= heap->min_block_size ); /* Statistics */ stats->free_size += block_size; if ( _Heap_Is_prev_used( block ) ) { 4674e: 0802 0000 btst #0,%d2 46752: 671c beqs 46770 <_Heap_Block_allocate+0xaa> <== NEVER TAKEN RTEMS_INLINE_ROUTINE void _Heap_Free_list_insert_after( Heap_Block *block_before, Heap_Block *new_block ) { Heap_Block *next = block_before->next; 46754: 2a68 0008 moveal %a0@(8),%a5 new_block->next = next; new_block->prev = block_before; 46758: 2548 000c movel %a0,%a2@(12) Heap_Block *new_block ) { Heap_Block *next = block_before->next; new_block->next = next; 4675c: 254d 0008 movel %a5,%a2@(8) new_block->prev = block_before; block_before->next = new_block; next->prev = new_block; 46760: 2b4a 000c movel %a2,%a5@(12) { Heap_Block *next = block_before->next; new_block->next = next; new_block->prev = block_before; block_before->next = new_block; 46764: 214a 0008 movel %a2,%a0@(8) _Heap_Free_list_insert_after( free_list_anchor, block ); free_list_anchor = block; /* Statistics */ ++stats->free_blocks; 46768: 52ab 0038 addql #1,%a3@(56) 4676c: 204a moveal %a2,%a0 4676e: 600a bras 4677a <_Heap_Block_allocate+0xb4> RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Prev_block( const Heap_Block *block ) { return (Heap_Block *) ((uintptr_t) block - block->prev_size); 46770: 95d2 subal %a2@,%a2 <== NOT EXECUTED - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 46772: 74fe moveq #-2,%d2 <== NOT EXECUTED 46774: c4aa 0004 andl %a2@(4),%d2 <== NOT EXECUTED } else { Heap_Block *const prev_block = _Heap_Prev_block( block ); uintptr_t const prev_block_size = _Heap_Block_size( prev_block ); block = prev_block; block_size += prev_block_size; 46778: d082 addl %d2,%d0 <== NOT EXECUTED } block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED; 4677a: 7401 moveq #1,%d2 4677c: 8480 orl %d0,%d2 new_block->prev_size = block_size; 4677e: 2880 movel %d0,%a4@ block = prev_block; block_size += prev_block_size; } block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED; 46780: 2542 0004 movel %d2,%a2@(4) new_block->prev_size = block_size; new_block->size_and_flag = new_block_size; _Heap_Block_split( heap, new_block, free_list_anchor, alloc_size ); 46784: 244c moveal %a4,%a2 } block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED; new_block->prev_size = block_size; new_block->size_and_flag = new_block_size; 46786: 2941 0004 movel %d1,%a4@(4) _Heap_Block_split( heap, new_block, free_list_anchor, alloc_size ); 4678a: 2f05 movel %d5,%sp@- 4678c: 2f08 movel %a0,%sp@- 4678e: 2f0c movel %a4,%sp@- 46790: 2f0b movel %a3,%sp@- 46792: 4eba fcfc jsr %pc@(46490 <_Heap_Block_split>) 46796: 4fef 0010 lea %sp@(16),%sp alloc_size ); } /* Statistics */ if ( stats->min_free_size > stats->free_size ) { 4679a: 202b 0030 movel %a3@(48),%d0 4679e: b0ab 0034 cmpl %a3@(52),%d0 467a2: 6404 bccs 467a8 <_Heap_Block_allocate+0xe2> <== NEVER TAKEN stats->min_free_size = stats->free_size; 467a4: 2740 0034 movel %d0,%a3@(52) } _Heap_Protection_block_initialize( heap, block ); return block; } 467a8: 200a movel %a2,%d0 467aa: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 467b0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046490 <_Heap_Block_split>: - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 46490: 70fe moveq #-2,%d0 Heap_Control *heap, Heap_Block *block, Heap_Block *free_list_anchor, uintptr_t alloc_size ) { 46492: 4e56 ffe0 linkw %fp,#-32 46496: 48d7 1c7c moveml %d2-%d6/%a2-%a4,%sp@ 4649a: 246e 0008 moveal %fp@(8),%a2 4649e: 266e 000c moveal %fp@(12),%a3 Heap_Statistics *const stats = &heap->stats; uintptr_t const page_size = heap->page_size; uintptr_t const min_block_size = heap->min_block_size; 464a2: 282a 0014 movel %a2@(20),%d4 uintptr_t const min_alloc_size = min_block_size - HEAP_BLOCK_HEADER_SIZE; 464a6: 2044 moveal %d4,%a0 464a8: 5188 subql #8,%a0 } _Heap_Protection_block_initialize( heap, block ); return block; } 464aa: 262b 0004 movel %a3@(4),%d3 Heap_Control *heap, Heap_Block *block, Heap_Block *free_list_anchor, uintptr_t alloc_size ) { 464ae: 286e 0010 moveal %fp@(16),%a4 Heap_Statistics *const stats = &heap->stats; uintptr_t const page_size = heap->page_size; 464b2: 222a 0010 movel %a2@(16),%d1 return heap->stats.size; } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Max( uintptr_t a, uintptr_t b ) { return a > b ? a : b; 464b6: 242e 0014 movel %fp@(20),%d2 - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 464ba: c083 andl %d3,%d0 return heap->stats.size; } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Max( uintptr_t a, uintptr_t b ) { return a > b ? a : b; 464bc: b1c2 cmpal %d2,%a0 464be: 6302 blss 464c2 <_Heap_Block_split+0x32> 464c0: 2408 movel %a0,%d2 uintptr_t const min_block_size = heap->min_block_size; uintptr_t const min_alloc_size = min_block_size - HEAP_BLOCK_HEADER_SIZE; uintptr_t const block_size = _Heap_Block_size( block ); uintptr_t const used_size = 464c2: 5082 addql #8,%d2 RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up( uintptr_t value, uintptr_t alignment ) { uintptr_t remainder = value % alignment; 464c4: 2c02 movel %d2,%d6 464c6: 4c41 6005 remul %d1,%d5,%d6 if ( remainder != 0 ) { 464ca: 4a85 tstl %d5 464cc: 6706 beqs 464d4 <_Heap_Block_split+0x44> return value - remainder + alignment; 464ce: d282 addl %d2,%d1 464d0: 9285 subl %d5,%d1 464d2: 6002 bras 464d6 <_Heap_Block_split+0x46> } else { return value; 464d4: 2202 movel %d2,%d1 _Heap_Max( alloc_size, min_alloc_size ) + HEAP_BLOCK_HEADER_SIZE; uintptr_t const used_block_size = _Heap_Align_up( used_size, page_size ); uintptr_t const free_size = block_size + HEAP_ALLOC_BONUS - used_size; 464d6: 2240 moveal %d0,%a1 464d8: 5889 addql #4,%a1 RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at( const Heap_Block *block, uintptr_t offset ) { return (Heap_Block *) ((uintptr_t) block + offset); 464da: 41f3 0800 lea %a3@(00000000,%d0:l),%a0 464de: 93c2 subal %d2,%a1 uintptr_t const free_size_limit = min_block_size + HEAP_ALLOC_BONUS; 464e0: 5884 addql #4,%d4 Heap_Block *next_block = _Heap_Block_at( block, block_size ); _HAssert( used_size <= block_size + HEAP_ALLOC_BONUS ); _HAssert( used_size + free_size == block_size + HEAP_ALLOC_BONUS ); if ( free_size >= free_size_limit ) { 464e2: b889 cmpl %a1,%d4 464e4: 626a bhis 46550 <_Heap_Block_split+0xc0> <== NEVER TAKEN RTEMS_INLINE_ROUTINE void _Heap_Block_set_size( Heap_Block *block, uintptr_t size ) { uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED; 464e6: 7401 moveq #1,%d2 RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at( const Heap_Block *block, uintptr_t offset ) { return (Heap_Block *) ((uintptr_t) block + offset); 464e8: 43f3 1800 lea %a3@(00000000,%d1:l),%a1 Heap_Block *const free_block = _Heap_Block_at( block, used_block_size ); uintptr_t free_block_size = block_size - used_block_size; 464ec: 9081 subl %d1,%d0 RTEMS_INLINE_ROUTINE void _Heap_Block_set_size( Heap_Block *block, uintptr_t size ) { uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED; 464ee: c682 andl %d2,%d3 block->size_and_flag = size | flag; 464f0: 8283 orl %d3,%d1 464f2: 2741 0004 movel %d1,%a3@(4) - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 464f6: 72fe moveq #-2,%d1 _HAssert( used_block_size + free_block_size == block_size ); _Heap_Block_set_size( block, used_block_size ); /* Statistics */ stats->free_size += free_block_size; 464f8: d1aa 0030 addl %d0,%a2@(48) 464fc: c2a8 0004 andl %a0@(4),%d1 block->size_and_flag = size | flag; } RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block ) { return block->size_and_flag & HEAP_PREV_BLOCK_USED; 46500: c4b0 1804 andl %a0@(00000004,%d1:l),%d2 if ( _Heap_Is_used( next_block ) ) { 46504: 671a beqs 46520 <_Heap_Block_split+0x90> <== NEVER TAKEN RTEMS_INLINE_ROUTINE void _Heap_Free_list_insert_after( Heap_Block *block_before, Heap_Block *new_block ) { Heap_Block *next = block_before->next; 46506: 266c 0008 moveal %a4@(8),%a3 new_block->next = next; new_block->prev = block_before; 4650a: 234c 000c movel %a4,%a1@(12) Heap_Block *new_block ) { Heap_Block *next = block_before->next; new_block->next = next; 4650e: 234b 0008 movel %a3,%a1@(8) new_block->prev = block_before; block_before->next = new_block; next->prev = new_block; 46512: 2749 000c movel %a1,%a3@(12) { Heap_Block *next = block_before->next; new_block->next = next; new_block->prev = block_before; block_before->next = new_block; 46516: 2949 0008 movel %a1,%a4@(8) _Heap_Free_list_insert_after( free_list_anchor, free_block ); /* Statistics */ ++stats->free_blocks; 4651a: 52aa 0038 addql #1,%a2@(56) 4651e: 601e bras 4653e <_Heap_Block_split+0xae> RTEMS_INLINE_ROUTINE void _Heap_Free_list_replace( Heap_Block *old_block, Heap_Block *new_block ) { Heap_Block *next = old_block->next; 46520: 2468 0008 moveal %a0@(8),%a2 <== NOT EXECUTED } else { uintptr_t const next_block_size = _Heap_Block_size( next_block ); _Heap_Free_list_replace( next_block, free_block ); free_block_size += next_block_size; 46524: d081 addl %d1,%d0 <== NOT EXECUTED Heap_Block *prev = old_block->prev; 46526: 2068 000c moveal %a0@(12),%a0 <== NOT EXECUTED new_block->next = next; 4652a: 234a 0008 movel %a2,%a1@(8) <== NOT EXECUTED new_block->prev = prev; 4652e: 2348 000c movel %a0,%a1@(12) <== NOT EXECUTED next->prev = new_block; prev->next = new_block; 46532: 2149 0008 movel %a1,%a0@(8) <== NOT EXECUTED RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at( const Heap_Block *block, uintptr_t offset ) { return (Heap_Block *) ((uintptr_t) block + offset); 46536: 41f1 0800 lea %a1@(00000000,%d0:l),%a0 <== NOT EXECUTED Heap_Block *prev = old_block->prev; new_block->next = next; new_block->prev = prev; next->prev = new_block; 4653a: 2549 000c movel %a1,%a2@(12) <== NOT EXECUTED next_block = _Heap_Block_at( free_block, free_block_size ); } free_block->size_and_flag = free_block_size | HEAP_PREV_BLOCK_USED; 4653e: 7201 moveq #1,%d1 next_block->prev_size = free_block_size; next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED; 46540: 74fe moveq #-2,%d2 free_block_size += next_block_size; next_block = _Heap_Block_at( free_block, free_block_size ); } free_block->size_and_flag = free_block_size | HEAP_PREV_BLOCK_USED; 46542: 8280 orl %d0,%d1 next_block->prev_size = free_block_size; 46544: 2080 movel %d0,%a0@ free_block_size += next_block_size; next_block = _Heap_Block_at( free_block, free_block_size ); } free_block->size_and_flag = free_block_size | HEAP_PREV_BLOCK_USED; 46546: 2341 0004 movel %d1,%a1@(4) next_block->prev_size = free_block_size; next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED; 4654a: c5a8 0004 andl %d2,%a0@(4) 4654e: 6006 bras 46556 <_Heap_Block_split+0xc6> _Heap_Protection_block_initialize( heap, free_block ); } else { next_block->size_and_flag |= HEAP_PREV_BLOCK_USED; 46550: 7001 moveq #1,%d0 46552: 81a8 0004 orl %d0,%a0@(4) } } 46556: 4cd7 1c7c moveml %sp@,%d2-%d6/%a2-%a4 4655a: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004afe0 <_Heap_Extend>: Heap_Control *heap, void *extend_area_begin_ptr, uintptr_t extend_area_size, uintptr_t *extended_size_ptr ) { 4afe0: 4e56 ffcc linkw %fp,#-52 <== NOT EXECUTED 4afe4: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED 4afe8: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED 4afec: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4aff0: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED Heap_Block *extend_first_block = NULL; Heap_Block *extend_last_block = NULL; uintptr_t const page_size = heap->page_size; uintptr_t const min_block_size = heap->min_block_size; uintptr_t const extend_area_begin = (uintptr_t) extend_area_begin_ptr; uintptr_t const extend_area_end = extend_area_begin + extend_area_size; 4aff4: 2403 movel %d3,%d2 <== NOT EXECUTED 4aff6: d480 addl %d0,%d2 <== NOT EXECUTED uintptr_t const free_size = stats->free_size; 4aff8: 206a 0030 moveal %a2@(48),%a0 <== NOT EXECUTED uintptr_t extend_area_size, uintptr_t *extended_size_ptr ) { Heap_Statistics *const stats = &heap->stats; Heap_Block *const first_block = heap->first_block; 4affc: 282a 0020 movel %a2@(32),%d4 <== NOT EXECUTED Heap_Block *merge_above_block = NULL; Heap_Block *link_below_block = NULL; Heap_Block *link_above_block = NULL; Heap_Block *extend_first_block = NULL; Heap_Block *extend_last_block = NULL; uintptr_t const page_size = heap->page_size; 4b000: 2a2a 0010 movel %a2@(16),%d5 <== NOT EXECUTED uintptr_t const min_block_size = heap->min_block_size; 4b004: 222a 0014 movel %a2@(20),%d1 <== NOT EXECUTED Heap_Block *start_block = first_block; Heap_Block *merge_below_block = NULL; Heap_Block *merge_above_block = NULL; Heap_Block *link_below_block = NULL; Heap_Block *link_above_block = NULL; Heap_Block *extend_first_block = NULL; 4b008: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED Heap_Block *extend_last_block = NULL; 4b00c: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED uintptr_t const page_size = heap->page_size; uintptr_t const min_block_size = heap->min_block_size; uintptr_t const extend_area_begin = (uintptr_t) extend_area_begin_ptr; uintptr_t const extend_area_end = extend_area_begin + extend_area_size; uintptr_t const free_size = stats->free_size; 4b010: 2d48 fff4 movel %a0,%fp@(-12) <== NOT EXECUTED uintptr_t extend_first_block_size = 0; uintptr_t extended_size = 0; bool extend_area_ok = false; if ( extend_area_end < extend_area_begin ) { 4b014: b682 cmpl %d2,%d3 <== NOT EXECUTED 4b016: 6200 01aa bhiw 4b1c2 <_Heap_Extend+0x1e2> <== NOT EXECUTED return false; } extend_area_ok = _Heap_Get_first_and_last_block( 4b01a: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4b01e: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4b022: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4b024: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4b026: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4b028: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4b02a: 4eb9 0004 6872 jsr 46872 <_Heap_Get_first_and_last_block> <== NOT EXECUTED page_size, min_block_size, &extend_first_block, &extend_last_block ); if (!extend_area_ok ) { 4b030: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 4b034: 4a00 tstb %d0 <== NOT EXECUTED 4b036: 6700 018a beqw 4b1c2 <_Heap_Extend+0x1e2> <== NOT EXECUTED 4b03a: 2044 moveal %d4,%a0 <== NOT EXECUTED 4b03c: 9bcd subal %a5,%a5 <== NOT EXECUTED 4b03e: 4281 clrl %d1 <== NOT EXECUTED 4b040: 97cb subal %a3,%a3 <== NOT EXECUTED 4b042: 99cc subal %a4,%a4 <== NOT EXECUTED return false; } do { uintptr_t const sub_area_begin = (start_block != first_block) ? (uintptr_t) start_block : heap->area_begin; 4b044: b888 cmpl %a0,%d4 <== NOT EXECUTED 4b046: 6704 beqs 4b04c <_Heap_Extend+0x6c> <== NOT EXECUTED 4b048: 2248 moveal %a0,%a1 <== NOT EXECUTED 4b04a: 6004 bras 4b050 <_Heap_Extend+0x70> <== NOT EXECUTED 4b04c: 226a 0018 moveal %a2@(24),%a1 <== NOT EXECUTED uintptr_t const sub_area_end = start_block->prev_size; 4b050: 2010 movel %a0@,%d0 <== NOT EXECUTED Heap_Block *const end_block = _Heap_Block_of_alloc_area( sub_area_end, page_size ); if ( 4b052: b680 cmpl %d0,%d3 <== NOT EXECUTED 4b054: 6406 bccs 4b05c <_Heap_Extend+0x7c> <== NOT EXECUTED sub_area_end > extend_area_begin && extend_area_end > sub_area_begin 4b056: b3c2 cmpal %d2,%a1 <== NOT EXECUTED 4b058: 6500 0168 bcsw 4b1c2 <_Heap_Extend+0x1e2> <== NOT EXECUTED ) { return false; } if ( extend_area_end == sub_area_begin ) { 4b05c: b3c2 cmpal %d2,%a1 <== NOT EXECUTED 4b05e: 6706 beqs 4b066 <_Heap_Extend+0x86> <== NOT EXECUTED merge_below_block = start_block; } else if ( extend_area_end < sub_area_end ) { 4b060: b082 cmpl %d2,%d0 <== NOT EXECUTED 4b062: 6206 bhis 4b06a <_Heap_Extend+0x8a> <== NOT EXECUTED 4b064: 6006 bras 4b06c <_Heap_Extend+0x8c> <== NOT EXECUTED sub_area_end > extend_area_begin && extend_area_end > sub_area_begin ) { return false; } if ( extend_area_end == sub_area_begin ) { 4b066: 2848 moveal %a0,%a4 <== NOT EXECUTED 4b068: 6002 bras 4b06c <_Heap_Extend+0x8c> <== NOT EXECUTED merge_below_block = start_block; } else if ( extend_area_end < sub_area_end ) { 4b06a: 2208 movel %a0,%d1 <== NOT EXECUTED 4b06c: 2e00 movel %d0,%d7 <== NOT EXECUTED 4b06e: 2240 moveal %d0,%a1 <== NOT EXECUTED 4b070: 5189 subql #8,%a1 <== NOT EXECUTED 4b072: 4c45 7006 remul %d5,%d6,%d7 <== NOT EXECUTED uintptr_t alloc_begin, uintptr_t page_size ) { return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size ) - HEAP_BLOCK_HEADER_SIZE); 4b076: 93c6 subal %d6,%a1 <== NOT EXECUTED link_below_block = start_block; } if ( sub_area_end == extend_area_begin ) { 4b078: b680 cmpl %d0,%d3 <== NOT EXECUTED 4b07a: 6606 bnes 4b082 <_Heap_Extend+0xa2> <== NOT EXECUTED start_block->prev_size = extend_area_end; 4b07c: 2082 movel %d2,%a0@ <== NOT EXECUTED RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_of_alloc_area( uintptr_t alloc_begin, uintptr_t page_size ) { return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size ) 4b07e: 2649 moveal %a1,%a3 <== NOT EXECUTED 4b080: 6006 bras 4b088 <_Heap_Extend+0xa8> <== NOT EXECUTED merge_above_block = end_block; } else if ( sub_area_end < extend_area_begin ) { 4b082: b680 cmpl %d0,%d3 <== NOT EXECUTED 4b084: 6302 blss 4b088 <_Heap_Extend+0xa8> <== NOT EXECUTED 4b086: 2a49 moveal %a1,%a5 <== NOT EXECUTED - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 4b088: 70fe moveq #-2,%d0 <== NOT EXECUTED 4b08a: c0a9 0004 andl %a1@(4),%d0 <== NOT EXECUTED RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at( const Heap_Block *block, uintptr_t offset ) { return (Heap_Block *) ((uintptr_t) block + offset); 4b08e: 41f1 0800 lea %a1@(00000000,%d0:l),%a0 <== NOT EXECUTED link_above_block = end_block; } start_block = _Heap_Block_at( end_block, _Heap_Block_size( end_block ) ); } while ( start_block != first_block ); 4b092: b888 cmpl %a0,%d4 <== NOT EXECUTED 4b094: 66ae bnes 4b044 <_Heap_Extend+0x64> <== NOT EXECUTED if ( extend_area_begin < heap->area_begin ) { 4b096: b6aa 0018 cmpl %a2@(24),%d3 <== NOT EXECUTED 4b09a: 6406 bccs 4b0a2 <_Heap_Extend+0xc2> <== NOT EXECUTED heap->area_begin = extend_area_begin; 4b09c: 2543 0018 movel %d3,%a2@(24) <== NOT EXECUTED 4b0a0: 600a bras 4b0ac <_Heap_Extend+0xcc> <== NOT EXECUTED } else if ( heap->area_end < extend_area_end ) { 4b0a2: b4aa 001c cmpl %a2@(28),%d2 <== NOT EXECUTED 4b0a6: 6304 blss 4b0ac <_Heap_Extend+0xcc> <== NOT EXECUTED heap->area_end = extend_area_end; 4b0a8: 2542 001c movel %d2,%a2@(28) <== NOT EXECUTED } extend_first_block_size = (uintptr_t) extend_last_block - (uintptr_t) extend_first_block; 4b0ac: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED heap->area_begin = extend_area_begin; } else if ( heap->area_end < extend_area_end ) { heap->area_end = extend_area_end; } extend_first_block_size = 4b0b0: 2008 movel %a0,%d0 <== NOT EXECUTED (uintptr_t) extend_last_block - (uintptr_t) extend_first_block; extend_first_block->prev_size = extend_area_end; extend_first_block->size_and_flag = extend_first_block_size | HEAP_PREV_BLOCK_USED; 4b0b2: 7801 moveq #1,%d4 <== NOT EXECUTED } else if ( heap->area_end < extend_area_end ) { heap->area_end = extend_area_end; } extend_first_block_size = (uintptr_t) extend_last_block - (uintptr_t) extend_first_block; 4b0b4: 226e fffc moveal %fp@(-4),%a1 <== NOT EXECUTED heap->area_begin = extend_area_begin; } else if ( heap->area_end < extend_area_end ) { heap->area_end = extend_area_end; } extend_first_block_size = 4b0b8: 9089 subl %a1,%d0 <== NOT EXECUTED (uintptr_t) extend_last_block - (uintptr_t) extend_first_block; extend_first_block->prev_size = extend_area_end; extend_first_block->size_and_flag = extend_first_block_size | HEAP_PREV_BLOCK_USED; 4b0ba: 8880 orl %d0,%d4 <== NOT EXECUTED } extend_first_block_size = (uintptr_t) extend_last_block - (uintptr_t) extend_first_block; extend_first_block->prev_size = extend_area_end; 4b0bc: 2282 movel %d2,%a1@ <== NOT EXECUTED extend_first_block->size_and_flag = extend_first_block_size | HEAP_PREV_BLOCK_USED; 4b0be: 2344 0004 movel %d4,%a1@(4) <== NOT EXECUTED _Heap_Protection_block_initialize( heap, extend_first_block ); extend_last_block->prev_size = extend_first_block_size; 4b0c2: 2080 movel %d0,%a0@ <== NOT EXECUTED extend_last_block->size_and_flag = 0; 4b0c4: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED _Heap_Protection_block_initialize( heap, extend_last_block ); if ( (uintptr_t) extend_first_block < (uintptr_t) heap->first_block ) { 4b0c8: b3ea 0020 cmpal %a2@(32),%a1 <== NOT EXECUTED 4b0cc: 6406 bccs 4b0d4 <_Heap_Extend+0xf4> <== NOT EXECUTED heap->first_block = extend_first_block; 4b0ce: 2549 0020 movel %a1,%a2@(32) <== NOT EXECUTED 4b0d2: 600a bras 4b0de <_Heap_Extend+0xfe> <== NOT EXECUTED } else if ( (uintptr_t) extend_last_block > (uintptr_t) heap->last_block ) { 4b0d4: b1ea 0024 cmpal %a2@(36),%a0 <== NOT EXECUTED 4b0d8: 6304 blss 4b0de <_Heap_Extend+0xfe> <== NOT EXECUTED heap->last_block = extend_last_block; 4b0da: 2548 0024 movel %a0,%a2@(36) <== NOT EXECUTED } if ( merge_below_block != NULL ) { 4b0de: 4a8c tstl %a4 <== NOT EXECUTED 4b0e0: 6732 beqs 4b114 <_Heap_Extend+0x134> <== NOT EXECUTED Heap_Control *heap, uintptr_t extend_area_begin, Heap_Block *first_block ) { uintptr_t const page_size = heap->page_size; 4b0e2: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED uintptr_t const new_first_block_alloc_begin = _Heap_Align_up( extend_area_begin + HEAP_BLOCK_HEADER_SIZE, page_size ); 4b0e6: 5083 addql #8,%d3 <== NOT EXECUTED RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up( uintptr_t value, uintptr_t alignment ) { uintptr_t remainder = value % alignment; 4b0e8: 2803 movel %d3,%d4 <== NOT EXECUTED 4b0ea: 4c40 4001 remul %d0,%d1,%d4 <== NOT EXECUTED if ( remainder != 0 ) { 4b0ee: 4a81 tstl %d1 <== NOT EXECUTED 4b0f0: 6704 beqs 4b0f6 <_Heap_Extend+0x116> <== NOT EXECUTED return value - remainder + alignment; 4b0f2: d680 addl %d0,%d3 <== NOT EXECUTED 4b0f4: 9681 subl %d1,%d3 <== NOT EXECUTED uintptr_t const new_first_block_begin = 4b0f6: 2043 moveal %d3,%a0 <== NOT EXECUTED 4b0f8: 5188 subql #8,%a0 <== NOT EXECUTED new_first_block_alloc_begin - HEAP_BLOCK_HEADER_SIZE; uintptr_t const first_block_begin = (uintptr_t) first_block; uintptr_t const new_first_block_size = 4b0fa: 200c movel %a4,%d0 <== NOT EXECUTED 4b0fc: 9088 subl %a0,%d0 <== NOT EXECUTED first_block_begin - new_first_block_begin; Heap_Block *const new_first_block = (Heap_Block *) new_first_block_begin; new_first_block->prev_size = first_block->prev_size; new_first_block->size_and_flag = new_first_block_size | HEAP_PREV_BLOCK_USED; 4b0fe: 7201 moveq #1,%d1 <== NOT EXECUTED 4b100: 8280 orl %d0,%d1 <== NOT EXECUTED uintptr_t const first_block_begin = (uintptr_t) first_block; uintptr_t const new_first_block_size = first_block_begin - new_first_block_begin; Heap_Block *const new_first_block = (Heap_Block *) new_first_block_begin; new_first_block->prev_size = first_block->prev_size; 4b102: 2094 movel %a4@,%a0@ <== NOT EXECUTED new_first_block->size_and_flag = new_first_block_size | HEAP_PREV_BLOCK_USED; 4b104: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED _Heap_Free_block( heap, new_first_block ); 4b108: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4b10a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b10c: 4eba feb6 jsr %pc@(4afc4 <_Heap_Free_block>) <== NOT EXECUTED 4b110: 508f addql #8,%sp <== NOT EXECUTED 4b112: 6012 bras 4b126 <_Heap_Extend+0x146> <== NOT EXECUTED heap->last_block = extend_last_block; } if ( merge_below_block != NULL ) { _Heap_Merge_below( heap, extend_area_begin, merge_below_block ); } else if ( link_below_block != NULL ) { 4b114: 4a81 tstl %d1 <== NOT EXECUTED 4b116: 670e beqs 4b126 <_Heap_Extend+0x146> <== NOT EXECUTED _Heap_Link_below( 4b118: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED { uintptr_t const last_block_begin = (uintptr_t) last_block; uintptr_t const link_begin = (uintptr_t) link; last_block->size_and_flag = (link_begin - last_block_begin) | HEAP_PREV_BLOCK_USED; 4b11c: 7801 moveq #1,%d4 <== NOT EXECUTED 4b11e: 9288 subl %a0,%d1 <== NOT EXECUTED 4b120: 8881 orl %d1,%d4 <== NOT EXECUTED 4b122: 2144 0004 movel %d4,%a0@(4) <== NOT EXECUTED link_below_block, extend_last_block ); } if ( merge_above_block != NULL ) { 4b126: 4a8b tstl %a3 <== NOT EXECUTED 4b128: 6734 beqs 4b15e <_Heap_Extend+0x17e> <== NOT EXECUTED ) { uintptr_t const page_size = heap->page_size; uintptr_t const last_block_begin = (uintptr_t) last_block; uintptr_t const last_block_new_size = _Heap_Align_down( extend_area_end - last_block_begin - HEAP_BLOCK_HEADER_SIZE, 4b12a: 5182 subql #8,%d2 <== NOT EXECUTED uintptr_t extend_area_end ) { uintptr_t const page_size = heap->page_size; uintptr_t const last_block_begin = (uintptr_t) last_block; uintptr_t const last_block_new_size = _Heap_Align_down( 4b12c: 948b subl %a3,%d2 <== NOT EXECUTED RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down( uintptr_t value, uintptr_t alignment ) { return value - (value % alignment); 4b12e: 2202 movel %d2,%d1 <== NOT EXECUTED 4b130: 4c6a 1000 0010 remul %a2@(16),%d0,%d1 <== NOT EXECUTED Heap_Block *const new_last_block = _Heap_Block_at( last_block, last_block_new_size ); new_last_block->size_and_flag = (last_block->size_and_flag - last_block_new_size) | HEAP_PREV_BLOCK_USED; 4b136: 7201 moveq #1,%d1 <== NOT EXECUTED 4b138: 9480 subl %d0,%d2 <== NOT EXECUTED ); Heap_Block *const new_last_block = _Heap_Block_at( last_block, last_block_new_size ); new_last_block->size_and_flag = (last_block->size_and_flag - last_block_new_size) 4b13a: 202b 0004 movel %a3@(4),%d0 <== NOT EXECUTED 4b13e: 9082 subl %d2,%d0 <== NOT EXECUTED | HEAP_PREV_BLOCK_USED; 4b140: 8280 orl %d0,%d1 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Heap_Block_set_size( Heap_Block *block, uintptr_t size ) { uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED; 4b142: 7001 moveq #1,%d0 <== NOT EXECUTED 4b144: 2781 2804 movel %d1,%a3@(00000004,%d2:l) <== NOT EXECUTED 4b148: c0ab 0004 andl %a3@(4),%d0 <== NOT EXECUTED block->size_and_flag = size | flag; 4b14c: 8480 orl %d0,%d2 <== NOT EXECUTED 4b14e: 2742 0004 movel %d2,%a3@(4) <== NOT EXECUTED _Heap_Block_set_size( last_block, last_block_new_size ); _Heap_Free_block( heap, last_block ); 4b152: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4b154: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b156: 4eba fe6c jsr %pc@(4afc4 <_Heap_Free_block>) <== NOT EXECUTED 4b15a: 508f addql #8,%sp <== NOT EXECUTED 4b15c: 6020 bras 4b17e <_Heap_Extend+0x19e> <== NOT EXECUTED ); } if ( merge_above_block != NULL ) { _Heap_Merge_above( heap, merge_above_block, extend_area_end ); } else if ( link_above_block != NULL ) { 4b15e: 4a8d tstl %a5 <== NOT EXECUTED 4b160: 671c beqs 4b17e <_Heap_Extend+0x19e> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Heap_Block_set_size( Heap_Block *block, uintptr_t size ) { uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED; 4b162: 7001 moveq #1,%d0 <== NOT EXECUTED uintptr_t const link_begin = (uintptr_t) link; uintptr_t const first_block_begin = (uintptr_t) first_block; _Heap_Block_set_size( link, first_block_begin - link_begin ); last_block->size_and_flag |= HEAP_PREV_BLOCK_USED; 4b164: 7801 moveq #1,%d4 <== NOT EXECUTED ) { uintptr_t const link_begin = (uintptr_t) link; uintptr_t const first_block_begin = (uintptr_t) first_block; _Heap_Block_set_size( link, first_block_begin - link_begin ); 4b166: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED 4b16a: 928d subl %a5,%d1 <== NOT EXECUTED 4b16c: c0ad 0004 andl %a5@(4),%d0 <== NOT EXECUTED } if ( merge_above_block != NULL ) { _Heap_Merge_above( heap, merge_above_block, extend_area_end ); } else if ( link_above_block != NULL ) { _Heap_Link_above( 4b170: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED block->size_and_flag = size | flag; 4b174: 8280 orl %d0,%d1 <== NOT EXECUTED 4b176: 2b41 0004 movel %d1,%a5@(4) <== NOT EXECUTED uintptr_t const link_begin = (uintptr_t) link; uintptr_t const first_block_begin = (uintptr_t) first_block; _Heap_Block_set_size( link, first_block_begin - link_begin ); last_block->size_and_flag |= HEAP_PREV_BLOCK_USED; 4b17a: 89a8 0004 orl %d4,%a0@(4) <== NOT EXECUTED extend_first_block, extend_last_block ); } if ( merge_below_block == NULL && merge_above_block == NULL ) { 4b17e: 4a8c tstl %a4 <== NOT EXECUTED 4b180: 6610 bnes 4b192 <_Heap_Extend+0x1b2> <== NOT EXECUTED 4b182: 4a8b tstl %a3 <== NOT EXECUTED 4b184: 660c bnes 4b192 <_Heap_Extend+0x1b2> <== NOT EXECUTED _Heap_Free_block( heap, extend_first_block ); 4b186: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 4b18a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b18c: 4eba fe36 jsr %pc@(4afc4 <_Heap_Free_block>) <== NOT EXECUTED 4b190: 508f addql #8,%sp <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Heap_Set_last_block_size( Heap_Control *heap ) { _Heap_Block_set_size( heap->last_block, (uintptr_t) heap->first_block - (uintptr_t) heap->last_block 4b192: 206a 0024 moveal %a2@(36),%a0 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Heap_Block_set_size( Heap_Block *block, uintptr_t size ) { uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED; 4b196: 7001 moveq #1,%d0 <== NOT EXECUTED * This feature will be used to terminate the scattered heap area list. See * also _Heap_Extend(). */ RTEMS_INLINE_ROUTINE void _Heap_Set_last_block_size( Heap_Control *heap ) { _Heap_Block_set_size( 4b198: 222a 0020 movel %a2@(32),%d1 <== NOT EXECUTED 4b19c: 9288 subl %a0,%d1 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Heap_Block_set_size( Heap_Block *block, uintptr_t size ) { uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED; 4b19e: c0a8 0004 andl %a0@(4),%d0 <== NOT EXECUTED block->size_and_flag = size | flag; 4b1a2: 8280 orl %d0,%d1 <== NOT EXECUTED } _Heap_Set_last_block_size( heap ); extended_size = stats->free_size - free_size; 4b1a4: 202a 0030 movel %a2@(48),%d0 <== NOT EXECUTED 4b1a8: 90ae fff4 subl %fp@(-12),%d0 <== NOT EXECUTED 4b1ac: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED /* Statistics */ stats->size += extended_size; 4b1b0: d1aa 002c addl %d0,%a2@(44) <== NOT EXECUTED if ( extended_size_ptr != NULL ) 4b1b4: 4aae 0014 tstl %fp@(20) <== NOT EXECUTED 4b1b8: 670c beqs 4b1c6 <_Heap_Extend+0x1e6> <== NOT EXECUTED *extended_size_ptr = extended_size; 4b1ba: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED 4b1be: 2080 movel %d0,%a0@ <== NOT EXECUTED 4b1c0: 6004 bras 4b1c6 <_Heap_Extend+0x1e6> <== NOT EXECUTED _Heap_Block_of_alloc_area( sub_area_end, page_size ); if ( sub_area_end > extend_area_begin && extend_area_end > sub_area_begin ) { return false; 4b1c2: 4200 clrb %d0 <== NOT EXECUTED 4b1c4: 6002 bras 4b1c8 <_Heap_Extend+0x1e8> <== NOT EXECUTED stats->size += extended_size; if ( extended_size_ptr != NULL ) *extended_size_ptr = extended_size; return true; 4b1c6: 7001 moveq #1,%d0 <== NOT EXECUTED } 4b1c8: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4b1ce: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004ace4 <_Heap_Free>: return do_free; } #endif bool _Heap_Free( Heap_Control *heap, void *alloc_begin_ptr ) { 4ace4: 4e56 ffe8 linkw %fp,#-24 4ace8: 202e 000c movel %fp@(12),%d0 4acec: 2240 moveal %d0,%a1 4acee: 5189 subql #8,%a1 4acf0: 206e 0008 moveal %fp@(8),%a0 4acf4: 4c68 0001 0010 remul %a0@(16),%d1,%d0 4acfa: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ RTEMS_INLINE_ROUTINE bool _Heap_Is_block_in_heap( const Heap_Control *heap, const Heap_Block *block ) { return (uintptr_t) block >= (uintptr_t) heap->first_block 4acfe: 2828 0020 movel %a0@(32),%d4 uintptr_t alloc_begin, uintptr_t page_size ) { return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size ) - HEAP_BLOCK_HEADER_SIZE); 4ad02: 93c1 subal %d1,%a1 const Heap_Control *heap, const Heap_Block *block ) { return (uintptr_t) block >= (uintptr_t) heap->first_block && (uintptr_t) block <= (uintptr_t) heap->last_block; 4ad04: b889 cmpl %a1,%d4 4ad06: 620c bhis 4ad14 <_Heap_Free+0x30> <== NEVER TAKEN 4ad08: b3e8 0024 cmpal %a0@(36),%a1 4ad0c: 53c0 sls %d0 4ad0e: 49c0 extbl %d0 4ad10: 4480 negl %d0 4ad12: 6002 bras 4ad16 <_Heap_Free+0x32> 4ad14: 4280 clrl %d0 <== NOT EXECUTED uintptr_t next_block_size = 0; bool next_is_free = false; _Heap_Protection_block_check( heap, block ); if ( !_Heap_Is_block_in_heap( heap, block ) ) { 4ad16: 4a00 tstb %d0 4ad18: 6700 012c beqw 4ae46 <_Heap_Free+0x162> --stats->used_blocks; ++stats->frees; stats->free_size += block_size; return( true ); } 4ad1c: 2629 0004 movel %a1@(4),%d3 - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 4ad20: 70fe moveq #-2,%d0 4ad22: c083 andl %d3,%d0 RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at( const Heap_Block *block, uintptr_t offset ) { return (Heap_Block *) ((uintptr_t) block + offset); 4ad24: 45f1 0800 lea %a1@(00000000,%d0:l),%a2 const Heap_Control *heap, const Heap_Block *block ) { return (uintptr_t) block >= (uintptr_t) heap->first_block && (uintptr_t) block <= (uintptr_t) heap->last_block; 4ad28: b88a cmpl %a2,%d4 4ad2a: 620c bhis 4ad38 <_Heap_Free+0x54> <== NEVER TAKEN 4ad2c: b5e8 0024 cmpal %a0@(36),%a2 4ad30: 53c1 sls %d1 4ad32: 49c1 extbl %d1 4ad34: 4481 negl %d1 4ad36: 6002 bras 4ad3a <_Heap_Free+0x56> 4ad38: 4281 clrl %d1 <== NOT EXECUTED block_size = _Heap_Block_size( block ); next_block = _Heap_Block_at( block, block_size ); _Heap_Protection_block_check( heap, next_block ); if ( !_Heap_Is_block_in_heap( heap, next_block ) ) { 4ad3a: 4a01 tstb %d1 4ad3c: 6700 0108 beqw 4ae46 <_Heap_Free+0x162> --stats->used_blocks; ++stats->frees; stats->free_size += block_size; return( true ); } 4ad40: 242a 0004 movel %a2@(4),%d2 if ( !_Heap_Is_block_in_heap( heap, next_block ) ) { _HAssert( false ); return false; } if ( !_Heap_Is_prev_used( next_block ) ) { 4ad44: 0802 0000 btst #0,%d2 4ad48: 6700 00fc beqw 4ae46 <_Heap_Free+0x162> - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 4ad4c: 72fe moveq #-2,%d1 if ( !_Heap_Protection_determine_block_free( heap, block ) ) { return true; } next_block_size = _Heap_Block_size( next_block ); next_is_free = next_block != heap->last_block 4ad4e: 2668 0024 moveal %a0@(36),%a3 4ad52: c481 andl %d1,%d2 && !_Heap_Is_prev_used( _Heap_Block_at( next_block, next_block_size )); 4ad54: b7ca cmpal %a2,%a3 4ad56: 670c beqs 4ad64 <_Heap_Free+0x80> <== NEVER TAKEN block->size_and_flag = size | flag; } RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block ) { return block->size_and_flag & HEAP_PREV_BLOCK_USED; 4ad58: 7201 moveq #1,%d1 4ad5a: c2b2 2804 andl %a2@(00000004,%d2:l),%d1 return do_free; } #endif bool _Heap_Free( Heap_Control *heap, void *alloc_begin_ptr ) 4ad5e: 5381 subql #1,%d1 4ad60: 4481 negl %d1 4ad62: 6002 bras 4ad66 <_Heap_Free+0x82> return true; } next_block_size = _Heap_Block_size( next_block ); next_is_free = next_block != heap->last_block && !_Heap_Is_prev_used( _Heap_Block_at( next_block, next_block_size )); 4ad64: 4281 clrl %d1 <== NOT EXECUTED if ( !_Heap_Protection_determine_block_free( heap, block ) ) { return true; } next_block_size = _Heap_Block_size( next_block ); next_is_free = next_block != heap->last_block 4ad66: 1a01 moveb %d1,%d5 && !_Heap_Is_prev_used( _Heap_Block_at( next_block, next_block_size )); if ( !_Heap_Is_prev_used( block ) ) { 4ad68: 0803 0000 btst #0,%d3 4ad6c: 6662 bnes 4add0 <_Heap_Free+0xec> uintptr_t const prev_size = block->prev_size; 4ad6e: 2611 movel %a1@,%d3 RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at( const Heap_Block *block, uintptr_t offset ) { return (Heap_Block *) ((uintptr_t) block + offset); 4ad70: 93c3 subal %d3,%a1 const Heap_Control *heap, const Heap_Block *block ) { return (uintptr_t) block >= (uintptr_t) heap->first_block && (uintptr_t) block <= (uintptr_t) heap->last_block; 4ad72: b889 cmpl %a1,%d4 4ad74: 620a bhis 4ad80 <_Heap_Free+0x9c> <== NEVER TAKEN 4ad76: b3cb cmpal %a3,%a1 4ad78: 53c1 sls %d1 4ad7a: 49c1 extbl %d1 4ad7c: 4481 negl %d1 4ad7e: 6002 bras 4ad82 <_Heap_Free+0x9e> 4ad80: 4281 clrl %d1 <== NOT EXECUTED Heap_Block * const prev_block = _Heap_Block_at( block, -prev_size ); if ( !_Heap_Is_block_in_heap( heap, prev_block ) ) { 4ad82: 4a01 tstb %d1 4ad84: 6700 00c0 beqw 4ae46 <_Heap_Free+0x162> block->size_and_flag = size | flag; } RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block ) { return block->size_and_flag & HEAP_PREV_BLOCK_USED; 4ad88: 7201 moveq #1,%d1 4ad8a: c2a9 0004 andl %a1@(4),%d1 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) ) { 4ad8e: 6700 00b6 beqw 4ae46 <_Heap_Free+0x162> _HAssert( false ); return( false ); } if ( next_is_free ) { /* coalesce both */ 4ad92: 4a05 tstb %d5 4ad94: 6726 beqs 4adbc <_Heap_Free+0xd8> <== ALWAYS TAKEN return _Heap_Free_list_tail(heap)->prev; } RTEMS_INLINE_ROUTINE void _Heap_Free_list_remove( Heap_Block *block ) { Heap_Block *next = block->next; 4ad96: 266a 0008 moveal %a2@(8),%a3 <== NOT EXECUTED uintptr_t const size = block_size + prev_size + next_block_size; 4ad9a: d480 addl %d0,%d2 <== NOT EXECUTED 4ad9c: d682 addl %d2,%d3 <== NOT EXECUTED _Heap_Free_list_remove( next_block ); stats->free_blocks -= 1; prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED; 4ad9e: 7401 moveq #1,%d2 <== NOT EXECUTED Heap_Block *prev = block->prev; 4ada0: 246a 000c moveal %a2@(12),%a2 <== NOT EXECUTED prev->next = next; 4ada4: 254b 0008 movel %a3,%a2@(8) <== NOT EXECUTED 4ada8: 8483 orl %d3,%d2 <== NOT EXECUTED next->prev = prev; 4adaa: 274a 000c movel %a2,%a3@(12) <== NOT EXECUTED } if ( next_is_free ) { /* coalesce both */ uintptr_t const size = block_size + prev_size + next_block_size; _Heap_Free_list_remove( next_block ); stats->free_blocks -= 1; 4adae: 53a8 0038 subql #1,%a0@(56) <== NOT EXECUTED prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED; next_block = _Heap_Block_at( prev_block, size ); _HAssert(!_Heap_Is_prev_used( next_block)); next_block->prev_size = size; 4adb2: 2383 3800 movel %d3,%a1@(00000000,%d3:l) <== NOT EXECUTED if ( next_is_free ) { /* coalesce both */ uintptr_t const size = block_size + prev_size + next_block_size; _Heap_Free_list_remove( next_block ); stats->free_blocks -= 1; prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED; 4adb6: 2342 0004 movel %d2,%a1@(4) <== NOT EXECUTED 4adba: 607a bras 4ae36 <_Heap_Free+0x152> <== 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 */ uintptr_t const size = block_size + prev_size; 4adbc: d680 addl %d0,%d3 prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED; 4adbe: 7201 moveq #1,%d1 next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED; 4adc0: 74fe moveq #-2,%d2 next_block = _Heap_Block_at( prev_block, size ); _HAssert(!_Heap_Is_prev_used( next_block)); next_block->prev_size = size; } else { /* coalesce prev */ uintptr_t const size = block_size + prev_size; prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED; 4adc2: 8283 orl %d3,%d1 next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED; next_block->prev_size = size; 4adc4: 2483 movel %d3,%a2@ next_block = _Heap_Block_at( prev_block, size ); _HAssert(!_Heap_Is_prev_used( next_block)); next_block->prev_size = size; } else { /* coalesce prev */ uintptr_t const size = block_size + prev_size; prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED; 4adc6: 2341 0004 movel %d1,%a1@(4) next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED; 4adca: c5aa 0004 andl %d2,%a2@(4) 4adce: 6066 bras 4ae36 <_Heap_Free+0x152> next_block->prev_size = size; } } else if ( next_is_free ) { /* coalesce next */ 4add0: 4a01 tstb %d1 4add2: 672a beqs 4adfe <_Heap_Free+0x11a> RTEMS_INLINE_ROUTINE void _Heap_Free_list_replace( Heap_Block *old_block, Heap_Block *new_block ) { Heap_Block *next = old_block->next; 4add4: 266a 0008 moveal %a2@(8),%a3 uintptr_t const size = block_size + next_block_size; 4add8: 2202 movel %d2,%d1 4adda: d280 addl %d0,%d1 _Heap_Free_list_replace( next_block, block ); block->size_and_flag = size | HEAP_PREV_BLOCK_USED; 4addc: 7401 moveq #1,%d2 Heap_Block *prev = old_block->prev; 4adde: 246a 000c moveal %a2@(12),%a2 new_block->next = next; 4ade2: 234b 0008 movel %a3,%a1@(8) 4ade6: 8481 orl %d1,%d2 new_block->prev = prev; 4ade8: 234a 000c movel %a2,%a1@(12) next_block = _Heap_Block_at( block, size ); next_block->prev_size = size; 4adec: 2381 1800 movel %d1,%a1@(00000000,%d1:l) next->prev = new_block; 4adf0: 2749 000c movel %a1,%a3@(12) prev->next = new_block; 4adf4: 2549 0008 movel %a1,%a2@(8) next_block->prev_size = size; } } else if ( next_is_free ) { /* coalesce next */ uintptr_t const size = block_size + next_block_size; _Heap_Free_list_replace( next_block, block ); block->size_and_flag = size | HEAP_PREV_BLOCK_USED; 4adf8: 2342 0004 movel %d2,%a1@(4) 4adfc: 6038 bras 4ae36 <_Heap_Free+0x152> next_block->prev_size = size; } else { /* no coalesce */ /* Add 'block' to the head of the free blocks list as it tends to produce less fragmentation than adding to the tail. */ _Heap_Free_list_insert_after( _Heap_Free_list_head( heap), block ); block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED; 4adfe: 7201 moveq #1,%d1 next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED; 4ae00: 74fe moveq #-2,%d2 next_block->prev_size = size; } else { /* no coalesce */ /* Add 'block' to the head of the free blocks list as it tends to produce less fragmentation than adding to the tail. */ _Heap_Free_list_insert_after( _Heap_Free_list_head( heap), block ); block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED; 4ae02: 8280 orl %d0,%d1 RTEMS_INLINE_ROUTINE void _Heap_Free_list_insert_after( Heap_Block *block_before, Heap_Block *new_block ) { Heap_Block *next = block_before->next; 4ae04: 2668 0008 moveal %a0@(8),%a3 new_block->next = next; new_block->prev = block_before; 4ae08: 2348 000c movel %a0,%a1@(12) 4ae0c: 2341 0004 movel %d1,%a1@(4) next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED; next_block->prev_size = block_size; /* Statistics */ ++stats->free_blocks; 4ae10: 2228 0038 movel %a0@(56),%d1 4ae14: 5281 addql #1,%d1 Heap_Block *new_block ) { Heap_Block *next = block_before->next; new_block->next = next; 4ae16: 234b 0008 movel %a3,%a1@(8) } else { /* no coalesce */ /* Add 'block' to the head of the free blocks list as it tends to produce less fragmentation than adding to the tail. */ _Heap_Free_list_insert_after( _Heap_Free_list_head( heap), block ); block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED; next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED; 4ae1a: c5aa 0004 andl %d2,%a2@(4) new_block->prev = block_before; block_before->next = new_block; next->prev = new_block; 4ae1e: 2749 000c movel %a1,%a3@(12) next_block->prev_size = block_size; 4ae22: 2480 movel %d0,%a2@ { Heap_Block *next = block_before->next; new_block->next = next; new_block->prev = block_before; block_before->next = new_block; 4ae24: 2149 0008 movel %a1,%a0@(8) /* Statistics */ ++stats->free_blocks; 4ae28: 2141 0038 movel %d1,%a0@(56) if ( stats->max_free_blocks < stats->free_blocks ) { 4ae2c: b2a8 003c cmpl %a0@(60),%d1 4ae30: 6304 blss 4ae36 <_Heap_Free+0x152> <== NEVER TAKEN stats->max_free_blocks = stats->free_blocks; 4ae32: 2141 003c movel %d1,%a0@(60) } /* Statistics */ --stats->used_blocks; ++stats->frees; stats->free_size += block_size; 4ae36: d1a8 0030 addl %d0,%a0@(48) stats->max_free_blocks = stats->free_blocks; } } /* Statistics */ --stats->used_blocks; 4ae3a: 53a8 0040 subql #1,%a0@(64) ++stats->frees; 4ae3e: 52a8 0050 addql #1,%a0@(80) stats->free_size += block_size; return( true ); 4ae42: 7001 moveq #1,%d0 4ae44: 6002 bras 4ae48 <_Heap_Free+0x164> /* As we always coalesce free blocks, the block that preceedes prev_block must have been used. */ if ( !_Heap_Is_prev_used ( prev_block) ) { _HAssert( false ); return( false ); 4ae46: 4200 clrb %d0 <== NOT EXECUTED --stats->used_blocks; ++stats->frees; stats->free_size += block_size; return( true ); } 4ae48: 4cd7 0c3c moveml %sp@,%d2-%d5/%a2-%a3 4ae4c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004afc4 <_Heap_Free_block>: #include #include #include static void _Heap_Free_block( Heap_Control *heap, Heap_Block *block ) { 4afc4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4afc8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED Heap_Statistics *const stats = &heap->stats; /* Statistics */ ++stats->used_blocks; 4afcc: 52a8 0040 addql #1,%a0@(64) <== NOT EXECUTED --stats->frees; 4afd0: 53a8 0050 subql #1,%a0@(80) <== NOT EXECUTED _Heap_Free( heap, (void *) _Heap_Alloc_area_of_block( block )); 4afd4: 50ae 000c addql #8,%fp@(12) <== NOT EXECUTED } 4afd8: 4e5e unlk %fp <== NOT EXECUTED /* Statistics */ ++stats->used_blocks; --stats->frees; _Heap_Free( heap, (void *) _Heap_Alloc_area_of_block( block )); 4afda: 4ef9 0004 b1d4 jmp 4b1d4 <_Heap_Free> <== NOT EXECUTED =============================================================================== 0004655e <_Heap_Get_first_and_last_block>: uintptr_t page_size, uintptr_t min_block_size, Heap_Block **first_block_ptr, Heap_Block **last_block_ptr ) { 4655e: 4e56 fff4 linkw %fp,#-12 46562: 206e 0008 moveal %fp@(8),%a0 uintptr_t const heap_area_end = heap_area_begin + heap_area_size; uintptr_t const alloc_area_begin = _Heap_Align_up( heap_area_begin + HEAP_BLOCK_HEADER_SIZE, page_size ); 46566: 2208 movel %a0,%d1 46568: 5081 addql #8,%d1 uintptr_t page_size, uintptr_t min_block_size, Heap_Block **first_block_ptr, Heap_Block **last_block_ptr ) { 4656a: 48d7 001c moveml %d2-%d4,%sp@ 4656e: 202e 0010 movel %fp@(16),%d0 RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up( uintptr_t value, uintptr_t alignment ) { uintptr_t remainder = value % alignment; 46572: 2801 movel %d1,%d4 46574: 242e 000c movel %fp@(12),%d2 uintptr_t const heap_area_end = heap_area_begin + heap_area_size; 46578: 43f0 2800 lea %a0@(00000000,%d2:l),%a1 4657c: 4c40 4003 remul %d0,%d3,%d4 if ( remainder != 0 ) { 46580: 4a83 tstl %d3 46582: 6704 beqs 46588 <_Heap_Get_first_and_last_block+0x2a><== ALWAYS TAKEN return value - remainder + alignment; 46584: d280 addl %d0,%d1 <== NOT EXECUTED 46586: 9283 subl %d3,%d1 <== NOT EXECUTED _Heap_Align_down( heap_area_size - overhead, page_size ); Heap_Block *const first_block = (Heap_Block *) first_block_begin; Heap_Block *const last_block = _Heap_Block_at( first_block, first_block_size ); if ( 46588: b1c9 cmpal %a1,%a0 4658a: 622e bhis 465ba <_Heap_Get_first_and_last_block+0x5c><== NEVER TAKEN uintptr_t const alloc_area_begin = _Heap_Align_up( heap_area_begin + HEAP_BLOCK_HEADER_SIZE, page_size ); uintptr_t const first_block_begin = alloc_area_begin - HEAP_BLOCK_HEADER_SIZE; uintptr_t const overhead = HEAP_BLOCK_HEADER_SIZE + (first_block_begin - heap_area_begin); 4658c: 2241 moveal %d1,%a1 4658e: 5189 subql #8,%a1 uintptr_t const heap_area_end = heap_area_begin + heap_area_size; uintptr_t const alloc_area_begin = _Heap_Align_up( heap_area_begin + HEAP_BLOCK_HEADER_SIZE, page_size ); uintptr_t const first_block_begin = alloc_area_begin - HEAP_BLOCK_HEADER_SIZE; uintptr_t const overhead = 46590: 9288 subl %a0,%d1 Heap_Block *const last_block = _Heap_Block_at( first_block, first_block_size ); if ( heap_area_end < heap_area_begin || heap_area_size <= overhead 46592: b282 cmpl %d2,%d1 46594: 6424 bccs 465ba <_Heap_Get_first_and_last_block+0x5c> uintptr_t const first_block_begin = alloc_area_begin - HEAP_BLOCK_HEADER_SIZE; uintptr_t const overhead = HEAP_BLOCK_HEADER_SIZE + (first_block_begin - heap_area_begin); uintptr_t const first_block_size = _Heap_Align_down( heap_area_size - overhead, page_size ); 46596: 9481 subl %d1,%d2 46598: 2202 movel %d2,%d1 RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down( uintptr_t value, uintptr_t alignment ) { return value - (value % alignment); 4659a: 2602 movel %d2,%d3 4659c: 4c40 3002 remul %d0,%d2,%d3 465a0: 9282 subl %d2,%d1 _Heap_Block_at( first_block, first_block_size ); if ( heap_area_end < heap_area_begin || heap_area_size <= overhead || first_block_size < min_block_size 465a2: b2ae 0014 cmpl %fp@(20),%d1 465a6: 6512 bcss 465ba <_Heap_Get_first_and_last_block+0x5c><== NEVER TAKEN ) { /* Invalid area or area too small */ return false; } *first_block_ptr = first_block; 465a8: 206e 0018 moveal %fp@(24),%a0 RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at( const Heap_Block *block, uintptr_t offset ) { return (Heap_Block *) ((uintptr_t) block + offset); 465ac: d289 addl %a1,%d1 465ae: 2089 movel %a1,%a0@ 465b0: 206e 001c moveal %fp@(28),%a0 465b4: 2081 movel %d1,%a0@ *last_block_ptr = last_block; return true; 465b6: 7001 moveq #1,%d0 465b8: 6002 bras 465bc <_Heap_Get_first_and_last_block+0x5e> heap_area_end < heap_area_begin || heap_area_size <= overhead || first_block_size < min_block_size ) { /* Invalid area or area too small */ return false; 465ba: 4200 clrb %d0 *first_block_ptr = first_block; *last_block_ptr = last_block; return true; } 465bc: 4cd7 001c moveml %sp@,%d2-%d4 465c0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004f284 <_Heap_Get_free_information>: void _Heap_Get_free_information( Heap_Control *the_heap, Heap_Information *info ) { 4f284: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4f288: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 4f28c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4f28e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED Heap_Block *the_block; Heap_Block *const tail = _Heap_Free_list_tail(the_heap); info->number = 0; 4f292: 4290 clrl %a0@ <== NOT EXECUTED info->number++; info->total += the_size; if ( info->largest < the_size ) info->largest = the_size; } } 4f294: 226a 0008 moveal %a2@(8),%a1 <== NOT EXECUTED { Heap_Block *the_block; Heap_Block *const tail = _Heap_Free_list_tail(the_heap); info->number = 0; info->largest = 0; 4f298: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED info->total = 0; 4f29c: 42a8 0008 clrl %a0@(8) <== NOT EXECUTED for(the_block = _Heap_Free_list_first(the_heap); 4f2a0: 601a bras 4f2bc <_Heap_Get_free_information+0x38><== NOT EXECUTED - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 4f2a2: 70fe moveq #-2,%d0 <== NOT EXECUTED 4f2a4: 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++; 4f2a8: 5290 addql #1,%a0@ <== NOT EXECUTED info->total += the_size; 4f2aa: d1a8 0008 addl %d0,%a0@(8) <== NOT EXECUTED if ( info->largest < the_size ) 4f2ae: b0a8 0004 cmpl %a0@(4),%d0 <== NOT EXECUTED 4f2b2: 6304 blss 4f2b8 <_Heap_Get_free_information+0x34><== NOT EXECUTED info->largest = the_size; 4f2b4: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED info->largest = 0; info->total = 0; for(the_block = _Heap_Free_list_first(the_heap); the_block != tail; the_block = the_block->next) 4f2b8: 2269 0008 moveal %a1@(8),%a1 <== NOT EXECUTED info->number = 0; info->largest = 0; info->total = 0; for(the_block = _Heap_Free_list_first(the_heap); 4f2bc: b5c9 cmpal %a1,%a2 <== NOT EXECUTED 4f2be: 66e2 bnes 4f2a2 <_Heap_Get_free_information+0x1e><== NOT EXECUTED info->number++; info->total += the_size; if ( info->largest < the_size ) info->largest = the_size; } } 4f2c0: 245f moveal %sp@+,%a2 <== NOT EXECUTED 4f2c2: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000465c4 <_Heap_Initialize>: Heap_Control *heap, void *heap_area_begin_ptr, uintptr_t heap_area_size, uintptr_t page_size ) { 465c4: 4e56 ffe4 linkw %fp,#-28 465c8: 48d7 043c moveml %d2-%d5/%a2,%sp@ 465cc: 246e 0008 moveal %fp@(8),%a2 465d0: 282e 000c movel %fp@(12),%d4 465d4: 2a2e 0010 movel %fp@(16),%d5 465d8: 242e 0014 movel %fp@(20),%d2 uintptr_t first_block_begin = 0; uintptr_t first_block_size = 0; uintptr_t last_block_begin = 0; uintptr_t min_block_size = 0; bool area_ok = false; Heap_Block *first_block = NULL; 465dc: 42ae fffc clrl %fp@(-4) Heap_Block *last_block = NULL; 465e0: 42ae fff8 clrl %fp@(-8) if ( page_size == 0 ) { 465e4: 4a82 tstl %d2 465e6: 6714 beqs 465fc <_Heap_Initialize+0x38> <== NEVER TAKEN RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up( uintptr_t value, uintptr_t alignment ) { uintptr_t remainder = value % alignment; 465e8: 7003 moveq #3,%d0 465ea: c082 andl %d2,%d0 if ( remainder != 0 ) { 465ec: 6704 beqs 465f2 <_Heap_Initialize+0x2e> <== ALWAYS TAKEN return value - remainder + alignment; 465ee: 5882 addql #4,%d2 <== NOT EXECUTED 465f0: 9480 subl %d0,%d2 <== NOT EXECUTED page_size = CPU_ALIGNMENT; } else { page_size = _Heap_Align_up( page_size, CPU_ALIGNMENT ); if ( page_size < CPU_ALIGNMENT ) { 465f2: 7003 moveq #3,%d0 465f4: b082 cmpl %d2,%d0 465f6: 6506 bcss 465fe <_Heap_Initialize+0x3a> <== ALWAYS TAKEN 465f8: 6000 00c0 braw 466ba <_Heap_Initialize+0xf6> <== NOT EXECUTED bool area_ok = false; Heap_Block *first_block = NULL; Heap_Block *last_block = NULL; if ( page_size == 0 ) { page_size = CPU_ALIGNMENT; 465fc: 7404 moveq #4,%d2 <== NOT EXECUTED RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up( uintptr_t value, uintptr_t alignment ) { uintptr_t remainder = value % alignment; 465fe: 7210 moveq #16,%d1 46600: 4c42 1000 remul %d2,%d0,%d1 if ( remainder != 0 ) { 46604: 4a80 tstl %d0 46606: 670c beqs 46614 <_Heap_Initialize+0x50> <== ALWAYS TAKEN return value - remainder + alignment; 46608: 2602 movel %d2,%d3 <== NOT EXECUTED 4660a: 0683 0000 0010 addil #16,%d3 <== NOT EXECUTED 46610: 9680 subl %d0,%d3 <== NOT EXECUTED 46612: 6002 bras 46616 <_Heap_Initialize+0x52> <== NOT EXECUTED } else { return value; 46614: 7610 moveq #16,%d3 return 0; } } min_block_size = _Heap_Align_up( sizeof( Heap_Block ), page_size ); area_ok = _Heap_Get_first_and_last_block( 46616: 486e fff8 pea %fp@(-8) 4661a: 486e fffc pea %fp@(-4) 4661e: 2f03 movel %d3,%sp@- 46620: 2f02 movel %d2,%sp@- 46622: 2f05 movel %d5,%sp@- 46624: 2f04 movel %d4,%sp@- 46626: 4eb9 0004 655e jsr 4655e <_Heap_Get_first_and_last_block> page_size, min_block_size, &first_block, &last_block ); if ( !area_ok ) { 4662c: 4fef 0018 lea %sp@(24),%sp 46630: 4a00 tstb %d0 46632: 6700 0086 beqw 466ba <_Heap_Initialize+0xf6> return 0; } memset(heap, 0, sizeof(*heap)); 46636: 4878 0058 pea 58 uintptr_t page_size ) { Heap_Statistics *const stats = &heap->stats; uintptr_t const heap_area_begin = (uintptr_t) heap_area_begin_ptr; uintptr_t const heap_area_end = heap_area_begin + heap_area_size; 4663a: da84 addl %d4,%d5 ); if ( !area_ok ) { return 0; } memset(heap, 0, sizeof(*heap)); 4663c: 42a7 clrl %sp@- 4663e: 2f0a movel %a2,%sp@- 46640: 4eb9 0004 d268 jsr 4d268 heap->Protection.block_check = _Heap_Protection_block_check_default; heap->Protection.block_error = _Heap_Protection_block_error_default; #endif first_block_begin = (uintptr_t) first_block; last_block_begin = (uintptr_t) last_block; 46646: 226e fff8 moveal %fp@(-8),%a1 first_block_size = last_block_begin - first_block_begin; 4664a: 2009 movel %a1,%d0 /* First block */ first_block->prev_size = heap_area_end; first_block->size_and_flag = first_block_size | HEAP_PREV_BLOCK_USED; 4664c: 7201 moveq #1,%d1 ); _HAssert( _Heap_Is_aligned( _Heap_Alloc_area_of_block( last_block ), page_size ) ); return first_block_size; 4664e: 4fef 000c lea %sp@(12),%sp heap->Protection.block_initialize = _Heap_Protection_block_initialize_default; heap->Protection.block_check = _Heap_Protection_block_check_default; heap->Protection.block_error = _Heap_Protection_block_error_default; #endif first_block_begin = (uintptr_t) first_block; 46652: 206e fffc moveal %fp@(-4),%a0 last_block_begin = (uintptr_t) last_block; first_block_size = last_block_begin - first_block_begin; 46656: 9088 subl %a0,%d0 /* First block */ first_block->prev_size = heap_area_end; first_block->size_and_flag = first_block_size | HEAP_PREV_BLOCK_USED; 46658: 8280 orl %d0,%d1 first_block_begin = (uintptr_t) first_block; last_block_begin = (uintptr_t) last_block; first_block_size = last_block_begin - first_block_begin; /* First block */ first_block->prev_size = heap_area_end; 4665a: 2085 movel %d5,%a0@ first_block->size_and_flag = first_block_size | HEAP_PREV_BLOCK_USED; 4665c: 2141 0004 movel %d1,%a0@(4) /* Statistics */ stats->size = first_block_size; stats->free_size = first_block_size; stats->min_free_size = first_block_size; stats->free_blocks = 1; 46660: 7201 moveq #1,%d1 first_block_size = last_block_begin - first_block_begin; /* First block */ first_block->prev_size = heap_area_end; first_block->size_and_flag = first_block_size | HEAP_PREV_BLOCK_USED; first_block->next = _Heap_Free_list_tail( heap ); 46662: 214a 0008 movel %a2,%a0@(8) first_block->prev = _Heap_Free_list_head( heap ); 46666: 214a 000c movel %a2,%a0@(12) heap->min_block_size = min_block_size; heap->area_begin = heap_area_begin; heap->area_end = heap_area_end; heap->first_block = first_block; heap->last_block = last_block; _Heap_Free_list_head( heap )->next = first_block; 4666a: 2548 0008 movel %a0,%a2@(8) /* Heap control */ heap->page_size = page_size; heap->min_block_size = min_block_size; heap->area_begin = heap_area_begin; heap->area_end = heap_area_end; heap->first_block = first_block; 4666e: 2548 0020 movel %a0,%a2@(32) first_block->next = _Heap_Free_list_tail( heap ); first_block->prev = _Heap_Free_list_head( heap ); _Heap_Protection_block_initialize( heap, first_block ); /* Heap control */ heap->page_size = page_size; 46672: 2542 0010 movel %d2,%a2@(16) heap->min_block_size = min_block_size; 46676: 2543 0014 movel %d3,%a2@(20) heap->area_begin = heap_area_begin; 4667a: 2544 0018 movel %d4,%a2@(24) heap->area_end = heap_area_end; 4667e: 2545 001c movel %d5,%a2@(28) heap->first_block = first_block; heap->last_block = last_block; 46682: 2549 0024 movel %a1,%a2@(36) _Heap_Free_list_head( heap )->next = first_block; _Heap_Free_list_tail( heap )->prev = first_block; 46686: 2548 000c movel %a0,%a2@(12) * This feature will be used to terminate the scattered heap area list. See * also _Heap_Extend(). */ RTEMS_INLINE_ROUTINE void _Heap_Set_last_block_size( Heap_Control *heap ) { _Heap_Block_set_size( 4668a: 91c9 subal %a1,%a0 /* Last block */ last_block->prev_size = first_block_size; 4668c: 2280 movel %d0,%a1@ 4668e: 2348 0004 movel %a0,%a1@(4) /* Statistics */ stats->size = first_block_size; stats->free_size = first_block_size; stats->min_free_size = first_block_size; stats->free_blocks = 1; 46692: 2541 0038 movel %d1,%a2@(56) stats->max_free_blocks = 1; 46696: 2541 003c movel %d1,%a2@(60) stats->instance = instance++; 4669a: 2239 0005 dc2c movel 5dc2c ,%d1 466a0: 2541 0028 movel %d1,%a2@(40) 466a4: 5281 addql #1,%d1 last_block->size_and_flag = 0; _Heap_Set_last_block_size( heap ); _Heap_Protection_block_initialize( heap, last_block ); /* Statistics */ stats->size = first_block_size; 466a6: 2540 002c movel %d0,%a2@(44) stats->free_size = first_block_size; 466aa: 2540 0030 movel %d0,%a2@(48) stats->min_free_size = first_block_size; 466ae: 2540 0034 movel %d0,%a2@(52) stats->free_blocks = 1; stats->max_free_blocks = 1; stats->instance = instance++; 466b2: 23c1 0005 dc2c movel %d1,5dc2c ); _HAssert( _Heap_Is_aligned( _Heap_Alloc_area_of_block( last_block ), page_size ) ); return first_block_size; 466b8: 6002 bras 466bc <_Heap_Initialize+0xf8> min_block_size, &first_block, &last_block ); if ( !area_ok ) { return 0; 466ba: 4280 clrl %d0 _HAssert( _Heap_Is_aligned( _Heap_Alloc_area_of_block( last_block ), page_size ) ); return first_block_size; } 466bc: 4cee 043c ffe4 moveml %fp@(-28),%d2-%d5/%a2 466c2: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0005ae88 <_Heap_Resize_block>: void *alloc_begin_ptr, uintptr_t new_alloc_size, uintptr_t *old_size, uintptr_t *new_size ) { 5ae88: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 5ae8c: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@ <== NOT EXECUTED 5ae90: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down( uintptr_t value, uintptr_t alignment ) { return value - (value % alignment); 5ae94: 2202 movel %d2,%d1 <== NOT EXECUTED 5ae96: 2042 moveal %d2,%a0 <== NOT EXECUTED 5ae98: 5188 subql #8,%a0 <== NOT EXECUTED 5ae9a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 5ae9e: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED 5aea2: 286e 0014 moveal %fp@(20),%a4 <== NOT EXECUTED 5aea6: 266e 0018 moveal %fp@(24),%a3 <== NOT EXECUTED 5aeaa: 4c6a 1000 0010 remul %a2@(16),%d0,%d1 <== NOT EXECUTED uintptr_t const alloc_begin = (uintptr_t) alloc_begin_ptr; Heap_Block *const block = _Heap_Block_of_alloc_area( alloc_begin, page_size ); *old_size = 0; 5aeb0: 4294 clrl %a4@ <== NOT EXECUTED uintptr_t alloc_begin, uintptr_t page_size ) { return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size ) - HEAP_BLOCK_HEADER_SIZE); 5aeb2: 91c0 subal %d0,%a0 <== NOT EXECUTED *new_size = 0; 5aeb4: 4293 clrl %a3@ <== NOT EXECUTED const Heap_Control *heap, const Heap_Block *block ) { return (uintptr_t) block >= (uintptr_t) heap->first_block && (uintptr_t) block <= (uintptr_t) heap->last_block; 5aeb6: b1ea 0020 cmpal %a2@(32),%a0 <== NOT EXECUTED 5aeba: 6500 0096 bcsw 5af52 <_Heap_Resize_block+0xca> <== NOT EXECUTED 5aebe: b1ea 0024 cmpal %a2@(36),%a0 <== NOT EXECUTED 5aec2: 6200 008e bhiw 5af52 <_Heap_Resize_block+0xca> <== NOT EXECUTED - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 5aec6: 70fe moveq #-2,%d0 <== NOT EXECUTED 5aec8: 72fe moveq #-2,%d1 <== NOT EXECUTED block->size_and_flag = size | flag; } RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block ) { return block->size_and_flag & HEAP_PREV_BLOCK_USED; 5aeca: 7a01 moveq #1,%d5 <== NOT EXECUTED uintptr_t const block_begin = (uintptr_t) block; uintptr_t block_size = _Heap_Block_size( block ); uintptr_t block_end = block_begin + block_size; uintptr_t alloc_size = block_end - alloc_begin + HEAP_ALLOC_BONUS; 5aecc: 7604 moveq #4,%d3 <== NOT EXECUTED 5aece: 9682 subl %d2,%d3 <== NOT EXECUTED - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 5aed0: c0a8 0004 andl %a0@(4),%d0 <== NOT EXECUTED { Heap_Statistics *const stats = &heap->stats; uintptr_t const block_begin = (uintptr_t) block; uintptr_t block_size = _Heap_Block_size( block ); uintptr_t block_end = block_begin + block_size; 5aed4: 43f0 0800 lea %a0@(00000000,%d0:l),%a1 <== NOT EXECUTED uintptr_t alloc_size = block_end - alloc_begin + HEAP_ALLOC_BONUS; 5aed8: d689 addl %a1,%d3 <== NOT EXECUTED 5aeda: c2a9 0004 andl %a1@(4),%d1 <== NOT EXECUTED block->size_and_flag = size | flag; } RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block ) { return block->size_and_flag & HEAP_PREV_BLOCK_USED; 5aede: cab1 1804 andl %a1@(00000004,%d1:l),%d5 <== NOT EXECUTED bool next_block_is_free = _Heap_Is_free( next_block );; _HAssert( _Heap_Is_block_in_heap( heap, next_block ) ); _HAssert( _Heap_Is_prev_used( next_block ) ); *old_size = alloc_size; 5aee2: 2883 movel %d3,%a4@ <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Heap_Is_free( const Heap_Block *block ) { return !_Heap_Is_used( block ); 5aee4: 4a85 tstl %d5 <== NOT EXECUTED 5aee6: 57c5 seq %d5 <== NOT EXECUTED 5aee8: 4485 negl %d5 <== NOT EXECUTED if ( next_block_is_free ) { 5aeea: 4a05 tstb %d5 <== NOT EXECUTED 5aeec: 6704 beqs 5aef2 <_Heap_Resize_block+0x6a> <== NOT EXECUTED block_size += next_block_size; 5aeee: d081 addl %d1,%d0 <== NOT EXECUTED alloc_size += next_block_size; 5aef0: d681 addl %d1,%d3 <== NOT EXECUTED } if ( new_alloc_size > alloc_size ) { 5aef2: b684 cmpl %d4,%d3 <== NOT EXECUTED 5aef4: 6558 bcss 5af4e <_Heap_Resize_block+0xc6> <== NOT EXECUTED return HEAP_RESIZE_UNSATISFIED; } if ( next_block_is_free ) { 5aef6: 4a05 tstb %d5 <== NOT EXECUTED 5aef8: 672a beqs 5af24 <_Heap_Resize_block+0x9c> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Heap_Block_set_size( Heap_Block *block, uintptr_t size ) { uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED; 5aefa: 7601 moveq #1,%d3 <== NOT EXECUTED 5aefc: c6a8 0004 andl %a0@(4),%d3 <== NOT EXECUTED return _Heap_Free_list_tail(heap)->prev; } RTEMS_INLINE_ROUTINE void _Heap_Free_list_remove( Heap_Block *block ) { Heap_Block *next = block->next; 5af00: 2869 0008 moveal %a1@(8),%a4 <== NOT EXECUTED uintptr_t size ) { uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED; block->size_and_flag = size | flag; 5af04: 8680 orl %d0,%d3 <== NOT EXECUTED } RTEMS_INLINE_ROUTINE void _Heap_Free_list_remove( Heap_Block *block ) { Heap_Block *next = block->next; Heap_Block *prev = block->prev; 5af06: 2269 000c moveal %a1@(12),%a1 <== NOT EXECUTED uintptr_t size ) { uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED; block->size_and_flag = size | flag; 5af0a: 2143 0004 movel %d3,%a0@(4) <== NOT EXECUTED _Heap_Block_set_size( block, block_size ); _Heap_Free_list_remove( next_block ); next_block = _Heap_Block_at( block, block_size ); next_block->size_and_flag |= HEAP_PREV_BLOCK_USED; 5af0e: 7601 moveq #1,%d3 <== NOT EXECUTED 5af10: 87b0 0804 orl %d3,%a0@(00000004,%d0:l) <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Heap_Free_list_remove( Heap_Block *block ) { Heap_Block *next = block->next; Heap_Block *prev = block->prev; prev->next = next; 5af14: 234c 0008 movel %a4,%a1@(8) <== NOT EXECUTED next->prev = prev; 5af18: 2949 000c movel %a1,%a4@(12) <== NOT EXECUTED /* Statistics */ --stats->free_blocks; 5af1c: 53aa 0038 subql #1,%a2@(56) <== NOT EXECUTED stats->free_size -= next_block_size; 5af20: 93aa 0030 subl %d1,%a2@(48) <== NOT EXECUTED } block = _Heap_Block_allocate( heap, block, alloc_begin, new_alloc_size ); 5af24: 2f04 movel %d4,%sp@- <== NOT EXECUTED 5af26: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5af28: 2f08 movel %a0,%sp@- <== NOT EXECUTED 5af2a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5af2c: 4eb9 0004 66c6 jsr 466c6 <_Heap_Block_allocate> <== NOT EXECUTED block_size = _Heap_Block_size( block ); next_block = _Heap_Block_at( block, block_size ); *new_size = (uintptr_t) next_block - alloc_begin + HEAP_ALLOC_BONUS; /* Statistics */ ++stats->resizes; 5af32: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 5af36: 72fe moveq #-2,%d1 <== NOT EXECUTED 5af38: 2040 moveal %d0,%a0 <== NOT EXECUTED return HEAP_RESIZE_SUCCESSFUL; 5af3a: 4280 clrl %d0 <== NOT EXECUTED 5af3c: c2a8 0004 andl %a0@(4),%d1 <== NOT EXECUTED block = _Heap_Block_allocate( heap, block, alloc_begin, new_alloc_size ); block_size = _Heap_Block_size( block ); next_block = _Heap_Block_at( block, block_size ); *new_size = (uintptr_t) next_block - alloc_begin + HEAP_ALLOC_BONUS; 5af40: 91c2 subal %d2,%a0 <== NOT EXECUTED 5af42: 41f0 1804 lea %a0@(00000004,%d1:l),%a0 <== NOT EXECUTED 5af46: 2688 movel %a0,%a3@ <== NOT EXECUTED /* Statistics */ ++stats->resizes; 5af48: 52aa 0054 addql #1,%a2@(84) <== NOT EXECUTED 5af4c: 6006 bras 5af54 <_Heap_Resize_block+0xcc> <== NOT EXECUTED block_size += next_block_size; alloc_size += next_block_size; } if ( new_alloc_size > alloc_size ) { return HEAP_RESIZE_UNSATISFIED; 5af4e: 7001 moveq #1,%d0 <== NOT EXECUTED *new_size = 0; _Heap_Protection_block_check( heap, block ); if ( _Heap_Is_block_in_heap( heap, block ) ) { return _Heap_Resize_block_checked( 5af50: 6002 bras 5af54 <_Heap_Resize_block+0xcc> <== NOT EXECUTED new_alloc_size, old_size, new_size ); } else { return HEAP_RESIZE_FATAL_ERROR; 5af52: 7002 moveq #2,%d0 <== NOT EXECUTED } } 5af54: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED 5af5a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0005af60 <_Heap_Size_of_alloc_area>: bool _Heap_Size_of_alloc_area( Heap_Control *heap, void *alloc_begin_ptr, uintptr_t *alloc_size ) { 5af60: 4e56 0000 linkw %fp,#0 5af64: 202e 000c movel %fp@(12),%d0 RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down( uintptr_t value, uintptr_t alignment ) { return value - (value % alignment); 5af68: 2040 moveal %d0,%a0 5af6a: 5188 subql #8,%a0 5af6c: 226e 0008 moveal %fp@(8),%a1 5af70: 2f02 movel %d2,%sp@- 5af72: 2400 movel %d0,%d2 5af74: 4c69 2001 0010 remul %a1@(16),%d1,%d2 RTEMS_INLINE_ROUTINE bool _Heap_Is_block_in_heap( const Heap_Control *heap, const Heap_Block *block ) { return (uintptr_t) block >= (uintptr_t) heap->first_block 5af7a: 2429 0020 movel %a1@(32),%d2 uintptr_t alloc_begin, uintptr_t page_size ) { return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size ) - HEAP_BLOCK_HEADER_SIZE); 5af7e: 91c1 subal %d1,%a0 const Heap_Control *heap, const Heap_Block *block ) { return (uintptr_t) block >= (uintptr_t) heap->first_block && (uintptr_t) block <= (uintptr_t) heap->last_block; 5af80: b488 cmpl %a0,%d2 5af82: 620c bhis 5af90 <_Heap_Size_of_alloc_area+0x30> <== NEVER TAKEN 5af84: b1e9 0024 cmpal %a1@(36),%a0 5af88: 53c1 sls %d1 5af8a: 49c1 extbl %d1 5af8c: 4481 negl %d1 5af8e: 6002 bras 5af92 <_Heap_Size_of_alloc_area+0x32> 5af90: 4281 clrl %d1 <== NOT EXECUTED uintptr_t const alloc_begin = (uintptr_t) alloc_begin_ptr; Heap_Block *block = _Heap_Block_of_alloc_area( alloc_begin, page_size ); Heap_Block *next_block = NULL; uintptr_t block_size = 0; if ( !_Heap_Is_block_in_heap( heap, block ) ) { 5af92: 4a01 tstb %d1 5af94: 6738 beqs 5afce <_Heap_Size_of_alloc_area+0x6e> <== NEVER TAKEN - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 5af96: 72fe moveq #-2,%d1 5af98: c2a8 0004 andl %a0@(4),%d1 RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at( const Heap_Block *block, uintptr_t offset ) { return (Heap_Block *) ((uintptr_t) block + offset); 5af9c: d1c1 addal %d1,%a0 const Heap_Control *heap, const Heap_Block *block ) { return (uintptr_t) block >= (uintptr_t) heap->first_block && (uintptr_t) block <= (uintptr_t) heap->last_block; 5af9e: b488 cmpl %a0,%d2 5afa0: 620c bhis 5afae <_Heap_Size_of_alloc_area+0x4e> <== NEVER TAKEN 5afa2: b1e9 0024 cmpal %a1@(36),%a0 5afa6: 53c1 sls %d1 5afa8: 49c1 extbl %d1 5afaa: 4481 negl %d1 5afac: 6002 bras 5afb0 <_Heap_Size_of_alloc_area+0x50> 5afae: 4281 clrl %d1 <== NOT EXECUTED } block_size = _Heap_Block_size( block ); next_block = _Heap_Block_at( block, block_size ); if ( 5afb0: 4a01 tstb %d1 5afb2: 671a beqs 5afce <_Heap_Size_of_alloc_area+0x6e> <== NEVER TAKEN block->size_and_flag = size | flag; } RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block ) { return block->size_and_flag & HEAP_PREV_BLOCK_USED; 5afb4: 7201 moveq #1,%d1 5afb6: c2a8 0004 andl %a0@(4),%d1 !_Heap_Is_block_in_heap( heap, next_block ) || !_Heap_Is_prev_used( next_block ) 5afba: 6712 beqs 5afce <_Heap_Size_of_alloc_area+0x6e> <== NEVER TAKEN ) { return false; } *alloc_size = (uintptr_t) next_block + HEAP_ALLOC_BONUS - alloc_begin; 5afbc: 7204 moveq #4,%d1 5afbe: 9280 subl %d0,%d1 5afc0: 2001 movel %d1,%d0 5afc2: d088 addl %a0,%d0 5afc4: 226e 0010 moveal %fp@(16),%a1 5afc8: 2280 movel %d0,%a1@ return true; 5afca: 7001 moveq #1,%d0 5afcc: 6002 bras 5afd0 <_Heap_Size_of_alloc_area+0x70> if ( !_Heap_Is_block_in_heap( heap, next_block ) || !_Heap_Is_prev_used( next_block ) ) { return false; 5afce: 4200 clrb %d0 <== NOT EXECUTED } *alloc_size = (uintptr_t) next_block + HEAP_ALLOC_BONUS - alloc_begin; return true; } 5afd0: 241f movel %sp@+,%d2 5afd2: 4e5e unlk %fp ... =============================================================================== 000471a2 <_Heap_Walk>: bool _Heap_Walk( Heap_Control *heap, int source, bool dump ) { 471a2: 4e56 ffd0 linkw %fp,#-48 <== NOT EXECUTED 471a6: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED 471aa: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED uintptr_t const min_block_size = heap->min_block_size; Heap_Block *const first_block = heap->first_block; Heap_Block *const last_block = heap->last_block; Heap_Block *block = first_block; Heap_Walk_printer printer = dump ? _Heap_Walk_print : _Heap_Walk_print_nothing; 471ae: 45fa ffac lea %pc@(4715c <_Heap_Walk_print_nothing>),%a2<== NOT EXECUTED bool _Heap_Walk( Heap_Control *heap, int source, bool dump ) { 471b2: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED uintptr_t const page_size = heap->page_size; 471b6: 282b 0010 movel %a3@(16),%d4 <== NOT EXECUTED uintptr_t const min_block_size = heap->min_block_size; 471ba: 2a2b 0014 movel %a3@(20),%d5 <== NOT EXECUTED Heap_Block *const first_block = heap->first_block; 471be: 2c2b 0020 movel %a3@(32),%d6 <== NOT EXECUTED Heap_Block *const last_block = heap->last_block; 471c2: 2e2b 0024 movel %a3@(36),%d7 <== NOT EXECUTED Heap_Block *block = first_block; Heap_Walk_printer printer = dump ? _Heap_Walk_print : _Heap_Walk_print_nothing; 471c6: 4a2e 0013 tstb %fp@(19) <== NOT EXECUTED 471ca: 6704 beqs 471d0 <_Heap_Walk+0x2e> <== NOT EXECUTED 471cc: 45fa ff96 lea %pc@(47164 <_Heap_Walk_print>),%a2 <== NOT EXECUTED if ( !_System_state_Is_up( _System_state_Get() ) ) { 471d0: 7003 moveq #3,%d0 <== NOT EXECUTED 471d2: b0b9 0006 094c cmpl 6094c <_System_state_Current>,%d0 <== NOT EXECUTED 471d8: 6600 02fc bnew 474d6 <_Heap_Walk+0x334> <== NOT EXECUTED Heap_Block *const first_free_block = _Heap_Free_list_first( heap ); Heap_Block *const last_free_block = _Heap_Free_list_last( heap ); Heap_Block *const first_block = heap->first_block; Heap_Block *const last_block = heap->last_block; (*printer)( 471dc: 2f2b 000c movel %a3@(12),%sp@- <== NOT EXECUTED 471e0: 2f2b 0008 movel %a3@(8),%sp@- <== NOT EXECUTED 471e4: 2f07 movel %d7,%sp@- <== NOT EXECUTED 471e6: 2f06 movel %d6,%sp@- <== NOT EXECUTED 471e8: 2f2b 001c movel %a3@(28),%sp@- <== NOT EXECUTED 471ec: 2f2b 0018 movel %a3@(24),%sp@- <== NOT EXECUTED 471f0: 2f05 movel %d5,%sp@- <== NOT EXECUTED 471f2: 2f04 movel %d4,%sp@- <== NOT EXECUTED 471f4: 4879 0005 cbe9 pea 5cbe9 <== NOT EXECUTED 471fa: 42a7 clrl %sp@- <== NOT EXECUTED 471fc: 2f02 movel %d2,%sp@- <== NOT EXECUTED 471fe: 4e92 jsr %a2@ <== NOT EXECUTED heap->area_begin, heap->area_end, first_block, last_block, first_free_block, last_free_block ); if ( page_size == 0 ) { 47200: 4fef 002c lea %sp@(44),%sp <== NOT EXECUTED 47204: 4a84 tstl %d4 <== NOT EXECUTED 47206: 6608 bnes 47210 <_Heap_Walk+0x6e> <== NOT EXECUTED (*printer)( source, true, "page size is zero\n" ); 47208: 4879 0005 cc7a pea 5cc7a <== NOT EXECUTED 4720e: 6050 bras 47260 <_Heap_Walk+0xbe> <== NOT EXECUTED ) { #if (CPU_ALIGNMENT == 0) return true; #else return (((uintptr_t)address % CPU_ALIGNMENT) == 0); 47210: 7003 moveq #3,%d0 <== NOT EXECUTED 47212: c084 andl %d4,%d0 <== NOT EXECUTED return false; } if ( !_Addresses_Is_aligned( (void *) page_size ) ) { 47214: 670c beqs 47222 <_Heap_Walk+0x80> <== NOT EXECUTED (*printer)( 47216: 2f04 movel %d4,%sp@- <== NOT EXECUTED 47218: 4879 0005 cc8d pea 5cc8d <== NOT EXECUTED 4721e: 6000 02ca braw 474ea <_Heap_Walk+0x348> <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned( uintptr_t value, uintptr_t alignment ) { return (value % alignment) == 0; 47222: 2205 movel %d5,%d1 <== NOT EXECUTED 47224: 4c44 1000 remul %d4,%d0,%d1 <== NOT EXECUTED ); return false; } if ( !_Heap_Is_aligned( min_block_size, page_size ) ) { 47228: 4a80 tstl %d0 <== NOT EXECUTED 4722a: 670c beqs 47238 <_Heap_Walk+0x96> <== NOT EXECUTED (*printer)( 4722c: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4722e: 4879 0005 ccab pea 5ccab <== NOT EXECUTED 47234: 6000 02b4 braw 474ea <_Heap_Walk+0x348> <== NOT EXECUTED RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block( const Heap_Block *block ) { return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE; 47238: 2006 movel %d6,%d0 <== NOT EXECUTED 4723a: 5080 addql #8,%d0 <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned( uintptr_t value, uintptr_t alignment ) { return (value % alignment) == 0; 4723c: 4c44 0001 remul %d4,%d1,%d0 <== NOT EXECUTED ); return false; } if ( 47240: 4a81 tstl %d1 <== NOT EXECUTED 47242: 670c beqs 47250 <_Heap_Walk+0xae> <== NOT EXECUTED !_Heap_Is_aligned( _Heap_Alloc_area_of_block( first_block ), page_size ) ) { (*printer)( 47244: 2f06 movel %d6,%sp@- <== NOT EXECUTED 47246: 4879 0005 cccf pea 5cccf <== NOT EXECUTED 4724c: 6000 029c braw 474ea <_Heap_Walk+0x348> <== NOT EXECUTED block->size_and_flag = size | flag; } RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block ) { return block->size_and_flag & HEAP_PREV_BLOCK_USED; 47250: 7001 moveq #1,%d0 <== NOT EXECUTED 47252: 2046 moveal %d6,%a0 <== NOT EXECUTED 47254: c0a8 0004 andl %a0@(4),%d0 <== NOT EXECUTED ); return false; } if ( !_Heap_Is_prev_used( first_block ) ) { 47258: 6616 bnes 47270 <_Heap_Walk+0xce> <== NOT EXECUTED (*printer)( 4725a: 4879 0005 cd00 pea 5cd00 <== NOT EXECUTED 47260: 4878 0001 pea 1 <== NOT EXECUTED 47264: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47266: 4e92 jsr %a2@ <== NOT EXECUTED 47268: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4726c: 6000 00ba braw 47328 <_Heap_Walk+0x186> <== NOT EXECUTED - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 47270: 70fe moveq #-2,%d0 <== NOT EXECUTED 47272: 2047 moveal %d7,%a0 <== NOT EXECUTED RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at( const Heap_Block *block, uintptr_t offset ) { return (Heap_Block *) ((uintptr_t) block + offset); 47274: 2847 moveal %d7,%a4 <== NOT EXECUTED - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 47276: c0a8 0004 andl %a0@(4),%d0 <== NOT EXECUTED RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at( const Heap_Block *block, uintptr_t offset ) { return (Heap_Block *) ((uintptr_t) block + offset); 4727a: d9c0 addal %d0,%a4 <== NOT EXECUTED block->size_and_flag = size | flag; } RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block ) { return block->size_and_flag & HEAP_PREV_BLOCK_USED; 4727c: 7001 moveq #1,%d0 <== NOT EXECUTED 4727e: c0ac 0004 andl %a4@(4),%d0 <== NOT EXECUTED ); return false; } if ( _Heap_Is_free( last_block ) ) { 47282: 6608 bnes 4728c <_Heap_Walk+0xea> <== NOT EXECUTED (*printer)( 47284: 4879 0005 cd2e pea 5cd2e <== NOT EXECUTED 4728a: 60d4 bras 47260 <_Heap_Walk+0xbe> <== NOT EXECUTED ); return false; } if ( 4728c: bc8c cmpl %a4,%d6 <== NOT EXECUTED 4728e: 6708 beqs 47298 <_Heap_Walk+0xf6> <== NOT EXECUTED _Heap_Block_at( last_block, _Heap_Block_size( last_block ) ) != first_block ) { (*printer)( 47290: 4879 0005 cd43 pea 5cd43 <== NOT EXECUTED 47296: 60c8 bras 47260 <_Heap_Walk+0xbe> <== NOT EXECUTED int source, Heap_Walk_printer printer, Heap_Control *heap ) { uintptr_t const page_size = heap->page_size; 47298: 262b 0010 movel %a3@(16),%d3 <== NOT EXECUTED const Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap ); 4729c: 220b movel %a3,%d1 <== NOT EXECUTED block = next_block; } while ( block != first_block ); return true; } 4729e: 206b 0008 moveal %a3@(8),%a0 <== NOT EXECUTED 472a2: 2d44 fff8 movel %d4,%fp@(-8) <== NOT EXECUTED 472a6: 2d43 fffc movel %d3,%fp@(-4) <== NOT EXECUTED 472aa: 6000 0088 braw 47334 <_Heap_Walk+0x192> <== NOT EXECUTED const Heap_Control *heap, const Heap_Block *block ) { return (uintptr_t) block >= (uintptr_t) heap->first_block && (uintptr_t) block <= (uintptr_t) heap->last_block; 472ae: b1eb 0020 cmpal %a3@(32),%a0 <== NOT EXECUTED 472b2: 650c bcss 472c0 <_Heap_Walk+0x11e> <== NOT EXECUTED 472b4: b1eb 0024 cmpal %a3@(36),%a0 <== NOT EXECUTED 472b8: 53c0 sls %d0 <== NOT EXECUTED 472ba: 49c0 extbl %d0 <== NOT EXECUTED 472bc: 4480 negl %d0 <== NOT EXECUTED 472be: 6002 bras 472c2 <_Heap_Walk+0x120> <== NOT EXECUTED 472c0: 4280 clrl %d0 <== NOT EXECUTED const Heap_Block *const first_free_block = _Heap_Free_list_first( heap ); const Heap_Block *prev_block = free_list_tail; const Heap_Block *free_block = first_free_block; while ( free_block != free_list_tail ) { if ( !_Heap_Is_block_in_heap( heap, free_block ) ) { 472c2: 4a00 tstb %d0 <== NOT EXECUTED 472c4: 660c bnes 472d2 <_Heap_Walk+0x130> <== NOT EXECUTED (*printer)( 472c6: 2f08 movel %a0,%sp@- <== NOT EXECUTED 472c8: 4879 0005 cd72 pea 5cd72 <== NOT EXECUTED 472ce: 6000 021a braw 474ea <_Heap_Walk+0x348> <== NOT EXECUTED RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block( const Heap_Block *block ) { return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE; 472d2: 4be8 0008 lea %a0@(8),%a5 <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned( uintptr_t value, uintptr_t alignment ) { return (value % alignment) == 0; 472d6: 200d movel %a5,%d0 <== NOT EXECUTED 472d8: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 472dc: 4c43 0004 remul %d3,%d4,%d0 <== NOT EXECUTED ); return false; } if ( 472e0: 4a84 tstl %d4 <== NOT EXECUTED 472e2: 670c beqs 472f0 <_Heap_Walk+0x14e> <== NOT EXECUTED !_Heap_Is_aligned( _Heap_Alloc_area_of_block( free_block ), page_size ) ) { (*printer)( 472e4: 2f08 movel %a0,%sp@- <== NOT EXECUTED 472e6: 4879 0005 cd92 pea 5cd92 <== NOT EXECUTED 472ec: 6000 01fc braw 474ea <_Heap_Walk+0x348> <== NOT EXECUTED - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 472f0: 70fe moveq #-2,%d0 <== NOT EXECUTED block->size_and_flag = size | flag; } RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block ) { return block->size_and_flag & HEAP_PREV_BLOCK_USED; 472f2: 7601 moveq #1,%d3 <== NOT EXECUTED - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 472f4: c0a8 0004 andl %a0@(4),%d0 <== NOT EXECUTED block->size_and_flag = size | flag; } RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block ) { return block->size_and_flag & HEAP_PREV_BLOCK_USED; 472f8: c6b0 0804 andl %a0@(00000004,%d0:l),%d3 <== NOT EXECUTED ); return false; } if ( _Heap_Is_used( free_block ) ) { 472fc: 670c beqs 4730a <_Heap_Walk+0x168> <== NOT EXECUTED (*printer)( 472fe: 2f08 movel %a0,%sp@- <== NOT EXECUTED 47300: 4879 0005 cdc2 pea 5cdc2 <== NOT EXECUTED 47306: 6000 01e2 braw 474ea <_Heap_Walk+0x348> <== NOT EXECUTED ); return false; } if ( free_block->prev != prev_block ) { 4730a: 2028 000c movel %a0@(12),%d0 <== NOT EXECUTED 4730e: b280 cmpl %d0,%d1 <== NOT EXECUTED 47310: 671c beqs 4732e <_Heap_Walk+0x18c> <== NOT EXECUTED (*printer)( 47312: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47314: 2f08 movel %a0,%sp@- <== NOT EXECUTED 47316: 4879 0005 cdde pea 5cdde <== NOT EXECUTED 4731c: 4878 0001 pea 1 <== NOT EXECUTED 47320: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47322: 4e92 jsr %a2@ <== NOT EXECUTED 47324: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED if ( !_System_state_Is_up( _System_state_Get() ) ) { return true; } if ( !_Heap_Walk_check_control( source, printer, heap ) ) { return false; 47328: 4200 clrb %d0 <== NOT EXECUTED 4732a: 6000 01ac braw 474d8 <_Heap_Walk+0x336> <== NOT EXECUTED return false; } prev_block = free_block; free_block = free_block->next; 4732e: 2208 movel %a0,%d1 <== NOT EXECUTED 47330: 2068 0008 moveal %a0@(8),%a0 <== NOT EXECUTED const Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap ); const Heap_Block *const first_free_block = _Heap_Free_list_first( heap ); const Heap_Block *prev_block = free_list_tail; const Heap_Block *free_block = first_free_block; while ( free_block != free_list_tail ) { 47334: b7c8 cmpal %a0,%a3 <== NOT EXECUTED 47336: 6600 ff76 bnew 472ae <_Heap_Walk+0x10c> <== NOT EXECUTED 4733a: 282e fff8 movel %fp@(-8),%d4 <== NOT EXECUTED 4733e: 6002 bras 47342 <_Heap_Walk+0x1a0> <== NOT EXECUTED block->prev_size ); } block = next_block; } while ( block != first_block ); 47340: 284d moveal %a5,%a4 <== NOT EXECUTED return true; } 47342: 202c 0004 movel %a4@(4),%d0 <== NOT EXECUTED - HEAP_BLOCK_HEADER_SIZE); } RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block ) { return block->size_and_flag & ~HEAP_PREV_BLOCK_USED; 47346: 76fe moveq #-2,%d3 <== NOT EXECUTED 47348: c680 andl %d0,%d3 <== NOT EXECUTED 4734a: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at( const Heap_Block *block, uintptr_t offset ) { return (Heap_Block *) ((uintptr_t) block + offset); 4734e: 4bf4 3800 lea %a4@(00000000,%d3:l),%a5 <== NOT EXECUTED const Heap_Control *heap, const Heap_Block *block ) { return (uintptr_t) block >= (uintptr_t) heap->first_block && (uintptr_t) block <= (uintptr_t) heap->last_block; 47352: bbeb 0020 cmpal %a3@(32),%a5 <== NOT EXECUTED 47356: 650c bcss 47364 <_Heap_Walk+0x1c2> <== NOT EXECUTED 47358: bbeb 0024 cmpal %a3@(36),%a5 <== NOT EXECUTED 4735c: 53c0 sls %d0 <== NOT EXECUTED 4735e: 49c0 extbl %d0 <== NOT EXECUTED 47360: 4480 negl %d0 <== NOT EXECUTED 47362: 6002 bras 47366 <_Heap_Walk+0x1c4> <== NOT EXECUTED 47364: 4280 clrl %d0 <== NOT EXECUTED bool const prev_used = _Heap_Is_prev_used( block ); Heap_Block *const next_block = _Heap_Block_at( block, block_size ); uintptr_t const next_block_begin = (uintptr_t) next_block; bool const is_not_last_block = block != last_block; if ( !_Heap_Is_block_in_heap( heap, next_block ) ) { 47366: 4a00 tstb %d0 <== NOT EXECUTED 47368: 660c bnes 47376 <_Heap_Walk+0x1d4> <== NOT EXECUTED (*printer)( 4736a: 2f0d movel %a5,%sp@- <== NOT EXECUTED 4736c: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4736e: 4879 0005 ce10 pea 5ce10 <== NOT EXECUTED 47374: 60a6 bras 4731c <_Heap_Walk+0x17a> <== NOT EXECUTED uintptr_t const block_begin = (uintptr_t) block; uintptr_t const block_size = _Heap_Block_size( block ); bool const prev_used = _Heap_Is_prev_used( block ); Heap_Block *const next_block = _Heap_Block_at( block, block_size ); uintptr_t const next_block_begin = (uintptr_t) next_block; bool const is_not_last_block = block != last_block; 47376: be8c cmpl %a4,%d7 <== NOT EXECUTED 47378: 56c0 sne %d0 <== NOT EXECUTED 4737a: 2200 movel %d0,%d1 <== NOT EXECUTED 4737c: 4481 negl %d1 <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned( uintptr_t value, uintptr_t alignment ) { return (value % alignment) == 0; 4737e: 2003 movel %d3,%d0 <== NOT EXECUTED 47380: 1d41 fffb moveb %d1,%fp@(-5) <== NOT EXECUTED 47384: 4c44 0001 remul %d4,%d1,%d0 <== NOT EXECUTED ); return false; } if ( !_Heap_Is_aligned( block_size, page_size ) && is_not_last_block ) { 47388: 4a81 tstl %d1 <== NOT EXECUTED 4738a: 6714 beqs 473a0 <_Heap_Walk+0x1fe> <== NOT EXECUTED 4738c: 4a2e fffb tstb %fp@(-5) <== NOT EXECUTED 47390: 670e beqs 473a0 <_Heap_Walk+0x1fe> <== NOT EXECUTED (*printer)( 47392: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47394: 2f0c movel %a4,%sp@- <== NOT EXECUTED 47396: 4879 0005 ce3d pea 5ce3d <== NOT EXECUTED 4739c: 6000 ff7e braw 4731c <_Heap_Walk+0x17a> <== NOT EXECUTED ); return false; } if ( block_size < min_block_size && is_not_last_block ) { 473a0: ba83 cmpl %d3,%d5 <== NOT EXECUTED 473a2: 6322 blss 473c6 <_Heap_Walk+0x224> <== NOT EXECUTED 473a4: 4a2e fffb tstb %fp@(-5) <== NOT EXECUTED 473a8: 671c beqs 473c6 <_Heap_Walk+0x224> <== NOT EXECUTED (*printer)( 473aa: 2f05 movel %d5,%sp@- <== NOT EXECUTED 473ac: 2f03 movel %d3,%sp@- <== NOT EXECUTED 473ae: 2f0c movel %a4,%sp@- <== NOT EXECUTED 473b0: 4879 0005 ce6b pea 5ce6b <== NOT EXECUTED 473b6: 4878 0001 pea 1 <== NOT EXECUTED 473ba: 2f02 movel %d2,%sp@- <== NOT EXECUTED 473bc: 4e92 jsr %a2@ <== NOT EXECUTED block, block_size, min_block_size ); return false; 473be: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 473c2: 6000 ff64 braw 47328 <_Heap_Walk+0x186> <== NOT EXECUTED } if ( next_block_begin <= block_begin && is_not_last_block ) { 473c6: b9cd cmpal %a5,%a4 <== NOT EXECUTED 473c8: 6514 bcss 473de <_Heap_Walk+0x23c> <== NOT EXECUTED 473ca: 4a2e fffb tstb %fp@(-5) <== NOT EXECUTED 473ce: 670e beqs 473de <_Heap_Walk+0x23c> <== NOT EXECUTED (*printer)( 473d0: 2f0d movel %a5,%sp@- <== NOT EXECUTED 473d2: 2f0c movel %a4,%sp@- <== NOT EXECUTED 473d4: 4879 0005 ce96 pea 5ce96 <== NOT EXECUTED 473da: 6000 ff40 braw 4731c <_Heap_Walk+0x17a> <== NOT EXECUTED block->size_and_flag = size | flag; } RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block ) { return block->size_and_flag & HEAP_PREV_BLOCK_USED; 473de: 7001 moveq #1,%d0 <== NOT EXECUTED 473e0: c0ae fffc andl %fp@(-4),%d0 <== NOT EXECUTED 473e4: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED 473e8: 7001 moveq #1,%d0 <== NOT EXECUTED 473ea: c0ad 0004 andl %a5@(4),%d0 <== NOT EXECUTED ); return false; } if ( !_Heap_Is_prev_used( next_block ) ) { 473ee: 6600 00ae bnew 4749e <_Heap_Walk+0x2fc> <== NOT EXECUTED block = next_block; } while ( block != first_block ); return true; } 473f2: 222b 0008 movel %a3@(8),%d1 <== NOT EXECUTED Heap_Block *const last_free_block = _Heap_Free_list_last( heap ); bool const prev_used = _Heap_Is_prev_used( block ); uintptr_t const block_size = _Heap_Block_size( block ); Heap_Block *const next_block = _Heap_Block_at( block, block_size ); (*printer)( 473f6: 43f9 0005 cbb6 lea 5cbb6 ,%a1 <== NOT EXECUTED block->prev, block->prev == first_free_block ? " (= first free)" : (block->prev == free_list_head ? " (= head)" : ""), block->next, block->next == last_free_block ? 473fc: 206c 0008 moveal %a4@(8),%a0 <== NOT EXECUTED block = next_block; } while ( block != first_block ); return true; } 47400: 2d41 fff8 movel %d1,%fp@(-8) <== NOT EXECUTED Heap_Block *const last_free_block = _Heap_Free_list_last( heap ); bool const prev_used = _Heap_Is_prev_used( block ); uintptr_t const block_size = _Heap_Block_size( block ); Heap_Block *const next_block = _Heap_Block_at( block, block_size ); (*printer)( 47404: b1eb 000c cmpal %a3@(12),%a0 <== NOT EXECUTED 47408: 6710 beqs 4741a <_Heap_Walk+0x278> <== NOT EXECUTED " (= first free)" : (block->prev == free_list_head ? " (= head)" : ""), block->next, block->next == last_free_block ? " (= last free)" : (block->next == free_list_tail ? " (= tail)" : "") 4740a: 43f9 0005 caf0 lea 5caf0 ,%a1<== NOT EXECUTED 47410: b7c8 cmpal %a0,%a3 <== NOT EXECUTED 47412: 6606 bnes 4741a <_Heap_Walk+0x278> <== NOT EXECUTED 47414: 43f9 0005 cbc5 lea 5cbc5 ,%a1 <== NOT EXECUTED false, "block 0x%08x: size %u, prev 0x%08x%s, next 0x%08x%s\n", block, block_size, block->prev, block->prev == first_free_block ? 4741a: 202c 000c movel %a4@(12),%d0 <== NOT EXECUTED Heap_Block *const last_free_block = _Heap_Free_list_last( heap ); bool const prev_used = _Heap_Is_prev_used( block ); uintptr_t const block_size = _Heap_Block_size( block ); Heap_Block *const next_block = _Heap_Block_at( block, block_size ); (*printer)( 4741e: 223c 0005 cbcf movel #379855,%d1 <== NOT EXECUTED 47424: b0ae fff8 cmpl %fp@(-8),%d0 <== NOT EXECUTED 47428: 6710 beqs 4743a <_Heap_Walk+0x298> <== NOT EXECUTED block, block_size, block->prev, block->prev == first_free_block ? " (= first free)" : (block->prev == free_list_head ? " (= head)" : ""), 4742a: 223c 0005 caf0 movel #379632,%d1 <== NOT EXECUTED 47430: b7c0 cmpal %d0,%a3 <== NOT EXECUTED 47432: 6606 bnes 4743a <_Heap_Walk+0x298> <== NOT EXECUTED 47434: 223c 0005 cbdf movel #379871,%d1 <== NOT EXECUTED Heap_Block *const last_free_block = _Heap_Free_list_last( heap ); bool const prev_used = _Heap_Is_prev_used( block ); uintptr_t const block_size = _Heap_Block_size( block ); Heap_Block *const next_block = _Heap_Block_at( block, block_size ); (*printer)( 4743a: 2f09 movel %a1,%sp@- <== NOT EXECUTED 4743c: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4743e: 2f01 movel %d1,%sp@- <== NOT EXECUTED 47440: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47442: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47444: 2f0c movel %a4,%sp@- <== NOT EXECUTED 47446: 4879 0005 ceca pea 5ceca <== NOT EXECUTED 4744c: 42a7 clrl %sp@- <== NOT EXECUTED 4744e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47450: 4e92 jsr %a2@ <== NOT EXECUTED block->next == last_free_block ? " (= last free)" : (block->next == free_list_tail ? " (= tail)" : "") ); if ( block_size != next_block->prev_size ) { 47452: 2015 movel %a5@,%d0 <== NOT EXECUTED 47454: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED 47458: b083 cmpl %d3,%d0 <== NOT EXECUTED 4745a: 671e beqs 4747a <_Heap_Walk+0x2d8> <== NOT EXECUTED (*printer)( 4745c: 2f0d movel %a5,%sp@- <== NOT EXECUTED 4745e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47460: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47462: 2f0c movel %a4,%sp@- <== NOT EXECUTED 47464: 4879 0005 ceff pea 5ceff <== NOT EXECUTED 4746a: 4878 0001 pea 1 <== NOT EXECUTED 4746e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47470: 4e92 jsr %a2@ <== NOT EXECUTED 47472: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 47476: 6000 feb0 braw 47328 <_Heap_Walk+0x186> <== NOT EXECUTED ); return false; } if ( !prev_used ) { 4747a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4747e: 660a bnes 4748a <_Heap_Walk+0x2e8> <== NOT EXECUTED (*printer)( 47480: 2f0c movel %a4,%sp@- <== NOT EXECUTED 47482: 4879 0005 cf38 pea 5cf38 <== NOT EXECUTED 47488: 6060 bras 474ea <_Heap_Walk+0x348> <== NOT EXECUTED block = next_block; } while ( block != first_block ); return true; } 4748a: 206b 0008 moveal %a3@(8),%a0 <== NOT EXECUTED 4748e: 6008 bras 47498 <_Heap_Walk+0x2f6> <== NOT EXECUTED { const Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap ); const Heap_Block *free_block = _Heap_Free_list_first( heap ); while ( free_block != free_list_tail ) { if ( free_block == block ) { 47490: b9c8 cmpal %a0,%a4 <== NOT EXECUTED 47492: 673c beqs 474d0 <_Heap_Walk+0x32e> <== NOT EXECUTED return true; } free_block = free_block->next; 47494: 2068 0008 moveal %a0@(8),%a0 <== NOT EXECUTED ) { const Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap ); const Heap_Block *free_block = _Heap_Free_list_first( heap ); while ( free_block != free_list_tail ) { 47498: b7c8 cmpal %a0,%a3 <== NOT EXECUTED 4749a: 66f4 bnes 47490 <_Heap_Walk+0x2ee> <== NOT EXECUTED 4749c: 6044 bras 474e2 <_Heap_Walk+0x340> <== NOT EXECUTED if ( !_Heap_Is_prev_used( next_block ) ) { if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) { return false; } } else if (prev_used) { 4749e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 474a2: 6716 beqs 474ba <_Heap_Walk+0x318> <== NOT EXECUTED (*printer)( 474a4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 474a6: 2f0c movel %a4,%sp@- <== NOT EXECUTED 474a8: 4879 0005 cf67 pea 5cf67 <== NOT EXECUTED 474ae: 42a7 clrl %sp@- <== NOT EXECUTED 474b0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 474b2: 4e92 jsr %a2@ <== NOT EXECUTED 474b4: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 474b8: 6016 bras 474d0 <_Heap_Walk+0x32e> <== NOT EXECUTED "block 0x%08x: size %u\n", block, block_size ); } else { (*printer)( 474ba: 2f14 movel %a4@,%sp@- <== NOT EXECUTED 474bc: 2f03 movel %d3,%sp@- <== NOT EXECUTED 474be: 2f0c movel %a4,%sp@- <== NOT EXECUTED 474c0: 4879 0005 cf7e pea 5cf7e <== NOT EXECUTED 474c6: 42a7 clrl %sp@- <== NOT EXECUTED 474c8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 474ca: 4e92 jsr %a2@ <== NOT EXECUTED 474cc: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED block->prev_size ); } block = next_block; } while ( block != first_block ); 474d0: bc8d cmpl %a5,%d6 <== NOT EXECUTED 474d2: 6600 fe6c bnew 47340 <_Heap_Walk+0x19e> <== NOT EXECUTED Heap_Block *block = first_block; Heap_Walk_printer printer = dump ? _Heap_Walk_print : _Heap_Walk_print_nothing; if ( !_System_state_Is_up( _System_state_Get() ) ) { return true; 474d6: 7001 moveq #1,%d0 <== NOT EXECUTED block = next_block; } while ( block != first_block ); return true; } 474d8: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5 <== NOT EXECUTED 474de: 4e5e unlk %fp <== NOT EXECUTED 474e0: 4e75 rts <== NOT EXECUTED return false; } if ( !_Heap_Walk_is_in_free_list( heap, block ) ) { (*printer)( 474e2: 2f0c movel %a4,%sp@- <== NOT EXECUTED 474e4: 4879 0005 cfa3 pea 5cfa3 <== NOT EXECUTED 474ea: 4878 0001 pea 1 <== NOT EXECUTED 474ee: 2f02 movel %d2,%sp@- <== NOT EXECUTED 474f0: 4e92 jsr %a2@ <== NOT EXECUTED 474f2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 474f6: 6000 fe30 braw 47328 <_Heap_Walk+0x186> <== NOT EXECUTED ... =============================================================================== 00047164 <_Heap_Walk_print>: static void _Heap_Walk_print( int source, bool error, const char *fmt, ... ) { 47164: 41f9 0004 3b54 lea 43b54 ,%a0 <== NOT EXECUTED 4716a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4716e: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED va_list ap; if ( error ) { 47172: 4a2e 000f tstb %fp@(15) <== NOT EXECUTED 47176: 670a beqs 47182 <_Heap_Walk_print+0x1e> <== NOT EXECUTED printk( "FAIL[%d]: ", source ); 47178: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4717a: 4879 0005 cba0 pea 5cba0 <== NOT EXECUTED 47180: 6008 bras 4718a <_Heap_Walk_print+0x26> <== NOT EXECUTED } else { printk( "PASS[%d]: ", source ); 47182: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47184: 4879 0005 cbab pea 5cbab <== NOT EXECUTED 4718a: 4e90 jsr %a0@ <== NOT EXECUTED 4718c: 508f addql #8,%sp <== NOT EXECUTED } va_start( ap, fmt ); vprintk( fmt, ap ); 4718e: 486e 0014 pea %fp@(20) <== NOT EXECUTED 47192: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 47196: 4eb9 0004 546c jsr 4546c <== NOT EXECUTED va_end( ap ); 4719c: 508f addql #8,%sp <== NOT EXECUTED } 4719e: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004715c <_Heap_Walk_print_nothing>: int source, bool error, const char *fmt, ... ) { 4715c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED /* Do nothing */ } 47160: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000467b4 <_Internal_error_Occurred>: void _Internal_error_Occurred( Internal_errors_Source the_source, bool is_internal, Internal_errors_t the_error ) { 467b4: 4e56 0000 linkw %fp,#0 467b8: 222e 000c movel %fp@(12),%d1 467bc: 2f02 movel %d2,%sp@- 467be: 242e 0010 movel %fp@(16),%d2 _Internal_errors_What_happened.the_source = the_source; _Internal_errors_What_happened.is_internal = is_internal; 467c2: 13c1 0005 e532 moveb %d1,5e532 <_Internal_errors_What_happened+0x4> _Internal_errors_What_happened.the_error = the_error; _User_extensions_Fatal( the_source, is_internal, the_error ); 467c8: 2f02 movel %d2,%sp@- void _Internal_error_Occurred( Internal_errors_Source the_source, bool is_internal, Internal_errors_t the_error ) { 467ca: 202e 0008 movel %fp@(8),%d0 _Internal_errors_What_happened.the_source = the_source; _Internal_errors_What_happened.is_internal = is_internal; _Internal_errors_What_happened.the_error = the_error; _User_extensions_Fatal( the_source, is_internal, the_error ); 467ce: 0281 0000 00ff andil #255,%d1 bool is_internal, Internal_errors_t the_error ) { _Internal_errors_What_happened.the_source = the_source; 467d4: 23c0 0005 e52e movel %d0,5e52e <_Internal_errors_What_happened> _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 ); 467da: 2f01 movel %d1,%sp@- ) { _Internal_errors_What_happened.the_source = the_source; _Internal_errors_What_happened.is_internal = is_internal; _Internal_errors_What_happened.the_error = the_error; 467dc: 23c2 0005 e534 movel %d2,5e534 <_Internal_errors_What_happened+0x6> _User_extensions_Fatal( the_source, is_internal, the_error ); 467e2: 2f00 movel %d0,%sp@- 467e4: 4eb9 0004 83ca jsr 483ca <_User_extensions_Fatal> RTEMS_INLINE_ROUTINE void _System_state_Set ( System_state_Codes state ) { _System_state_Current = state; 467ea: 7005 moveq #5,%d0 <== NOT EXECUTED _System_state_Set( SYSTEM_STATE_FAILED ); _CPU_Fatal_halt( the_error ); 467ec: 2042 moveal %d2,%a0 <== NOT EXECUTED 467ee: 243c 0000 0700 movel #1792,%d2 <== NOT EXECUTED 467f4: 23c0 0005 e5e4 movel %d0,5e5e4 <_System_state_Current> <== NOT EXECUTED 467fa: 40c0 movew %sr,%d0 <== NOT EXECUTED 467fc: 8082 orl %d2,%d0 <== NOT EXECUTED 467fe: 46c0 movew %d0,%sr <== NOT EXECUTED 46800: 2008 movel %a0,%d0 <== NOT EXECUTED 46802: 223c dead beef movel #-559038737,%d1 <== NOT EXECUTED 46808: 4ac8 halt <== NOT EXECUTED 4680a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4680e: 60fe bras 4680e <_Internal_error_Occurred+0x5a> <== NOT EXECUTED =============================================================================== 00052778 <_Message_queue_Allocate>: * Output parameters: * the_message_queue - set if successful, NULL otherwise */ Message_queue_Control *_Message_queue_Allocate(void) { 52778: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return (Message_queue_Control *) _Objects_Allocate(&_Message_queue_Information); 5277c: 4879 0006 7960 pea 67960 <_Message_queue_Information> <== NOT EXECUTED 52782: 4eb9 0004 e94c jsr 4e94c <_Objects_Allocate> <== NOT EXECUTED } 52788: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004ce54 <_Message_queue_Translate_core_message_queue_return_code>: if ( status > CORE_MESSAGE_QUEUE_STATUS_TIMEOUT ) return RTEMS_INTERNAL_ERROR; #endif return _Message_queue_Translate_core_return_code_[status]; } 4ce54: 41f9 0006 587c lea 6587c <_Message_queue_Translate_core_return_code_>,%a0<== NOT EXECUTED }; rtems_status_code _Message_queue_Translate_core_message_queue_return_code ( uint32_t status ) { 4ce5a: 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]; } 4ce5e: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4ce62: 4e5e unlk %fp <== NOT EXECUTED 4ce64: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED ... =============================================================================== 0004ae50 <_Objects_API_maximum_class>: #include unsigned int _Objects_API_maximum_class( uint32_t api ) { 4ae50: 7202 moveq #2,%d1 4ae52: 4e56 0000 linkw %fp,#0 4ae56: 202e 0008 movel %fp@(8),%d0 4ae5a: 5380 subql #1,%d0 4ae5c: b280 cmpl %d0,%d1 4ae5e: 650c bcss 4ae6c <_Objects_API_maximum_class+0x1c><== NEVER TAKEN 4ae60: 41f9 0005 c192 lea 5c192 ,%a0 4ae66: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 4ae6a: 6002 bras 4ae6e <_Objects_API_maximum_class+0x1e> 4ae6c: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_NO_API: default: break; } return 0; } 4ae6e: 4e5e unlk %fp ... =============================================================================== 00046868 <_Objects_Allocate>: */ Objects_Control *_Objects_Allocate( Objects_Information *information ) { 46868: 4e56 fff0 linkw %fp,#-16 4686c: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ 46870: 246e 0008 moveal %fp@(8),%a2 * If the application is using the optional manager stubs and * still attempts to create the object, the information block * should be all zeroed out because it is in the BSS. So let's * check that code for this manager is even present. */ if ( information->size == 0 ) 46874: 4aaa 0014 tstl %a2@(20) 46878: 675e beqs 468d8 <_Objects_Allocate+0x70> <== NEVER TAKEN /* * 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 ); 4687a: 240a movel %a2,%d2 4687c: 0682 0000 001c addil #28,%d2 46882: 47f9 0004 6014 lea 46014 <_Chain_Get>,%a3 46888: 2f02 movel %d2,%sp@- 4688a: 4e93 jsr %a3@ if ( information->auto_extend ) { 4688c: 588f addql #4,%sp 4688e: 4a2a 0010 tstb %a2@(16) 46892: 6746 beqs 468da <_Objects_Allocate+0x72> /* * If the list is empty then we are out of objects and need to * extend information base. */ if ( !the_object ) { 46894: 4a80 tstl %d0 46896: 6612 bnes 468aa <_Objects_Allocate+0x42> <== ALWAYS TAKEN _Objects_Extend_information( information ); 46898: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4689a: 4eb9 0004 6910 jsr 46910 <_Objects_Extend_information> <== NOT EXECUTED the_object = (Objects_Control *) _Chain_Get( &information->Inactive ); 468a0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 468a2: 4e93 jsr %a3@ <== NOT EXECUTED } if ( the_object ) { 468a4: 508f addql #8,%sp <== NOT EXECUTED 468a6: 4a80 tstl %d0 <== NOT EXECUTED 468a8: 6730 beqs 468da <_Objects_Allocate+0x72> <== NOT EXECUTED uint32_t block; block = (uint32_t) _Objects_Get_index( the_object->id ) - 468aa: 2040 moveal %d0,%a0 468ac: 4281 clrl %d1 468ae: 4282 clrl %d2 468b0: 3228 000a movew %a0@(10),%d1 468b4: 342a 0008 movew %a2@(8),%d2 _Objects_Get_index( information->minimum_id ); block /= information->allocation_size; information->inactive_per_block[ block ]--; 468b8: 206a 002a moveal %a2@(42),%a0 } if ( the_object ) { uint32_t block; block = (uint32_t) _Objects_Get_index( the_object->id ) - 468bc: 9282 subl %d2,%d1 _Objects_Get_index( information->minimum_id ); block /= information->allocation_size; 468be: 342a 0012 movew %a2@(18),%d2 468c2: 4c42 1001 remul %d2,%d1,%d1 information->inactive_per_block[ block ]--; 468c6: e589 lsll #2,%d1 468c8: d1c1 addal %d1,%a0 468ca: 5390 subql #1,%a0@ information->inactive--; 468cc: 322a 0028 movew %a2@(40),%d1 468d0: 5381 subql #1,%d1 468d2: 3541 0028 movew %d1,%a2@(40) 468d6: 6002 bras 468da <_Objects_Allocate+0x72> * 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 ) return NULL; 468d8: 4280 clrl %d0 <== NOT EXECUTED ); } #endif return the_object; } 468da: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 468e0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000468e4 <_Objects_Close>: RTEMS_INLINE_ROUTINE void _Objects_Invalidate_Id( Objects_Information *information, Objects_Control *the_object ) { _Objects_Set_local_object( 468e4: 4280 clrl %d0 void _Objects_Close( Objects_Information *information, Objects_Control *the_object ) { 468e6: 4e56 0000 linkw %fp,#0 468ea: 226e 000c moveal %fp@(12),%a1 468ee: 206e 0008 moveal %fp@(8),%a0 468f2: 2f0a movel %a2,%sp@- #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 468f4: 2468 0018 moveal %a0@(24),%a2 RTEMS_INLINE_ROUTINE void _Objects_Invalidate_Id( Objects_Information *information, Objects_Control *the_object ) { _Objects_Set_local_object( 468f8: 3029 000a movew %a1@(10),%d0 #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 468fc: 42b2 0c00 clrl %a2@(00000000,%d0:l:4) _Objects_Invalidate_Id( information, the_object ); _Objects_Namespace_remove( information, the_object ); } 46900: 245f moveal %sp@+,%a2 Objects_Control *the_object ) { _Objects_Invalidate_Id( information, the_object ); _Objects_Namespace_remove( information, the_object ); 46902: 2d49 000c movel %a1,%fp@(12) } 46906: 4e5e unlk %fp Objects_Control *the_object ) { _Objects_Invalidate_Id( information, the_object ); _Objects_Namespace_remove( information, the_object ); 46908: 4ef9 0004 6e1c jmp 46e1c <_Objects_Namespace_remove> ... =============================================================================== 00046910 <_Objects_Extend_information>: */ void _Objects_Extend_information( Objects_Information *information ) { 46910: 4e56 ffc8 linkw %fp,#-56 46914: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ 46918: 246e 0008 moveal %fp@(8),%a2 /* * Search for a free block of indexes. If we do NOT need to allocate or * extend the block table, then we will change do_extend. */ do_extend = true; minimum_index = _Objects_Get_index( information->minimum_id ); 4691c: 4283 clrl %d3 index_base = minimum_index; block = 0; /* if ( information->maximum < minimum_index ) */ if ( information->object_blocks == NULL ) 4691e: 206a 002e moveal %a2@(46),%a0 /* * Search for a free block of indexes. If we do NOT need to allocate or * extend the block table, then we will change do_extend. */ do_extend = true; minimum_index = _Objects_Get_index( information->minimum_id ); 46922: 362a 0008 movew %a2@(8),%d3 index_base = minimum_index; block = 0; /* if ( information->maximum < minimum_index ) */ if ( information->object_blocks == NULL ) 46926: 4a88 tstl %a0 46928: 6730 beqs 4695a <_Objects_Extend_information+0x4a><== ALWAYS TAKEN block_count = 0; else { block_count = information->maximum / information->allocation_size; 4692a: 4280 clrl %d0 <== NOT EXECUTED /* * Search for a free block of indexes. If we do NOT need to allocate or * extend the block table, then we will change do_extend. */ do_extend = true; minimum_index = _Objects_Get_index( information->minimum_id ); 4692c: 2403 movel %d3,%d2 <== NOT EXECUTED index_base = minimum_index; block = 0; 4692e: 4285 clrl %d5 <== NOT EXECUTED /* if ( information->maximum < minimum_index ) */ if ( information->object_blocks == NULL ) block_count = 0; else { block_count = information->maximum / information->allocation_size; 46930: 302a 0012 movew %a2@(18),%d0 <== NOT EXECUTED 46934: 3c2a 000e movew %a2@(14),%d6 <== NOT EXECUTED 46938: 0286 0000 ffff andil #65535,%d6 <== NOT EXECUTED 4693e: 8cc0 divuw %d0,%d6 <== NOT EXECUTED 46940: 0286 0000 ffff andil #65535,%d6 <== NOT EXECUTED for ( ; block < block_count; block++ ) { 46946: 6008 bras 46950 <_Objects_Extend_information+0x40><== NOT EXECUTED if ( information->object_blocks[ block ] == NULL ) { 46948: 4a98 tstl %a0@+ <== NOT EXECUTED 4694a: 671a beqs 46966 <_Objects_Extend_information+0x56><== NOT EXECUTED 4694c: d480 addl %d0,%d2 <== NOT EXECUTED if ( information->object_blocks == NULL ) block_count = 0; else { block_count = information->maximum / information->allocation_size; for ( ; block < block_count; block++ ) { 4694e: 5285 addql #1,%d5 <== NOT EXECUTED 46950: bc85 cmpl %d5,%d6 <== NOT EXECUTED 46952: 62f4 bhis 46948 <_Objects_Extend_information+0x38><== NOT EXECUTED /* * Search for a free block of indexes. If we do NOT need to allocate or * extend the block table, then we will change do_extend. */ do_extend = true; 46954: 367c 0001 moveaw #1,%a3 <== NOT EXECUTED 46958: 600e bras 46968 <_Objects_Extend_information+0x58><== NOT EXECUTED minimum_index = _Objects_Get_index( information->minimum_id ); 4695a: 2403 movel %d3,%d2 index_base = minimum_index; block = 0; 4695c: 4285 clrl %d5 /* if ( information->maximum < minimum_index ) */ if ( information->object_blocks == NULL ) block_count = 0; 4695e: 4286 clrl %d6 /* * Search for a free block of indexes. If we do NOT need to allocate or * extend the block table, then we will change do_extend. */ do_extend = true; 46960: 367c 0001 moveaw #1,%a3 46964: 6002 bras 46968 <_Objects_Extend_information+0x58> else { block_count = information->maximum / information->allocation_size; for ( ; block < block_count; block++ ) { if ( information->object_blocks[ block ] == NULL ) { do_extend = false; 46966: 97cb subal %a3,%a3 <== NOT EXECUTED } else index_base += information->allocation_size; } } maximum = (uint32_t) information->maximum + information->allocation_size; 46968: 4280 clrl %d0 4696a: 4287 clrl %d7 4696c: 302a 0012 movew %a2@(18),%d0 46970: 3e2a 000e movew %a2@(14),%d7 46974: de80 addl %d0,%d7 /* * We need to limit the number of objects to the maximum number * representable in the index portion of the object Id. In the * case of 16-bit Ids, this is only 256 object instances. */ if ( maximum > OBJECTS_ID_FINAL_INDEX ) { 46976: 0c87 0000 ffff cmpil #65535,%d7 4697c: 6200 01d4 bhiw 46b52 <_Objects_Extend_information+0x242> /* * Allocate the name table, and the objects and if it fails either return or * generate a fatal error depending on auto-extending being active. */ block_size = information->allocation_size * information->size; 46980: 41ea 0014 lea %a2@(20),%a0 46984: 4c10 0800 mulsl %a0@,%d0 if ( information->auto_extend ) { 46988: 4a2a 0010 tstb %a2@(16) 4698c: 6712 beqs 469a0 <_Objects_Extend_information+0x90> new_object_block = _Workspace_Allocate( block_size ); 4698e: 2f00 movel %d0,%sp@- 46990: 4eb9 0004 8794 jsr 48794 <_Workspace_Allocate> if ( !new_object_block ) 46996: 588f addql #4,%sp * Allocate the name table, and the objects and if it fails either return or * generate a fatal error depending on auto-extending being active. */ block_size = information->allocation_size * information->size; if ( information->auto_extend ) { new_object_block = _Workspace_Allocate( block_size ); 46998: 2800 movel %d0,%d4 if ( !new_object_block ) 4699a: 6610 bnes 469ac <_Objects_Extend_information+0x9c><== ALWAYS TAKEN 4699c: 6000 01b4 braw 46b52 <_Objects_Extend_information+0x242><== NOT EXECUTED return; } else { new_object_block = _Workspace_Allocate_or_fatal_error( block_size ); 469a0: 2f00 movel %d0,%sp@- 469a2: 4eb9 0004 87c8 jsr 487c8 <_Workspace_Allocate_or_fatal_error> 469a8: 588f addql #4,%sp 469aa: 2800 movel %d0,%d4 } /* * Do we need to grow the tables? */ if ( do_extend ) { 469ac: 300b movew %a3,%d0 469ae: 4a00 tstb %d0 469b0: 6700 0110 beqw 46ac2 <_Objects_Extend_information+0x1b2> */ /* * Up the block count and maximum */ block_count++; 469b4: 2846 moveal %d6,%a4 469b6: 528c addql #1,%a4 /* * Allocate the tables and break it up. */ block_size = block_count * (sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) + ((maximum + minimum_index) * sizeof(Objects_Control *)); 469b8: 2007 movel %d7,%d0 469ba: d083 addl %d3,%d0 /* * Allocate the tables and break it up. */ block_size = block_count * (sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) + 469bc: 41f4 ca00 lea %a4@(00000000,%a4:l:2),%a0 469c0: d088 addl %a0,%d0 block_count++; /* * Allocate the tables and break it up. */ block_size = block_count * 469c2: e588 lsll #2,%d0 (sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) + ((maximum + minimum_index) * sizeof(Objects_Control *)); object_blocks = (void**) _Workspace_Allocate( block_size ); 469c4: 2f00 movel %d0,%sp@- 469c6: 4eb9 0004 8794 jsr 48794 <_Workspace_Allocate> if ( !object_blocks ) { 469cc: 588f addql #4,%sp * Allocate the tables and break it up. */ block_size = block_count * (sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) + ((maximum + minimum_index) * sizeof(Objects_Control *)); object_blocks = (void**) _Workspace_Allocate( block_size ); 469ce: 2640 moveal %d0,%a3 if ( !object_blocks ) { 469d0: 4a80 tstl %d0 469d2: 660e bnes 469e2 <_Objects_Extend_information+0xd2><== ALWAYS TAKEN _Workspace_Free( new_object_block ); 469d4: 2f04 movel %d4,%sp@- <== NOT EXECUTED 469d6: 4eb9 0004 87b0 jsr 487b0 <_Workspace_Free> <== NOT EXECUTED return; 469dc: 588f addql #4,%sp <== NOT EXECUTED 469de: 6000 0172 braw 46b52 <_Objects_Extend_information+0x242><== NOT EXECUTED } /* * Break the block into the various sections. */ inactive_per_block = (uint32_t *) _Addresses_Add_offset( 469e2: 220c movel %a4,%d1 * Take the block count down. Saves all the (block_count - 1) * in the copies. */ block_count--; if ( information->maximum > minimum_index ) { 469e4: 4280 clrl %d0 } /* * Break the block into the various sections. */ inactive_per_block = (uint32_t *) _Addresses_Add_offset( 469e6: e589 lsll #2,%d1 * Take the block count down. Saves all the (block_count - 1) * in the copies. */ block_count--; if ( information->maximum > minimum_index ) { 469e8: 302a 000e movew %a2@(14),%d0 RTEMS_INLINE_ROUTINE void *_Addresses_Add_offset ( const void *base, uintptr_t offset ) { return (void *)((uintptr_t)base + offset); 469ec: 4bf3 1800 lea %a3@(00000000,%d1:l),%a5 469f0: 49f5 1800 lea %a5@(00000000,%d1:l),%a4 469f4: b680 cmpl %d0,%d3 469f6: 6506 bcss 469fe <_Objects_Extend_information+0xee><== NEVER TAKEN 469f8: 204c moveal %a4,%a0 469fa: 4280 clrl %d0 469fc: 604a bras 46a48 <_Objects_Extend_information+0x138> /* * 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, 469fe: 2206 movel %d6,%d1 <== NOT EXECUTED 46a00: e589 lsll #2,%d1 <== NOT EXECUTED 46a02: 2f01 movel %d1,%sp@- <== NOT EXECUTED 46a04: 2f2a 002e movel %a2@(46),%sp@- <== NOT EXECUTED 46a08: 2d41 fff0 movel %d1,%fp@(-16) <== NOT EXECUTED 46a0c: 2f0b movel %a3,%sp@- <== NOT EXECUTED 46a0e: 4eb9 0004 d1f8 jsr 4d1f8 <== NOT EXECUTED information->object_blocks, block_count * sizeof(void*) ); memcpy( inactive_per_block, 46a14: 222e fff0 movel %fp@(-16),%d1 <== NOT EXECUTED 46a18: 2f01 movel %d1,%sp@- <== NOT EXECUTED 46a1a: 2f2a 002a movel %a2@(42),%sp@- <== NOT EXECUTED 46a1e: 2f0d movel %a5,%sp@- <== NOT EXECUTED 46a20: 4eb9 0004 d1f8 jsr 4d1f8 <== NOT EXECUTED information->inactive_per_block, block_count * sizeof(uint32_t) ); memcpy( local_table, information->local_table, (information->maximum + minimum_index) * sizeof(Objects_Control *) ); 46a26: 4280 clrl %d0 <== NOT EXECUTED 46a28: 302a 000e movew %a2@(14),%d0 <== NOT EXECUTED 46a2c: d680 addl %d0,%d3 <== NOT EXECUTED information->object_blocks, block_count * sizeof(void*) ); memcpy( inactive_per_block, information->inactive_per_block, block_count * sizeof(uint32_t) ); memcpy( local_table, 46a2e: e58b lsll #2,%d3 <== NOT EXECUTED 46a30: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46a32: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED 46a36: 2f0c movel %a4,%sp@- <== NOT EXECUTED 46a38: 4eb9 0004 d1f8 jsr 4d1f8 <== NOT EXECUTED 46a3e: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED 46a42: 6008 bras 46a4c <_Objects_Extend_information+0x13c><== NOT EXECUTED /* * Deal with the special case of the 0 to minimum_index */ for ( index = 0; index < minimum_index; index++ ) { local_table[ index ] = NULL; 46a44: 4298 clrl %a0@+ } else { /* * Deal with the special case of the 0 to minimum_index */ for ( index = 0; index < minimum_index; index++ ) { 46a46: 5280 addql #1,%d0 46a48: b680 cmpl %d0,%d3 46a4a: 62f8 bhis 46a44 <_Objects_Extend_information+0x134> */ object_blocks[block_count] = NULL; inactive_per_block[block_count] = 0; for ( index=index_base ; index < ( information->allocation_size + index_base ); 46a4c: 4281 clrl %d1 * Initialise the new entries in the table. */ object_blocks[block_count] = NULL; inactive_per_block[block_count] = 0; for ( index=index_base ; 46a4e: 2002 movel %d2,%d0 } /* * Initialise the new entries in the table. */ object_blocks[block_count] = NULL; 46a50: e58e lsll #2,%d6 inactive_per_block[block_count] = 0; for ( index=index_base ; index < ( information->allocation_size + index_base ); 46a52: 322a 0012 movew %a2@(18),%d1 46a56: 41f4 2c00 lea %a4@(00000000,%d2:l:4),%a0 } /* * Initialise the new entries in the table. */ object_blocks[block_count] = NULL; 46a5a: 42b3 6800 clrl %a3@(00000000,%d6:l) inactive_per_block[block_count] = 0; for ( index=index_base ; index < ( information->allocation_size + index_base ); 46a5e: d282 addl %d2,%d1 /* * Initialise the new entries in the table. */ object_blocks[block_count] = NULL; inactive_per_block[block_count] = 0; 46a60: 42b5 6800 clrl %a5@(00000000,%d6:l) for ( index=index_base ; 46a64: 6004 bras 46a6a <_Objects_Extend_information+0x15a> index < ( information->allocation_size + index_base ); index++ ) { local_table[ index ] = NULL; 46a66: 4298 clrl %a0@+ object_blocks[block_count] = NULL; inactive_per_block[block_count] = 0; for ( index=index_base ; index < ( information->allocation_size + index_base ); index++ ) { 46a68: 5280 addql #1,%d0 * Initialise the new entries in the table. */ object_blocks[block_count] = NULL; inactive_per_block[block_count] = 0; for ( index=index_base ; 46a6a: b280 cmpl %d0,%d1 46a6c: 62f8 bhis 46a66 <_Objects_Extend_information+0x156> index < ( information->allocation_size + index_base ); index++ ) { local_table[ index ] = NULL; } _ISR_Disable( level ); 46a6e: 203c 0000 0700 movel #1792,%d0 46a74: 40c3 movew %sr,%d3 46a76: 8083 orl %d3,%d0 46a78: 46c0 movew %d0,%sr uint32_t the_class, uint32_t node, uint32_t index ) { return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) | 46a7a: 2012 movel %a2@,%d0 46a7c: 7c18 moveq #24,%d6 information->object_blocks = object_blocks; information->inactive_per_block = inactive_per_block; information->local_table = local_table; information->maximum = (Objects_Maximum) maximum; information->maximum_id = _Objects_Build_id( 46a7e: 4281 clrl %d1 46a80: eda8 lsll %d6,%d0 46a82: 322a 0004 movew %a2@(4),%d1 (( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) | 46a86: 1c3c 001b moveb #27,%d6 uint32_t the_class, uint32_t node, uint32_t index ) { return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) | 46a8a: 08c0 0010 bset #16,%d0 (( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) | 46a8e: eda9 lsll %d6,%d1 old_tables = information->object_blocks; information->object_blocks = object_blocks; information->inactive_per_block = inactive_per_block; information->local_table = local_table; information->maximum = (Objects_Maximum) maximum; 46a90: 3547 000e movew %d7,%a2@(14) information->maximum_id = _Objects_Build_id( 46a94: 0287 0000 ffff andil #65535,%d7 local_table[ index ] = NULL; } _ISR_Disable( level ); old_tables = information->object_blocks; 46a9a: 206a 002e moveal %a2@(46),%a0 46a9e: 8081 orl %d1,%d0 information->object_blocks = object_blocks; 46aa0: 254b 002e movel %a3,%a2@(46) uint32_t the_class, uint32_t node, uint32_t index ) { return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) | 46aa4: 8087 orl %d7,%d0 information->inactive_per_block = inactive_per_block; 46aa6: 254d 002a movel %a5,%a2@(42) information->local_table = local_table; 46aaa: 254c 0018 movel %a4,%a2@(24) 46aae: 2540 000a movel %d0,%a2@(10) information->the_class, _Objects_Local_node, information->maximum ); _ISR_Enable( level ); 46ab2: 46c3 movew %d3,%sr if ( old_tables ) 46ab4: 4a88 tstl %a0 46ab6: 670a beqs 46ac2 <_Objects_Extend_information+0x1b2><== ALWAYS TAKEN _Workspace_Free( old_tables ); 46ab8: 2f08 movel %a0,%sp@- <== NOT EXECUTED 46aba: 4eb9 0004 87b0 jsr 487b0 <_Workspace_Free> <== NOT EXECUTED 46ac0: 588f addql #4,%sp <== NOT EXECUTED } /* * Assign the new object block to the object block table. */ information->object_blocks[ block ] = new_object_block; 46ac2: 206a 002e moveal %a2@(46),%a0 /* * Initialize objects .. add to a local chain first. */ _Chain_Initialize( 46ac6: 4280 clrl %d0 information->the_class, _Objects_Local_node, index ); _Chain_Append( &information->Inactive, &the_object->Node ); 46ac8: 260a movel %a2,%d3 /* * Move from the local chain, initialise, then append to the inactive chain */ index = index_base; while ((the_object = (Objects_Control *) _Chain_Get( &Inactive )) != NULL ) { 46aca: 49f9 0004 6014 lea 46014 <_Chain_Get>,%a4 information->the_class, _Objects_Local_node, index ); _Chain_Append( &information->Inactive, &the_object->Node ); 46ad0: 0683 0000 001c addil #28,%d3 46ad6: 47f9 0004 5fb4 lea 45fb4 <_Chain_Append>,%a3 } /* * Assign the new object block to the object block table. */ information->object_blocks[ block ] = new_object_block; 46adc: e58d lsll #2,%d5 46ade: 2184 5800 movel %d4,%a0@(00000000,%d5:l) /* * Initialize objects .. add to a local chain first. */ _Chain_Initialize( 46ae2: 2f2a 0014 movel %a2@(20),%sp@- 46ae6: 302a 0012 movew %a2@(18),%d0 46aea: 2f00 movel %d0,%sp@- 46aec: 2f04 movel %d4,%sp@- 46aee: 280e movel %fp,%d4 46af0: 0684 ffff fff4 addil #-12,%d4 46af6: 2f04 movel %d4,%sp@- 46af8: 4eb9 0004 a9c4 jsr 4a9c4 <_Chain_Initialize> /* * Move from the local chain, initialise, then append to the inactive chain */ index = index_base; while ((the_object = (Objects_Control *) _Chain_Get( &Inactive )) != NULL ) { 46afe: 4fef 0010 lea %sp@(16),%sp 46b02: 602a bras 46b2e <_Objects_Extend_information+0x21e> 46b04: 2212 movel %a2@,%d1 46b06: 7e18 moveq #24,%d7 the_object->id = _Objects_Build_id( 46b08: 4286 clrl %d6 46b0a: 2040 moveal %d0,%a0 46b0c: 3c2a 0004 movew %a2@(4),%d6 46b10: efa9 lsll %d7,%d1 (( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) | 46b12: 1e3c 001b moveb #27,%d7 uint32_t the_class, uint32_t node, uint32_t index ) { return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) | 46b16: 08c1 0010 bset #16,%d1 (( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) | 46b1a: efae lsll %d7,%d6 46b1c: 8286 orl %d6,%d1 uint32_t the_class, uint32_t node, uint32_t index ) { return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) | 46b1e: 8282 orl %d2,%d1 index ); _Chain_Append( &information->Inactive, &the_object->Node ); index++; 46b20: 5282 addql #1,%d2 46b22: 2141 0008 movel %d1,%a0@(8) information->the_class, _Objects_Local_node, index ); _Chain_Append( &information->Inactive, &the_object->Node ); 46b26: 2f00 movel %d0,%sp@- 46b28: 2f03 movel %d3,%sp@- 46b2a: 4e93 jsr %a3@ index++; 46b2c: 508f addql #8,%sp /* * Move from the local chain, initialise, then append to the inactive chain */ index = index_base; while ((the_object = (Objects_Control *) _Chain_Get( &Inactive )) != NULL ) { 46b2e: 2f04 movel %d4,%sp@- 46b30: 4e94 jsr %a4@ 46b32: 588f addql #4,%sp 46b34: 4a80 tstl %d0 46b36: 66cc bnes 46b04 <_Objects_Extend_information+0x1f4> _Chain_Append( &information->Inactive, &the_object->Node ); index++; } information->inactive_per_block[ block ] = information->allocation_size; 46b38: 4281 clrl %d1 46b3a: 302a 0012 movew %a2@(18),%d0 46b3e: 206a 002a moveal %a2@(42),%a0 46b42: 3200 movew %d0,%d1 46b44: 2181 5800 movel %d1,%a0@(00000000,%d5:l) information->inactive = (Objects_Maximum)(information->inactive + information->allocation_size); 46b48: 322a 0028 movew %a2@(40),%d1 46b4c: d081 addl %d1,%d0 index++; } information->inactive_per_block[ block ] = information->allocation_size; information->inactive = 46b4e: 3540 0028 movew %d0,%a2@(40) (Objects_Maximum)(information->inactive + information->allocation_size); } 46b52: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 46b58: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046b5c <_Objects_Free>: void _Objects_Free( Objects_Information *information, Objects_Control *the_object ) { 46b5c: 4e56 fff0 linkw %fp,#-16 46b60: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ 46b64: 246e 0008 moveal %fp@(8),%a2 46b68: 266e 000c moveal %fp@(12),%a3 uint32_t allocation_size = information->allocation_size; 46b6c: 342a 0012 movew %a2@(18),%d2 _Chain_Append( &information->Inactive, &the_object->Node ); 46b70: 2f0b movel %a3,%sp@- 46b72: 486a 001c pea %a2@(28) 46b76: 4eb9 0004 5fb4 jsr 45fb4 <_Chain_Append> if ( information->auto_extend ) { 46b7c: 508f addql #8,%sp 46b7e: 4a2a 0010 tstb %a2@(16) 46b82: 6750 beqs 46bd4 <_Objects_Free+0x78> <== ALWAYS TAKEN void _Objects_Free( Objects_Information *information, Objects_Control *the_object ) { uint32_t allocation_size = information->allocation_size; 46b84: 4281 clrl %d1 <== NOT EXECUTED _Chain_Append( &information->Inactive, &the_object->Node ); if ( information->auto_extend ) { uint32_t block; block = (uint32_t) (_Objects_Get_index( the_object->id ) - 46b86: 4280 clrl %d0 <== NOT EXECUTED void _Objects_Free( Objects_Information *information, Objects_Control *the_object ) { uint32_t allocation_size = information->allocation_size; 46b88: 3202 movew %d2,%d1 <== NOT EXECUTED _Chain_Append( &information->Inactive, &the_object->Node ); if ( information->auto_extend ) { uint32_t block; block = (uint32_t) (_Objects_Get_index( the_object->id ) - 46b8a: 4282 clrl %d2 <== NOT EXECUTED 46b8c: 302b 000a movew %a3@(10),%d0 <== NOT EXECUTED 46b90: 342a 0008 movew %a2@(8),%d2 <== NOT EXECUTED _Objects_Get_index( information->minimum_id )); block /= information->allocation_size; information->inactive_per_block[ block ]++; 46b94: 206a 002a moveal %a2@(42),%a0 <== NOT EXECUTED _Chain_Append( &information->Inactive, &the_object->Node ); if ( information->auto_extend ) { uint32_t block; block = (uint32_t) (_Objects_Get_index( the_object->id ) - 46b98: 9082 subl %d2,%d0 <== NOT EXECUTED _Objects_Get_index( information->minimum_id )); block /= information->allocation_size; 46b9a: 342a 0012 movew %a2@(18),%d2 <== NOT EXECUTED 46b9e: 4c42 0000 remul %d2,%d0,%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 ) ) ) { 46ba2: 2401 movel %d1,%d2 <== NOT EXECUTED 46ba4: e28a lsrl #1,%d2 <== NOT EXECUTED 46ba6: d282 addl %d2,%d1 <== NOT EXECUTED block = (uint32_t) (_Objects_Get_index( the_object->id ) - _Objects_Get_index( information->minimum_id )); block /= information->allocation_size; information->inactive_per_block[ block ]++; 46ba8: e588 lsll #2,%d0 <== NOT EXECUTED 46baa: d1c0 addal %d0,%a0 <== NOT EXECUTED 46bac: 5290 addql #1,%a0@ <== NOT EXECUTED information->inactive++; 46bae: 302a 0028 movew %a2@(40),%d0 <== NOT EXECUTED 46bb2: 5280 addql #1,%d0 <== NOT EXECUTED 46bb4: 3540 0028 movew %d0,%a2@(40) <== NOT EXECUTED /* * Check if the threshold level has been met of * 1.5 x allocation_size are free. */ if ( information->inactive > ( allocation_size + ( allocation_size >> 1 ) ) ) { 46bb8: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED 46bbe: b280 cmpl %d0,%d1 <== NOT EXECUTED 46bc0: 6412 bccs 46bd4 <_Objects_Free+0x78> <== NOT EXECUTED _Objects_Shrink_information( information ); 46bc2: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED } } } 46bc6: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED 46bcc: 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 ); 46bce: 4ef9 0004 6ec0 jmp 46ec0 <_Objects_Shrink_information> <== NOT EXECUTED } } } 46bd4: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 46bda: 4e5e unlk %fp ... =============================================================================== 00046cc0 <_Objects_Get>: * always NULL. * * If the Id is valid but the object has not been created yet, then * the local_table entry will be NULL. */ index = id - information->minimum_id + 1; 46cc0: 7001 moveq #1,%d0 /* * If the index is less than maximum, then it is OK to use it to * index into the local_table array. */ if ( index <= information->maximum ) { 46cc2: 4281 clrl %d1 Objects_Control *_Objects_Get( Objects_Information *information, Objects_Id id, Objects_Locations *location ) { 46cc4: 4e56 0000 linkw %fp,#0 46cc8: 206e 0008 moveal %fp@(8),%a0 * always NULL. * * If the Id is valid but the object has not been created yet, then * the local_table entry will be NULL. */ index = id - information->minimum_id + 1; 46ccc: 90a8 0006 subl %a0@(6),%d0 46cd0: d0ae 000c addl %fp@(12),%d0 Objects_Control *_Objects_Get( Objects_Information *information, Objects_Id id, Objects_Locations *location ) { 46cd4: 2f0a movel %a2,%sp@- 46cd6: 246e 0010 moveal %fp@(16),%a2 /* * If the index is less than maximum, then it is OK to use it to * index into the local_table array. */ if ( index <= information->maximum ) { 46cda: 3228 000e movew %a0@(14),%d1 Objects_Control *_Objects_Get( Objects_Information *information, Objects_Id id, Objects_Locations *location ) { 46cde: 2f02 movel %d2,%sp@- /* * 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 ) { 46ce0: b280 cmpl %d0,%d1 46ce2: 6528 bcss 46d0c <_Objects_Get+0x4c> <== NEVER TAKEN 46ce4: 2239 0005 e478 movel 5e478 <_Thread_Dispatch_disable_level>,%d1 46cea: 5281 addql #1,%d1 46cec: 23c1 0005 e478 movel %d1,5e478 <_Thread_Dispatch_disable_level> _Thread_Disable_dispatch(); if ( (the_object = information->local_table[ index ]) != NULL ) { 46cf2: 2068 0018 moveal %a0@(24),%a0 46cf6: 2430 0c00 movel %a0@(00000000,%d0:l:4),%d2 46cfa: 6704 beqs 46d00 <_Objects_Get+0x40> <== NEVER TAKEN *location = OBJECTS_LOCAL; 46cfc: 4292 clrl %a2@ return the_object; 46cfe: 6012 bras 46d12 <_Objects_Get+0x52> /* * Valid Id for this API, Class and Node but the object has not * been allocated yet. */ _Thread_Enable_dispatch(); 46d00: 4eb9 0004 779a jsr 4779a <_Thread_Enable_dispatch> <== NOT EXECUTED *location = OBJECTS_ERROR; 46d06: 7201 moveq #1,%d1 <== NOT EXECUTED 46d08: 2481 movel %d1,%a2@ <== NOT EXECUTED return NULL; 46d0a: 6006 bras 46d12 <_Objects_Get+0x52> <== 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; 46d0c: 7001 moveq #1,%d0 <== NOT EXECUTED #if defined(RTEMS_MULTIPROCESSING) _Objects_MP_Is_remote( information, id, location, &the_object ); return the_object; #else return NULL; 46d0e: 4282 clrl %d2 <== 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; 46d10: 2480 movel %d0,%a2@ <== NOT EXECUTED _Objects_MP_Is_remote( information, id, location, &the_object ); return the_object; #else return NULL; #endif } 46d12: 2002 movel %d2,%d0 46d14: 242e fff8 movel %fp@(-8),%d2 46d18: 246e fffc moveal %fp@(-4),%a2 46d1c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046c0c <_Objects_Get_information>: Objects_Information *_Objects_Get_information( Objects_APIs the_api, uint16_t the_class ) { 46c0c: 4e56 0000 linkw %fp,#0 46c10: 2f03 movel %d3,%sp@- 46c12: 362e 000e movew %fp@(14),%d3 46c16: 2f02 movel %d2,%sp@- 46c18: 242e 0008 movel %fp@(8),%d2 Objects_Information *info; int the_class_api_maximum; if ( !the_class ) 46c1c: 4a43 tstw %d3 46c1e: 673a beqs 46c5a <_Objects_Get_information+0x4e> <== NEVER TAKEN /* * This call implicitly validates the_api so we do not call * _Objects_Is_api_valid above here. */ the_class_api_maximum = _Objects_API_maximum_class( the_api ); 46c20: 2f02 movel %d2,%sp@- 46c22: 4eb9 0004 ae50 jsr 4ae50 <_Objects_API_maximum_class> if ( the_class_api_maximum == 0 ) 46c28: 588f addql #4,%sp 46c2a: 4a80 tstl %d0 46c2c: 672c beqs 46c5a <_Objects_Get_information+0x4e> <== NEVER TAKEN return NULL; if ( the_class > (uint32_t) the_class_api_maximum ) 46c2e: 0283 0000 ffff andil #65535,%d3 46c34: b083 cmpl %d3,%d0 46c36: 6522 bcss 46c5a <_Objects_Get_information+0x4e> <== NEVER TAKEN return NULL; if ( !_Objects_Information_table[ the_api ] ) 46c38: 41f9 0005 e434 lea 5e434 <_Objects_Information_table>,%a0 46c3e: 2070 2c00 moveal %a0@(00000000,%d2:l:4),%a0 46c42: 4a88 tstl %a0 46c44: 6714 beqs 46c5a <_Objects_Get_information+0x4e> <== NEVER TAKEN return NULL; info = _Objects_Information_table[ the_api ][ the_class ]; 46c46: 2030 3c00 movel %a0@(00000000,%d3:l:4),%d0 if ( !info ) 46c4a: 6710 beqs 46c5c <_Objects_Get_information+0x50> <== NEVER TAKEN * Thus we may have 0 local instances and still have a valid object * pointer. */ #if !defined(RTEMS_MULTIPROCESSING) if ( info->maximum == 0 ) return NULL; 46c4c: 2040 moveal %d0,%a0 46c4e: 4a68 000e tstw %a0@(14) 46c52: 56c1 sne %d1 46c54: 49c1 extbl %d1 46c56: c081 andl %d1,%d0 46c58: 6002 bras 46c5c <_Objects_Get_information+0x50> if ( the_class > (uint32_t) the_class_api_maximum ) return NULL; if ( !_Objects_Information_table[ the_api ] ) return NULL; 46c5a: 4280 clrl %d0 <== NOT EXECUTED if ( info->maximum == 0 ) return NULL; #endif return info; } 46c5c: 242e fff8 movel %fp@(-8),%d2 46c60: 262e fffc movel %fp@(-4),%d3 46c64: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046c68 <_Objects_Get_isr_disable>: { Objects_Control *the_object; uint32_t index; ISR_Level level; index = id - information->minimum_id + 1; 46c68: 7001 moveq #1,%d0 Objects_Information *information, Objects_Id id, Objects_Locations *location, ISR_Level *level_p ) { 46c6a: 4e56 0000 linkw %fp,#0 46c6e: 226e 0008 moveal %fp@(8),%a1 Objects_Control *the_object; uint32_t index; ISR_Level level; index = id - information->minimum_id + 1; 46c72: 90a9 0006 subl %a1@(6),%d0 46c76: d0ae 000c addl %fp@(12),%d0 Objects_Information *information, Objects_Id id, Objects_Locations *location, ISR_Level *level_p ) { 46c7a: 2f02 movel %d2,%sp@- 46c7c: 206e 0010 moveal %fp@(16),%a0 uint32_t index; ISR_Level level; index = id - information->minimum_id + 1; _ISR_Disable( level ); 46c80: 243c 0000 0700 movel #1792,%d2 46c86: 40c1 movew %sr,%d1 46c88: 8481 orl %d1,%d2 46c8a: 46c2 movew %d2,%sr if ( information->maximum >= index ) { 46c8c: 4282 clrl %d2 46c8e: 3429 000e movew %a1@(14),%d2 46c92: b082 cmpl %d2,%d0 46c94: 621c bhis 46cb2 <_Objects_Get_isr_disable+0x4a> <== NEVER TAKEN if ( (the_object = information->local_table[ index ]) != NULL ) { 46c96: 2269 0018 moveal %a1@(24),%a1 46c9a: 2031 0c00 movel %a1@(00000000,%d0:l:4),%d0 46c9e: 670a beqs 46caa <_Objects_Get_isr_disable+0x42> <== NEVER TAKEN *location = OBJECTS_LOCAL; 46ca0: 4290 clrl %a0@ *level_p = level; 46ca2: 206e 0014 moveal %fp@(20),%a0 46ca6: 2081 movel %d1,%a0@ return the_object; 46ca8: 6010 bras 46cba <_Objects_Get_isr_disable+0x52> } _ISR_Enable( level ); 46caa: 46c1 movew %d1,%sr <== NOT EXECUTED *location = OBJECTS_ERROR; 46cac: 7201 moveq #1,%d1 <== NOT EXECUTED 46cae: 2081 movel %d1,%a0@ <== NOT EXECUTED return NULL; 46cb0: 6008 bras 46cba <_Objects_Get_isr_disable+0x52> <== NOT EXECUTED } _ISR_Enable( level ); 46cb2: 46c1 movew %d1,%sr <== NOT EXECUTED *location = OBJECTS_ERROR; 46cb4: 7001 moveq #1,%d0 <== NOT EXECUTED 46cb6: 2080 movel %d0,%a0@ <== NOT EXECUTED #if defined(RTEMS_MULTIPROCESSING) _Objects_MP_Is_remote( information, id, location, &the_object ); return the_object; #else return NULL; 46cb8: 4280 clrl %d0 <== NOT EXECUTED #endif } 46cba: 241f movel %sp@+,%d2 46cbc: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00047ff8 <_Objects_Get_name_as_string>: char *_Objects_Get_name_as_string( Objects_Id id, size_t length, char *name ) { 47ff8: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 47ffc: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED 48000: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 48004: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED 48008: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED char lname[5]; Objects_Control *the_object; Objects_Locations location; Objects_Id tmpId; if ( length == 0 ) 4800c: 4a84 tstl %d4 <== NOT EXECUTED 4800e: 6700 00c2 beqw 480d2 <_Objects_Get_name_as_string+0xda><== NOT EXECUTED return NULL; if ( name == NULL ) 48012: 4a82 tstl %d2 <== NOT EXECUTED 48014: 6700 00be beqw 480d4 <_Objects_Get_name_as_string+0xdc><== NOT EXECUTED return NULL; tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id; 48018: 4a83 tstl %d3 <== NOT EXECUTED 4801a: 660a bnes 48026 <_Objects_Get_name_as_string+0x2e><== NOT EXECUTED 4801c: 2079 0006 883c moveal 6883c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 48022: 2628 0008 movel %a0@(8),%d3 <== NOT EXECUTED information = _Objects_Get_information_id( tmpId ); 48026: 2f03 movel %d3,%sp@- <== NOT EXECUTED 48028: 4eb9 0004 7f18 jsr 47f18 <_Objects_Get_information_id> <== NOT EXECUTED if ( !information ) 4802e: 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 ); 48030: 2440 moveal %d0,%a2 <== NOT EXECUTED if ( !information ) 48032: 4a80 tstl %d0 <== NOT EXECUTED 48034: 6700 009c beqw 480d2 <_Objects_Get_name_as_string+0xda><== NOT EXECUTED return NULL; the_object = _Objects_Get( information, tmpId, &location ); 48038: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4803c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4803e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48040: 4eb9 0004 80e0 jsr 480e0 <_Objects_Get> <== NOT EXECUTED switch ( location ) { 48046: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4804a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4804e: 6600 0082 bnew 480d2 <_Objects_Get_name_as_string+0xda><== NOT EXECUTED return NULL; case OBJECTS_LOCAL: #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES) if ( information->is_string ) { 48052: 4a2a 0032 tstb %a2@(50) <== NOT EXECUTED 48056: 670c beqs 48064 <_Objects_Get_name_as_string+0x6c><== NOT EXECUTED s = the_object->name.name_p; 48058: 2040 moveal %d0,%a0 <== NOT EXECUTED 4805a: 2028 000c movel %a0@(12),%d0 <== NOT EXECUTED lname[ 4 ] = '\0'; s = lname; } d = name; if ( s ) { 4805e: 6638 bnes 48098 <_Objects_Get_name_as_string+0xa0><== NOT EXECUTED 48060: 2042 moveal %d2,%a0 <== NOT EXECUTED 48062: 6064 bras 480c8 <_Objects_Get_name_as_string+0xd0><== NOT EXECUTED if ( information->is_string ) { s = the_object->name.name_p; } else #endif { uint32_t u32_name = (uint32_t) the_object->name.name_u32; 48064: 2040 moveal %d0,%a0 <== NOT EXECUTED lname[ 0 ] = (u32_name >> 24) & 0xff; 48066: 7618 moveq #24,%d3 <== NOT EXECUTED if ( information->is_string ) { s = the_object->name.name_p; } else #endif { uint32_t u32_name = (uint32_t) the_object->name.name_u32; 48068: 2028 000c movel %a0@(12),%d0 <== NOT EXECUTED lname[ 0 ] = (u32_name >> 24) & 0xff; 4806c: 2200 movel %d0,%d1 <== NOT EXECUTED 4806e: e6a9 lsrl %d3,%d1 <== NOT EXECUTED 48070: 1d41 fff7 moveb %d1,%fp@(-9) <== NOT EXECUTED lname[ 1 ] = (u32_name >> 16) & 0xff; 48074: 2200 movel %d0,%d1 <== NOT EXECUTED 48076: 4241 clrw %d1 <== NOT EXECUTED 48078: 4841 swap %d1 <== NOT EXECUTED lname[ 2 ] = (u32_name >> 8) & 0xff; lname[ 3 ] = (u32_name >> 0) & 0xff; 4807a: 1d40 fffa moveb %d0,%fp@(-6) <== NOT EXECUTED #endif { uint32_t u32_name = (uint32_t) the_object->name.name_u32; lname[ 0 ] = (u32_name >> 24) & 0xff; lname[ 1 ] = (u32_name >> 16) & 0xff; 4807e: 1d41 fff8 moveb %d1,%fp@(-8) <== NOT EXECUTED lname[ 2 ] = (u32_name >> 8) & 0xff; 48082: 2200 movel %d0,%d1 <== NOT EXECUTED 48084: e089 lsrl #8,%d1 <== NOT EXECUTED lname[ 3 ] = (u32_name >> 0) & 0xff; lname[ 4 ] = '\0'; 48086: 4200 clrb %d0 <== NOT EXECUTED { uint32_t u32_name = (uint32_t) the_object->name.name_u32; lname[ 0 ] = (u32_name >> 24) & 0xff; lname[ 1 ] = (u32_name >> 16) & 0xff; lname[ 2 ] = (u32_name >> 8) & 0xff; 48088: 1d41 fff9 moveb %d1,%fp@(-7) <== NOT EXECUTED lname[ 3 ] = (u32_name >> 0) & 0xff; lname[ 4 ] = '\0'; 4808c: 1d40 fffb moveb %d0,%fp@(-5) <== NOT EXECUTED s = lname; 48090: 200e movel %fp,%d0 <== NOT EXECUTED 48092: 0680 ffff fff7 addil #-9,%d0 <== 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'; 48098: 2240 moveal %d0,%a1 <== NOT EXECUTED } d = name; if ( s ) { for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) { *d = (isprint((unsigned char)*s)) ? *s : '*'; 4809a: 2042 moveal %d2,%a0 <== NOT EXECUTED 4809c: 4280 clrl %d0 <== NOT EXECUTED s = lname; } d = name; if ( s ) { for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) { 4809e: 5384 subql #1,%d4 <== NOT EXECUTED 480a0: 601e bras 480c0 <_Objects_Get_name_as_string+0xc8><== NOT EXECUTED *d = (isprint((unsigned char)*s)) ? *s : '*'; 480a2: 4283 clrl %d3 <== NOT EXECUTED 480a4: 1601 moveb %d1,%d3 <== NOT EXECUTED 480a6: 2479 0005 ef14 moveal 5ef14 <__ctype_ptr__>,%a2 <== NOT EXECUTED 480ac: 1632 3801 moveb %a2@(00000001,%d3:l),%d3 <== NOT EXECUTED 480b0: 49c3 extbl %d3 <== NOT EXECUTED 480b2: 0283 0000 0097 andil #151,%d3 <== NOT EXECUTED 480b8: 6602 bnes 480bc <_Objects_Get_name_as_string+0xc4><== NOT EXECUTED 480ba: 722a moveq #42,%d1 <== NOT EXECUTED s = lname; } d = name; if ( s ) { for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) { 480bc: 5280 addql #1,%d0 <== NOT EXECUTED *d = (isprint((unsigned char)*s)) ? *s : '*'; 480be: 10c1 moveb %d1,%a0@+ <== NOT EXECUTED s = lname; } d = name; if ( s ) { for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) { 480c0: b880 cmpl %d0,%d4 <== NOT EXECUTED 480c2: 6304 blss 480c8 <_Objects_Get_name_as_string+0xd0><== NOT EXECUTED 480c4: 1219 moveb %a1@+,%d1 <== NOT EXECUTED 480c6: 66da bnes 480a2 <_Objects_Get_name_as_string+0xaa><== NOT EXECUTED *d = (isprint((unsigned char)*s)) ? *s : '*'; } } *d = '\0'; 480c8: 4210 clrb %a0@ <== NOT EXECUTED _Thread_Enable_dispatch(); 480ca: 4eb9 0004 8b46 jsr 48b46 <_Thread_Enable_dispatch> <== NOT EXECUTED return name; 480d0: 6002 bras 480d4 <_Objects_Get_name_as_string+0xdc><== NOT EXECUTED #if defined(RTEMS_MULTIPROCESSING) case OBJECTS_REMOTE: /* not supported */ #endif case OBJECTS_ERROR: return NULL; 480d2: 4282 clrl %d2 <== NOT EXECUTED _Thread_Enable_dispatch(); return name; } return NULL; /* unreachable path */ } 480d4: 2002 movel %d2,%d0 <== NOT EXECUTED 480d6: 4cee 041c ffe4 moveml %fp@(-28),%d2-%d4/%a2 <== NOT EXECUTED 480dc: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046e4c <_Objects_Get_next>: Objects_Information *information, Objects_Id id, Objects_Locations *location_p, Objects_Id *next_id_p ) { 46e4c: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 46e50: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ <== NOT EXECUTED 46e54: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED 46e58: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 46e5c: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED 46e60: 286e 0014 moveal %fp@(20),%a4 <== NOT EXECUTED Objects_Control *object; Objects_Id next_id; if ( !information ) 46e64: 4a8b tstl %a3 <== NOT EXECUTED 46e66: 6744 beqs 46eac <_Objects_Get_next+0x60> <== NOT EXECUTED return NULL; if ( !location_p ) 46e68: 4a8a tstl %a2 <== NOT EXECUTED 46e6a: 6740 beqs 46eac <_Objects_Get_next+0x60> <== NOT EXECUTED return NULL; if ( !next_id_p ) 46e6c: 4a8c tstl %a4 <== NOT EXECUTED 46e6e: 673c beqs 46eac <_Objects_Get_next+0x60> <== NOT EXECUTED return NULL; if (_Objects_Get_index(id) == OBJECTS_ID_INITIAL_INDEX) 46e70: 4a42 tstw %d2 <== NOT EXECUTED 46e72: 6604 bnes 46e78 <_Objects_Get_next+0x2c> <== NOT EXECUTED next_id = information->minimum_id; 46e74: 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); 46e78: 4bf9 0004 6eb8 lea 46eb8 <_Objects_Get>,%a5 <== NOT EXECUTED else next_id = id; do { /* walked off end of list? */ if (_Objects_Get_index(next_id) > information->maximum) 46e7e: 4281 clrl %d1 <== NOT EXECUTED 46e80: 4280 clrl %d0 <== NOT EXECUTED 46e82: 322b 000e movew %a3@(14),%d1 <== NOT EXECUTED 46e86: 3002 movew %d2,%d0 <== NOT EXECUTED 46e88: b081 cmpl %d1,%d0 <== NOT EXECUTED 46e8a: 630a blss 46e96 <_Objects_Get_next+0x4a> <== NOT EXECUTED { *location_p = OBJECTS_ERROR; 46e8c: 7201 moveq #1,%d1 <== NOT EXECUTED *next_id_p = next_id; return object; final: *next_id_p = OBJECTS_ID_FINAL; 46e8e: 70ff moveq #-1,%d0 <== NOT EXECUTED do { /* walked off end of list? */ if (_Objects_Get_index(next_id) > information->maximum) { *location_p = OBJECTS_ERROR; 46e90: 2481 movel %d1,%a2@ <== NOT EXECUTED *next_id_p = next_id; return object; final: *next_id_p = OBJECTS_ID_FINAL; 46e92: 2880 movel %d0,%a4@ <== NOT EXECUTED 46e94: 6016 bras 46eac <_Objects_Get_next+0x60> <== NOT EXECUTED *location_p = OBJECTS_ERROR; goto final; } /* try to grab one */ object = _Objects_Get(information, next_id, location_p); 46e96: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46e98: 2f02 movel %d2,%sp@- <== NOT EXECUTED next_id++; 46e9a: 5282 addql #1,%d2 <== NOT EXECUTED *location_p = OBJECTS_ERROR; goto final; } /* try to grab one */ object = _Objects_Get(information, next_id, location_p); 46e9c: 2f0b movel %a3,%sp@- <== NOT EXECUTED 46e9e: 4e95 jsr %a5@ <== NOT EXECUTED next_id++; } while (*location_p != OBJECTS_LOCAL); 46ea0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 46ea4: 4a92 tstl %a2@ <== NOT EXECUTED 46ea6: 66d6 bnes 46e7e <_Objects_Get_next+0x32> <== NOT EXECUTED *next_id_p = next_id; 46ea8: 2882 movel %d2,%a4@ <== NOT EXECUTED return object; 46eaa: 6002 bras 46eae <_Objects_Get_next+0x62> <== NOT EXECUTED if ( !location_p ) return NULL; if ( !next_id_p ) return NULL; 46eac: 4280 clrl %d0 <== NOT EXECUTED return object; final: *next_id_p = OBJECTS_ID_FINAL; return 0; } 46eae: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED 46eb4: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000543a4 <_Objects_Get_no_protection>: /* * You can't just extract the index portion or you can get tricked * by a value between 1 and maximum. */ index = id - information->minimum_id + 1; 543a4: 7001 moveq #1,%d0 <== NOT EXECUTED if ( information->maximum >= index ) { 543a6: 4281 clrl %d1 <== NOT EXECUTED Objects_Control *_Objects_Get_no_protection( Objects_Information *information, Objects_Id id, Objects_Locations *location ) { 543a8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 543ac: 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; 543b0: 90a8 0006 subl %a0@(6),%d0 <== NOT EXECUTED 543b4: d0ae 000c addl %fp@(12),%d0 <== NOT EXECUTED if ( information->maximum >= index ) { 543b8: 3228 000e movew %a0@(14),%d1 <== NOT EXECUTED Objects_Control *_Objects_Get_no_protection( Objects_Information *information, Objects_Id id, Objects_Locations *location ) { 543bc: 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 ) { 543c0: b081 cmpl %d1,%d0 <== NOT EXECUTED 543c2: 620e bhis 543d2 <_Objects_Get_no_protection+0x2e><== NOT EXECUTED if ( (the_object = information->local_table[ index ]) != NULL ) { 543c4: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED 543c8: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED 543cc: 6704 beqs 543d2 <_Objects_Get_no_protection+0x2e><== NOT EXECUTED *location = OBJECTS_LOCAL; 543ce: 4291 clrl %a1@ <== NOT EXECUTED return the_object; 543d0: 6006 bras 543d8 <_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; 543d2: 7001 moveq #1,%d0 <== NOT EXECUTED 543d4: 2280 movel %d0,%a1@ <== NOT EXECUTED return NULL; 543d6: 4280 clrl %d0 <== NOT EXECUTED } 543d8: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00047bec <_Objects_Id_to_name>: */ Objects_Name_or_id_lookup_errors _Objects_Id_to_name ( Objects_Id id, Objects_Name *name ) { 47bec: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 47bf0: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED 47bf4: 2f02 movel %d2,%sp@- <== NOT EXECUTED /* * Caller is trusted for name != NULL. */ tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id; 47bf6: 4a81 tstl %d1 <== NOT EXECUTED 47bf8: 660a bnes 47c04 <_Objects_Id_to_name+0x18> <== NOT EXECUTED 47bfa: 2079 0005 fdca moveal 5fdca <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 47c00: 2228 0008 movel %a0@(8),%d1 <== NOT EXECUTED 47c04: 7418 moveq #24,%d2 <== NOT EXECUTED 47c06: 2001 movel %d1,%d0 <== NOT EXECUTED 47c08: e4a8 lsrl %d2,%d0 <== NOT EXECUTED 47c0a: 143c 0007 moveb #7,%d2 <== NOT EXECUTED 47c0e: c082 andl %d2,%d0 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _Objects_Is_api_valid( uint32_t the_api ) { if ( !the_api || the_api > OBJECTS_APIS_LAST ) 47c10: 143c 0002 moveb #2,%d2 <== NOT EXECUTED 47c14: 2040 moveal %d0,%a0 <== NOT EXECUTED 47c16: 5388 subql #1,%a0 <== NOT EXECUTED 47c18: b488 cmpl %a0,%d2 <== NOT EXECUTED 47c1a: 6540 bcss 47c5c <_Objects_Id_to_name+0x70> <== NOT EXECUTED 47c1c: 6048 bras 47c66 <_Objects_Id_to_name+0x7a> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE uint32_t _Objects_Get_class( Objects_Id id ) { return (uint32_t) 47c1e: 2001 movel %d1,%d0 <== NOT EXECUTED 47c20: 741b moveq #27,%d2 <== NOT EXECUTED 47c22: e4a8 lsrl %d2,%d0 <== 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 ]; 47c24: 2070 0c00 moveal %a0@(00000000,%d0:l:4),%a0 <== NOT EXECUTED if ( !information ) 47c28: 4a88 tstl %a0 <== NOT EXECUTED 47c2a: 6730 beqs 47c5c <_Objects_Id_to_name+0x70> <== NOT EXECUTED return OBJECTS_INVALID_ID; #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES) if ( information->is_string ) 47c2c: 4a28 0032 tstb %a0@(50) <== NOT EXECUTED 47c30: 662a bnes 47c5c <_Objects_Id_to_name+0x70> <== NOT EXECUTED return OBJECTS_INVALID_ID; #endif the_object = _Objects_Get( information, tmpId, &ignored_location ); 47c32: 486e fffc pea %fp@(-4) <== NOT EXECUTED 47c36: 2f01 movel %d1,%sp@- <== NOT EXECUTED 47c38: 2f08 movel %a0,%sp@- <== NOT EXECUTED 47c3a: 4eb9 0004 7b8c jsr 47b8c <_Objects_Get> <== NOT EXECUTED if ( !the_object ) 47c40: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 47c44: 4a80 tstl %d0 <== NOT EXECUTED 47c46: 6714 beqs 47c5c <_Objects_Id_to_name+0x70> <== NOT EXECUTED return OBJECTS_INVALID_ID; *name = the_object->name; 47c48: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 47c4c: 2240 moveal %d0,%a1 <== NOT EXECUTED 47c4e: 20a9 000c movel %a1@(12),%a0@ <== NOT EXECUTED _Thread_Enable_dispatch(); 47c52: 4eb9 0004 86f2 jsr 486f2 <_Thread_Enable_dispatch> <== NOT EXECUTED return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL; 47c58: 4280 clrl %d0 <== NOT EXECUTED 47c5a: 6002 bras 47c5e <_Objects_Id_to_name+0x72> <== NOT EXECUTED the_api = _Objects_Get_API( tmpId ); if ( !_Objects_Is_api_valid( the_api ) ) return OBJECTS_INVALID_ID; if ( !_Objects_Information_table[ the_api ] ) return OBJECTS_INVALID_ID; 47c5c: 7003 moveq #3,%d0 <== NOT EXECUTED return OBJECTS_INVALID_ID; *name = the_object->name; _Thread_Enable_dispatch(); return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL; } 47c5e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 47c62: 4e5e unlk %fp <== NOT EXECUTED 47c64: 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 ] ) 47c66: 41f9 0005 f8fc lea 5f8fc <_Objects_Information_table>,%a0 <== NOT EXECUTED 47c6c: 2070 0c00 moveal %a0@(00000000,%d0:l:4),%a0 <== NOT EXECUTED 47c70: 4a88 tstl %a0 <== NOT EXECUTED 47c72: 66aa bnes 47c1e <_Objects_Id_to_name+0x32> <== NOT EXECUTED 47c74: 60e6 bras 47c5c <_Objects_Id_to_name+0x70> <== NOT EXECUTED ... =============================================================================== 00051174 <_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 ) { 51174: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 51178: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@ <== NOT EXECUTED 5117c: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED 51180: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 51184: 286e 0010 moveal %fp@(16),%a4 <== NOT EXECUTED Objects_Control *the_object; uint32_t index; /* ASSERT: information->is_string == true */ if ( !id ) 51188: 4a8c tstl %a4 <== NOT EXECUTED 5118a: 6750 beqs 511dc <_Objects_Name_to_id_string+0x68><== NOT EXECUTED return OBJECTS_INVALID_ADDRESS; if ( !name ) 5118c: 4a83 tstl %d3 <== NOT EXECUTED 5118e: 6750 beqs 511e0 <_Objects_Name_to_id_string+0x6c><== NOT EXECUTED return OBJECTS_INVALID_NAME; if ( information->maximum != 0 ) { 51190: 382b 000e movew %a3@(14),%d4 <== NOT EXECUTED 51194: 674a beqs 511e0 <_Objects_Name_to_id_string+0x6c><== NOT EXECUTED 51196: 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)) { 51198: 4bf9 0005 490c lea 5490c ,%a5 <== NOT EXECUTED if ( !name ) return OBJECTS_INVALID_NAME; if ( information->maximum != 0 ) { for ( index = 1; index <= information->maximum; index++ ) { 5119e: 0284 0000 ffff andil #65535,%d4 <== NOT EXECUTED 511a4: 6030 bras 511d6 <_Objects_Name_to_id_string+0x62><== NOT EXECUTED the_object = information->local_table[ index ]; 511a6: 206b 0018 moveal %a3@(24),%a0 <== NOT EXECUTED 511aa: 2470 2c00 moveal %a0@(00000000,%d2:l:4),%a2 <== NOT EXECUTED if ( !the_object ) 511ae: 4a8a tstl %a2 <== NOT EXECUTED 511b0: 6722 beqs 511d4 <_Objects_Name_to_id_string+0x60><== NOT EXECUTED continue; if ( !the_object->name.name_p ) 511b2: 202a 000c movel %a2@(12),%d0 <== NOT EXECUTED 511b6: 671c beqs 511d4 <_Objects_Name_to_id_string+0x60><== NOT EXECUTED continue; if (!strncmp( name, the_object->name.name_p, information->name_length)) { 511b8: 4281 clrl %d1 <== NOT EXECUTED 511ba: 322b 0034 movew %a3@(52),%d1 <== NOT EXECUTED 511be: 2f01 movel %d1,%sp@- <== NOT EXECUTED 511c0: 2f00 movel %d0,%sp@- <== NOT EXECUTED 511c2: 2f03 movel %d3,%sp@- <== NOT EXECUTED 511c4: 4e95 jsr %a5@ <== NOT EXECUTED 511c6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 511ca: 4a80 tstl %d0 <== NOT EXECUTED 511cc: 6606 bnes 511d4 <_Objects_Name_to_id_string+0x60><== NOT EXECUTED *id = the_object->id; 511ce: 28aa 0008 movel %a2@(8),%a4@ <== NOT EXECUTED return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL; 511d2: 600e bras 511e2 <_Objects_Name_to_id_string+0x6e><== NOT EXECUTED if ( !name ) return OBJECTS_INVALID_NAME; if ( information->maximum != 0 ) { for ( index = 1; index <= information->maximum; index++ ) { 511d4: 5282 addql #1,%d2 <== NOT EXECUTED 511d6: b882 cmpl %d2,%d4 <== NOT EXECUTED 511d8: 64cc bccs 511a6 <_Objects_Name_to_id_string+0x32><== NOT EXECUTED 511da: 6004 bras 511e0 <_Objects_Name_to_id_string+0x6c><== NOT EXECUTED uint32_t index; /* ASSERT: information->is_string == true */ if ( !id ) return OBJECTS_INVALID_ADDRESS; 511dc: 7002 moveq #2,%d0 <== NOT EXECUTED 511de: 6002 bras 511e2 <_Objects_Name_to_id_string+0x6e><== NOT EXECUTED return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL; } } } return OBJECTS_INVALID_NAME; 511e0: 7001 moveq #1,%d0 <== NOT EXECUTED } 511e2: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 <== NOT EXECUTED 511e8: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046e4c <_Objects_Name_to_id_u32>: Objects_Information *information, uint32_t name, uint32_t node, Objects_Id *id ) { 46e4c: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 46e50: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED 46e54: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 46e58: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 46e5c: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED 46e60: 246e 0014 moveal %fp@(20),%a2 <== NOT EXECUTED Objects_Name name_for_mp; #endif /* ASSERT: information->is_string == false */ if ( !id ) 46e64: 4a8a tstl %a2 <== NOT EXECUTED 46e66: 674a beqs 46eb2 <_Objects_Name_to_id_u32+0x66> <== NOT EXECUTED return OBJECTS_INVALID_ADDRESS; if ( name == 0 ) 46e68: 4a82 tstl %d2 <== NOT EXECUTED 46e6a: 674a beqs 46eb6 <_Objects_Name_to_id_u32+0x6a> <== NOT EXECUTED return OBJECTS_INVALID_NAME; search_local_node = false; if ( information->maximum != 0 && 46e6c: 3229 000e movew %a1@(14),%d1 <== NOT EXECUTED 46e70: 6744 beqs 46eb6 <_Objects_Name_to_id_u32+0x6a> <== NOT EXECUTED 46e72: 4a80 tstl %d0 <== NOT EXECUTED 46e74: 672e beqs 46ea4 <_Objects_Name_to_id_u32+0x58> <== NOT EXECUTED (node == OBJECTS_SEARCH_ALL_NODES || 46e76: 0c80 7fff ffff cmpil #2147483647,%d0 <== NOT EXECUTED 46e7c: 6726 beqs 46ea4 <_Objects_Name_to_id_u32+0x58> <== NOT EXECUTED node == OBJECTS_SEARCH_LOCAL_NODE || 46e7e: 7601 moveq #1,%d3 <== NOT EXECUTED 46e80: b680 cmpl %d0,%d3 <== NOT EXECUTED 46e82: 6632 bnes 46eb6 <_Objects_Name_to_id_u32+0x6a> <== NOT EXECUTED 46e84: 601e bras 46ea4 <_Objects_Name_to_id_u32+0x58> <== NOT EXECUTED )) search_local_node = true; if ( search_local_node ) { for ( index = 1; index <= information->maximum; index++ ) { the_object = information->local_table[ index ]; 46e86: 2069 0018 moveal %a1@(24),%a0 <== NOT EXECUTED 46e8a: 2070 0c00 moveal %a0@(00000000,%d0:l:4),%a0 <== NOT EXECUTED if ( !the_object ) 46e8e: 4a88 tstl %a0 <== NOT EXECUTED 46e90: 670e beqs 46ea0 <_Objects_Name_to_id_u32+0x54> <== NOT EXECUTED continue; if ( name == the_object->name.name_u32 ) { 46e92: b4a8 000c cmpl %a0@(12),%d2 <== NOT EXECUTED 46e96: 6608 bnes 46ea0 <_Objects_Name_to_id_u32+0x54> <== NOT EXECUTED *id = the_object->id; 46e98: 24a8 0008 movel %a0@(8),%a2@ <== NOT EXECUTED return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL; 46e9c: 4280 clrl %d0 <== NOT EXECUTED 46e9e: 6018 bras 46eb8 <_Objects_Name_to_id_u32+0x6c> <== NOT EXECUTED _Objects_Is_local_node( node ) )) search_local_node = true; if ( search_local_node ) { for ( index = 1; index <= information->maximum; index++ ) { 46ea0: 5280 addql #1,%d0 <== NOT EXECUTED 46ea2: 6008 bras 46eac <_Objects_Name_to_id_u32+0x60> <== NOT EXECUTED search_local_node = false; if ( information->maximum != 0 && (node == OBJECTS_SEARCH_ALL_NODES || node == OBJECTS_SEARCH_LOCAL_NODE || 46ea4: 7001 moveq #1,%d0 <== NOT EXECUTED _Objects_Is_local_node( node ) )) search_local_node = true; if ( search_local_node ) { for ( index = 1; index <= information->maximum; index++ ) { 46ea6: 0281 0000 ffff andil #65535,%d1 <== NOT EXECUTED 46eac: b280 cmpl %d0,%d1 <== NOT EXECUTED 46eae: 64d6 bccs 46e86 <_Objects_Name_to_id_u32+0x3a> <== NOT EXECUTED 46eb0: 6004 bras 46eb6 <_Objects_Name_to_id_u32+0x6a> <== NOT EXECUTED #endif /* ASSERT: information->is_string == false */ if ( !id ) return OBJECTS_INVALID_ADDRESS; 46eb2: 7002 moveq #2,%d0 <== NOT EXECUTED 46eb4: 6002 bras 46eb8 <_Objects_Name_to_id_u32+0x6c> <== NOT EXECUTED return OBJECTS_INVALID_NAME; name_for_mp.name_u32 = name; return _Objects_MP_Global_name_search( information, name_for_mp, node, id ); #else return OBJECTS_INVALID_NAME; 46eb6: 7001 moveq #1,%d0 <== NOT EXECUTED #endif } 46eb8: 4cd7 040c moveml %sp@,%d2-%d3/%a2 <== NOT EXECUTED 46ebc: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046e1c <_Objects_Namespace_remove>: void _Objects_Namespace_remove( Objects_Information *information, Objects_Control *the_object ) { 46e1c: 4e56 0000 linkw %fp,#0 #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES) /* * If this is a string format name, then free the memory. */ if ( information->is_string && the_object->name.name_p ) 46e20: 206e 0008 moveal %fp@(8),%a0 void _Objects_Namespace_remove( Objects_Information *information, Objects_Control *the_object ) { 46e24: 2f0a movel %a2,%sp@- 46e26: 246e 000c moveal %fp@(12),%a2 #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES) /* * If this is a string format name, then free the memory. */ if ( information->is_string && the_object->name.name_p ) 46e2a: 4a28 0032 tstb %a0@(50) 46e2e: 6710 beqs 46e40 <_Objects_Namespace_remove+0x24> <== ALWAYS TAKEN 46e30: 202a 000c movel %a2@(12),%d0 <== NOT EXECUTED 46e34: 670a beqs 46e40 <_Objects_Namespace_remove+0x24> <== NOT EXECUTED _Workspace_Free( (void *)the_object->name.name_p ); 46e36: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46e38: 4eb9 0004 87b0 jsr 487b0 <_Workspace_Free> <== NOT EXECUTED 46e3e: 588f addql #4,%sp <== NOT EXECUTED * Clear out either format. */ #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES) the_object->name.name_p = NULL; #endif the_object->name.name_u32 = 0; 46e40: 42aa 000c clrl %a2@(12) } 46e44: 246e fffc moveal %fp@(-4),%a2 46e48: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00047238 <_Objects_Set_name>: { size_t length; const char *s; s = name; length = strnlen( name, information->name_length ); 47238: 4280 clrl %d0 <== NOT EXECUTED bool _Objects_Set_name( Objects_Information *information, Objects_Control *the_object, const char *name ) { 4723a: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 4723e: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ <== NOT EXECUTED 47242: 2a6e 0008 moveal %fp@(8),%a5 <== NOT EXECUTED size_t length; const char *s; s = name; length = strnlen( name, information->name_length ); 47246: 302d 0034 movew %a5@(52),%d0 <== NOT EXECUTED bool _Objects_Set_name( Objects_Information *information, Objects_Control *the_object, const char *name ) { 4724a: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED size_t length; const char *s; s = name; length = strnlen( name, information->name_length ); 4724e: 2f00 movel %d0,%sp@- <== NOT EXECUTED bool _Objects_Set_name( Objects_Information *information, Objects_Control *the_object, const char *name ) { 47250: 286e 000c moveal %fp@(12),%a4 <== NOT EXECUTED size_t length; const char *s; s = name; length = strnlen( name, information->name_length ); 47254: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47256: 4eb9 0004 e520 jsr 4e520 <== NOT EXECUTED #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES) if ( information->is_string ) { 4725c: 508f addql #8,%sp <== NOT EXECUTED { size_t length; const char *s; s = name; length = strnlen( name, information->name_length ); 4725e: 2640 moveal %d0,%a3 <== NOT EXECUTED #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES) if ( information->is_string ) { 47260: 4a2d 0032 tstb %a5@(50) <== NOT EXECUTED 47264: 6744 beqs 472aa <_Objects_Set_name+0x72> <== NOT EXECUTED char *d; d = _Workspace_Allocate( length + 1 ); 47266: 486b 0001 pea %a3@(1) <== NOT EXECUTED 4726a: 4eb9 0004 8bdc jsr 48bdc <_Workspace_Allocate> <== NOT EXECUTED if ( !d ) 47270: 588f addql #4,%sp <== NOT EXECUTED #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES) if ( information->is_string ) { char *d; d = _Workspace_Allocate( length + 1 ); 47272: 2a40 moveal %d0,%a5 <== NOT EXECUTED if ( !d ) 47274: 4a80 tstl %d0 <== NOT EXECUTED 47276: 6700 0082 beqw 472fa <_Objects_Set_name+0xc2> <== NOT EXECUTED return false; if ( the_object->name.name_p ) { 4727a: 202c 000c movel %a4@(12),%d0 <== NOT EXECUTED 4727e: 670e beqs 4728e <_Objects_Set_name+0x56> <== NOT EXECUTED _Workspace_Free( (void *)the_object->name.name_p ); 47280: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47282: 4eb9 0004 8bf8 jsr 48bf8 <_Workspace_Free> <== NOT EXECUTED the_object->name.name_p = NULL; 47288: 588f addql #4,%sp <== NOT EXECUTED 4728a: 42ac 000c clrl %a4@(12) <== NOT EXECUTED } strncpy( d, name, length ); 4728e: 2f0b movel %a3,%sp@- <== NOT EXECUTED 47290: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47292: 2f0d movel %a5,%sp@- <== NOT EXECUTED 47294: 4eb9 0004 e49c jsr 4e49c <== NOT EXECUTED d[length] = '\0'; the_object->name.name_p = d; 4729a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED _Workspace_Free( (void *)the_object->name.name_p ); the_object->name.name_p = NULL; } strncpy( d, name, length ); d[length] = '\0'; 4729e: 4200 clrb %d0 <== NOT EXECUTED 472a0: 1b80 b800 moveb %d0,%a5@(00000000,%a3:l) <== NOT EXECUTED the_object->name.name_p = d; 472a4: 294d 000c movel %a5,%a4@(12) <== NOT EXECUTED 472a8: 604c bras 472f6 <_Objects_Set_name+0xbe> <== NOT EXECUTED } else #endif { the_object->name.name_u32 = _Objects_Build_name( 472aa: 7418 moveq #24,%d2 <== NOT EXECUTED 472ac: 1212 moveb %a2@,%d1 <== NOT EXECUTED 472ae: 7020 moveq #32,%d0 <== NOT EXECUTED 472b0: 4840 swap %d0 <== NOT EXECUTED 472b2: 49c1 extbl %d1 <== NOT EXECUTED 472b4: e5a9 lsll %d2,%d1 <== NOT EXECUTED 472b6: 143c 0001 moveb #1,%d2 <== NOT EXECUTED 472ba: b48b cmpl %a3,%d2 <== NOT EXECUTED 472bc: 640a bccs 472c8 <_Objects_Set_name+0x90> <== NOT EXECUTED 472be: 102a 0001 moveb %a2@(1),%d0 <== NOT EXECUTED 472c2: 49c0 extbl %d0 <== NOT EXECUTED 472c4: 4840 swap %d0 <== NOT EXECUTED 472c6: 4240 clrw %d0 <== NOT EXECUTED 472c8: 7402 moveq #2,%d2 <== NOT EXECUTED 472ca: 8280 orl %d0,%d1 <== NOT EXECUTED 472cc: 203c 0000 2000 movel #8192,%d0 <== NOT EXECUTED 472d2: b48b cmpl %a3,%d2 <== NOT EXECUTED 472d4: 6408 bccs 472de <_Objects_Set_name+0xa6> <== NOT EXECUTED 472d6: 102a 0002 moveb %a2@(2),%d0 <== NOT EXECUTED 472da: 49c0 extbl %d0 <== NOT EXECUTED 472dc: e188 lsll #8,%d0 <== NOT EXECUTED 472de: 8081 orl %d1,%d0 <== NOT EXECUTED 472e0: 7203 moveq #3,%d1 <== NOT EXECUTED 472e2: b28b cmpl %a3,%d1 <== NOT EXECUTED 472e4: 6408 bccs 472ee <_Objects_Set_name+0xb6> <== NOT EXECUTED 472e6: 142a 0003 moveb %a2@(3),%d2 <== NOT EXECUTED 472ea: 49c2 extbl %d2 <== NOT EXECUTED 472ec: 6002 bras 472f0 <_Objects_Set_name+0xb8> <== NOT EXECUTED 472ee: 7420 moveq #32,%d2 <== NOT EXECUTED 472f0: 8082 orl %d2,%d0 <== NOT EXECUTED 472f2: 2940 000c movel %d0,%a4@(12) <== NOT EXECUTED ((3 < length) ? s[ 3 ] : ' ') ); } return true; 472f6: 7001 moveq #1,%d0 <== NOT EXECUTED 472f8: 6002 bras 472fc <_Objects_Set_name+0xc4> <== NOT EXECUTED if ( information->is_string ) { char *d; d = _Workspace_Allocate( length + 1 ); if ( !d ) return false; 472fa: 4200 clrb %d0 <== NOT EXECUTED ); } return true; } 472fc: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED 47302: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046ec0 <_Objects_Shrink_information>: /* * Search the list to find block or chunk with all objects inactive. */ index_base = _Objects_Get_index( information->minimum_id ); block_count = (information->maximum - index_base) / 46ec0: 4280 clrl %d0 <== NOT EXECUTED */ void _Objects_Shrink_information( Objects_Information *information ) { 46ec2: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 46ec6: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED 46eca: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED /* * Search the list to find block or chunk with all objects inactive. */ index_base = _Objects_Get_index( information->minimum_id ); 46ece: 4283 clrl %d3 <== NOT EXECUTED block_count = (information->maximum - index_base) / 46ed0: 4284 clrl %d4 <== NOT EXECUTED /* * Search the list to find block or chunk with all objects inactive. */ index_base = _Objects_Get_index( information->minimum_id ); 46ed2: 362a 0008 movew %a2@(8),%d3 <== NOT EXECUTED block_count = (information->maximum - index_base) / 46ed6: 302a 000e movew %a2@(14),%d0 <== NOT EXECUTED 46eda: 382a 0012 movew %a2@(18),%d4 <== NOT EXECUTED 46ede: 9083 subl %d3,%d0 <== NOT EXECUTED 46ee0: 4c44 0000 remul %d4,%d0,%d0 <== NOT EXECUTED information->allocation_size; for ( block = 0; block < block_count; block++ ) { 46ee4: 4281 clrl %d1 <== NOT EXECUTED 46ee6: 6072 bras 46f5a <_Objects_Shrink_information+0x9a><== NOT EXECUTED 46ee8: 2401 movel %d1,%d2 <== NOT EXECUTED 46eea: e58a lsll #2,%d2 <== NOT EXECUTED if ( information->inactive_per_block[ block ] == 46eec: 206a 002a moveal %a2@(42),%a0 <== NOT EXECUTED 46ef0: b8b0 2800 cmpl %a0@(00000000,%d2:l),%d4 <== NOT EXECUTED 46ef4: 6660 bnes 46f56 <_Objects_Shrink_information+0x96><== NOT EXECUTED information->allocation_size ) { /* * Assume the Inactive chain is never empty at this point */ the_object = (Objects_Control *) _Chain_First( &information->Inactive ); 46ef6: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED */ extract_me = the_object; the_object = (Objects_Control *) the_object->Node.next; if ((index >= index_base) && (index < (index_base + information->allocation_size))) { _Chain_Extract( &extract_me->Node ); 46efa: 47f9 0004 5fec lea 45fec <_Chain_Extract>,%a3 <== NOT EXECUTED 46f00: 6002 bras 46f04 <_Objects_Shrink_information+0x44><== NOT EXECUTED index = _Objects_Get_index( the_object->id ); /* * Get the next node before the node is extracted */ extract_me = the_object; the_object = (Objects_Control *) the_object->Node.next; 46f02: 2044 moveal %d4,%a0 <== NOT EXECUTED * Assume the Inactive chain is never empty at this point */ the_object = (Objects_Control *) _Chain_First( &information->Inactive ); do { index = _Objects_Get_index( the_object->id ); 46f04: 4280 clrl %d0 <== NOT EXECUTED 46f06: 3028 000a movew %a0@(10),%d0 <== NOT EXECUTED /* * Get the next node before the node is extracted */ extract_me = the_object; the_object = (Objects_Control *) the_object->Node.next; 46f0a: 2810 movel %a0@,%d4 <== NOT EXECUTED if ((index >= index_base) && 46f0c: b680 cmpl %d0,%d3 <== NOT EXECUTED 46f0e: 6212 bhis 46f22 <_Objects_Shrink_information+0x62><== NOT EXECUTED (index < (index_base + information->allocation_size))) { 46f10: 4281 clrl %d1 <== NOT EXECUTED 46f12: 322a 0012 movew %a2@(18),%d1 <== NOT EXECUTED 46f16: d283 addl %d3,%d1 <== NOT EXECUTED /* * Get the next node before the node is extracted */ extract_me = the_object; the_object = (Objects_Control *) the_object->Node.next; if ((index >= index_base) && 46f18: b280 cmpl %d0,%d1 <== NOT EXECUTED 46f1a: 6306 blss 46f22 <_Objects_Shrink_information+0x62><== NOT EXECUTED (index < (index_base + information->allocation_size))) { _Chain_Extract( &extract_me->Node ); 46f1c: 2f08 movel %a0,%sp@- <== NOT EXECUTED 46f1e: 4e93 jsr %a3@ <== NOT EXECUTED 46f20: 588f addql #4,%sp <== NOT EXECUTED } } while ( the_object ); 46f22: 4a84 tstl %d4 <== NOT EXECUTED 46f24: 66dc bnes 46f02 <_Objects_Shrink_information+0x42><== NOT EXECUTED /* * Free the memory and reset the structures in the object' information */ _Workspace_Free( information->object_blocks[ block ] ); 46f26: 206a 002e moveal %a2@(46),%a0 <== NOT EXECUTED 46f2a: 2f30 2800 movel %a0@(00000000,%d2:l),%sp@- <== NOT EXECUTED 46f2e: 4eb9 0004 87b0 jsr 487b0 <_Workspace_Free> <== NOT EXECUTED information->object_blocks[ block ] = NULL; 46f34: 206a 002e moveal %a2@(46),%a0 <== NOT EXECUTED information->inactive_per_block[ block ] = 0; information->inactive -= information->allocation_size; return; 46f38: 588f addql #4,%sp <== NOT EXECUTED /* * Free the memory and reset the structures in the object' information */ _Workspace_Free( information->object_blocks[ block ] ); information->object_blocks[ block ] = NULL; 46f3a: 42b0 2800 clrl %a0@(00000000,%d2:l) <== NOT EXECUTED information->inactive_per_block[ block ] = 0; 46f3e: 206a 002a moveal %a2@(42),%a0 <== NOT EXECUTED information->inactive -= information->allocation_size; 46f42: 302a 0028 movew %a2@(40),%d0 <== NOT EXECUTED 46f46: 322a 0012 movew %a2@(18),%d1 <== NOT EXECUTED * Free the memory and reset the structures in the object' information */ _Workspace_Free( information->object_blocks[ block ] ); information->object_blocks[ block ] = NULL; information->inactive_per_block[ block ] = 0; 46f4a: 42b0 2800 clrl %a0@(00000000,%d2:l) <== NOT EXECUTED information->inactive -= information->allocation_size; 46f4e: 9081 subl %d1,%d0 <== NOT EXECUTED 46f50: 3540 0028 movew %d0,%a2@(40) <== NOT EXECUTED return; 46f54: 6008 bras 46f5e <_Objects_Shrink_information+0x9e><== NOT EXECUTED } index_base += information->allocation_size; 46f56: d684 addl %d4,%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++ ) { 46f58: 5281 addql #1,%d1 <== NOT EXECUTED 46f5a: b081 cmpl %d1,%d0 <== NOT EXECUTED 46f5c: 628a bhis 46ee8 <_Objects_Shrink_information+0x28><== NOT EXECUTED return; } index_base += information->allocation_size; } } 46f5e: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 46f64: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004744c <_POSIX_Absolute_timeout_to_ticks>: */ POSIX_Absolute_timeout_conversion_results_t _POSIX_Absolute_timeout_to_ticks( const struct timespec *abstime, Watchdog_Interval *ticks_out ) { 4744c: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 47450: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED 47454: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 47458: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED /* * Make sure there is always a value returned. */ *ticks_out = 0; 4745c: 4292 clrl %a2@ <== NOT EXECUTED /* * Is the absolute time even valid? */ if ( !_Timespec_Is_valid(abstime) ) 4745e: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47460: 4eb9 0004 ae70 jsr 4ae70 <_Timespec_Is_valid> <== NOT EXECUTED 47466: 588f addql #4,%sp <== NOT EXECUTED 47468: 4a00 tstb %d0 <== NOT EXECUTED 4746a: 674c beqs 474b8 <_POSIX_Absolute_timeout_to_ticks+0x6c><== NOT EXECUTED return POSIX_ABSOLUTE_TIMEOUT_INVALID; /* * Is the absolute time in the past? */ _TOD_Get( ¤t_time ); 4746c: 240e movel %fp,%d2 <== NOT EXECUTED 4746e: 5182 subql #8,%d2 <== NOT EXECUTED 47470: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47472: 4eb9 0004 8fa0 jsr 48fa0 <_TOD_Get> <== NOT EXECUTED if ( _Timespec_Less_than( abstime, ¤t_time ) ) 47478: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4747a: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4747c: 4eb9 0004 ae98 jsr 4ae98 <_Timespec_Less_than> <== NOT EXECUTED 47482: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 47486: 4a00 tstb %d0 <== NOT EXECUTED 47488: 6632 bnes 474bc <_POSIX_Absolute_timeout_to_ticks+0x70><== NOT EXECUTED return POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST; /* * How long until the requested absolute time? */ _Timespec_Subtract( ¤t_time, abstime, &difference ); 4748a: 280e movel %fp,%d4 <== NOT EXECUTED 4748c: 0684 ffff fff0 addil #-16,%d4 <== NOT EXECUTED 47492: 2f04 movel %d4,%sp@- <== NOT EXECUTED 47494: 2f03 movel %d3,%sp@- <== NOT EXECUTED 47496: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47498: 4eb9 0004 aec8 jsr 4aec8 <_Timespec_Subtract> <== NOT EXECUTED /* * Internally the SuperCore uses ticks, so convert to them. */ *ticks_out = _Timespec_To_ticks( &difference ); 4749e: 2f04 movel %d4,%sp@- <== NOT EXECUTED 474a0: 4eb9 0004 af0c jsr 4af0c <_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 ) 474a6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED return POSIX_ABSOLUTE_TIMEOUT_IS_NOW; 474aa: 7202 moveq #2,%d1 <== NOT EXECUTED _Timespec_Subtract( ¤t_time, abstime, &difference ); /* * Internally the SuperCore uses ticks, so convert to them. */ *ticks_out = _Timespec_To_ticks( &difference ); 474ac: 2480 movel %d0,%a2@ <== NOT EXECUTED /* * If the difference was 0, then the future is now. It is so bright * we better wear shades. */ if ( !*ticks_out ) return POSIX_ABSOLUTE_TIMEOUT_IS_NOW; 474ae: 56c0 sne %d0 <== NOT EXECUTED 474b0: 49c0 extbl %d0 <== NOT EXECUTED 474b2: 9280 subl %d0,%d1 <== NOT EXECUTED 474b4: 2001 movel %d1,%d0 <== NOT EXECUTED 474b6: 6006 bras 474be <_POSIX_Absolute_timeout_to_ticks+0x72><== NOT EXECUTED /* * Is the absolute time even valid? */ if ( !_Timespec_Is_valid(abstime) ) return POSIX_ABSOLUTE_TIMEOUT_INVALID; 474b8: 4280 clrl %d0 <== NOT EXECUTED 474ba: 6002 bras 474be <_POSIX_Absolute_timeout_to_ticks+0x72><== NOT EXECUTED * Is the absolute time in the past? */ _TOD_Get( ¤t_time ); if ( _Timespec_Less_than( abstime, ¤t_time ) ) return POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST; 474bc: 7001 moveq #1,%d0 <== NOT EXECUTED /* * This is the case we were expecting and it took this long to * get here. */ return POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE; } 474be: 4cee 041c ffe0 moveml %fp@(-32),%d2-%d4/%a2 <== NOT EXECUTED 474c4: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004afe0 <_POSIX_Barrier_Translate_core_barrier_return_code>: #if defined(RTEMS_DEBUG) if ( the_barrier_status > CORE_BARRIER_STATUS_LAST ) return EINVAL; #endif return _POSIX_Barrier_Return_codes[the_barrier_status]; } 4afe0: 41f9 0005 d5ee lea 5d5ee <_POSIX_Barrier_Return_codes>,%a0 <== NOT EXECUTED int _POSIX_Barrier_Translate_core_barrier_return_code( CORE_barrier_Status the_barrier_status ) { 4afe6: 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]; } 4afea: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4afee: 4e5e unlk %fp <== NOT EXECUTED 4aff0: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED ... =============================================================================== 000460a0 <_POSIX_Condition_variables_Get>: POSIX_Condition_variables_Control *_POSIX_Condition_variables_Get ( pthread_cond_t *cond, Objects_Locations *location ) { 460a0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 460a4: 2f0b movel %a3,%sp@- <== NOT EXECUTED 460a6: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED 460aa: 2f0a movel %a2,%sp@- <== NOT EXECUTED 460ac: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED int status; if ( !cond ) { 460b0: 4a8a tstl %a2 <== NOT EXECUTED 460b2: 6716 beqs 460ca <_POSIX_Condition_variables_Get+0x2a><== NOT EXECUTED *location = OBJECTS_ERROR; return (POSIX_Condition_variables_Control *) 0; } if ( *cond == PTHREAD_COND_INITIALIZER ) { 460b4: 70ff moveq #-1,%d0 <== NOT EXECUTED 460b6: b092 cmpl %a2@,%d0 <== NOT EXECUTED 460b8: 6618 bnes 460d2 <_POSIX_Condition_variables_Get+0x32><== NOT EXECUTED /* * Do an "auto-create" here. */ status = pthread_cond_init( cond, 0 ); 460ba: 42a7 clrl %sp@- <== NOT EXECUTED 460bc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 460be: 4eb9 0004 60f4 jsr 460f4 <== NOT EXECUTED if ( status ) { 460c4: 508f addql #8,%sp <== NOT EXECUTED 460c6: 4a80 tstl %d0 <== NOT EXECUTED 460c8: 6708 beqs 460d2 <_POSIX_Condition_variables_Get+0x32><== NOT EXECUTED *location = OBJECTS_ERROR; 460ca: 7001 moveq #1,%d0 <== NOT EXECUTED 460cc: 2680 movel %d0,%a3@ <== NOT EXECUTED return (POSIX_Condition_variables_Control *) 0; 460ce: 4280 clrl %d0 <== NOT EXECUTED 460d0: 6014 bras 460e6 <_POSIX_Condition_variables_Get+0x46><== NOT EXECUTED } /* * Now call Objects_Get() */ return (POSIX_Condition_variables_Control *)_Objects_Get( 460d2: 2f0b movel %a3,%sp@- <== NOT EXECUTED 460d4: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 460d6: 4879 0006 0d52 pea 60d52 <_POSIX_Condition_variables_Information><== NOT EXECUTED 460dc: 4eb9 0004 8970 jsr 48970 <_Objects_Get> <== NOT EXECUTED 460e2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED &_POSIX_Condition_variables_Information, (Objects_Id) *cond, location ); } 460e6: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 460ea: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 460ee: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000461ac <_POSIX_Condition_variables_Signal_support>: int _POSIX_Condition_variables_Signal_support( pthread_cond_t *cond, bool is_broadcast ) { 461ac: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 461b0: 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 ); 461b4: 486e fffc pea %fp@(-4) <== NOT EXECUTED 461b8: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED int _POSIX_Condition_variables_Signal_support( pthread_cond_t *cond, bool is_broadcast ) { 461bc: 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 ); 461c0: 4eb9 0004 60a0 jsr 460a0 <_POSIX_Condition_variables_Get> <== NOT EXECUTED switch ( location ) { 461c6: 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 ); 461c8: 2440 moveal %d0,%a2 <== NOT EXECUTED switch ( location ) { 461ca: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 461ce: 662e bnes 461fe <_POSIX_Condition_variables_Signal_support+0x52><== NOT EXECUTED case OBJECTS_LOCAL: do { the_thread = _Thread_queue_Dequeue( &the_cond->Wait_queue ); 461d0: 2400 movel %d0,%d2 <== NOT EXECUTED 461d2: 0682 0000 0018 addil #24,%d2 <== NOT EXECUTED 461d8: 47f9 0004 96f8 lea 496f8 <_Thread_queue_Dequeue>,%a3 <== NOT EXECUTED 461de: 2f02 movel %d2,%sp@- <== NOT EXECUTED 461e0: 4e93 jsr %a3@ <== NOT EXECUTED if ( !the_thread ) 461e2: 588f addql #4,%sp <== NOT EXECUTED 461e4: 4a80 tstl %d0 <== NOT EXECUTED 461e6: 6604 bnes 461ec <_POSIX_Condition_variables_Signal_support+0x40><== NOT EXECUTED the_cond->Mutex = POSIX_CONDITION_VARIABLES_NO_MUTEX; 461e8: 42aa 0014 clrl %a2@(20) <== NOT EXECUTED } while ( is_broadcast && the_thread ); 461ec: 4a03 tstb %d3 <== NOT EXECUTED 461ee: 6704 beqs 461f4 <_POSIX_Condition_variables_Signal_support+0x48><== NOT EXECUTED 461f0: 4a80 tstl %d0 <== NOT EXECUTED 461f2: 66ea bnes 461de <_POSIX_Condition_variables_Signal_support+0x32><== NOT EXECUTED _Thread_Enable_dispatch(); 461f4: 4eb9 0004 93d6 jsr 493d6 <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 461fa: 4280 clrl %d0 <== NOT EXECUTED 461fc: 6002 bras 46200 <_POSIX_Condition_variables_Signal_support+0x54><== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 461fe: 7016 moveq #22,%d0 <== NOT EXECUTED } 46200: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 46206: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004626c <_POSIX_Condition_variables_Wait_support>: pthread_cond_t *cond, pthread_mutex_t *mutex, Watchdog_Interval timeout, bool already_timedout ) { 4626c: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 46270: 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 ) ) { 46274: 240e movel %fp,%d2 <== NOT EXECUTED 46276: 5982 subql #4,%d2 <== NOT EXECUTED pthread_cond_t *cond, pthread_mutex_t *mutex, Watchdog_Interval timeout, bool already_timedout ) { 46278: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED register POSIX_Condition_variables_Control *the_cond; Objects_Locations location; int status; int mutex_status; if ( !_POSIX_Mutex_Get( mutex, &location ) ) { 4627c: 2f02 movel %d2,%sp@- <== NOT EXECUTED pthread_cond_t *cond, pthread_mutex_t *mutex, Watchdog_Interval timeout, bool already_timedout ) { 4627e: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED register POSIX_Condition_variables_Control *the_cond; Objects_Locations location; int status; int mutex_status; if ( !_POSIX_Mutex_Get( mutex, &location ) ) { 46282: 2f0a movel %a2,%sp@- <== NOT EXECUTED pthread_cond_t *cond, pthread_mutex_t *mutex, Watchdog_Interval timeout, bool already_timedout ) { 46284: 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 ) ) { 46288: 4eb9 0004 63c8 jsr 463c8 <_POSIX_Mutex_Get> <== NOT EXECUTED 4628e: 508f addql #8,%sp <== NOT EXECUTED 46290: 4a80 tstl %d0 <== NOT EXECUTED 46292: 6700 00ac beqw 46340 <_POSIX_Condition_variables_Wait_support+0xd4><== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void ) { RTEMS_COMPILER_MEMORY_BARRIER(); _Thread_Dispatch_disable_level -= 1; 46296: 2039 0006 09a8 movel 609a8 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4629c: 5380 subql #1,%d0 <== NOT EXECUTED return EINVAL; } _Thread_Unnest_dispatch(); the_cond = _POSIX_Condition_variables_Get( cond, &location ); 4629e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 462a0: 23c0 0006 09a8 movel %d0,609a8 <_Thread_Dispatch_disable_level><== NOT EXECUTED 462a6: 2f0c movel %a4,%sp@- <== NOT EXECUTED 462a8: 4eb9 0004 60a0 jsr 460a0 <_POSIX_Condition_variables_Get> <== NOT EXECUTED switch ( location ) { 462ae: 508f addql #8,%sp <== NOT EXECUTED return EINVAL; } _Thread_Unnest_dispatch(); the_cond = _POSIX_Condition_variables_Get( cond, &location ); 462b0: 2640 moveal %d0,%a3 <== NOT EXECUTED switch ( location ) { 462b2: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 462b6: 6600 0088 bnew 46340 <_POSIX_Condition_variables_Wait_support+0xd4><== NOT EXECUTED case OBJECTS_LOCAL: if ( the_cond->Mutex && ( the_cond->Mutex != *mutex ) ) { 462ba: 202b 0014 movel %a3@(20),%d0 <== NOT EXECUTED 462be: 670c beqs 462cc <_POSIX_Condition_variables_Wait_support+0x60><== NOT EXECUTED 462c0: b092 cmpl %a2@,%d0 <== NOT EXECUTED 462c2: 6708 beqs 462cc <_POSIX_Condition_variables_Wait_support+0x60><== NOT EXECUTED _Thread_Enable_dispatch(); 462c4: 4eb9 0004 93d6 jsr 493d6 <_Thread_Enable_dispatch> <== NOT EXECUTED 462ca: 6074 bras 46340 <_POSIX_Condition_variables_Wait_support+0xd4><== NOT EXECUTED return EINVAL; } (void) pthread_mutex_unlock( mutex ); 462cc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 462ce: 4bf9 0004 93d6 lea 493d6 <_Thread_Enable_dispatch>,%a5 <== NOT EXECUTED 462d4: 4eb9 0004 6620 jsr 46620 <== NOT EXECUTED _Thread_Enable_dispatch(); return EINVAL; } */ if ( !already_timedout ) { 462da: 588f addql #4,%sp <== NOT EXECUTED 462dc: 4a03 tstb %d3 <== NOT EXECUTED 462de: 664e bnes 4632e <_POSIX_Condition_variables_Wait_support+0xc2><== NOT EXECUTED the_cond->Mutex = *mutex; 462e0: 2752 0014 movel %a2@,%a3@(20) <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Thread_queue_Enter_critical_section ( Thread_queue_Control *the_thread_queue ) { the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED; 462e4: 7001 moveq #1,%d0 <== NOT EXECUTED _Thread_queue_Enter_critical_section( &the_cond->Wait_queue ); _Thread_Executing->Wait.return_code = 0; 462e6: 2079 0006 0e32 moveal 60e32 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 462ec: 2740 0048 movel %d0,%a3@(72) <== NOT EXECUTED _Thread_Executing->Wait.queue = &the_cond->Wait_queue; 462f0: 47eb 0018 lea %a3@(24),%a3 <== NOT EXECUTED if ( !already_timedout ) { the_cond->Mutex = *mutex; _Thread_queue_Enter_critical_section( &the_cond->Wait_queue ); _Thread_Executing->Wait.return_code = 0; 462f4: 42a8 0034 clrl %a0@(52) <== NOT EXECUTED _Thread_Executing->Wait.queue = &the_cond->Wait_queue; _Thread_Executing->Wait.id = *cond; 462f8: 2154 0020 movel %a4@,%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; 462fc: 214b 0044 movel %a3,%a0@(68) <== NOT EXECUTED _Thread_Executing->Wait.id = *cond; _Thread_queue_Enqueue( &the_cond->Wait_queue, timeout ); 46300: 4879 0004 9bac pea 49bac <_Thread_queue_Timeout> <== NOT EXECUTED 46306: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4630a: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4630c: 4eb9 0004 9838 jsr 49838 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED _Thread_Enable_dispatch(); 46312: 4e95 jsr %a5@ <== NOT EXECUTED * a POSIX signal, then pthread_cond_wait returns spuriously, * according to the POSIX standard. It means that pthread_cond_wait * returns a success status, except for the fact that it was not * woken up a pthread_cond_signal or a pthread_cond_broadcast. */ status = _Thread_Executing->Wait.return_code; 46314: 2079 0006 0e32 moveal 60e32 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED if ( status == EINTR ) status = 0; 4631a: 7004 moveq #4,%d0 <== NOT EXECUTED * according to the POSIX standard. It means that pthread_cond_wait * returns a success status, except for the fact that it was not * woken up a pthread_cond_signal or a pthread_cond_broadcast. */ status = _Thread_Executing->Wait.return_code; if ( status == EINTR ) 4631c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED * a POSIX signal, then pthread_cond_wait returns spuriously, * according to the POSIX standard. It means that pthread_cond_wait * returns a success status, except for the fact that it was not * woken up a pthread_cond_signal or a pthread_cond_broadcast. */ status = _Thread_Executing->Wait.return_code; 46320: 2428 0034 movel %a0@(52),%d2 <== NOT EXECUTED if ( status == EINTR ) status = 0; 46324: b082 cmpl %d2,%d0 <== NOT EXECUTED 46326: 56c0 sne %d0 <== NOT EXECUTED 46328: 49c0 extbl %d0 <== NOT EXECUTED 4632a: c480 andl %d0,%d2 <== NOT EXECUTED 4632c: 6004 bras 46332 <_POSIX_Condition_variables_Wait_support+0xc6><== NOT EXECUTED } else { _Thread_Enable_dispatch(); 4632e: 4e95 jsr %a5@ <== NOT EXECUTED status = ETIMEDOUT; 46330: 7474 moveq #116,%d2 <== NOT EXECUTED /* * When we get here the dispatch disable level is 0. */ mutex_status = pthread_mutex_lock( mutex ); 46332: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46334: 4eb9 0004 6588 jsr 46588 <== NOT EXECUTED if ( mutex_status ) 4633a: 588f addql #4,%sp <== NOT EXECUTED 4633c: 4a80 tstl %d0 <== NOT EXECUTED 4633e: 6702 beqs 46342 <_POSIX_Condition_variables_Wait_support+0xd6><== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 46340: 7416 moveq #22,%d2 <== NOT EXECUTED } 46342: 2002 movel %d2,%d0 <== NOT EXECUTED 46344: 4cee 3c0c ffe4 moveml %fp@(-28),%d2-%d3/%a2-%a5 <== NOT EXECUTED 4634a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000456c4 <_POSIX_Keys_Free_memory>: #include void _POSIX_Keys_Free_memory( POSIX_Keys_Control *the_key ) { 456c4: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 456c8: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED #include #include #include #include void _POSIX_Keys_Free_memory( 456cc: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 456d0: 7403 moveq #3,%d2 <== NOT EXECUTED 456d2: 45ea 0018 lea %a2@(24),%a2 <== NOT EXECUTED { uint32_t the_api; for ( the_api = 1; the_api <= OBJECTS_APIS_LAST; the_api++ ) if ( the_key->Values[ the_api ] ) _Workspace_Free( the_key->Values[ the_api ] ); 456d6: 47f9 0004 95f0 lea 495f0 <_Workspace_Free>,%a3 <== NOT EXECUTED ) { uint32_t the_api; for ( the_api = 1; the_api <= OBJECTS_APIS_LAST; the_api++ ) if ( the_key->Values[ the_api ] ) 456dc: 201a movel %a2@+,%d0 <== NOT EXECUTED 456de: 6706 beqs 456e6 <_POSIX_Keys_Free_memory+0x22> <== NOT EXECUTED _Workspace_Free( the_key->Values[ the_api ] ); 456e0: 2f00 movel %d0,%sp@- <== NOT EXECUTED 456e2: 4e93 jsr %a3@ <== NOT EXECUTED 456e4: 588f addql #4,%sp <== NOT EXECUTED 456e6: 5382 subql #1,%d2 <== NOT EXECUTED POSIX_Keys_Control *the_key ) { uint32_t the_api; for ( the_api = 1; the_api <= OBJECTS_APIS_LAST; the_api++ ) 456e8: 66f2 bnes 456dc <_POSIX_Keys_Free_memory+0x18> <== NOT EXECUTED if ( the_key->Values[ the_api ] ) _Workspace_Free( the_key->Values[ the_api ] ); } 456ea: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED 456f0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004c1f4 <_POSIX_Keys_Run_destructors>: 4c1f4: 7218 moveq #24,%d1 */ void _POSIX_Keys_Run_destructors( Thread_Control *thread ) { 4c1f6: 4e56 ffe8 linkw %fp,#-24 Objects_Maximum thread_index = _Objects_Get_index( thread->Object.id ); 4c1fa: 206e 0008 moveal %fp@(8),%a0 */ void _POSIX_Keys_Run_destructors( Thread_Control *thread ) { 4c1fe: 48d7 047c moveml %d2-%d6/%a2,%sp@ Objects_Maximum thread_index = _Objects_Get_index( thread->Object.id ); 4c202: 2428 0008 movel %a0@(8),%d2 4c206: 2002 movel %d2,%d0 4c208: e2a8 lsrl %d1,%d0 4c20a: 123c 0007 moveb #7,%d1 for ( index = 1 ; index <= max ; ++index ) { POSIX_Keys_Control *key = (POSIX_Keys_Control *) _POSIX_Keys_Information.local_table [ index ]; if ( key != NULL && key->destructor != NULL ) { void *value = key->Values [ thread_api ][ thread_index ]; 4c20e: 0282 0000 ffff andil #65535,%d2 4c214: c081 andl %d1,%d0 4c216: e58a lsll #2,%d2 4c218: 2a00 movel %d0,%d5 4c21a: 5a85 addql #5,%d5 Objects_Maximum index = 0; Objects_Maximum max = _POSIX_Keys_Information.maximum; done = true; for ( index = 1 ; index <= max ; ++index ) { 4c21c: 4286 clrl %d6 4c21e: 7601 moveq #1,%d3 */ while ( !done ) { Objects_Maximum index = 0; Objects_Maximum max = _POSIX_Keys_Information.maximum; done = true; 4c220: 7201 moveq #1,%d1 for ( index = 1 ; index <= max ; ++index ) { 4c222: 3c39 0005 e7f6 movew 5e7f6 <_POSIX_Keys_Information+0xe>,%d6 4c228: 602e bras 4c258 <_POSIX_Keys_Run_destructors+0x64> POSIX_Keys_Control *key = (POSIX_Keys_Control *) _POSIX_Keys_Information.local_table [ index ]; 4c22a: 2079 0005 e800 moveal 5e800 <_POSIX_Keys_Information+0x18>,%a0<== NOT EXECUTED Objects_Maximum max = _POSIX_Keys_Information.maximum; done = true; for ( index = 1 ; index <= max ; ++index ) { POSIX_Keys_Control *key = (POSIX_Keys_Control *) 4c230: 2070 4c00 moveal %a0@(00000000,%d4:l:4),%a0 <== NOT EXECUTED _POSIX_Keys_Information.local_table [ index ]; if ( key != NULL && key->destructor != NULL ) { 4c234: 4a88 tstl %a0 <== NOT EXECUTED 4c236: 671e beqs 4c256 <_POSIX_Keys_Run_destructors+0x62><== NOT EXECUTED 4c238: 2268 0010 moveal %a0@(16),%a1 <== NOT EXECUTED 4c23c: 4a89 tstl %a1 <== NOT EXECUTED 4c23e: 6716 beqs 4c256 <_POSIX_Keys_Run_destructors+0x62><== NOT EXECUTED void *value = key->Values [ thread_api ][ thread_index ]; 4c240: 2470 5c00 moveal %a0@(00000000,%d5:l:4),%a2 <== NOT EXECUTED 4c244: d5c2 addal %d2,%a2 <== NOT EXECUTED 4c246: 2052 moveal %a2@,%a0 <== NOT EXECUTED if ( value != NULL ) { 4c248: 4a88 tstl %a0 <== NOT EXECUTED 4c24a: 670a beqs 4c256 <_POSIX_Keys_Run_destructors+0x62><== NOT EXECUTED key->Values [ thread_api ][ thread_index ] = NULL; 4c24c: 4292 clrl %a2@ <== NOT EXECUTED (*key->destructor)( value ); 4c24e: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4c250: 4e91 jsr %a1@ <== NOT EXECUTED 4c252: 588f addql #4,%sp <== NOT EXECUTED done = false; 4c254: 4201 clrb %d1 <== NOT EXECUTED Objects_Maximum index = 0; Objects_Maximum max = _POSIX_Keys_Information.maximum; done = true; for ( index = 1 ; index <= max ; ++index ) { 4c256: 5283 addql #1,%d3 <== NOT EXECUTED 4c258: 4284 clrl %d4 4c25a: 3803 movew %d3,%d4 4c25c: bc84 cmpl %d4,%d6 4c25e: 64ca bccs 4c22a <_POSIX_Keys_Run_destructors+0x36><== NEVER TAKEN * number of iterations. An infinite loop may happen if destructors set * thread specific data. This can be considered dubious. * * Reference: 17.1.1.2 P1003.1c/Draft 10, p. 163, line 99. */ while ( !done ) { 4c260: 4a01 tstb %d1 4c262: 67b8 beqs 4c21c <_POSIX_Keys_Run_destructors+0x28><== NEVER TAKEN done = false; } } } } } 4c264: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2 4c26a: 4e5e unlk %fp ... =============================================================================== 0004fcf0 <_POSIX_Message_queue_Create_support>: const char *name_arg, int pshared, struct mq_attr *attr_ptr, POSIX_Message_queue_Control **message_queue ) { 4fcf0: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4fcf4: 48d7 0c3c moveml %d2-%d5/%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 ); 4fcf8: 4878 00ff pea ff <== NOT EXECUTED const char *name_arg, int pshared, struct mq_attr *attr_ptr, POSIX_Message_queue_Control **message_queue ) { 4fcfc: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED 4fd00: 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 ); 4fd04: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4fd06: 4eb9 0005 4a80 jsr 54a80 <== NOT EXECUTED 4fd0c: 2a00 movel %d0,%d5 <== NOT EXECUTED 4fd0e: 2039 0006 66b4 movel 666b4 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4fd14: 5280 addql #1,%d0 <== NOT EXECUTED 4fd16: 23c0 0006 66b4 movel %d0,666b4 <_Thread_Dispatch_disable_level><== NOT EXECUTED * There is no real basis for the default values. They will work * but were not compared against any existing implementation for * compatibility. See README.mqueue for an example program we * think will print out the defaults. Report anything you find with it. */ if ( attr_ptr == NULL ) { 4fd1c: 508f addql #8,%sp <== NOT EXECUTED 4fd1e: 4a8a tstl %a2 <== NOT EXECUTED 4fd20: 6722 beqs 4fd44 <_POSIX_Message_queue_Create_support+0x54><== NOT EXECUTED attr.mq_maxmsg = 10; attr.mq_msgsize = 16; } else { if ( attr_ptr->mq_maxmsg <= 0 ){ 4fd22: 262a 0004 movel %a2@(4),%d3 <== NOT EXECUTED 4fd26: 6f06 bles 4fd2e <_POSIX_Message_queue_Create_support+0x3e><== NOT EXECUTED _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( EINVAL ); } if ( attr_ptr->mq_msgsize <= 0 ){ 4fd28: 282a 0008 movel %a2@(8),%d4 <== NOT EXECUTED 4fd2c: 6e1a bgts 4fd48 <_POSIX_Message_queue_Create_support+0x58><== NOT EXECUTED _Thread_Enable_dispatch(); 4fd2e: 4eb9 0004 d50a jsr 4d50a <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 4fd34: 7616 moveq #22,%d3 <== NOT EXECUTED 4fd36: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED 4fd3c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4fd3e: 2083 movel %d3,%a0@ <== NOT EXECUTED 4fd40: 6000 00d2 braw 4fe14 <_POSIX_Message_queue_Create_support+0x124><== NOT EXECUTED * compatibility. See README.mqueue for an example program we * think will print out the defaults. Report anything you find with it. */ if ( attr_ptr == NULL ) { attr.mq_maxmsg = 10; attr.mq_msgsize = 16; 4fd44: 7810 moveq #16,%d4 <== NOT EXECUTED * but were not compared against any existing implementation for * compatibility. See README.mqueue for an example program we * think will print out the defaults. Report anything you find with it. */ if ( attr_ptr == NULL ) { attr.mq_maxmsg = 10; 4fd46: 760a moveq #10,%d3 <== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control *_POSIX_Message_queue_Allocate( void ) { return (POSIX_Message_queue_Control *) _Objects_Allocate( &_POSIX_Message_queue_Information ); 4fd48: 4879 0006 695e pea 6695e <_POSIX_Message_queue_Information><== NOT EXECUTED 4fd4e: 4eb9 0004 c5cc jsr 4c5cc <_Objects_Allocate> <== NOT EXECUTED attr = *attr_ptr; } the_mq = _POSIX_Message_queue_Allocate(); if ( !the_mq ) { 4fd54: 588f addql #4,%sp <== NOT EXECUTED 4fd56: 2440 moveal %d0,%a2 <== NOT EXECUTED 4fd58: 4a80 tstl %d0 <== NOT EXECUTED 4fd5a: 6616 bnes 4fd72 <_POSIX_Message_queue_Create_support+0x82><== NOT EXECUTED _Thread_Enable_dispatch(); 4fd5c: 4eb9 0004 d50a jsr 4d50a <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENFILE ); 4fd62: 7417 moveq #23,%d2 <== NOT EXECUTED 4fd64: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED 4fd6a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4fd6c: 2082 movel %d2,%a0@ <== NOT EXECUTED 4fd6e: 6000 00a4 braw 4fe14 <_POSIX_Message_queue_Create_support+0x124><== NOT EXECUTED /* * Make a copy of the user's string for name just in case it was * dynamically constructed. */ name = _Workspace_Allocate(n+1); 4fd72: 5285 addql #1,%d5 <== NOT EXECUTED _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( ENFILE ); } the_mq->process_shared = pshared; the_mq->named = true; 4fd74: 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; 4fd76: 256e 000c 0010 movel %fp@(12),%a2@(16) <== NOT EXECUTED the_mq->named = true; 4fd7c: 1540 0014 moveb %d0,%a2@(20) <== NOT EXECUTED the_mq->open_count = 1; 4fd80: 7001 moveq #1,%d0 <== NOT EXECUTED 4fd82: 2540 0016 movel %d0,%a2@(22) <== NOT EXECUTED the_mq->linked = true; 4fd86: 1540 0015 moveb %d0,%a2@(21) <== NOT EXECUTED /* * Make a copy of the user's string for name just in case it was * dynamically constructed. */ name = _Workspace_Allocate(n+1); 4fd8a: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4fd8c: 4eb9 0004 e5f0 jsr 4e5f0 <_Workspace_Allocate> <== NOT EXECUTED if (!name) { 4fd92: 588f addql #4,%sp <== NOT EXECUTED /* * Make a copy of the user's string for name just in case it was * dynamically constructed. */ name = _Workspace_Allocate(n+1); 4fd94: 2400 movel %d0,%d2 <== NOT EXECUTED if (!name) { 4fd96: 6624 bnes 4fdbc <_POSIX_Message_queue_Create_support+0xcc><== 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 ); 4fd98: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4fd9a: 4879 0006 695e pea 6695e <_POSIX_Message_queue_Information><== NOT EXECUTED 4fda0: 4eb9 0004 c8c0 jsr 4c8c0 <_Objects_Free> <== NOT EXECUTED _POSIX_Message_queue_Free( the_mq ); _Thread_Enable_dispatch(); 4fda6: 4eb9 0004 d50a jsr 4d50a <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOMEM ); 4fdac: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED 4fdb2: 508f addql #8,%sp <== NOT EXECUTED 4fdb4: 720c moveq #12,%d1 <== NOT EXECUTED 4fdb6: 2040 moveal %d0,%a0 <== NOT EXECUTED 4fdb8: 2081 movel %d1,%a0@ <== NOT EXECUTED 4fdba: 6058 bras 4fe14 <_POSIX_Message_queue_Create_support+0x124><== NOT EXECUTED } strncpy( name, name_arg, n+1 ); 4fdbc: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4fdbe: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4fdc0: 47f9 0004 d50a lea 4d50a <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED 4fdc6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4fdc8: 4eb9 0005 49fc jsr 549fc <== NOT EXECUTED * * Joel: Cite POSIX or OpenGroup on above statement so we can determine * if it is a real requirement. */ the_mq_attr = &the_mq->Message_queue.Attributes; the_mq_attr->discipline = CORE_MESSAGE_QUEUE_DISCIPLINES_FIFO; 4fdce: 42aa 005a clrl %a2@(90) <== NOT EXECUTED if ( !_CORE_message_queue_Initialize( 4fdd2: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4fdd4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4fdd6: 486a 005a pea %a2@(90) <== NOT EXECUTED 4fdda: 486a 001a pea %a2@(26) <== NOT EXECUTED 4fdde: 4eb9 0005 0b88 jsr 50b88 <_CORE_message_queue_Initialize> <== NOT EXECUTED 4fde4: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 4fde8: 4a00 tstb %d0 <== NOT EXECUTED 4fdea: 662c bnes 4fe18 <_POSIX_Message_queue_Create_support+0x128><== NOT EXECUTED 4fdec: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4fdee: 4879 0006 695e pea 6695e <_POSIX_Message_queue_Information><== NOT EXECUTED 4fdf4: 4eb9 0004 c8c0 jsr 4c8c0 <_Objects_Free> <== NOT EXECUTED attr.mq_maxmsg, attr.mq_msgsize ) ) { _POSIX_Message_queue_Free( the_mq ); _Workspace_Free(name); 4fdfa: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4fdfc: 4eb9 0004 e60c jsr 4e60c <_Workspace_Free> <== NOT EXECUTED _Thread_Enable_dispatch(); 4fe02: 4e93 jsr %a3@ <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSPC ); 4fe04: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED 4fe0a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4fe0e: 2040 moveal %d0,%a0 <== NOT EXECUTED 4fe10: 701c moveq #28,%d0 <== NOT EXECUTED 4fe12: 2080 movel %d0,%a0@ <== NOT EXECUTED 4fe14: 70ff moveq #-1,%d0 <== NOT EXECUTED 4fe16: 601e bras 4fe36 <_POSIX_Message_queue_Create_support+0x146><== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, const char *name ) { _Objects_Set_local_object( 4fe18: 4280 clrl %d0 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4fe1a: 2079 0006 6976 moveal 66976 <_POSIX_Message_queue_Information+0x18>,%a0<== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, const char *name ) { _Objects_Set_local_object( 4fe20: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4fe24: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) <== NOT EXECUTED &_POSIX_Message_queue_Information, &the_mq->Object, name ); *message_queue = the_mq; 4fe28: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED the_object ); #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES) /* ASSERT: information->is_string */ the_object->name.name_p = name; 4fe2c: 2542 000c movel %d2,%a2@(12) <== NOT EXECUTED 4fe30: 208a movel %a2,%a0@ <== NOT EXECUTED _Thread_Enable_dispatch(); 4fe32: 4e93 jsr %a3@ <== NOT EXECUTED return 0; 4fe34: 4280 clrl %d0 <== NOT EXECUTED } 4fe36: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED 4fe3c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00049964 <_POSIX_Message_queue_Delete>: */ void _POSIX_Message_queue_Delete( POSIX_Message_queue_Control *the_mq ) { 49964: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 49968: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4996a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED if ( !the_mq->linked && !the_mq->open_count ) { 4996e: 4a2a 0015 tstb %a2@(21) <== NOT EXECUTED 49972: 6636 bnes 499aa <_POSIX_Message_queue_Delete+0x46><== NOT EXECUTED 49974: 4aaa 0016 tstl %a2@(22) <== NOT EXECUTED 49978: 6630 bnes 499aa <_POSIX_Message_queue_Delete+0x46><== NOT EXECUTED ); _Workspace_Free( (void *)the_object->name.name_p ); } #endif _Objects_Close( &_POSIX_Message_queue_Information, the_object ); 4997a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4997c: 4879 0006 695e pea 6695e <_POSIX_Message_queue_Information><== NOT EXECUTED 49982: 4eb9 0004 c648 jsr 4c648 <_Objects_Close> <== NOT EXECUTED _CORE_message_queue_Close( 49988: 4878 0005 pea 5 <== NOT EXECUTED 4998c: 42a7 clrl %sp@- <== NOT EXECUTED 4998e: 486a 001a pea %a2@(26) <== NOT EXECUTED 49992: 4eb9 0004 baa8 jsr 4baa8 <_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 ); 49998: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4999a: 4879 0006 695e pea 6695e <_POSIX_Message_queue_Information><== NOT EXECUTED 499a0: 4eb9 0004 c8c0 jsr 4c8c0 <_Objects_Free> <== NOT EXECUTED 499a6: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED ); _POSIX_Message_queue_Free( the_mq ); } } 499aa: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 499ae: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004fe40 <_POSIX_Message_queue_Name_to_id>: */ int _POSIX_Message_queue_Name_to_id( const char *name, Objects_Id *id ) { 4fe40: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4fe44: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4fe46: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED Objects_Name_or_id_lookup_errors status; Objects_Id the_id; if ( !name ) 4fe4a: 4a8a tstl %a2 <== NOT EXECUTED 4fe4c: 673e beqs 4fe8c <_POSIX_Message_queue_Name_to_id+0x4c><== NOT EXECUTED return EINVAL; if ( !name[0] ) 4fe4e: 4a12 tstb %a2@ <== NOT EXECUTED 4fe50: 673a beqs 4fe8c <_POSIX_Message_queue_Name_to_id+0x4c><== NOT EXECUTED return EINVAL; if ( strnlen( name, NAME_MAX ) >= NAME_MAX ) 4fe52: 4878 00ff pea ff <== NOT EXECUTED 4fe56: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4fe58: 4eb9 0005 4a80 jsr 54a80 <== NOT EXECUTED 4fe5e: 508f addql #8,%sp <== NOT EXECUTED 4fe60: 0c80 0000 00fe cmpil #254,%d0 <== NOT EXECUTED 4fe66: 6228 bhis 4fe90 <_POSIX_Message_queue_Name_to_id+0x50><== NOT EXECUTED return ENAMETOOLONG; status = _Objects_Name_to_id_string( 4fe68: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4fe6c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4fe6e: 4879 0006 695e pea 6695e <_POSIX_Message_queue_Information><== NOT EXECUTED 4fe74: 4eb9 0005 1174 jsr 51174 <_Objects_Name_to_id_string> <== NOT EXECUTED &_POSIX_Message_queue_Information, name, &the_id ); *id = the_id; 4fe7a: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL ) 4fe7e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED status = _Objects_Name_to_id_string( &_POSIX_Message_queue_Information, name, &the_id ); *id = the_id; 4fe82: 20ae fffc movel %fp@(-4),%a0@ <== NOT EXECUTED if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL ) 4fe86: 4a80 tstl %d0 <== NOT EXECUTED 4fe88: 660a bnes 4fe94 <_POSIX_Message_queue_Name_to_id+0x54><== NOT EXECUTED 4fe8a: 600a bras 4fe96 <_POSIX_Message_queue_Name_to_id+0x56><== NOT EXECUTED if ( !name ) return EINVAL; if ( !name[0] ) return EINVAL; 4fe8c: 7016 moveq #22,%d0 <== NOT EXECUTED 4fe8e: 6006 bras 4fe96 <_POSIX_Message_queue_Name_to_id+0x56><== NOT EXECUTED if ( strnlen( name, NAME_MAX ) >= NAME_MAX ) return ENAMETOOLONG; 4fe90: 705b moveq #91,%d0 <== NOT EXECUTED 4fe92: 6002 bras 4fe96 <_POSIX_Message_queue_Name_to_id+0x56><== NOT EXECUTED *id = the_id; if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL ) return 0; return ENOENT; 4fe94: 7002 moveq #2,%d0 <== NOT EXECUTED } 4fe96: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4fe9a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00049a2c <_POSIX_Message_queue_Notify_handler>: */ void _POSIX_Message_queue_Notify_handler( void *user_data ) { 49a2c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 49a30: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49a32: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 49a36: 2f02 movel %d2,%sp@- <== NOT EXECUTED POSIX_Message_queue_Control *the_mq; the_mq = user_data; kill( getpid(), the_mq->notification.sigev_signo ); 49a38: 242a 0092 movel %a2@(146),%d2 <== NOT EXECUTED 49a3c: 4eb9 0004 f6c8 jsr 4f6c8 <== NOT EXECUTED 49a42: 2f02 movel %d2,%sp@- <== NOT EXECUTED 49a44: 2f00 movel %d0,%sp@- <== NOT EXECUTED 49a46: 4eb9 0004 fcd8 jsr 4fcd8 <== NOT EXECUTED _CORE_message_queue_Set_notify( &the_mq->Message_queue, NULL, NULL ); } 49a4c: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED CORE_message_queue_Notify_Handler the_handler, void *the_argument ) { the_message_queue->notify_handler = the_handler; the_message_queue->notify_argument = the_argument; 49a50: 508f addql #8,%sp <== NOT EXECUTED CORE_message_queue_Control *the_message_queue, CORE_message_queue_Notify_Handler the_handler, void *the_argument ) { the_message_queue->notify_handler = the_handler; 49a52: 42aa 007a clrl %a2@(122) <== NOT EXECUTED the_message_queue->notify_argument = the_argument; 49a56: 42aa 007e clrl %a2@(126) <== NOT EXECUTED 49a5a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 49a5e: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00049ca0 <_POSIX_Message_queue_Receive_support>: size_t msg_len, unsigned int *msg_prio, bool wait, Watchdog_Interval timeout ) { 49ca0: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 49ca4: 48d7 043c moveml %d2-%d5/%a2,%sp@ <== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd *_POSIX_Message_queue_Get_fd ( mqd_t id, Objects_Locations *location ) { return (POSIX_Message_queue_Control_fd *) _Objects_Get( 49ca8: 486e fffc pea %fp@(-4) <== NOT EXECUTED 49cac: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 49cb0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 49cb2: 4879 0006 6acc pea 66acc <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 49cb8: 162e 001b moveb %fp@(27),%d3 <== NOT EXECUTED 49cbc: 4eb9 0004 ca24 jsr 4ca24 <_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 ) { 49cc2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 49cc6: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 49cca: 6600 00c0 bnew 49d8c <_POSIX_Message_queue_Receive_support+0xec><== NOT EXECUTED case OBJECTS_LOCAL: if ( (the_mq_fd->oflag & O_ACCMODE) == O_WRONLY ) { 49cce: 2040 moveal %d0,%a0 <== NOT EXECUTED 49cd0: 7803 moveq #3,%d4 <== NOT EXECUTED 49cd2: 7a01 moveq #1,%d5 <== NOT EXECUTED 49cd4: 2228 0014 movel %a0@(20),%d1 <== NOT EXECUTED 49cd8: c881 andl %d1,%d4 <== NOT EXECUTED 49cda: ba84 cmpl %d4,%d5 <== NOT EXECUTED 49cdc: 660a bnes 49ce8 <_POSIX_Message_queue_Receive_support+0x48><== NOT EXECUTED _Thread_Enable_dispatch(); 49cde: 4eb9 0004 d50a jsr 4d50a <_Thread_Enable_dispatch> <== NOT EXECUTED 49ce4: 6000 00a6 braw 49d8c <_POSIX_Message_queue_Receive_support+0xec><== NOT EXECUTED rtems_set_errno_and_return_minus_one( EBADF ); } the_mq = the_mq_fd->Queue; 49ce8: 2240 moveal %d0,%a1 <== NOT EXECUTED 49cea: 2069 0010 moveal %a1@(16),%a0 <== NOT EXECUTED if ( msg_len < the_mq->Message_queue.maximum_message_size ) { 49cee: 2028 0066 movel %a0@(102),%d0 <== NOT EXECUTED 49cf2: b0ae 0010 cmpl %fp@(16),%d0 <== NOT EXECUTED 49cf6: 6316 blss 49d0e <_POSIX_Message_queue_Receive_support+0x6e><== NOT EXECUTED _Thread_Enable_dispatch(); 49cf8: 4eb9 0004 d50a jsr 4d50a <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EMSGSIZE ); 49cfe: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED 49d04: 727a moveq #122,%d1 <== NOT EXECUTED 49d06: 2040 moveal %d0,%a0 <== NOT EXECUTED 49d08: 2081 movel %d1,%a0@ <== NOT EXECUTED 49d0a: 6000 008c braw 49d98 <_POSIX_Message_queue_Receive_support+0xf8><== NOT EXECUTED /* * Now if something goes wrong, we return a "length" of -1 * to indicate an error. */ length_out = -1; 49d0e: 70ff moveq #-1,%d0 <== NOT EXECUTED 49d10: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED /* * A timed receive with a bad time will do a poll regardless. */ if ( wait ) 49d14: 4a03 tstb %d3 <== NOT EXECUTED 49d16: 670a beqs 49d22 <_POSIX_Message_queue_Receive_support+0x82><== NOT EXECUTED do_wait = (the_mq_fd->oflag & O_NONBLOCK) ? false : true; 49d18: 0801 000e btst #14,%d1 <== NOT EXECUTED 49d1c: 57c0 seq %d0 <== NOT EXECUTED 49d1e: 4480 negl %d0 <== NOT EXECUTED 49d20: 6002 bras 49d24 <_POSIX_Message_queue_Receive_support+0x84><== NOT EXECUTED length_out = -1; /* * A timed receive with a bad time will do a poll regardless. */ if ( wait ) 49d22: 4200 clrb %d0 <== NOT EXECUTED do_wait = wait; /* * Now perform the actual message receive */ _CORE_message_queue_Seize( 49d24: 2f2e 001c movel %fp@(28),%sp@- <== NOT EXECUTED 49d28: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED 49d2e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 49d30: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 49d34: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 49d38: 2f02 movel %d2,%sp@- <== NOT EXECUTED 49d3a: 4868 001a pea %a0@(26) <== NOT EXECUTED 49d3e: 4eb9 0004 bb44 jsr 4bb44 <_CORE_message_queue_Seize> <== NOT EXECUTED &length_out, do_wait, timeout ); _Thread_Enable_dispatch(); 49d44: 4eb9 0004 d50a jsr 4d50a <_Thread_Enable_dispatch> <== NOT EXECUTED *msg_prio = _POSIX_Message_queue_Priority_from_core(_Thread_Executing->Wait.count); 49d4a: 2079 0006 6b3e moveal 66b3e <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED RTEMS_INLINE_ROUTINE unsigned int _POSIX_Message_queue_Priority_from_core( CORE_message_queue_Submit_types priority ) { /* absolute value without a library dependency */ return ((priority >= 0) ? priority : -priority); 49d50: 2028 0024 movel %a0@(36),%d0 <== NOT EXECUTED 49d54: 6c02 bges 49d58 <_POSIX_Message_queue_Receive_support+0xb8><== NOT EXECUTED 49d56: 4480 negl %d0 <== NOT EXECUTED do_wait, timeout ); _Thread_Enable_dispatch(); *msg_prio = 49d58: 226e 0014 moveal %fp@(20),%a1 <== NOT EXECUTED _POSIX_Message_queue_Priority_from_core(_Thread_Executing->Wait.count); if ( !_Thread_Executing->Wait.return_code ) 49d5c: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED do_wait, timeout ); _Thread_Enable_dispatch(); *msg_prio = 49d60: 2280 movel %d0,%a1@ <== NOT EXECUTED _POSIX_Message_queue_Priority_from_core(_Thread_Executing->Wait.count); if ( !_Thread_Executing->Wait.return_code ) 49d62: 4aa8 0034 tstl %a0@(52) <== NOT EXECUTED 49d66: 6606 bnes 49d6e <_POSIX_Message_queue_Receive_support+0xce><== NOT EXECUTED return length_out; 49d68: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 49d6c: 602c bras 49d9a <_POSIX_Message_queue_Receive_support+0xfa><== NOT EXECUTED rtems_set_errno_and_return_minus_one( 49d6e: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED 49d74: 2079 0006 6b3e moveal 66b3e <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 49d7a: 2440 moveal %d0,%a2 <== NOT EXECUTED 49d7c: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 49d80: 4eb9 0004 9fb4 jsr 49fb4 <_POSIX_Message_queue_Translate_core_message_queue_return_code><== NOT EXECUTED 49d86: 588f addql #4,%sp <== NOT EXECUTED 49d88: 2480 movel %d0,%a2@ <== NOT EXECUTED 49d8a: 600c bras 49d98 <_POSIX_Message_queue_Receive_support+0xf8><== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); 49d8c: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED 49d92: 2040 moveal %d0,%a0 <== NOT EXECUTED 49d94: 7009 moveq #9,%d0 <== NOT EXECUTED 49d96: 2080 movel %d0,%a0@ <== NOT EXECUTED 49d98: 70ff moveq #-1,%d0 <== NOT EXECUTED } 49d9a: 4cee 043c ffe4 moveml %fp@(-28),%d2-%d5/%a2 <== NOT EXECUTED 49da0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00049dc8 <_POSIX_Message_queue_Send_support>: /* * Validate the priority. * XXX - Do not validate msg_prio is not less than 0. */ if ( msg_prio > MQ_PRIO_MAX ) 49dc8: 7020 moveq #32,%d0 <== NOT EXECUTED size_t msg_len, uint32_t msg_prio, bool wait, Watchdog_Interval timeout ) { 49dca: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 49dce: 48d7 043c moveml %d2-%d5/%a2,%sp@ <== NOT EXECUTED 49dd2: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 49dd6: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED 49dda: 182e 001b moveb %fp@(27),%d4 <== NOT EXECUTED /* * Validate the priority. * XXX - Do not validate msg_prio is not less than 0. */ if ( msg_prio > MQ_PRIO_MAX ) 49dde: b083 cmpl %d3,%d0 <== NOT EXECUTED 49de0: 6410 bccs 49df2 <_POSIX_Message_queue_Send_support+0x2a><== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 49de2: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED 49de8: 7216 moveq #22,%d1 <== NOT EXECUTED 49dea: 2040 moveal %d0,%a0 <== NOT EXECUTED 49dec: 2081 movel %d1,%a0@ <== NOT EXECUTED 49dee: 6000 00b2 braw 49ea2 <_POSIX_Message_queue_Send_support+0xda><== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd *_POSIX_Message_queue_Get_fd ( mqd_t id, Objects_Locations *location ) { return (POSIX_Message_queue_Control_fd *) _Objects_Get( 49df2: 486e fffc pea %fp@(-4) <== NOT EXECUTED 49df6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 49df8: 4879 0006 6acc pea 66acc <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 49dfe: 4eb9 0004 ca24 jsr 4ca24 <_Objects_Get> <== NOT EXECUTED the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location ); switch ( location ) { 49e04: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 49e08: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 49e0c: 6600 0088 bnew 49e96 <_POSIX_Message_queue_Send_support+0xce><== NOT EXECUTED case OBJECTS_LOCAL: if ( (the_mq_fd->oflag & O_ACCMODE) == O_RDONLY ) { 49e10: 2240 moveal %d0,%a1 <== NOT EXECUTED 49e12: 7a03 moveq #3,%d5 <== NOT EXECUTED 49e14: 2229 0014 movel %a1@(20),%d1 <== NOT EXECUTED 49e18: ca81 andl %d1,%d5 <== NOT EXECUTED 49e1a: 6608 bnes 49e24 <_POSIX_Message_queue_Send_support+0x5c><== NOT EXECUTED _Thread_Enable_dispatch(); 49e1c: 4eb9 0004 d50a jsr 4d50a <_Thread_Enable_dispatch> <== NOT EXECUTED 49e22: 6072 bras 49e96 <_POSIX_Message_queue_Send_support+0xce><== NOT EXECUTED rtems_set_errno_and_return_minus_one( EBADF ); } the_mq = the_mq_fd->Queue; 49e24: 2240 moveal %d0,%a1 <== NOT EXECUTED 49e26: 2069 0010 moveal %a1@(16),%a0 <== NOT EXECUTED /* * A timed receive with a bad time will do a poll regardless. */ if ( wait ) 49e2a: 4a04 tstb %d4 <== NOT EXECUTED 49e2c: 670a beqs 49e38 <_POSIX_Message_queue_Send_support+0x70><== NOT EXECUTED do_wait = (the_mq_fd->oflag & O_NONBLOCK) ? false : true; 49e2e: 0801 000e btst #14,%d1 <== NOT EXECUTED 49e32: 57c0 seq %d0 <== NOT EXECUTED 49e34: 4480 negl %d0 <== NOT EXECUTED 49e36: 6002 bras 49e3a <_POSIX_Message_queue_Send_support+0x72><== NOT EXECUTED the_mq = the_mq_fd->Queue; /* * A timed receive with a bad time will do a poll regardless. */ if ( wait ) 49e38: 4200 clrb %d0 <== NOT EXECUTED do_wait = wait; /* * Now perform the actual message receive */ msg_status = _CORE_message_queue_Submit( 49e3a: 2f2e 001c movel %fp@(28),%sp@- <== NOT EXECUTED 49e3e: 4483 negl %d3 <== NOT EXECUTED 49e40: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED 49e46: 2f00 movel %d0,%sp@- <== NOT EXECUTED 49e48: 2f03 movel %d3,%sp@- <== NOT EXECUTED 49e4a: 42a7 clrl %sp@- <== NOT EXECUTED 49e4c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 49e4e: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 49e52: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 49e56: 4868 001a pea %a0@(26) <== NOT EXECUTED 49e5a: 4eb9 0004 bc80 jsr 4bc80 <_CORE_message_queue_Submit> <== NOT EXECUTED _POSIX_Message_queue_Priority_to_core( msg_prio ), do_wait, timeout /* no timeout */ ); _Thread_Enable_dispatch(); 49e60: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED do_wait = wait; /* * Now perform the actual message receive */ msg_status = _CORE_message_queue_Submit( 49e64: 2400 movel %d0,%d2 <== NOT EXECUTED _POSIX_Message_queue_Priority_to_core( msg_prio ), do_wait, timeout /* no timeout */ ); _Thread_Enable_dispatch(); 49e66: 4eb9 0004 d50a jsr 4d50a <_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 ) 49e6c: 7007 moveq #7,%d0 <== NOT EXECUTED 49e6e: b082 cmpl %d2,%d0 <== NOT EXECUTED 49e70: 660a bnes 49e7c <_POSIX_Message_queue_Send_support+0xb4><== NOT EXECUTED msg_status = _Thread_Executing->Wait.return_code; 49e72: 2079 0006 6b3e moveal 66b3e <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 49e78: 2428 0034 movel %a0@(52),%d2 <== NOT EXECUTED if ( !msg_status ) 49e7c: 4a82 tstl %d2 <== NOT EXECUTED 49e7e: 6726 beqs 49ea6 <_POSIX_Message_queue_Send_support+0xde><== NOT EXECUTED return msg_status; rtems_set_errno_and_return_minus_one( 49e80: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED 49e86: 2440 moveal %d0,%a2 <== NOT EXECUTED 49e88: 2f02 movel %d2,%sp@- <== NOT EXECUTED 49e8a: 4eb9 0004 9fb4 jsr 49fb4 <_POSIX_Message_queue_Translate_core_message_queue_return_code><== NOT EXECUTED 49e90: 588f addql #4,%sp <== NOT EXECUTED 49e92: 2480 movel %d0,%a2@ <== NOT EXECUTED 49e94: 600c bras 49ea2 <_POSIX_Message_queue_Send_support+0xda><== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); 49e96: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED 49e9c: 2040 moveal %d0,%a0 <== NOT EXECUTED 49e9e: 7009 moveq #9,%d0 <== NOT EXECUTED 49ea0: 2080 movel %d0,%a0@ <== NOT EXECUTED 49ea2: 70ff moveq #-1,%d0 <== NOT EXECUTED 49ea4: 6002 bras 49ea8 <_POSIX_Message_queue_Send_support+0xe0><== NOT EXECUTED if ( msg_status == CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT ) msg_status = _Thread_Executing->Wait.return_code; if ( !msg_status ) return msg_status; 49ea6: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); } 49ea8: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED 49eae: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00049fb4 <_POSIX_Message_queue_Translate_core_message_queue_return_code>: #if defined(RTEMS_DEBUG) if ( the_message_queue_status > CORE_MESSAGE_QUEUE_STATUS_LAST ) return EINVAL; #endif return _POSIX_Message_queue_Return_codes[the_message_queue_status]; } 49fb4: 41f9 0006 3872 lea 63872 <_POSIX_Message_queue_Return_codes>,%a0<== NOT EXECUTED int _POSIX_Message_queue_Translate_core_message_queue_return_code( uint32_t the_message_queue_status ) { 49fba: 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]; } 49fbe: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 49fc2: 4e5e unlk %fp <== NOT EXECUTED 49fc4: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED ... =============================================================================== 0004704c <_POSIX_Mutex_Get>: POSIX_Mutex_Control *_POSIX_Mutex_Get ( pthread_mutex_t *mutex, Objects_Locations *location ) { 4704c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47050: 2f0b movel %a3,%sp@- <== NOT EXECUTED 47052: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED 47056: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47058: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED ___POSIX_Mutex_Get_support_error_check( mutex, location ); 4705c: 4a8a tstl %a2 <== NOT EXECUTED 4705e: 6716 beqs 47076 <_POSIX_Mutex_Get+0x2a> <== NOT EXECUTED ___POSIX_Mutex_Get_support_auto_initialization( mutex, location ); 47060: 70ff moveq #-1,%d0 <== NOT EXECUTED 47062: b092 cmpl %a2@,%d0 <== NOT EXECUTED 47064: 6618 bnes 4707e <_POSIX_Mutex_Get+0x32> <== NOT EXECUTED 47066: 42a7 clrl %sp@- <== NOT EXECUTED 47068: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4706a: 4eb9 0004 713c jsr 4713c <== NOT EXECUTED 47070: 508f addql #8,%sp <== NOT EXECUTED 47072: 4a80 tstl %d0 <== NOT EXECUTED 47074: 6708 beqs 4707e <_POSIX_Mutex_Get+0x32> <== NOT EXECUTED 47076: 7001 moveq #1,%d0 <== NOT EXECUTED 47078: 2680 movel %d0,%a3@ <== NOT EXECUTED 4707a: 4280 clrl %d0 <== NOT EXECUTED 4707c: 6014 bras 47092 <_POSIX_Mutex_Get+0x46> <== NOT EXECUTED return (POSIX_Mutex_Control *) _Objects_Get( &_POSIX_Mutex_Information, (Objects_Id) *mutex, location ); 4707e: 2f0b movel %a3,%sp@- <== NOT EXECUTED 47080: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 47082: 4879 0006 32dc pea 632dc <_POSIX_Mutex_Information> <== NOT EXECUTED 47088: 4eb9 0004 9944 jsr 49944 <_Objects_Get> <== NOT EXECUTED { ___POSIX_Mutex_Get_support_error_check( mutex, location ); ___POSIX_Mutex_Get_support_auto_initialization( mutex, location ); return (POSIX_Mutex_Control *) 4708e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED _Objects_Get( &_POSIX_Mutex_Information, (Objects_Id) *mutex, location ); } 47092: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 47096: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 4709a: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004709e <_POSIX_Mutex_Get_interrupt_disable>: POSIX_Mutex_Control *_POSIX_Mutex_Get_interrupt_disable ( pthread_mutex_t *mutex, Objects_Locations *location, ISR_Level *level ) { 4709e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 470a2: 2f0b movel %a3,%sp@- <== NOT EXECUTED 470a4: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED 470a8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 470aa: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED ___POSIX_Mutex_Get_support_error_check( mutex, location ); 470ae: 4a8a tstl %a2 <== NOT EXECUTED 470b0: 6716 beqs 470c8 <_POSIX_Mutex_Get_interrupt_disable+0x2a><== NOT EXECUTED ___POSIX_Mutex_Get_support_auto_initialization( mutex, location ); 470b2: 70ff moveq #-1,%d0 <== NOT EXECUTED 470b4: b092 cmpl %a2@,%d0 <== NOT EXECUTED 470b6: 6618 bnes 470d0 <_POSIX_Mutex_Get_interrupt_disable+0x32><== NOT EXECUTED 470b8: 42a7 clrl %sp@- <== NOT EXECUTED 470ba: 2f0a movel %a2,%sp@- <== NOT EXECUTED 470bc: 4eb9 0004 713c jsr 4713c <== NOT EXECUTED 470c2: 508f addql #8,%sp <== NOT EXECUTED 470c4: 4a80 tstl %d0 <== NOT EXECUTED 470c6: 6708 beqs 470d0 <_POSIX_Mutex_Get_interrupt_disable+0x32><== NOT EXECUTED 470c8: 7201 moveq #1,%d1 <== NOT EXECUTED 470ca: 4280 clrl %d0 <== NOT EXECUTED 470cc: 2681 movel %d1,%a3@ <== NOT EXECUTED 470ce: 6018 bras 470e8 <_POSIX_Mutex_Get_interrupt_disable+0x4a><== NOT EXECUTED return (POSIX_Mutex_Control *) _Objects_Get_isr_disable( 470d0: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 470d4: 2f0b movel %a3,%sp@- <== NOT EXECUTED 470d6: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 470d8: 4879 0006 32dc pea 632dc <_POSIX_Mutex_Information> <== NOT EXECUTED 470de: 4eb9 0004 98ec jsr 498ec <_Objects_Get_isr_disable> <== NOT EXECUTED 470e4: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED &_POSIX_Mutex_Information, (Objects_Id) *mutex, location, level ); } 470e8: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 470ec: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 470f0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004726c <_POSIX_Mutex_Lock_support>: int _POSIX_Mutex_Lock_support( pthread_mutex_t *mutex, bool blocking, Watchdog_Interval timeout ) { 4726c: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 47270: 2f02 movel %d2,%sp@- <== NOT EXECUTED register POSIX_Mutex_Control *the_mutex; Objects_Locations location; ISR_Level level; the_mutex = _POSIX_Mutex_Get_interrupt_disable( mutex, &location, &level ); 47272: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 47276: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4727a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED int _POSIX_Mutex_Lock_support( pthread_mutex_t *mutex, bool blocking, Watchdog_Interval timeout ) { 4727e: 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 ); 47282: 4eb9 0004 709e jsr 4709e <_POSIX_Mutex_Get_interrupt_disable><== NOT EXECUTED switch ( location ) { 47288: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4728c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 47290: 6636 bnes 472c8 <_POSIX_Mutex_Lock_support+0x5c> <== NOT EXECUTED case OBJECTS_LOCAL: _CORE_mutex_Seize( 47292: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED 47296: 2040 moveal %d0,%a0 <== NOT EXECUTED 47298: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4729c: 0282 0000 00ff andil #255,%d2 <== NOT EXECUTED 472a2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 472a4: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 472a8: 4868 0014 pea %a0@(20) <== NOT EXECUTED 472ac: 4eb9 0004 8d7c jsr 48d7c <_CORE_mutex_Seize> <== NOT EXECUTED blocking, timeout, level ); return _POSIX_Mutex_Translate_core_mutex_return_code( (CORE_mutex_Status) _Thread_Executing->Wait.return_code 472b2: 2079 0006 3482 moveal 63482 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED the_mutex->Object.id, blocking, timeout, level ); return _POSIX_Mutex_Translate_core_mutex_return_code( 472b8: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 472bc: 4eb9 0004 73cc jsr 473cc <_POSIX_Mutex_Translate_core_mutex_return_code><== NOT EXECUTED 472c2: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 472c6: 6002 bras 472ca <_POSIX_Mutex_Lock_support+0x5e> <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 472c8: 7016 moveq #22,%d0 <== NOT EXECUTED } 472ca: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 472ce: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000473cc <_POSIX_Mutex_Translate_core_mutex_return_code>: #if defined(RTEMS_DEBUG) if ( the_mutex_status > CORE_MUTEX_STATUS_LAST ) return EINVAL; #endif return _POSIX_Mutex_Return_codes[the_mutex_status]; } 473cc: 41f9 0006 0688 lea 60688 <_POSIX_Mutex_Return_codes>,%a0 <== NOT EXECUTED int _POSIX_Mutex_Translate_core_mutex_return_code( CORE_mutex_Status the_mutex_status ) { 473d2: 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]; } 473d6: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 473da: 4e5e unlk %fp <== NOT EXECUTED 473dc: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED ... =============================================================================== 0004b26c <_POSIX_Priority_Is_valid>: #include bool _POSIX_Priority_Is_valid( int priority ) { 4b26c: 4e56 0000 linkw %fp,#0 4b270: 202e 0008 movel %fp@(8),%d0 return ((priority >= POSIX_SCHEDULER_MINIMUM_PRIORITY) && 4b274: 6f12 bles 4b288 <_POSIX_Priority_Is_valid+0x1c> <== NEVER TAKEN (priority <= POSIX_SCHEDULER_MAXIMUM_PRIORITY)); 4b276: 4281 clrl %d1 4b278: 1239 0005 dbf6 moveb 5dbf6 ,%d1 #endif #include #include bool _POSIX_Priority_Is_valid( 4b27e: b081 cmpl %d1,%d0 4b280: 5dc0 slt %d0 4b282: 49c0 extbl %d0 4b284: 4480 negl %d0 4b286: 6002 bras 4b28a <_POSIX_Priority_Is_valid+0x1e> int priority ) { return ((priority >= POSIX_SCHEDULER_MINIMUM_PRIORITY) && 4b288: 4280 clrl %d0 (priority <= POSIX_SCHEDULER_MAXIMUM_PRIORITY)); } 4b28a: 4e5e unlk %fp ... =============================================================================== 0004674c <_POSIX_RWLock_Translate_core_RWLock_return_code>: #if defined(RTEMS_DEBUG) if ( the_rwlock_status > CORE_RWLOCK_STATUS_LAST ) return EINVAL; #endif return _POSIX_RWLock_Return_codes[the_rwlock_status]; } 4674c: 41f9 0005 e898 lea 5e898 <_POSIX_RWLock_Return_codes>,%a0 <== NOT EXECUTED int _POSIX_RWLock_Translate_core_RWLock_return_code( CORE_RWLock_Status the_rwlock_status ) { 46752: 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]; } 46756: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4675a: 4e5e unlk %fp <== NOT EXECUTED 4675c: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED ... =============================================================================== 0004de78 <_POSIX_Semaphore_Create_support>: const char *name, int pshared, unsigned int value, POSIX_Semaphore_Control **the_sem ) { 4de78: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4de7c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4de7e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4de80: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED POSIX_Semaphore_Control *the_semaphore; CORE_semaphore_Attributes *the_sem_attr; char *name_p = (char *)name; /* Sharing semaphores among processes is not currently supported */ if (pshared != 0) 4de84: 4aae 000c tstl %fp@(12) <== NOT EXECUTED 4de88: 670e beqs 4de98 <_POSIX_Semaphore_Create_support+0x20><== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 4de8a: 4eb9 0005 07b8 jsr 507b8 <__errno> <== NOT EXECUTED 4de90: 7458 moveq #88,%d2 <== NOT EXECUTED 4de92: 2040 moveal %d0,%a0 <== NOT EXECUTED 4de94: 2082 movel %d2,%a0@ <== NOT EXECUTED 4de96: 6026 bras 4debe <_POSIX_Semaphore_Create_support+0x46><== NOT EXECUTED if ( name ) { 4de98: 4a82 tstl %d2 <== NOT EXECUTED 4de9a: 6728 beqs 4dec4 <_POSIX_Semaphore_Create_support+0x4c><== NOT EXECUTED if ( strnlen( name, NAME_MAX ) >= NAME_MAX ) 4de9c: 4878 00ff pea ff <== NOT EXECUTED 4dea0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4dea2: 4eb9 0005 1e10 jsr 51e10 <== NOT EXECUTED 4dea8: 508f addql #8,%sp <== NOT EXECUTED 4deaa: 0c80 0000 00fe cmpil #254,%d0 <== NOT EXECUTED 4deb0: 6312 blss 4dec4 <_POSIX_Semaphore_Create_support+0x4c><== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENAMETOOLONG ); 4deb2: 4eb9 0005 07b8 jsr 507b8 <__errno> <== NOT EXECUTED 4deb8: 725b moveq #91,%d1 <== NOT EXECUTED 4deba: 2040 moveal %d0,%a0 <== NOT EXECUTED 4debc: 2081 movel %d1,%a0@ <== NOT EXECUTED 4debe: 70ff moveq #-1,%d0 <== NOT EXECUTED 4dec0: 6000 009e braw 4df60 <_POSIX_Semaphore_Create_support+0xe8><== NOT EXECUTED 4dec4: 2039 0006 33f4 movel 633f4 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4deca: 5280 addql #1,%d0 <== NOT EXECUTED 4decc: 23c0 0006 33f4 movel %d0,633f4 <_Thread_Dispatch_disable_level><== NOT EXECUTED */ RTEMS_INLINE_ROUTINE POSIX_Semaphore_Control *_POSIX_Semaphore_Allocate( void ) { return (POSIX_Semaphore_Control *) _Objects_Allocate( &_POSIX_Semaphore_Information ); 4ded2: 4879 0006 362a pea 6362a <_POSIX_Semaphore_Information> <== NOT EXECUTED 4ded8: 4eb9 0004 9ea4 jsr 49ea4 <_Objects_Allocate> <== NOT EXECUTED _Thread_Disable_dispatch(); the_semaphore = _POSIX_Semaphore_Allocate(); if ( !the_semaphore ) { 4dede: 588f addql #4,%sp <== NOT EXECUTED 4dee0: 2440 moveal %d0,%a2 <== NOT EXECUTED 4dee2: 4a80 tstl %d0 <== NOT EXECUTED 4dee4: 6614 bnes 4defa <_POSIX_Semaphore_Create_support+0x82><== NOT EXECUTED _Thread_Enable_dispatch(); 4dee6: 4eb9 0004 ade2 jsr 4ade2 <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSPC ); 4deec: 4eb9 0005 07b8 jsr 507b8 <__errno> <== NOT EXECUTED 4def2: 2040 moveal %d0,%a0 <== NOT EXECUTED 4def4: 701c moveq #28,%d0 <== NOT EXECUTED 4def6: 2080 movel %d0,%a0@ <== NOT EXECUTED 4def8: 60c4 bras 4debe <_POSIX_Semaphore_Create_support+0x46><== NOT EXECUTED } the_semaphore->process_shared = pshared; 4defa: 42aa 0010 clrl %a2@(16) <== NOT EXECUTED if ( name ) { 4defe: 4a82 tstl %d2 <== NOT EXECUTED 4df00: 670e beqs 4df10 <_POSIX_Semaphore_Create_support+0x98><== NOT EXECUTED the_semaphore->named = true; 4df02: 7001 moveq #1,%d0 <== NOT EXECUTED 4df04: 1540 0014 moveb %d0,%a2@(20) <== NOT EXECUTED the_semaphore->open_count = 1; 4df08: 7001 moveq #1,%d0 <== NOT EXECUTED 4df0a: 2540 0016 movel %d0,%a2@(22) <== NOT EXECUTED 4df0e: 600a bras 4df1a <_POSIX_Semaphore_Create_support+0xa2><== NOT EXECUTED the_semaphore->linked = true; } else { the_semaphore->named = false; the_semaphore->open_count = 0; 4df10: 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; 4df14: 4200 clrb %d0 <== NOT EXECUTED 4df16: 1540 0014 moveb %d0,%a2@(20) <== NOT EXECUTED * blocking tasks on this semaphore should be. It could somehow * be derived from the current scheduling policy. One * thing is certain, no matter what we decide, it won't be * the same as all other POSIX implementations. :) */ the_sem_attr->discipline = CORE_SEMAPHORE_DISCIPLINES_FIFO; 4df1a: 42aa 005e clrl %a2@(94) <== NOT EXECUTED the_semaphore->open_count = 1; the_semaphore->linked = true; } else { the_semaphore->named = false; the_semaphore->open_count = 0; the_semaphore->linked = false; 4df1e: 1540 0015 moveb %d0,%a2@(21) <== NOT EXECUTED the_sem_attr->discipline = CORE_SEMAPHORE_DISCIPLINES_FIFO; /* * This effectively disables limit checking. */ the_sem_attr->maximum_count = 0xFFFFFFFF; 4df22: 70ff moveq #-1,%d0 <== NOT EXECUTED 4df24: 2540 005a movel %d0,%a2@(90) <== NOT EXECUTED _CORE_semaphore_Initialize( &the_semaphore->Semaphore, the_sem_attr, value ); 4df28: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4df2c: 486a 005a pea %a2@(90) <== NOT EXECUTED 4df30: 486a 001a pea %a2@(26) <== NOT EXECUTED 4df34: 4eb9 0004 9930 jsr 49930 <_CORE_semaphore_Initialize> <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4df3a: 2079 0006 3642 moveal 63642 <_POSIX_Semaphore_Information+0x18>,%a0<== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, const char *name ) { _Objects_Set_local_object( 4df40: 4280 clrl %d0 <== NOT EXECUTED 4df42: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4df46: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) <== NOT EXECUTED &_POSIX_Semaphore_Information, &the_semaphore->Object, name_p ); *the_sem = the_semaphore; 4df4a: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED the_object ); #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES) /* ASSERT: information->is_string */ the_object->name.name_p = name; 4df4e: 2542 000c movel %d2,%a2@(12) <== NOT EXECUTED 4df52: 208a movel %a2,%a0@ <== NOT EXECUTED _Thread_Enable_dispatch(); 4df54: 4eb9 0004 ade2 jsr 4ade2 <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 4df5a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4df5e: 4280 clrl %d0 <== NOT EXECUTED } 4df60: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4df64: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4df68: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004df6c <_POSIX_Semaphore_Delete>: */ void _POSIX_Semaphore_Delete( POSIX_Semaphore_Control *the_semaphore ) { 4df6c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4df70: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4df72: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED if ( !the_semaphore->linked && !the_semaphore->open_count ) { 4df76: 4a2a 0015 tstb %a2@(21) <== NOT EXECUTED 4df7a: 6636 bnes 4dfb2 <_POSIX_Semaphore_Delete+0x46> <== NOT EXECUTED 4df7c: 4aaa 0016 tstl %a2@(22) <== NOT EXECUTED 4df80: 6630 bnes 4dfb2 <_POSIX_Semaphore_Delete+0x46> <== NOT EXECUTED _Objects_Close( &_POSIX_Semaphore_Information, &the_semaphore->Object ); 4df82: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4df84: 4879 0006 362a pea 6362a <_POSIX_Semaphore_Information> <== NOT EXECUTED 4df8a: 4eb9 0004 9f20 jsr 49f20 <_Objects_Close> <== NOT EXECUTED _CORE_semaphore_Flush( 4df90: 4878 ffff pea ffffffff <== NOT EXECUTED 4df94: 42a7 clrl %sp@- <== NOT EXECUTED 4df96: 486a 001a pea %a2@(26) <== NOT EXECUTED 4df9a: 4eb9 0004 9924 jsr 49924 <_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 ); 4dfa0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4dfa2: 4879 0006 362a pea 6362a <_POSIX_Semaphore_Information> <== NOT EXECUTED 4dfa8: 4eb9 0004 a198 jsr 4a198 <_Objects_Free> <== NOT EXECUTED 4dfae: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED -1 ); _POSIX_Semaphore_Free( the_semaphore ); } } 4dfb2: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4dfb6: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004dfbc <_POSIX_Semaphore_Name_to_id>: int _POSIX_Semaphore_Name_to_id( const char *name, sem_t *id ) { 4dfbc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4dfc0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED Objects_Name_or_id_lookup_errors status; Objects_Id the_id; if ( !name ) 4dfc4: 4a88 tstl %a0 <== NOT EXECUTED 4dfc6: 6728 beqs 4dff0 <_POSIX_Semaphore_Name_to_id+0x34><== NOT EXECUTED return EINVAL; if ( !name[0] ) 4dfc8: 4a10 tstb %a0@ <== NOT EXECUTED 4dfca: 6724 beqs 4dff0 <_POSIX_Semaphore_Name_to_id+0x34><== NOT EXECUTED return EINVAL; status = _Objects_Name_to_id_string( 4dfcc: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4dfd0: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4dfd2: 4879 0006 362a pea 6362a <_POSIX_Semaphore_Information> <== NOT EXECUTED 4dfd8: 4eb9 0004 eb28 jsr 4eb28 <_Objects_Name_to_id_string> <== NOT EXECUTED &_POSIX_Semaphore_Information, name, &the_id ); *id = the_id; 4dfde: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL ) 4dfe2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED status = _Objects_Name_to_id_string( &_POSIX_Semaphore_Information, name, &the_id ); *id = the_id; 4dfe6: 20ae fffc movel %fp@(-4),%a0@ <== NOT EXECUTED if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL ) 4dfea: 4a80 tstl %d0 <== NOT EXECUTED 4dfec: 6606 bnes 4dff4 <_POSIX_Semaphore_Name_to_id+0x38><== NOT EXECUTED 4dfee: 6006 bras 4dff6 <_POSIX_Semaphore_Name_to_id+0x3a><== NOT EXECUTED if ( !name ) return EINVAL; if ( !name[0] ) return EINVAL; 4dff0: 7016 moveq #22,%d0 <== NOT EXECUTED 4dff2: 6002 bras 4dff6 <_POSIX_Semaphore_Name_to_id+0x3a><== NOT EXECUTED *id = the_id; if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL ) return 0; return ENOENT; 4dff4: 7002 moveq #2,%d0 <== NOT EXECUTED } 4dff6: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00050320 <_POSIX_Semaphore_Translate_core_semaphore_return_code>: #if defined(RTEMS_DEBUG) if ( the_semaphore_status > CORE_SEMAPHORE_STATUS_LAST ) return EINVAL; #endif return _POSIX_Semaphore_Return_codes[the_semaphore_status]; } 50320: 41f9 0006 0f0a lea 60f0a <_POSIX_Semaphore_Return_codes>,%a0<== NOT EXECUTED int _POSIX_Semaphore_Translate_core_semaphore_return_code( CORE_semaphore_Status the_semaphore_status ) { 50326: 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]; } 5032a: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 5032e: 4e5e unlk %fp <== NOT EXECUTED 50330: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED ... =============================================================================== 0004e030 <_POSIX_Semaphore_Wait_support>: int _POSIX_Semaphore_Wait_support( sem_t *sem, bool blocking, Watchdog_Interval timeout ) { 4e030: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED sem_t *id, Objects_Locations *location ) { return (POSIX_Semaphore_Control *) _Objects_Get( &_POSIX_Semaphore_Information, (Objects_Id)*id, location ); 4e034: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4e038: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4e03a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4e03c: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4e040: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4e042: 4879 0006 362a pea 6362a <_POSIX_Semaphore_Information> <== NOT EXECUTED 4e048: 142e 000f moveb %fp@(15),%d2 <== NOT EXECUTED 4e04c: 4eb9 0004 a2fc jsr 4a2fc <_Objects_Get> <== NOT EXECUTED POSIX_Semaphore_Control *the_semaphore; Objects_Locations location; the_semaphore = _POSIX_Semaphore_Get( sem, &location ); switch ( location ) { 4e052: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4e056: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4e05a: 6650 bnes 4e0ac <_POSIX_Semaphore_Wait_support+0x7c><== NOT EXECUTED case OBJECTS_LOCAL: _CORE_semaphore_Seize( 4e05c: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4e060: 2040 moveal %d0,%a0 <== NOT EXECUTED 4e062: 0282 0000 00ff andil #255,%d2 <== NOT EXECUTED 4e068: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4e06a: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 4e06e: 4868 001a pea %a0@(26) <== NOT EXECUTED 4e072: 4eb9 0004 e684 jsr 4e684 <_CORE_semaphore_Seize> <== NOT EXECUTED &the_semaphore->Semaphore, the_semaphore->Object.id, blocking, timeout ); _Thread_Enable_dispatch(); 4e078: 4eb9 0004 ade2 jsr 4ade2 <_Thread_Enable_dispatch> <== NOT EXECUTED if ( !_Thread_Executing->Wait.return_code ) 4e07e: 2079 0006 387e moveal 6387e <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 4e084: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4e088: 4aa8 0034 tstl %a0@(52) <== NOT EXECUTED 4e08c: 672e beqs 4e0bc <_POSIX_Semaphore_Wait_support+0x8c><== NOT EXECUTED return 0; rtems_set_errno_and_return_minus_one( 4e08e: 4eb9 0005 07b8 jsr 507b8 <__errno> <== NOT EXECUTED 4e094: 2079 0006 387e moveal 6387e <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 4e09a: 2440 moveal %d0,%a2 <== NOT EXECUTED 4e09c: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 4e0a0: 4eb9 0005 0320 jsr 50320 <_POSIX_Semaphore_Translate_core_semaphore_return_code><== NOT EXECUTED 4e0a6: 588f addql #4,%sp <== NOT EXECUTED 4e0a8: 2480 movel %d0,%a2@ <== NOT EXECUTED 4e0aa: 600c bras 4e0b8 <_POSIX_Semaphore_Wait_support+0x88><== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 4e0ac: 4eb9 0005 07b8 jsr 507b8 <__errno> <== NOT EXECUTED 4e0b2: 2040 moveal %d0,%a0 <== NOT EXECUTED 4e0b4: 7016 moveq #22,%d0 <== NOT EXECUTED 4e0b6: 2080 movel %d0,%a0@ <== NOT EXECUTED 4e0b8: 70ff moveq #-1,%d0 <== NOT EXECUTED 4e0ba: 6002 bras 4e0be <_POSIX_Semaphore_Wait_support+0x8e><== NOT EXECUTED timeout ); _Thread_Enable_dispatch(); if ( !_Thread_Executing->Wait.return_code ) return 0; 4e0bc: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); } 4e0be: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 4e0c2: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4e0c6: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00045840 <_POSIX_Spinlock_Translate_core_spinlock_return_code>: #if defined(RTEMS_DEBUG) if ( the_spinlock_status > CORE_SPINLOCK_STATUS_LAST ) return EINVAL; #endif return _POSIX_Spinlock_Return_codes[the_spinlock_status]; } 45840: 41f9 0005 cc18 lea 5cc18 <_POSIX_Spinlock_Return_codes>,%a0<== NOT EXECUTED int _POSIX_Spinlock_Translate_core_spinlock_return_code( CORE_spinlock_Status the_spinlock_status ) { 45846: 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]; } 4584a: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4584e: 4e5e unlk %fp <== NOT EXECUTED 45850: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED ... =============================================================================== 0004a040 <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch>: #include void _POSIX_Thread_Evaluate_cancellation_and_enable_dispatch( Thread_Control *the_thread ) { 4a040: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a044: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED POSIX_API_Control *thread_support; thread_support = the_thread->API_Extensions[ THREAD_API_POSIX ]; 4a048: 2069 0102 moveal %a1@(258),%a0 <== NOT EXECUTED if ( thread_support->cancelability_state == PTHREAD_CANCEL_ENABLE && 4a04c: 4aa8 00d8 tstl %a0@(216) <== NOT EXECUTED 4a050: 662e bnes 4a080 <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch+0x40><== NOT EXECUTED 4a052: 7001 moveq #1,%d0 <== NOT EXECUTED 4a054: b0a8 00dc cmpl %a0@(220),%d0 <== NOT EXECUTED 4a058: 6626 bnes 4a080 <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch+0x40><== NOT EXECUTED thread_support->cancelability_type == PTHREAD_CANCEL_ASYNCHRONOUS && 4a05a: 4aa8 00e0 tstl %a0@(224) <== NOT EXECUTED 4a05e: 6720 beqs 4a080 <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch+0x40><== NOT EXECUTED thread_support->cancelation_requested ) { _Thread_Unnest_dispatch(); _POSIX_Thread_Exit( the_thread, PTHREAD_CANCELED ); 4a060: 4878 ffff pea ffffffff <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void ) { RTEMS_COMPILER_MEMORY_BARRIER(); _Thread_Dispatch_disable_level -= 1; 4a064: 2039 0005 eb0c movel 5eb0c <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4a06a: 5380 subql #1,%d0 <== NOT EXECUTED 4a06c: 2f09 movel %a1,%sp@- <== NOT EXECUTED 4a06e: 23c0 0005 eb0c movel %d0,5eb0c <_Thread_Dispatch_disable_level><== NOT EXECUTED 4a074: 4eb9 0004 a818 jsr 4a818 <_POSIX_Thread_Exit> <== NOT EXECUTED 4a07a: 508f addql #8,%sp <== NOT EXECUTED } else _Thread_Enable_dispatch(); } 4a07c: 4e5e unlk %fp <== NOT EXECUTED 4a07e: 4e75 rts <== NOT EXECUTED 4a080: 4e5e unlk %fp <== NOT EXECUTED thread_support->cancelability_type == PTHREAD_CANCEL_ASYNCHRONOUS && thread_support->cancelation_requested ) { _Thread_Unnest_dispatch(); _POSIX_Thread_Exit( the_thread, PTHREAD_CANCELED ); } else _Thread_Enable_dispatch(); 4a082: 4ef9 0004 7abe jmp 47abe <_Thread_Enable_dispatch> <== NOT EXECUTED =============================================================================== 0004c440 <_POSIX_Thread_Exit>: void _POSIX_Thread_Exit( Thread_Control *the_thread, void *value_ptr ) { 4c440: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4c444: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 4c448: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED Objects_Information *the_information; the_information = _Objects_Get_information_id( the_thread->Object.id ); 4c44c: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED void _POSIX_Thread_Exit( Thread_Control *the_thread, void *value_ptr ) { 4c450: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED Objects_Information *the_information; the_information = _Objects_Get_information_id( the_thread->Object.id ); 4c454: 4eb9 0004 6be0 jsr 46be0 <_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(); 4c45a: 2f39 0005 e538 movel 5e538 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED void *value_ptr ) { Objects_Information *the_information; the_information = _Objects_Get_information_id( the_thread->Object.id ); 4c460: 2600 movel %d0,%d3 <== NOT EXECUTED * are ready to be switched out. Otherwise, an ISR could * occur and preempt us out while we still hold the * allocator mutex. */ _RTEMS_Lock_allocator(); 4c462: 4eb9 0004 5f20 jsr 45f20 <_API_Mutex_Lock> <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 4c468: 2039 0005 e478 movel 5e478 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4c46e: 5280 addql #1,%d0 <== NOT EXECUTED 4c470: 23c0 0005 e478 movel %d0,5e478 <_Thread_Dispatch_disable_level><== NOT EXECUTED _Thread_Disable_dispatch(); the_thread->Wait.return_argument = value_ptr; 4c476: 2542 0028 movel %d2,%a2@(40) <== NOT EXECUTED _Thread_Close( the_information, the_thread ); 4c47a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c47c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4c47e: 4eb9 0004 748c jsr 4748c <_Thread_Close> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _POSIX_Threads_Free ( Thread_Control *the_pthread ) { _Objects_Free( &_POSIX_Threads_Information, &the_pthread->Object ); 4c484: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c486: 4879 0005 e63a pea 5e63a <_POSIX_Threads_Information> <== NOT EXECUTED 4c48c: 4eb9 0004 6b5c jsr 46b5c <_Objects_Free> <== NOT EXECUTED _POSIX_Threads_Free( the_thread ); _RTEMS_Unlock_allocator(); 4c492: 2f39 0005 e538 movel 5e538 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4c498: 4eb9 0004 5f80 jsr 45f80 <_API_Mutex_Unlock> <== NOT EXECUTED _Thread_Enable_dispatch(); 4c49e: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED } 4c4a2: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 4c4a8: 4e5e unlk %fp <== NOT EXECUTED _Thread_Close( the_information, the_thread ); _POSIX_Threads_Free( the_thread ); _RTEMS_Unlock_allocator(); _Thread_Enable_dispatch(); 4c4aa: 4ef9 0004 779a jmp 4779a <_Thread_Enable_dispatch> <== NOT EXECUTED =============================================================================== 0004b290 <_POSIX_Thread_Translate_sched_param>: int policy, struct sched_param *param, Thread_CPU_budget_algorithms *budget_algorithm, Thread_CPU_budget_algorithm_callout *budget_callout ) { 4b290: 4e56 ffec linkw %fp,#-20 4b294: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ 4b298: 246e 000c moveal %fp@(12),%a2 if ( !_POSIX_Priority_Is_valid( param->sched_priority ) ) 4b29c: 2f12 movel %a2@,%sp@- int policy, struct sched_param *param, Thread_CPU_budget_algorithms *budget_algorithm, Thread_CPU_budget_algorithm_callout *budget_callout ) { 4b29e: 242e 0008 movel %fp@(8),%d2 4b2a2: 266e 0010 moveal %fp@(16),%a3 4b2a6: 286e 0014 moveal %fp@(20),%a4 if ( !_POSIX_Priority_Is_valid( param->sched_priority ) ) 4b2aa: 4eb9 0004 b26c jsr 4b26c <_POSIX_Priority_Is_valid> 4b2b0: 588f addql #4,%sp 4b2b2: 4a00 tstb %d0 4b2b4: 6778 beqs 4b32e <_POSIX_Thread_Translate_sched_param+0x9e><== NEVER TAKEN return EINVAL; *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE; 4b2b6: 4293 clrl %a3@ *budget_callout = NULL; 4b2b8: 4294 clrl %a4@ if ( policy == SCHED_OTHER ) { 4b2ba: 4a82 tstl %d2 4b2bc: 6606 bnes 4b2c4 <_POSIX_Thread_Translate_sched_param+0x34><== ALWAYS TAKEN *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE; 4b2be: 7201 moveq #1,%d1 <== NOT EXECUTED 4b2c0: 2681 movel %d1,%a3@ <== NOT EXECUTED 4b2c2: 6066 bras 4b32a <_POSIX_Thread_Translate_sched_param+0x9a><== NOT EXECUTED return 0; } if ( policy == SCHED_FIFO ) { 4b2c4: 7001 moveq #1,%d0 4b2c6: b082 cmpl %d2,%d0 4b2c8: 6760 beqs 4b32a <_POSIX_Thread_Translate_sched_param+0x9a><== ALWAYS TAKEN *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE; return 0; } if ( policy == SCHED_RR ) { 4b2ca: 103c 0002 moveb #2,%d0 4b2ce: b082 cmpl %d2,%d0 4b2d0: 6606 bnes 4b2d8 <_POSIX_Thread_Translate_sched_param+0x48><== NOT EXECUTED *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE; 4b2d2: 2680 movel %d0,%a3@ <== NOT EXECUTED return 0; 4b2d4: 4200 clrb %d0 <== NOT EXECUTED 4b2d6: 6058 bras 4b330 <_POSIX_Thread_Translate_sched_param+0xa0><== NOT EXECUTED } if ( policy == SCHED_SPORADIC ) { 4b2d8: 7004 moveq #4,%d0 <== NOT EXECUTED 4b2da: b082 cmpl %d2,%d0 <== NOT EXECUTED 4b2dc: 6650 bnes 4b32e <_POSIX_Thread_Translate_sched_param+0x9e><== NOT EXECUTED if ( (param->sched_ss_repl_period.tv_sec == 0) && 4b2de: 4aaa 0008 tstl %a2@(8) <== NOT EXECUTED 4b2e2: 6606 bnes 4b2ea <_POSIX_Thread_Translate_sched_param+0x5a><== NOT EXECUTED 4b2e4: 4aaa 000c tstl %a2@(12) <== NOT EXECUTED 4b2e8: 6744 beqs 4b32e <_POSIX_Thread_Translate_sched_param+0x9e><== NOT EXECUTED (param->sched_ss_repl_period.tv_nsec == 0) ) return EINVAL; if ( (param->sched_ss_init_budget.tv_sec == 0) && 4b2ea: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED 4b2ee: 6606 bnes 4b2f6 <_POSIX_Thread_Translate_sched_param+0x66><== NOT EXECUTED 4b2f0: 4aaa 0014 tstl %a2@(20) <== NOT EXECUTED 4b2f4: 6738 beqs 4b32e <_POSIX_Thread_Translate_sched_param+0x9e><== NOT EXECUTED (param->sched_ss_init_budget.tv_nsec == 0) ) return EINVAL; if ( _Timespec_To_ticks( ¶m->sched_ss_repl_period ) < 4b2f6: 486a 0008 pea %a2@(8) <== NOT EXECUTED 4b2fa: 4bf9 0004 918c lea 4918c <_Timespec_To_ticks>,%a5 <== NOT EXECUTED 4b300: 4e95 jsr %a5@ <== NOT EXECUTED _Timespec_To_ticks( ¶m->sched_ss_init_budget ) ) 4b302: 486a 0010 pea %a2@(16) <== NOT EXECUTED if ( (param->sched_ss_init_budget.tv_sec == 0) && (param->sched_ss_init_budget.tv_nsec == 0) ) return EINVAL; if ( _Timespec_To_ticks( ¶m->sched_ss_repl_period ) < 4b306: 2400 movel %d0,%d2 <== NOT EXECUTED _Timespec_To_ticks( ¶m->sched_ss_init_budget ) ) 4b308: 4e95 jsr %a5@ <== NOT EXECUTED if ( (param->sched_ss_init_budget.tv_sec == 0) && (param->sched_ss_init_budget.tv_nsec == 0) ) return EINVAL; if ( _Timespec_To_ticks( ¶m->sched_ss_repl_period ) < 4b30a: 508f addql #8,%sp <== NOT EXECUTED 4b30c: b082 cmpl %d2,%d0 <== NOT EXECUTED 4b30e: 621e bhis 4b32e <_POSIX_Thread_Translate_sched_param+0x9e><== NOT EXECUTED _Timespec_To_ticks( ¶m->sched_ss_init_budget ) ) return EINVAL; if ( !_POSIX_Priority_Is_valid( param->sched_ss_low_priority ) ) 4b310: 2f2a 0004 movel %a2@(4),%sp@- <== NOT EXECUTED 4b314: 4eb9 0004 b26c jsr 4b26c <_POSIX_Priority_Is_valid> <== NOT EXECUTED 4b31a: 588f addql #4,%sp <== NOT EXECUTED 4b31c: 4a00 tstb %d0 <== NOT EXECUTED 4b31e: 670e beqs 4b32e <_POSIX_Thread_Translate_sched_param+0x9e><== NOT EXECUTED return EINVAL; *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_CALLOUT; 4b320: 7003 moveq #3,%d0 <== NOT EXECUTED 4b322: 2680 movel %d0,%a3@ <== NOT EXECUTED *budget_callout = _POSIX_Threads_Sporadic_budget_callout; 4b324: 28bc 0004 5c7c movel #285820,%a4@ <== NOT EXECUTED return 0; } if ( policy == SCHED_FIFO ) { *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE; return 0; 4b32a: 4280 clrl %d0 4b32c: 6002 bras 4b330 <_POSIX_Thread_Translate_sched_param+0xa0> if ( _Timespec_To_ticks( ¶m->sched_ss_repl_period ) < _Timespec_To_ticks( ¶m->sched_ss_init_budget ) ) return EINVAL; if ( !_POSIX_Priority_Is_valid( param->sched_ss_low_priority ) ) return EINVAL; 4b32e: 7016 moveq #22,%d0 *budget_callout = _POSIX_Threads_Sporadic_budget_callout; return 0; } return EINVAL; } 4b330: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 4b336: 4e5e unlk %fp ... =============================================================================== 0004a2c2 <_POSIX_Threads_Create_extension>: bool _POSIX_Threads_Create_extension( Thread_Control *executing __attribute__((unused)), Thread_Control *created ) { 4a2c2: 4e56 0000 linkw %fp,#0 4a2c6: 2f0b movel %a3,%sp@- 4a2c8: 266e 000c moveal %fp@(12),%a3 4a2cc: 2f0a movel %a2,%sp@- POSIX_API_Control *api; POSIX_API_Control *executing_api; api = _Workspace_Allocate( sizeof( POSIX_API_Control ) ); 4a2ce: 4878 00f0 pea f0 4a2d2: 4eb9 0004 8794 jsr 48794 <_Workspace_Allocate> if ( !api ) 4a2d8: 588f addql #4,%sp ) { POSIX_API_Control *api; POSIX_API_Control *executing_api; api = _Workspace_Allocate( sizeof( POSIX_API_Control ) ); 4a2da: 2440 moveal %d0,%a2 if ( !api ) 4a2dc: 4a80 tstl %d0 4a2de: 6700 00e2 beqw 4a3c2 <_POSIX_Threads_Create_extension+0x100> return false; created->API_Extensions[ THREAD_API_POSIX ] = api; 4a2e2: 2740 0102 movel %d0,%a3@(258) /* XXX check all fields are touched */ api->Attributes = _POSIX_Threads_Default_attributes; 4a2e6: 4878 0040 pea 40 4a2ea: 42a7 clrl %sp@- 4a2ec: 2f00 movel %d0,%sp@- 4a2ee: 4eb9 0004 d268 jsr 4d268 4a2f4: 7001 moveq #1,%d0 4a2f6: 7202 moveq #2,%d1 4a2f8: 2480 movel %d0,%a2@ 4a2fa: 7001 moveq #1,%d0 4a2fc: 2541 0018 movel %d1,%a2@(24) 4a300: 2540 0010 movel %d0,%a2@(16) 4a304: 2540 0014 movel %d0,%a2@(20) 4a308: 2540 0038 movel %d0,%a2@(56) 4a30c: 2540 003c movel %d0,%a2@(60) api->detachstate = _POSIX_Threads_Default_attributes.detachstate; 4a310: 2540 0040 movel %d0,%a2@(64) api->schedpolicy = _POSIX_Threads_Default_attributes.schedpolicy; 4a314: 2540 0084 movel %d0,%a2@(132) api->schedparam = _POSIX_Threads_Default_attributes.schedparam; 4a318: 4878 001c pea 1c 4a31c: 4879 0005 c16a pea 5c16a <_POSIX_Threads_Default_attributes+0x18> 4a322: 486a 0088 pea %a2@(136) 4a326: 4eb9 0004 d1f8 jsr 4d1f8 * The check for class == 1 is debug. Should never really happen. */ /* XXX use signal constants */ api->signals_pending = 0; if ( _Objects_Get_API( created->Object.id ) == OBJECTS_POSIX_API 4a32c: 4fef 0018 lea %sp@(24),%sp RTEMS_INLINE_ROUTINE int _POSIX_Priority_From_core( Priority_Control priority ) { return (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1); 4a330: 4280 clrl %d0 4a332: 1039 0005 cb92 moveb 5cb92 ,%d0 4a338: 90ab 0014 subl %a3@(20),%d0 RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); 4a33c: 41ea 00e8 lea %a2@(232),%a0 4a340: 7207 moveq #7,%d1 4a342: 2540 0088 movel %d0,%a2@(136) 4a346: 4280 clrl %d0 4a348: 102b 0008 moveb %a3@(8),%d0 4a34c: 2548 00e4 movel %a0,%a2@(228) */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); 4a350: 41ea 00e4 lea %a2@(228),%a0 4a354: c081 andl %d1,%d0 _POSIX_Priority_From_core( created->current_priority ); /* * POSIX 1003.1 1996, 18.2.2.2 */ api->cancelation_requested = 0; 4a356: 42aa 00e0 clrl %a2@(224) * The check for class == 1 is debug. Should never really happen. */ /* XXX use signal constants */ api->signals_pending = 0; if ( _Objects_Get_API( created->Object.id ) == OBJECTS_POSIX_API 4a35a: 123c 0003 moveb #3,%d1 /* * POSIX 1003.1 1996, 18.2.2.2 */ api->cancelation_requested = 0; api->cancelability_state = PTHREAD_CANCEL_ENABLE; 4a35e: 42aa 00d8 clrl %a2@(216) api->cancelability_type = PTHREAD_CANCEL_DEFERRED; 4a362: 42aa 00dc clrl %a2@(220) Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; head->previous = NULL; 4a366: 42aa 00e8 clrl %a2@(232) */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); 4a36a: 2548 00ec movel %a0,%a2@(236) * * The check for class == 1 is debug. Should never really happen. */ /* XXX use signal constants */ api->signals_pending = 0; 4a36e: 42aa 00d4 clrl %a2@(212) if ( _Objects_Get_API( created->Object.id ) == OBJECTS_POSIX_API 4a372: b280 cmpl %d0,%d1 4a374: 6612 bnes 4a388 <_POSIX_Threads_Create_extension+0xc6> #if defined(RTEMS_DEBUG) && _Objects_Get_class( created->Object.id ) == 1 #endif ) { executing_api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; 4a376: 2079 0005 e902 moveal 5e902 <_Per_CPU_Information+0xc>,%a0 api->signals_blocked = executing_api->signals_blocked; 4a37c: 2068 0102 moveal %a0@(258),%a0 4a380: 2568 00d0 00d0 movel %a0@(208),%a2@(208) 4a386: 6006 bras 4a38e <_POSIX_Threads_Create_extension+0xcc> } else { api->signals_blocked = 0xffffffff; 4a388: 70ff moveq #-1,%d0 4a38a: 2540 00d0 movel %d0,%a2@(208) } _Thread_queue_Initialize( 4a38e: 42a7 clrl %sp@- 4a390: 4878 1000 pea 1000 4a394: 42a7 clrl %sp@- 4a396: 486a 0044 pea %a2@(68) 4a39a: 4eb9 0004 7e40 jsr 47e40 <_Thread_queue_Initialize> THREAD_QUEUE_DISCIPLINE_FIFO, STATES_WAITING_FOR_JOIN_AT_EXIT, 0 ); _Watchdog_Initialize( 4a3a0: 202b 0008 movel %a3@(8),%d0 Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 4a3a4: 223c 0004 a3d0 movel #304080,%d1 _POSIX_Threads_Sporadic_budget_TSR, created->Object.id, created ); return true; 4a3aa: 4fef 0010 lea %sp@(16),%sp the_watchdog->id = id; 4a3ae: 2540 00c8 movel %d0,%a2@(200) 4a3b2: 7001 moveq #1,%d0 Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 4a3b4: 42aa 00b0 clrl %a2@(176) the_watchdog->routine = routine; 4a3b8: 2541 00c4 movel %d1,%a2@(196) the_watchdog->id = id; the_watchdog->user_data = user_data; 4a3bc: 254b 00cc movel %a3,%a2@(204) 4a3c0: 6002 bras 4a3c4 <_POSIX_Threads_Create_extension+0x102> POSIX_API_Control *executing_api; api = _Workspace_Allocate( sizeof( POSIX_API_Control ) ); if ( !api ) return false; 4a3c2: 4200 clrb %d0 <== NOT EXECUTED created->Object.id, created ); return true; } 4a3c4: 246e fff8 moveal %fp@(-8),%a2 4a3c8: 266e fffc moveal %fp@(-4),%a3 4a3cc: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004a24e <_POSIX_Threads_Delete_extension>: */ void _POSIX_Threads_Delete_extension( Thread_Control *executing __attribute__((unused)), Thread_Control *deleted ) { 4a24e: 4e56 ffec linkw %fp,#-20 4a252: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ 4a256: 246e 000c moveal %fp@(12),%a2 /* * 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 )) ) 4a25a: 49f9 0004 7abc lea 47abc <_Thread_queue_Dequeue>,%a4 { Thread_Control *the_thread; POSIX_API_Control *api; void **value_ptr; api = deleted->API_Extensions[ THREAD_API_POSIX ]; 4a260: 266a 0102 moveal %a2@(258),%a3 /* * 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 )) ) 4a264: 240b movel %a3,%d2 4a266: 0682 0000 0044 addil #68,%d2 api = deleted->API_Extensions[ THREAD_API_POSIX ]; /* * Run the POSIX cancellation handlers */ _POSIX_Threads_cancel_run( deleted ); 4a26c: 2f0a movel %a2,%sp@- 4a26e: 4eb9 0004 c18c jsr 4c18c <_POSIX_Threads_cancel_run> /* * Run all the key destructors */ _POSIX_Keys_Run_destructors( deleted ); 4a274: 2f0a movel %a2,%sp@- 4a276: 4eb9 0004 c1f4 jsr 4c1f4 <_POSIX_Keys_Run_destructors> /* * Wakeup all the tasks which joined with this one */ value_ptr = (void **) deleted->Wait.return_argument; 4a27c: 262a 0028 movel %a2@(40),%d3 while ( (the_thread = _Thread_queue_Dequeue( &api->Join_List )) ) 4a280: 508f addql #8,%sp 4a282: 6008 bras 4a28c <_POSIX_Threads_Delete_extension+0x3e> *(void **)the_thread->Wait.return_argument = value_ptr; 4a284: 2240 moveal %d0,%a1 <== NOT EXECUTED 4a286: 2069 0028 moveal %a1@(40),%a0 <== NOT EXECUTED 4a28a: 2083 movel %d3,%a0@ <== NOT EXECUTED /* * Wakeup all the tasks which joined with this one */ value_ptr = (void **) deleted->Wait.return_argument; while ( (the_thread = _Thread_queue_Dequeue( &api->Join_List )) ) 4a28c: 2f02 movel %d2,%sp@- 4a28e: 4e94 jsr %a4@ 4a290: 588f addql #4,%sp 4a292: 4a80 tstl %d0 4a294: 66ee bnes 4a284 <_POSIX_Threads_Delete_extension+0x36><== NEVER TAKEN *(void **)the_thread->Wait.return_argument = value_ptr; if ( api->schedpolicy == SCHED_SPORADIC ) 4a296: 103c 0004 moveb #4,%d0 4a29a: b0ab 0084 cmpl %a3@(132),%d0 4a29e: 660c bnes 4a2ac <_POSIX_Threads_Delete_extension+0x5e><== ALWAYS TAKEN (void) _Watchdog_Remove( &api->Sporadic_timer ); 4a2a0: 486b 00a8 pea %a3@(168) <== NOT EXECUTED 4a2a4: 4eb9 0004 863c jsr 4863c <_Watchdog_Remove> <== NOT EXECUTED 4a2aa: 588f addql #4,%sp <== NOT EXECUTED deleted->API_Extensions[ THREAD_API_POSIX ] = NULL; 4a2ac: 42aa 0102 clrl %a2@(258) (void) _Workspace_Free( api ); 4a2b0: 2d4b 0008 movel %a3,%fp@(8) } 4a2b4: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 4a2ba: 4e5e unlk %fp if ( api->schedpolicy == SCHED_SPORADIC ) (void) _Watchdog_Remove( &api->Sporadic_timer ); deleted->API_Extensions[ THREAD_API_POSIX ] = NULL; (void) _Workspace_Free( api ); 4a2bc: 4ef9 0004 87b0 jmp 487b0 <_Workspace_Free> =============================================================================== 0004a222 <_POSIX_Threads_Exitted_extension>: */ RTEMS_INLINE_ROUTINE Objects_APIs _Objects_Get_API( Objects_Id id ) { return (Objects_APIs) ((id >> OBJECTS_API_START_BIT) & OBJECTS_API_VALID_BITS); 4a222: 4280 clrl %d0 4a224: 7207 moveq #7,%d1 * This method is invoked each time a thread exits. */ void _POSIX_Threads_Exitted_extension( Thread_Control *executing ) { 4a226: 4e56 0000 linkw %fp,#0 4a22a: 206e 0008 moveal %fp@(8),%a0 4a22e: 1028 0008 moveb %a0@(8),%d0 4a232: c081 andl %d1,%d0 /* * If the executing thread was not created with the POSIX API, then this * API do not get to define its exit behavior. */ if ( _Objects_Get_API( executing->Object.id ) == OBJECTS_POSIX_API ) 4a234: 123c 0003 moveb #3,%d1 4a238: b280 cmpl %d0,%d1 4a23a: 660e bnes 4a24a <_POSIX_Threads_Exitted_extension+0x28><== ALWAYS TAKEN pthread_exit( executing->Wait.return_argument ); 4a23c: 2d68 0028 0008 movel %a0@(40),%fp@(8) <== NOT EXECUTED } 4a242: 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 ); 4a244: 4ef9 0004 c4b0 jmp 4c4b0 <== NOT EXECUTED } 4a24a: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000459ac <_POSIX_Threads_Initialize_user_threads_body>: * * Output parameters: NONE */ void _POSIX_Threads_Initialize_user_threads_body(void) { 459ac: 4e56 ff98 linkw %fp,#-104 459b0: 48d7 3c7c moveml %d2-%d6/%a2-%a5,%sp@ uint32_t maximum; posix_initialization_threads_table *user_threads; pthread_t thread_id; pthread_attr_t attr; user_threads = Configuration_POSIX_API.User_initialization_threads_table; 459b4: 2479 0005 dbee moveal 5dbee ,%a2 maximum = Configuration_POSIX_API.number_of_initialization_threads; 459ba: 2839 0005 dbea movel 5dbea ,%d4 if ( !user_threads || maximum == 0 ) 459c0: 4a8a tstl %a2 459c2: 676a beqs 45a2e <_POSIX_Threads_Initialize_user_threads_body+0x82><== NEVER TAKEN 459c4: 4a84 tstl %d4 459c6: 6766 beqs 45a2e <_POSIX_Threads_Initialize_user_threads_body+0x82><== NEVER TAKEN for ( index=0 ; index < maximum ; index++ ) { /* * There is no way for these calls to fail in this situation. */ (void) pthread_attr_init( &attr ); 459c8: 240e movel %fp,%d2 (void) pthread_attr_setinheritsched( &attr, PTHREAD_EXPLICIT_SCHED ); (void) pthread_attr_setstacksize(&attr, user_threads[ index ].stack_size); status = pthread_create( 459ca: 2a0e movel %fp,%d5 pthread_attr_t attr; user_threads = Configuration_POSIX_API.User_initialization_threads_table; maximum = Configuration_POSIX_API.number_of_initialization_threads; if ( !user_threads || maximum == 0 ) 459cc: 4283 clrl %d3 for ( index=0 ; index < maximum ; index++ ) { /* * There is no way for these calls to fail in this situation. */ (void) pthread_attr_init( &attr ); 459ce: 0682 ffff ffbc addil #-68,%d2 459d4: 2c3c 0004 b33c movel #308028,%d6 (void) pthread_attr_setinheritsched( &attr, PTHREAD_EXPLICIT_SCHED ); 459da: 4bf9 0004 b368 lea 4b368 ,%a5 (void) pthread_attr_setstacksize(&attr, user_threads[ index ].stack_size); 459e0: 49f9 0004 b3a0 lea 4b3a0 ,%a4 status = pthread_create( 459e6: 5985 subql #4,%d5 459e8: 47f9 0004 5700 lea 45700 ,%a3 for ( index=0 ; index < maximum ; index++ ) { /* * There is no way for these calls to fail in this situation. */ (void) pthread_attr_init( &attr ); 459ee: 2f02 movel %d2,%sp@- 459f0: 2046 moveal %d6,%a0 459f2: 4e90 jsr %a0@ (void) pthread_attr_setinheritsched( &attr, PTHREAD_EXPLICIT_SCHED ); 459f4: 4878 0002 pea 2 459f8: 2f02 movel %d2,%sp@- 459fa: 4e95 jsr %a5@ (void) pthread_attr_setstacksize(&attr, user_threads[ index ].stack_size); 459fc: 2f2a 0004 movel %a2@(4),%sp@- 45a00: 2f02 movel %d2,%sp@- 45a02: 4e94 jsr %a4@ status = pthread_create( 45a04: 42a7 clrl %sp@- 45a06: 2f12 movel %a2@,%sp@- 45a08: 2f02 movel %d2,%sp@- 45a0a: 2f05 movel %d5,%sp@- 45a0c: 4e93 jsr %a3@ &thread_id, &attr, user_threads[ index ].thread_entry, NULL ); if ( status ) 45a0e: 4fef 0024 lea %sp@(36),%sp 45a12: 4a80 tstl %d0 45a14: 6710 beqs 45a26 <_POSIX_Threads_Initialize_user_threads_body+0x7a> _Internal_error_Occurred( INTERNAL_ERROR_POSIX_API, true, status ); 45a16: 2f00 movel %d0,%sp@- 45a18: 4878 0001 pea 1 45a1c: 4878 0002 pea 2 45a20: 4eb9 0004 76d4 jsr 476d4 <_Internal_error_Occurred> * * Setting the attributes explicitly is critical, since we don't want * to inherit the idle tasks attributes. */ for ( index=0 ; index < maximum ; index++ ) { 45a26: 5283 addql #1,%d3 45a28: 508a addql #8,%a2 45a2a: b883 cmpl %d3,%d4 45a2c: 62c0 bhis 459ee <_POSIX_Threads_Initialize_user_threads_body+0x42><== NEVER TAKEN NULL ); if ( status ) _Internal_error_Occurred( INTERNAL_ERROR_POSIX_API, true, status ); } } 45a2e: 4cee 3c7c ff98 moveml %fp@(-104),%d2-%d6/%a2-%a5 45a34: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004a3d0 <_POSIX_Threads_Sporadic_budget_TSR>: */ void _POSIX_Threads_Sporadic_budget_TSR( Objects_Id id __attribute__((unused)), void *argument ) { 4a3d0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a3d4: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4a3d6: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a3d8: 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 ]; 4a3dc: 266a 0102 moveal %a2@(258),%a3 <== NOT EXECUTED /* ticks is guaranteed to be at least one */ ticks = _Timespec_To_ticks( &api->schedparam.sched_ss_init_budget ); 4a3e0: 486b 0098 pea %a3@(152) <== NOT EXECUTED 4a3e4: 4eb9 0004 b204 jsr 4b204 <_Timespec_To_ticks> <== NOT EXECUTED */ #if 0 printk( "TSR %d %d %d\n", the_thread->resource_count, the_thread->current_priority, new_priority ); #endif if ( the_thread->resource_count == 0 ) { 4a3ea: 588f addql #4,%sp <== NOT EXECUTED api = the_thread->API_Extensions[ THREAD_API_POSIX ]; /* ticks is guaranteed to be at least one */ ticks = _Timespec_To_ticks( &api->schedparam.sched_ss_init_budget ); the_thread->cpu_time_budget = ticks; 4a3ec: 2540 0076 movel %d0,%a2@(118) <== NOT EXECUTED RTEMS_INLINE_ROUTINE Priority_Control _POSIX_Priority_To_core( int priority ) { return (Priority_Control) (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1); 4a3f0: 4280 clrl %d0 <== NOT EXECUTED 4a3f2: 1039 0005 cb92 moveb 5cb92 ,%d0 <== NOT EXECUTED 4a3f8: 90ab 0088 subl %a3@(136),%d0 <== NOT EXECUTED new_priority = _POSIX_Priority_To_core( api->schedparam.sched_priority ); the_thread->real_priority = new_priority; 4a3fc: 2540 0018 movel %d0,%a2@(24) <== NOT EXECUTED */ #if 0 printk( "TSR %d %d %d\n", the_thread->resource_count, the_thread->current_priority, new_priority ); #endif if ( the_thread->resource_count == 0 ) { 4a400: 4aaa 001c tstl %a2@(28) <== NOT EXECUTED 4a404: 6618 bnes 4a41e <_POSIX_Threads_Sporadic_budget_TSR+0x4e><== NOT EXECUTED /* * If this would make them less important, then do not change it. */ if ( the_thread->current_priority > new_priority ) { 4a406: b0aa 0014 cmpl %a2@(20),%d0 <== NOT EXECUTED 4a40a: 6412 bccs 4a41e <_POSIX_Threads_Sporadic_budget_TSR+0x4e><== NOT EXECUTED _Thread_Change_priority( the_thread, new_priority, true ); 4a40c: 4878 0001 pea 1 <== NOT EXECUTED 4a410: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4a412: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a414: 4eb9 0004 7300 jsr 47300 <_Thread_Change_priority> <== NOT EXECUTED 4a41a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED #endif } } /* ticks is guaranteed to be at least one */ ticks = _Timespec_To_ticks( &api->schedparam.sched_ss_repl_period ); 4a41e: 486b 0090 pea %a3@(144) <== NOT EXECUTED 4a422: 4eb9 0004 b204 jsr 4b204 <_Timespec_To_ticks> <== NOT EXECUTED _Watchdog_Insert_ticks( &api->Sporadic_timer, ticks ); } 4a428: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED ) { the_watchdog->initial = units; _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 4a42c: 588f addql #4,%sp <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 4a42e: 2740 00b4 movel %d0,%a3@(180) <== NOT EXECUTED } /* ticks is guaranteed to be at least one */ ticks = _Timespec_To_ticks( &api->schedparam.sched_ss_repl_period ); _Watchdog_Insert_ticks( &api->Sporadic_timer, ticks ); 4a432: 47eb 00a8 lea %a3@(168),%a3 <== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 4a436: 203c 0005 e558 movel #386392,%d0 <== NOT EXECUTED 4a43c: 2d4b 000c movel %a3,%fp@(12) <== NOT EXECUTED } 4a440: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 4a444: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED 4a448: 4e5e unlk %fp <== NOT EXECUTED 4a44a: 4ef9 0004 8514 jmp 48514 <_Watchdog_Insert> <== NOT EXECUTED =============================================================================== 0004a450 <_POSIX_Threads_Sporadic_budget_callout>: /* * 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 */ 4a450: 70ff moveq #-1,%d0 <== NOT EXECUTED * _POSIX_Threads_Sporadic_budget_callout */ void _POSIX_Threads_Sporadic_budget_callout( Thread_Control *the_thread ) { 4a452: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a456: 206e 0008 moveal %fp@(8),%a0 <== 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 */ 4a45a: 2140 0076 movel %d0,%a0@(118) <== NOT EXECUTED 4a45e: 4280 clrl %d0 <== NOT EXECUTED 4a460: 1039 0005 cb92 moveb 5cb92 ,%d0 <== NOT EXECUTED ) { POSIX_API_Control *api; uint32_t new_priority; api = the_thread->API_Extensions[ THREAD_API_POSIX ]; 4a466: 2268 0102 moveal %a0@(258),%a1 <== NOT EXECUTED 4a46a: 90a9 008c subl %a1@(140),%d0 <== NOT EXECUTED * while at low priority. */ the_thread->cpu_time_budget = 0xFFFFFFFF; /* XXX should be based on MAX_U32 */ new_priority = _POSIX_Priority_To_core(api->schedparam.sched_ss_low_priority); the_thread->real_priority = new_priority; 4a46e: 2140 0018 movel %d0,%a0@(24) <== NOT EXECUTED */ #if 0 printk( "callout %d %d %d\n", the_thread->resource_count, the_thread->current_priority, new_priority ); #endif if ( the_thread->resource_count == 0 ) { 4a472: 4aa8 001c tstl %a0@(28) <== NOT EXECUTED 4a476: 6618 bnes 4a490 <_POSIX_Threads_Sporadic_budget_callout+0x40><== NOT EXECUTED /* * Make sure we are actually lowering it. If they have lowered it * to logically lower than sched_ss_low_priority, then we do not want to * change it. */ if ( the_thread->current_priority < new_priority ) { 4a478: b0a8 0014 cmpl %a0@(20),%d0 <== NOT EXECUTED 4a47c: 6312 blss 4a490 <_POSIX_Threads_Sporadic_budget_callout+0x40><== NOT EXECUTED _Thread_Change_priority( the_thread, new_priority, true ); 4a47e: 4878 0001 pea 1 <== NOT EXECUTED 4a482: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4a484: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4a486: 4eb9 0004 7300 jsr 47300 <_Thread_Change_priority> <== NOT EXECUTED 4a48c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED #if 0 printk( "lower priority\n" ); #endif } } } 4a490: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004c18c <_POSIX_Threads_cancel_run>: thread_support = the_thread->API_Extensions[ THREAD_API_POSIX ]; handler_stack = &thread_support->Cancellation_Handlers; thread_support->cancelability_state = PTHREAD_CANCEL_DISABLE; 4c18c: 7001 moveq #1,%d0 #include void _POSIX_Threads_cancel_run( Thread_Control *the_thread ) { 4c18e: 4e56 ffec linkw %fp,#-20 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 ]; 4c192: 206e 0008 moveal %fp@(8),%a0 #include void _POSIX_Threads_cancel_run( Thread_Control *the_thread ) { 4c196: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ POSIX_Cancel_Handler_control *handler; Chain_Control *handler_stack; POSIX_API_Control *thread_support; ISR_Level level; thread_support = the_thread->API_Extensions[ THREAD_API_POSIX ]; 4c19a: 2468 0102 moveal %a0@(258),%a2 RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( const Chain_Control *the_chain ) { return _Chain_Immutable_first( the_chain ) == _Chain_Immutable_tail( the_chain ); 4c19e: 260a movel %a2,%d3 4c1a0: 0683 0000 00e8 addil #232,%d3 handler_stack = &thread_support->Cancellation_Handlers; thread_support->cancelability_state = PTHREAD_CANCEL_DISABLE; while ( !_Chain_Is_empty( handler_stack ) ) { _ISR_Disable( level ); 4c1a6: 243c 0000 0700 movel #1792,%d2 _Chain_Extract_unprotected( &handler->Node ); _ISR_Enable( level ); (*handler->routine)( handler->arg ); _Workspace_Free( handler ); 4c1ac: 47f9 0004 87b0 lea 487b0 <_Workspace_Free>,%a3 thread_support = the_thread->API_Extensions[ THREAD_API_POSIX ]; handler_stack = &thread_support->Cancellation_Handlers; thread_support->cancelability_state = PTHREAD_CANCEL_DISABLE; 4c1b2: 2540 00d8 movel %d0,%a2@(216) while ( !_Chain_Is_empty( handler_stack ) ) { 4c1b6: 602a bras 4c1e2 <_POSIX_Threads_cancel_run+0x56> _ISR_Disable( level ); 4c1b8: 2002 movel %d2,%d0 <== NOT EXECUTED 4c1ba: 40c1 movew %sr,%d1 <== NOT EXECUTED 4c1bc: 8081 orl %d1,%d0 <== NOT EXECUTED 4c1be: 46c0 movew %d0,%sr <== NOT EXECUTED handler = (POSIX_Cancel_Handler_control *) 4c1c0: 286a 00ec moveal %a2@(236),%a4 <== NOT EXECUTED ) { Chain_Node *next; Chain_Node *previous; next = the_node->next; 4c1c4: 2254 moveal %a4@,%a1 <== NOT EXECUTED previous = the_node->previous; 4c1c6: 206c 0004 moveal %a4@(4),%a0 <== NOT EXECUTED next->previous = previous; 4c1ca: 2348 0004 movel %a0,%a1@(4) <== NOT EXECUTED previous->next = next; 4c1ce: 2089 movel %a1,%a0@ <== NOT EXECUTED _Chain_Tail( handler_stack )->previous; _Chain_Extract_unprotected( &handler->Node ); _ISR_Enable( level ); 4c1d0: 46c1 movew %d1,%sr <== NOT EXECUTED (*handler->routine)( handler->arg ); 4c1d2: 2f2c 000c movel %a4@(12),%sp@- <== NOT EXECUTED 4c1d6: 206c 0008 moveal %a4@(8),%a0 <== NOT EXECUTED 4c1da: 4e90 jsr %a0@ <== NOT EXECUTED _Workspace_Free( handler ); 4c1dc: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4c1de: 4e93 jsr %a3@ <== NOT EXECUTED 4c1e0: 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 ) ) { 4c1e2: b6aa 00e4 cmpl %a2@(228),%d3 4c1e6: 66d0 bnes 4c1b8 <_POSIX_Threads_cancel_run+0x2c> <== NEVER TAKEN (*handler->routine)( handler->arg ); _Workspace_Free( handler ); } } 4c1e8: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 4c1ee: 4e5e unlk %fp ... =============================================================================== 0004ad44 <_POSIX_Timer_Insert_helper>: Watchdog_Interval ticks, Objects_Id id, Watchdog_Service_routine_entry TSR, void *arg ) { 4ad44: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4ad48: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4ad4a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4ad4e: 2f02 movel %d2,%sp@- <== NOT EXECUTED ISR_Level level; (void) _Watchdog_Remove( timer ); 4ad50: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4ad52: 4eb9 0004 8d5c jsr 48d5c <_Watchdog_Remove> <== NOT EXECUTED _ISR_Disable( level ); 4ad58: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 4ad5e: 40c2 movew %sr,%d2 <== NOT EXECUTED 4ad60: 8082 orl %d2,%d0 <== NOT EXECUTED 4ad62: 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 ) { 4ad64: 588f addql #4,%sp <== NOT EXECUTED 4ad66: 4aaa 0008 tstl %a2@(8) <== NOT EXECUTED 4ad6a: 6706 beqs 4ad72 <_POSIX_Timer_Insert_helper+0x2e><== NOT EXECUTED _ISR_Enable( level ); 4ad6c: 46c2 movew %d2,%sr <== NOT EXECUTED return false; 4ad6e: 4200 clrb %d0 <== NOT EXECUTED 4ad70: 6030 bras 4ada2 <_POSIX_Timer_Insert_helper+0x5e><== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 4ad72: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED the_watchdog->routine = routine; 4ad76: 256e 0014 001c movel %fp@(20),%a2@(28) <== NOT EXECUTED the_watchdog->id = id; 4ad7c: 256e 0010 0020 movel %fp@(16),%a2@(32) <== NOT EXECUTED the_watchdog->user_data = user_data; 4ad82: 256e 0018 0024 movel %fp@(24),%a2@(36) <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 4ad88: 256e 000c 000c movel %fp@(12),%a2@(12) <== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 4ad8e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4ad90: 4879 0005 f0f8 pea 5f0f8 <_Watchdog_Ticks_chain> <== NOT EXECUTED 4ad96: 4eb9 0004 8c34 jsr 48c34 <_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 ); 4ad9c: 46c2 movew %d2,%sr <== NOT EXECUTED return true; 4ad9e: 508f addql #8,%sp <== NOT EXECUTED 4ada0: 7001 moveq #1,%d0 <== NOT EXECUTED } 4ada2: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4ada6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4adaa: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00045534 <_POSIX_Timer_TSR>: * This is the operation that is run when a timer expires */ void _POSIX_Timer_TSR( Objects_Id timer __attribute__((unused)), void *data) { 45534: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45538: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4553a: 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; 4553e: 52aa 0066 addql #1,%a2@(102) <== NOT EXECUTED /* The timer must be reprogrammed */ if ( ( ptimer->timer_data.it_interval.tv_sec != 0 ) || 45542: 4aaa 0052 tstl %a2@(82) <== NOT EXECUTED 45546: 6606 bnes 4554e <_POSIX_Timer_TSR+0x1a> <== NOT EXECUTED 45548: 4aaa 0056 tstl %a2@(86) <== NOT EXECUTED 4554c: 6736 beqs 45584 <_POSIX_Timer_TSR+0x50> <== NOT EXECUTED ( ptimer->timer_data.it_interval.tv_nsec != 0 ) ) { activated = _POSIX_Timer_Insert_helper( 4554e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45550: 4879 0004 5534 pea 45534 <_POSIX_Timer_TSR> <== NOT EXECUTED 45556: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED 4555a: 2f2a 0062 movel %a2@(98),%sp@- <== NOT EXECUTED 4555e: 486a 0010 pea %a2@(16) <== NOT EXECUTED 45562: 4eb9 0004 ad44 jsr 4ad44 <_POSIX_Timer_Insert_helper> <== NOT EXECUTED ptimer->ticks, ptimer->Object.id, _POSIX_Timer_TSR, ptimer ); if ( !activated ) 45568: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4556c: 4a00 tstb %d0 <== NOT EXECUTED 4556e: 672e beqs 4559e <_POSIX_Timer_TSR+0x6a> <== NOT EXECUTED return; /* Store the time when the timer was started again */ _TOD_Get( &ptimer->time ); 45570: 486a 006a pea %a2@(106) <== NOT EXECUTED 45574: 4eb9 0004 6a70 jsr 46a70 <_TOD_Get> <== NOT EXECUTED /* The state really did not change but just to be safe */ ptimer->state = POSIX_TIMER_STATE_CREATE_RUN; 4557a: 588f addql #4,%sp <== NOT EXECUTED 4557c: 7003 moveq #3,%d0 <== NOT EXECUTED 4557e: 1540 003c moveb %d0,%a2@(60) <== NOT EXECUTED 45582: 6006 bras 4558a <_POSIX_Timer_TSR+0x56> <== NOT EXECUTED } else { /* Indicates that the timer is stopped */ ptimer->state = POSIX_TIMER_STATE_CREATE_STOP; 45584: 7004 moveq #4,%d0 <== NOT EXECUTED 45586: 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 ) ) { 4558a: 2f2a 0042 movel %a2@(66),%sp@- <== NOT EXECUTED 4558e: 2f2a 0038 movel %a2@(56),%sp@- <== NOT EXECUTED 45592: 4eb9 0004 a92c jsr 4a92c <== NOT EXECUTED } /* After the signal handler returns, the count of expirations of the * timer must be set to 0. */ ptimer->overrun = 0; 45598: 508f addql #8,%sp <== NOT EXECUTED 4559a: 42aa 0066 clrl %a2@(102) <== NOT EXECUTED } 4559e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 455a2: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00049eac <_POSIX_signals_Abnormal_termination_handler>: sigset_t _POSIX_signals_Pending; void _POSIX_signals_Abnormal_termination_handler( int signo __attribute__((unused)) ) { 49eac: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED exit( 1 ); 49eb0: 4878 0001 pea 1 <== NOT EXECUTED 49eb4: 4eb9 0004 c95c jsr 4c95c <== NOT EXECUTED =============================================================================== 00046da8 <_POSIX_signals_Alarm_TSR>: void _POSIX_signals_Alarm_TSR( Objects_Id id __attribute__((unused)), void *argument __attribute__((unused)) ) { 46da8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED int status; status = kill( getpid(), SIGALRM ); 46dac: 4eb9 0004 4610 jsr 44610 <== NOT EXECUTED 46db2: 720e moveq #14,%d1 <== NOT EXECUTED 46db4: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED 46db8: 2d41 000c movel %d1,%fp@(12) <== NOT EXECUTED /* XXX can't print from an ISR, should this be fatal? */ } 46dbc: 4e5e unlk %fp <== NOT EXECUTED void *argument __attribute__((unused)) ) { int status; status = kill( getpid(), SIGALRM ); 46dbe: 4ef9 0004 6ed8 jmp 46ed8 <== NOT EXECUTED =============================================================================== 0004c270 <_POSIX_signals_Check_signal>: { siginfo_t siginfo_struct; sigset_t saved_signals_blocked; Thread_Wait_information stored_thread_wait_information; if ( ! _POSIX_signals_Clear_signals( api, signo, &siginfo_struct, 4c270: 4280 clrl %d0 <== NOT EXECUTED bool _POSIX_signals_Check_signal( POSIX_API_Control *api, int signo, bool is_global ) { 4c272: 4e56 ffb4 linkw %fp,#-76 <== NOT EXECUTED siginfo_t siginfo_struct; sigset_t saved_signals_blocked; Thread_Wait_information stored_thread_wait_information; if ( ! _POSIX_signals_Clear_signals( api, signo, &siginfo_struct, 4c276: 102e 0013 moveb %fp@(19),%d0 <== NOT EXECUTED bool _POSIX_signals_Check_signal( POSIX_API_Control *api, int signo, bool is_global ) { 4c27a: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED siginfo_t siginfo_struct; sigset_t saved_signals_blocked; Thread_Wait_information stored_thread_wait_information; if ( ! _POSIX_signals_Clear_signals( api, signo, &siginfo_struct, 4c27e: 4878 0001 pea 1 <== NOT EXECUTED 4c282: 2a0e movel %fp,%d5 <== NOT EXECUTED 4c284: 0685 ffff fff4 addil #-12,%d5 <== NOT EXECUTED 4c28a: 2f00 movel %d0,%sp@- <== NOT EXECUTED bool _POSIX_signals_Check_signal( POSIX_API_Control *api, int signo, bool is_global ) { 4c28c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED siginfo_t siginfo_struct; sigset_t saved_signals_blocked; Thread_Wait_information stored_thread_wait_information; if ( ! _POSIX_signals_Clear_signals( api, signo, &siginfo_struct, 4c290: 2f05 movel %d5,%sp@- <== NOT EXECUTED bool _POSIX_signals_Check_signal( POSIX_API_Control *api, int signo, bool is_global ) { 4c292: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED siginfo_t siginfo_struct; sigset_t saved_signals_blocked; Thread_Wait_information stored_thread_wait_information; if ( ! _POSIX_signals_Clear_signals( api, signo, &siginfo_struct, 4c296: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4c298: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c29a: 4eb9 0004 c348 jsr 4c348 <_POSIX_signals_Clear_signals> <== NOT EXECUTED 4c2a0: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4c2a4: 4a00 tstb %d0 <== NOT EXECUTED 4c2a6: 6700 0092 beqw 4c33a <_POSIX_signals_Check_signal+0xca><== NOT EXECUTED #endif /* * Just to prevent sending a signal which is currently being ignored. */ if ( _POSIX_signals_Vectors[ signo ].sa_handler == SIG_IGN ) 4c2aa: 2002 movel %d2,%d0 <== NOT EXECUTED 4c2ac: 2602 movel %d2,%d3 <== NOT EXECUTED 4c2ae: e588 lsll #2,%d0 <== NOT EXECUTED 4c2b0: e98b lsll #4,%d3 <== NOT EXECUTED 4c2b2: 9680 subl %d0,%d3 <== NOT EXECUTED 4c2b4: 2043 moveal %d3,%a0 <== NOT EXECUTED 4c2b6: d1fc 0005 e934 addal #387380,%a0 <== NOT EXECUTED 4c2bc: 7001 moveq #1,%d0 <== NOT EXECUTED 4c2be: 2668 0008 moveal %a0@(8),%a3 <== NOT EXECUTED 4c2c2: b08b cmpl %a3,%d0 <== NOT EXECUTED 4c2c4: 6774 beqs 4c33a <_POSIX_signals_Check_signal+0xca><== NOT EXECUTED /* * Block the signals requested in sa_mask */ saved_signals_blocked = api->signals_blocked; api->signals_blocked |= _POSIX_signals_Vectors[ signo ].sa_mask; 4c2c6: 2028 0004 movel %a0@(4),%d0 <== NOT EXECUTED return false; /* * Block the signals requested in sa_mask */ saved_signals_blocked = api->signals_blocked; 4c2ca: 282a 00d0 movel %a2@(208),%d4 <== NOT EXECUTED api->signals_blocked |= _POSIX_signals_Vectors[ signo ].sa_mask; 4c2ce: 8084 orl %d4,%d0 <== NOT EXECUTED /* * We have to save the blocking information of the current wait queue * because the signal handler may subsequently go on and put the thread * on a wait queue, for its own purposes. */ memcpy( &stored_thread_wait_information, &_Thread_Executing->Wait, 4c2d0: 2079 0005 e902 moveal 5e902 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 4c2d6: 41e8 0020 lea %a0@(32),%a0 <== NOT EXECUTED /* * Block the signals requested in sa_mask */ saved_signals_blocked = api->signals_blocked; api->signals_blocked |= _POSIX_signals_Vectors[ signo ].sa_mask; 4c2da: 2540 00d0 movel %d0,%a2@(208) <== NOT EXECUTED /* * We have to save the blocking information of the current wait queue * because the signal handler may subsequently go on and put the thread * on a wait queue, for its own purposes. */ memcpy( &stored_thread_wait_information, &_Thread_Executing->Wait, 4c2de: 4878 0028 pea 28 <== NOT EXECUTED 4c2e2: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4c2e4: 486e ffcc pea %fp@(-52) <== NOT EXECUTED 4c2e8: 4eb9 0004 d1f8 jsr 4d1f8 <== NOT EXECUTED sizeof( Thread_Wait_information )); /* * Here, the signal handler function executes */ switch ( _POSIX_signals_Vectors[ signo ].sa_flags ) { 4c2ee: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4c2f2: 41f9 0005 e934 lea 5e934 <_POSIX_signals_Vectors>,%a0 <== NOT EXECUTED 4c2f8: 7002 moveq #2,%d0 <== NOT EXECUTED 4c2fa: b0b0 3800 cmpl %a0@(00000000,%d3:l),%d0 <== NOT EXECUTED 4c2fe: 660e bnes 4c30e <_POSIX_signals_Check_signal+0x9e><== NOT EXECUTED case SA_SIGINFO: (*_POSIX_signals_Vectors[ signo ].sa_sigaction)( 4c300: 42a7 clrl %sp@- <== NOT EXECUTED 4c302: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4c304: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4c306: 4e93 jsr %a3@ <== NOT EXECUTED signo, &siginfo_struct, NULL /* context is undefined per 1003.1b-1993, p. 66 */ ); break; 4c308: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4c30c: 6006 bras 4c314 <_POSIX_signals_Check_signal+0xa4><== NOT EXECUTED default: (*_POSIX_signals_Vectors[ signo ].sa_handler)( signo ); 4c30e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4c310: 4e93 jsr %a3@ <== NOT EXECUTED break; 4c312: 588f addql #4,%sp <== NOT EXECUTED } /* * Restore the blocking information */ memcpy( &_Thread_Executing->Wait, &stored_thread_wait_information, 4c314: 4878 0028 pea 28 <== NOT EXECUTED 4c318: 486e ffcc pea %fp@(-52) <== NOT EXECUTED 4c31c: 2079 0005 e902 moveal 5e902 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 4c322: 41e8 0020 lea %a0@(32),%a0 <== NOT EXECUTED 4c326: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4c328: 4eb9 0004 d1f8 jsr 4d1f8 <== NOT EXECUTED /* * Restore the previous set of blocked signals */ api->signals_blocked = saved_signals_blocked; return true; 4c32e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED sizeof( Thread_Wait_information )); /* * Restore the previous set of blocked signals */ api->signals_blocked = saved_signals_blocked; 4c332: 2544 00d0 movel %d4,%a2@(208) <== NOT EXECUTED return true; 4c336: 7001 moveq #1,%d0 <== NOT EXECUTED 4c338: 6002 bras 4c33c <_POSIX_signals_Check_signal+0xcc><== NOT EXECUTED /* * Just to prevent sending a signal which is currently being ignored. */ if ( _POSIX_signals_Vectors[ signo ].sa_handler == SIG_IGN ) return false; 4c33a: 4200 clrb %d0 <== NOT EXECUTED * Restore the previous set of blocked signals */ api->signals_blocked = saved_signals_blocked; return true; } 4c33c: 4cee 0c3c ffb4 moveml %fp@(-76),%d2-%d5/%a2-%a3 <== NOT EXECUTED 4c342: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004c8c0 <_POSIX_signals_Clear_process_signals>: clear_signal = true; mask = signo_to_mask( signo ); ISR_Level level; _ISR_Disable( level ); 4c8c0: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED */ void _POSIX_signals_Clear_process_signals( int signo ) { 4c8c6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4c8ca: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED 4c8ce: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4c8d0: 2f02 movel %d2,%sp@- <== NOT EXECUTED clear_signal = true; mask = signo_to_mask( signo ); ISR_Level level; _ISR_Disable( level ); 4c8d2: 40c2 movew %sr,%d2 <== NOT EXECUTED 4c8d4: 8082 orl %d2,%d0 <== NOT EXECUTED 4c8d6: 46c0 movew %d0,%sr <== NOT EXECUTED if ( _POSIX_signals_Vectors[ signo ].sa_flags == SA_SIGINFO ) { 4c8d8: 2601 movel %d1,%d3 <== NOT EXECUTED 4c8da: 2001 movel %d1,%d0 <== NOT EXECUTED 4c8dc: 41f9 0005 e934 lea 5e934 <_POSIX_signals_Vectors>,%a0 <== NOT EXECUTED 4c8e2: e58b lsll #2,%d3 <== NOT EXECUTED 4c8e4: e988 lsll #4,%d0 <== NOT EXECUTED 4c8e6: 9083 subl %d3,%d0 <== NOT EXECUTED 4c8e8: 7602 moveq #2,%d3 <== NOT EXECUTED 4c8ea: b6b0 0800 cmpl %a0@(00000000,%d0:l),%d3 <== NOT EXECUTED 4c8ee: 6614 bnes 4c904 <_POSIX_signals_Clear_process_signals+0x44><== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( const Chain_Control *the_chain ) { return _Chain_Immutable_first( the_chain ) == _Chain_Immutable_tail( the_chain ); 4c8f0: 2040 moveal %d0,%a0 <== NOT EXECUTED 4c8f2: d1fc 0005 eb30 addal #387888,%a0 <== NOT EXECUTED if ( !_Chain_Is_empty( &_POSIX_signals_Siginfo[ signo ] ) ) 4c8f8: 43f9 0005 eb2c lea 5eb2c <_POSIX_signals_Siginfo>,%a1 <== NOT EXECUTED 4c8fe: b1f1 0800 cmpal %a1@(00000000,%d0:l),%a0 <== NOT EXECUTED 4c902: 660e bnes 4c912 <_POSIX_signals_Clear_process_signals+0x52><== NOT EXECUTED 4c904: 5381 subql #1,%d1 <== NOT EXECUTED 4c906: 7001 moveq #1,%d0 <== NOT EXECUTED 4c908: e3a8 lsll %d1,%d0 <== NOT EXECUTED clear_signal = false; } if ( clear_signal ) { _POSIX_signals_Pending &= ~mask; 4c90a: 4680 notl %d0 <== NOT EXECUTED 4c90c: c1b9 0005 eb28 andl %d0,5eb28 <_POSIX_signals_Pending> <== NOT EXECUTED } _ISR_Enable( level ); 4c912: 46c2 movew %d2,%sr <== NOT EXECUTED } 4c914: 241f movel %sp@+,%d2 <== NOT EXECUTED 4c916: 261f movel %sp@+,%d3 <== NOT EXECUTED 4c918: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004c348 <_POSIX_signals_Clear_signals>: static inline sigset_t signo_to_mask( uint32_t sig ) { return 1u << (sig - 1); 4c348: 7001 moveq #1,%d0 <== NOT EXECUTED int signo, siginfo_t *info, bool is_global, bool check_blocked ) { 4c34a: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 4c34e: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4c352: 48d7 043c moveml %d2-%d5/%a2,%sp@ <== NOT EXECUTED 4c356: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4c35a: 2202 movel %d2,%d1 <== NOT EXECUTED 4c35c: 5381 subql #1,%d1 <== NOT EXECUTED 4c35e: 1a2e 0017 moveb %fp@(23),%d5 <== NOT EXECUTED 4c362: e3a8 lsll %d1,%d0 <== NOT EXECUTED /* set blocked signals based on if checking for them, SIGNAL_ALL_MASK * insures that no signals are blocked and all are checked. */ if ( check_blocked ) 4c364: 4a2e 001b tstb %fp@(27) <== NOT EXECUTED 4c368: 6708 beqs 4c372 <_POSIX_signals_Clear_signals+0x2a><== NOT EXECUTED signals_blocked = ~api->signals_blocked; 4c36a: 2828 00d0 movel %a0@(208),%d4 <== NOT EXECUTED 4c36e: 4684 notl %d4 <== NOT EXECUTED 4c370: 6002 bras 4c374 <_POSIX_signals_Clear_signals+0x2c><== NOT EXECUTED else signals_blocked = SIGNAL_ALL_MASK; 4c372: 78ff moveq #-1,%d4 <== NOT EXECUTED /* XXX is this right for siginfo type signals? */ /* XXX are we sure they can be cleared the same way? */ _ISR_Disable( level ); 4c374: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED 4c37a: 40c3 movew %sr,%d3 <== NOT EXECUTED 4c37c: 8283 orl %d3,%d1 <== NOT EXECUTED 4c37e: 46c1 movew %d1,%sr <== NOT EXECUTED if ( is_global ) { 4c380: 4a05 tstb %d5 <== NOT EXECUTED 4c382: 6700 0094 beqw 4c418 <_POSIX_signals_Clear_signals+0xd0><== NOT EXECUTED if ( mask & (_POSIX_signals_Pending & signals_blocked) ) { 4c386: c0b9 0005 eb28 andl 5eb28 <_POSIX_signals_Pending>,%d0 <== NOT EXECUTED 4c38c: c084 andl %d4,%d0 <== NOT EXECUTED 4c38e: 6700 00a0 beqw 4c430 <_POSIX_signals_Clear_signals+0xe8><== NOT EXECUTED if ( _POSIX_signals_Vectors[ signo ].sa_flags == SA_SIGINFO ) { 4c392: 2202 movel %d2,%d1 <== NOT EXECUTED 4c394: 2002 movel %d2,%d0 <== NOT EXECUTED 4c396: 41f9 0005 e934 lea 5e934 <_POSIX_signals_Vectors>,%a0 <== NOT EXECUTED 4c39c: e589 lsll #2,%d1 <== NOT EXECUTED 4c39e: e988 lsll #4,%d0 <== NOT EXECUTED 4c3a0: 9081 subl %d1,%d0 <== NOT EXECUTED 4c3a2: 7202 moveq #2,%d1 <== NOT EXECUTED 4c3a4: b2b0 0800 cmpl %a0@(00000000,%d0:l),%d1 <== NOT EXECUTED 4c3a8: 6662 bnes 4c40c <_POSIX_signals_Clear_signals+0xc4><== NOT EXECUTED do_callout = true; } } _ISR_Enable( level ); return do_callout; } 4c3aa: 43f9 0005 eb2c lea 5eb2c <_POSIX_signals_Siginfo>,%a1 <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( const Chain_Control *the_chain ) { return _Chain_Immutable_first( the_chain ) == _Chain_Immutable_tail( the_chain ); 4c3b0: 2200 movel %d0,%d1 <== NOT EXECUTED 4c3b2: 0681 0005 eb30 addil #387888,%d1 <== NOT EXECUTED 4c3b8: 2471 0800 moveal %a1@(00000000,%d0:l),%a2 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected( Chain_Control *the_chain ) { if ( !_Chain_Is_empty(the_chain)) 4c3bc: b28a cmpl %a2,%d1 <== NOT EXECUTED 4c3be: 670e beqs 4c3ce <_POSIX_signals_Clear_signals+0x86><== NOT EXECUTED Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *old_first = head->next; Chain_Node *new_first = old_first->next; 4c3c0: 2052 moveal %a2@,%a0 <== NOT EXECUTED head->next = new_first; 4c3c2: 2388 0800 movel %a0,%a1@(00000000,%d0:l) <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_first_unprotected( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); 4c3c6: d089 addl %a1,%d0 <== NOT EXECUTED 4c3c8: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED 4c3cc: 6002 bras 4c3d0 <_POSIX_signals_Clear_signals+0x88><== NOT EXECUTED ) { if ( !_Chain_Is_empty(the_chain)) return _Chain_Get_first_unprotected(the_chain); else return NULL; 4c3ce: 95ca subal %a2,%a2 <== NOT EXECUTED if ( is_global ) { if ( mask & (_POSIX_signals_Pending & signals_blocked) ) { if ( _POSIX_signals_Vectors[ signo ].sa_flags == SA_SIGINFO ) { psiginfo = (POSIX_signals_Siginfo_node *) _Chain_Get_unprotected( &_POSIX_signals_Siginfo[ signo ] ); _POSIX_signals_Clear_process_signals( signo ); 4c3d0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4c3d2: 4eb9 0004 c8c0 jsr 4c8c0 <_POSIX_signals_Clear_process_signals><== NOT EXECUTED /* * It may be impossible to get here with an empty chain * BUT until that is proven we need to be defensive and * protect against it. */ if ( psiginfo ) { 4c3d8: 588f addql #4,%sp <== NOT EXECUTED 4c3da: 4a8a tstl %a2 <== NOT EXECUTED 4c3dc: 672e beqs 4c40c <_POSIX_signals_Clear_signals+0xc4><== NOT EXECUTED *info = psiginfo->Info; 4c3de: 4878 000c pea c <== NOT EXECUTED 4c3e2: 486a 0008 pea %a2@(8) <== NOT EXECUTED 4c3e6: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4c3ea: 4eb9 0004 d1f8 jsr 4d1f8 <== NOT EXECUTED Chain_Control *the_chain, Chain_Node *the_node ) { Chain_Node *tail = _Chain_Tail( the_chain ); Chain_Node *old_last = tail->previous; 4c3f0: 2079 0005 eabc moveal 5eabc <_POSIX_signals_Inactive_siginfo+0x8>,%a0<== NOT EXECUTED the_node->next = tail; tail->previous = the_node; old_last->next = the_node; the_node->previous = old_last; 4c3f6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED ) { Chain_Node *tail = _Chain_Tail( the_chain ); Chain_Node *old_last = tail->previous; the_node->next = tail; 4c3fa: 24bc 0005 eab8 movel #387768,%a2@ <== NOT EXECUTED tail->previous = the_node; 4c400: 23ca 0005 eabc movel %a2,5eabc <_POSIX_signals_Inactive_siginfo+0x8><== NOT EXECUTED old_last->next = the_node; 4c406: 208a movel %a2,%a0@ <== NOT EXECUTED the_node->previous = old_last; 4c408: 2548 0004 movel %a0,%a2@(4) <== NOT EXECUTED &psiginfo->Node ); } else do_callout = false; } _POSIX_signals_Clear_process_signals( signo ); 4c40c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4c40e: 4eb9 0004 c8c0 jsr 4c8c0 <_POSIX_signals_Clear_process_signals><== NOT EXECUTED 4c414: 588f addql #4,%sp <== NOT EXECUTED 4c416: 6014 bras 4c42c <_POSIX_signals_Clear_signals+0xe4><== NOT EXECUTED do_callout = true; } } else { if ( mask & (api->signals_pending & signals_blocked) ) { 4c418: 2428 00d4 movel %a0@(212),%d2 <== NOT EXECUTED 4c41c: 2200 movel %d0,%d1 <== NOT EXECUTED 4c41e: c282 andl %d2,%d1 <== NOT EXECUTED 4c420: c284 andl %d4,%d1 <== NOT EXECUTED 4c422: 670c beqs 4c430 <_POSIX_signals_Clear_signals+0xe8><== NOT EXECUTED api->signals_pending &= ~mask; 4c424: 4680 notl %d0 <== NOT EXECUTED 4c426: c082 andl %d2,%d0 <== NOT EXECUTED 4c428: 2140 00d4 movel %d0,%a0@(212) <== NOT EXECUTED do_callout = true; 4c42c: 7001 moveq #1,%d0 <== NOT EXECUTED 4c42e: 6002 bras 4c432 <_POSIX_signals_Clear_signals+0xea><== NOT EXECUTED bool do_callout; POSIX_signals_Siginfo_node *psiginfo; mask = signo_to_mask( signo ); do_callout = false; 4c430: 4200 clrb %d0 <== NOT EXECUTED if ( mask & (api->signals_pending & signals_blocked) ) { api->signals_pending &= ~mask; do_callout = true; } } _ISR_Enable( level ); 4c432: 46c3 movew %d3,%sr <== NOT EXECUTED return do_callout; } 4c434: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 <== NOT EXECUTED 4c43a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046030 <_POSIX_signals_Get_lowest>: sigset_t set ) { int signo; for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) { 46030: 701b moveq #27,%d0 <== NOT EXECUTED #include int _POSIX_signals_Get_lowest( sigset_t set ) { 46032: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 46036: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 4603a: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4603e: 7601 moveq #1,%d3 <== NOT EXECUTED #include #include #include #include int _POSIX_signals_Get_lowest( 46040: 2200 movel %d0,%d1 <== NOT EXECUTED 46042: 5381 subql #1,%d1 <== NOT EXECUTED 46044: 2803 movel %d3,%d4 <== NOT EXECUTED 46046: e3ac lsll %d1,%d4 <== NOT EXECUTED 46048: 2204 movel %d4,%d1 <== NOT EXECUTED ) { int signo; for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) { if ( set & signo_to_mask( signo ) ) { 4604a: c282 andl %d2,%d1 <== NOT EXECUTED 4604c: 6626 bnes 46074 <_POSIX_signals_Get_lowest+0x44> <== NOT EXECUTED sigset_t set ) { int signo; for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) { 4604e: 5280 addql #1,%d0 <== NOT EXECUTED 46050: 123c 0020 moveb #32,%d1 <== NOT EXECUTED 46054: b280 cmpl %d0,%d1 <== NOT EXECUTED 46056: 66e8 bnes 46040 <_POSIX_signals_Get_lowest+0x10> <== NOT EXECUTED 46058: 7001 moveq #1,%d0 <== NOT EXECUTED 4605a: 7601 moveq #1,%d3 <== NOT EXECUTED #include #include #include #include int _POSIX_signals_Get_lowest( 4605c: 2200 movel %d0,%d1 <== NOT EXECUTED 4605e: 5381 subql #1,%d1 <== NOT EXECUTED 46060: 2803 movel %d3,%d4 <== NOT EXECUTED 46062: e3ac lsll %d1,%d4 <== NOT EXECUTED 46064: 2204 movel %d4,%d1 <== NOT EXECUTED #if (SIGHUP != 1) #error "Assumption that SIGHUP==1 violated!!" #endif for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) { if ( set & signo_to_mask( signo ) ) { 46066: c282 andl %d2,%d1 <== NOT EXECUTED 46068: 660a bnes 46074 <_POSIX_signals_Get_lowest+0x44> <== NOT EXECUTED */ #if (SIGHUP != 1) #error "Assumption that SIGHUP==1 violated!!" #endif for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) { 4606a: 5280 addql #1,%d0 <== NOT EXECUTED 4606c: 123c 001b moveb #27,%d1 <== NOT EXECUTED 46070: b280 cmpl %d0,%d1 <== NOT EXECUTED 46072: 66e8 bnes 4605c <_POSIX_signals_Get_lowest+0x2c> <== NOT EXECUTED * a return 0. This routine will NOT be called unless a signal * is pending in the set passed in. */ found_it: return signo; } 46074: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED 46078: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00049eba <_POSIX_signals_Post_switch_extension>: */ void _POSIX_signals_Post_switch_extension( Thread_Control *the_thread ) { 49eba: 4e56 fff0 linkw %fp,#-16 POSIX_API_Control *api; int signo; ISR_Level level; api = the_thread->API_Extensions[ THREAD_API_POSIX ]; 49ebe: 206e 0008 moveal %fp@(8),%a0 */ void _POSIX_signals_Post_switch_extension( Thread_Control *the_thread ) { 49ec2: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ POSIX_API_Control *api; int signo; ISR_Level level; api = the_thread->API_Extensions[ THREAD_API_POSIX ]; 49ec6: 2468 0102 moveal %a0@(258),%a2 /* * api may be NULL in case of a thread close in progress */ if ( !api ) 49eca: 4a8a tstl %a2 49ecc: 6770 beqs 49f3e <_POSIX_signals_Post_switch_extension+0x84><== NEVER TAKEN * * The first thing done is to check there are any signals to be * processed at all. No point in doing this loop otherwise. */ while (1) { _ISR_Disable( level ); 49ece: 263c 0000 0700 movel #1792,%d3 break; } _ISR_Enable( level ); for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) { _POSIX_signals_Check_signal( api, signo, false ); 49ed4: 47f9 0004 c270 lea 4c270 <_POSIX_signals_Check_signal>,%a3 * * The first thing done is to check there are any signals to be * processed at all. No point in doing this loop otherwise. */ while (1) { _ISR_Disable( level ); 49eda: 2003 movel %d3,%d0 49edc: 40c1 movew %sr,%d1 49ede: 8081 orl %d1,%d0 49ee0: 46c0 movew %d0,%sr if ( !(~api->signals_blocked & (api->signals_pending | _POSIX_signals_Pending)) ) { 49ee2: 2039 0005 eb28 movel 5eb28 <_POSIX_signals_Pending>,%d0 * The first thing done is to check there are any signals to be * processed at all. No point in doing this loop otherwise. */ while (1) { _ISR_Disable( level ); if ( !(~api->signals_blocked & 49ee8: 242a 00d0 movel %a2@(208),%d2 49eec: 4682 notl %d2 (api->signals_pending | _POSIX_signals_Pending)) ) { 49eee: 80aa 00d4 orl %a2@(212),%d0 * The first thing done is to check there are any signals to be * processed at all. No point in doing this loop otherwise. */ while (1) { _ISR_Disable( level ); if ( !(~api->signals_blocked & 49ef2: c082 andl %d2,%d0 49ef4: 6604 bnes 49efa <_POSIX_signals_Post_switch_extension+0x40><== NEVER TAKEN (api->signals_pending | _POSIX_signals_Pending)) ) { _ISR_Enable( level ); 49ef6: 46c1 movew %d1,%sr 49ef8: 6044 bras 49f3e <_POSIX_signals_Post_switch_extension+0x84> break; } _ISR_Enable( level ); 49efa: 46c1 movew %d1,%sr <== NOT EXECUTED for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) { 49efc: 741b moveq #27,%d2 <== NOT EXECUTED _POSIX_signals_Check_signal( api, signo, false ); 49efe: 42a7 clrl %sp@- <== NOT EXECUTED 49f00: 2f02 movel %d2,%sp@- <== NOT EXECUTED 49f02: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49f04: 4e93 jsr %a3@ <== NOT EXECUTED _POSIX_signals_Check_signal( api, signo, true ); 49f06: 4878 0001 pea 1 <== NOT EXECUTED 49f0a: 2f02 movel %d2,%sp@- <== NOT EXECUTED _ISR_Enable( level ); break; } _ISR_Enable( level ); for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) { 49f0c: 5282 addql #1,%d2 <== NOT EXECUTED _POSIX_signals_Check_signal( api, signo, false ); _POSIX_signals_Check_signal( api, signo, true ); 49f0e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49f10: 4e93 jsr %a3@ <== NOT EXECUTED _ISR_Enable( level ); break; } _ISR_Enable( level ); for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) { 49f12: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 49f16: 7020 moveq #32,%d0 <== NOT EXECUTED 49f18: b082 cmpl %d2,%d0 <== NOT EXECUTED 49f1a: 66e2 bnes 49efe <_POSIX_signals_Post_switch_extension+0x44><== NOT EXECUTED 49f1c: 7401 moveq #1,%d2 <== NOT EXECUTED _POSIX_signals_Check_signal( api, signo, true ); } /* Unfortunately - nothing like __SIGFIRSTNOTRT in newlib signal .h */ for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) { _POSIX_signals_Check_signal( api, signo, false ); 49f1e: 42a7 clrl %sp@- <== NOT EXECUTED 49f20: 2f02 movel %d2,%sp@- <== NOT EXECUTED 49f22: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49f24: 4e93 jsr %a3@ <== NOT EXECUTED _POSIX_signals_Check_signal( api, signo, true ); 49f26: 4878 0001 pea 1 <== NOT EXECUTED 49f2a: 2f02 movel %d2,%sp@- <== NOT EXECUTED _POSIX_signals_Check_signal( api, signo, false ); _POSIX_signals_Check_signal( api, signo, true ); } /* Unfortunately - nothing like __SIGFIRSTNOTRT in newlib signal .h */ for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) { 49f2c: 5282 addql #1,%d2 <== NOT EXECUTED _POSIX_signals_Check_signal( api, signo, false ); _POSIX_signals_Check_signal( api, signo, true ); 49f2e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49f30: 4e93 jsr %a3@ <== NOT EXECUTED _POSIX_signals_Check_signal( api, signo, false ); _POSIX_signals_Check_signal( api, signo, true ); } /* Unfortunately - nothing like __SIGFIRSTNOTRT in newlib signal .h */ for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) { 49f32: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 49f36: 701b moveq #27,%d0 <== NOT EXECUTED 49f38: b082 cmpl %d2,%d0 <== NOT EXECUTED 49f3a: 66e2 bnes 49f1e <_POSIX_signals_Post_switch_extension+0x64><== NOT EXECUTED 49f3c: 609c bras 49eda <_POSIX_signals_Post_switch_extension+0x20><== NOT EXECUTED _POSIX_signals_Check_signal( api, signo, false ); _POSIX_signals_Check_signal( api, signo, true ); } } } 49f3e: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 49f44: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0005ac18 <_POSIX_signals_Set_process_signals>: sigset_t mask ) { ISR_Level level; _ISR_Disable( level ); 5ac18: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED */ void _POSIX_signals_Set_process_signals( sigset_t mask ) { 5ac1e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED ISR_Level level; _ISR_Disable( level ); 5ac22: 40c1 movew %sr,%d1 <== NOT EXECUTED 5ac24: 8081 orl %d1,%d0 <== NOT EXECUTED 5ac26: 46c0 movew %d0,%sr <== NOT EXECUTED _POSIX_signals_Pending |= mask; 5ac28: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 5ac2c: 81b9 0005 eb28 orl %d0,5eb28 <_POSIX_signals_Pending> <== NOT EXECUTED _ISR_Enable( level ); 5ac32: 46c1 movew %d1,%sr <== NOT EXECUTED } 5ac34: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045418 <_POSIX_signals_Ualarm_TSR>: void _POSIX_signals_Ualarm_TSR( Objects_Id id __attribute__((unused)), void *argument __attribute__((unused)) ) { 45418: 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 ); 4541c: 4eb9 0004 2a1c jsr 42a1c <== NOT EXECUTED 45422: 4878 000e pea e <== NOT EXECUTED 45426: 2f00 movel %d0,%sp@- <== NOT EXECUTED 45428: 4eb9 0004 5230 jsr 45230 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Watchdog_Reset( Watchdog_Control *the_watchdog ) { (void) _Watchdog_Remove( the_watchdog ); 4542e: 4879 0006 049c pea 6049c <_POSIX_signals_Ualarm_timer> <== NOT EXECUTED 45434: 4eb9 0004 8bf0 jsr 48bf0 <_Watchdog_Remove> <== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 4543a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4543e: 203c 0006 049c movel #394396,%d0 <== NOT EXECUTED 45444: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED 45448: 203c 0005 fd48 movel #392520,%d0 <== NOT EXECUTED 4544e: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED /* * If the reset interval is non-zero, reschedule ourselves. */ _Watchdog_Reset( &_POSIX_signals_Ualarm_timer ); } 45452: 4e5e unlk %fp <== NOT EXECUTED 45454: 4ef9 0004 8ac8 jmp 48ac8 <_Watchdog_Insert> <== NOT EXECUTED =============================================================================== 0005ac38 <_POSIX_signals_Unblock_thread>: 5ac38: 7201 moveq #1,%d1 <== NOT EXECUTED bool _POSIX_signals_Unblock_thread( Thread_Control *the_thread, int signo, siginfo_t *info ) { 5ac3a: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 5ac3e: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED 5ac42: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 5ac46: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 5ac4a: 2002 movel %d2,%d0 <== NOT EXECUTED 5ac4c: 5380 subql #1,%d0 <== NOT EXECUTED 5ac4e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 5ac52: e1a9 lsll %d0,%d1 <== NOT EXECUTED /* * Is the thread is specifically waiting for a signal? */ if ( _States_Is_interruptible_signal( the_thread->current_state ) ) { 5ac54: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED 5ac58: 2600 movel %d0,%d3 <== NOT EXECUTED 5ac5a: 0283 1000 8000 andil #268468224,%d3 <== NOT EXECUTED { POSIX_API_Control *api; sigset_t mask; siginfo_t *the_info = NULL; api = the_thread->API_Extensions[ THREAD_API_POSIX ]; 5ac60: 206a 0102 moveal %a2@(258),%a0 <== NOT EXECUTED /* * Is the thread is specifically waiting for a signal? */ if ( _States_Is_interruptible_signal( the_thread->current_state ) ) { 5ac64: 0c83 1000 8000 cmpil #268468224,%d3 <== NOT EXECUTED 5ac6a: 6650 bnes 5acbc <_POSIX_signals_Unblock_thread+0x84><== NOT EXECUTED if ( (the_thread->Wait.option & mask) || (~api->signals_blocked & mask) ) { 5ac6c: 2001 movel %d1,%d0 <== NOT EXECUTED 5ac6e: c0aa 0030 andl %a2@(48),%d0 <== NOT EXECUTED 5ac72: 660c bnes 5ac80 <_POSIX_signals_Unblock_thread+0x48><== NOT EXECUTED 5ac74: 2028 00d0 movel %a0@(208),%d0 <== NOT EXECUTED 5ac78: 4680 notl %d0 <== NOT EXECUTED 5ac7a: c280 andl %d0,%d1 <== NOT EXECUTED 5ac7c: 6700 00a8 beqw 5ad26 <_POSIX_signals_Unblock_thread+0xee><== NOT EXECUTED the_thread->Wait.return_code = EINTR; 5ac80: 7004 moveq #4,%d0 <== NOT EXECUTED the_info = (siginfo_t *) the_thread->Wait.return_argument; 5ac82: 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; 5ac86: 2540 0034 movel %d0,%a2@(52) <== NOT EXECUTED the_info = (siginfo_t *) the_thread->Wait.return_argument; if ( !info ) { 5ac8a: 4a89 tstl %a1 <== NOT EXECUTED 5ac8c: 660e bnes 5ac9c <_POSIX_signals_Unblock_thread+0x64><== NOT EXECUTED the_info->si_signo = signo; the_info->si_code = SI_USER; 5ac8e: 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; 5ac90: 2082 movel %d2,%a0@ <== NOT EXECUTED the_info->si_code = SI_USER; 5ac92: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED the_info->si_value.sival_int = 0; 5ac96: 42a8 0008 clrl %a0@(8) <== NOT EXECUTED 5ac9a: 6012 bras 5acae <_POSIX_signals_Unblock_thread+0x76><== NOT EXECUTED } else { *the_info = *info; 5ac9c: 4878 000c pea c <== NOT EXECUTED 5aca0: 2f09 movel %a1,%sp@- <== NOT EXECUTED 5aca2: 2f08 movel %a0,%sp@- <== NOT EXECUTED 5aca4: 4eb9 0004 d1f8 jsr 4d1f8 <== NOT EXECUTED 5acaa: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED } _Thread_queue_Extract_with_proxy( the_thread ); 5acae: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5acb0: 4eb9 0004 7de0 jsr 47de0 <_Thread_queue_Extract_with_proxy><== NOT EXECUTED return true; 5acb6: 588f addql #4,%sp <== NOT EXECUTED 5acb8: 7001 moveq #1,%d0 <== NOT EXECUTED 5acba: 606c bras 5ad28 <_POSIX_signals_Unblock_thread+0xf0><== NOT EXECUTED } /* * Thread is not waiting due to a sigwait. */ if ( ~api->signals_blocked & mask ) { 5acbc: 2428 00d0 movel %a0@(208),%d2 <== NOT EXECUTED 5acc0: 4682 notl %d2 <== NOT EXECUTED 5acc2: c282 andl %d2,%d1 <== NOT EXECUTED 5acc4: 6760 beqs 5ad26 <_POSIX_signals_Unblock_thread+0xee><== NOT EXECUTED * it is not blocked, THEN * we need to dispatch at the end of this ISR. * + Any other combination, do nothing. */ if ( _States_Is_interruptible_by_signal( the_thread->current_state ) ) { 5acc6: 0800 001c btst #28,%d0 <== NOT EXECUTED 5acca: 673e beqs 5ad0a <_POSIX_signals_Unblock_thread+0xd2><== NOT EXECUTED the_thread->Wait.return_code = EINTR; 5accc: 7204 moveq #4,%d1 <== NOT EXECUTED 5acce: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _States_Is_waiting_on_thread_queue ( States_Control the_states ) { return (the_states & STATES_WAITING_ON_THREAD_QUEUE); 5acd2: 2200 movel %d0,%d1 <== NOT EXECUTED 5acd4: 0281 0003 bee0 andil #245472,%d1 <== NOT EXECUTED /* * In pthread_cond_wait, a thread will be blocking on a thread * queue, but is also interruptible by a POSIX signal. */ if ( _States_Is_waiting_on_thread_queue(the_thread->current_state) ) 5acda: 670c beqs 5ace8 <_POSIX_signals_Unblock_thread+0xb0><== NOT EXECUTED _Thread_queue_Extract_with_proxy( the_thread ); 5acdc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5acde: 4eb9 0004 7de0 jsr 47de0 <_Thread_queue_Extract_with_proxy><== NOT EXECUTED 5ace4: 588f addql #4,%sp <== NOT EXECUTED 5ace6: 603e bras 5ad26 <_POSIX_signals_Unblock_thread+0xee><== NOT EXECUTED else if ( _States_Is_delaying(the_thread->current_state) ) { 5ace8: 44c0 movew %d0,%ccr <== NOT EXECUTED 5acea: 6a3a bpls 5ad26 <_POSIX_signals_Unblock_thread+0xee><== NOT EXECUTED (void) _Watchdog_Remove( &the_thread->Timer ); 5acec: 486a 0048 pea %a2@(72) <== NOT EXECUTED 5acf0: 4eb9 0004 863c jsr 4863c <_Watchdog_Remove> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Thread_Unblock ( Thread_Control *the_thread ) { _Thread_Clear_state( the_thread, STATES_BLOCKED ); 5acf6: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED 5acfc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5acfe: 4eb9 0004 743c jsr 4743c <_Thread_Clear_state> <== NOT EXECUTED 5ad04: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 5ad08: 601c bras 5ad26 <_POSIX_signals_Unblock_thread+0xee><== NOT EXECUTED _Thread_Unblock( the_thread ); } } else if ( the_thread->current_state == STATES_READY ) { 5ad0a: 4a80 tstl %d0 <== NOT EXECUTED 5ad0c: 6618 bnes 5ad26 <_POSIX_signals_Unblock_thread+0xee><== NOT EXECUTED if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) ) 5ad0e: 4ab9 0005 e8fe tstl 5e8fe <_Per_CPU_Information+0x8> <== NOT EXECUTED 5ad14: 6710 beqs 5ad26 <_POSIX_signals_Unblock_thread+0xee><== NOT EXECUTED 5ad16: b5f9 0005 e902 cmpal 5e902 <_Per_CPU_Information+0xc>,%a2 <== NOT EXECUTED 5ad1c: 6608 bnes 5ad26 <_POSIX_signals_Unblock_thread+0xee><== NOT EXECUTED _Thread_Dispatch_necessary = true; 5ad1e: 7001 moveq #1,%d0 <== NOT EXECUTED 5ad20: 13c0 0005 e90e moveb %d0,5e90e <_Per_CPU_Information+0x18> <== NOT EXECUTED } } return false; 5ad26: 4200 clrb %d0 <== NOT EXECUTED } 5ad28: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 5ad2e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00047248 <_Protected_heap_Extend>: bool _Protected_heap_Extend( Heap_Control *the_heap, void *starting_address, uintptr_t size ) { 47248: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED bool extend_ok; uintptr_t amount_extended; _RTEMS_Lock_allocator(); 4724c: 2f39 0005 eb84 movel 5eb84 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 47252: 4eb9 0004 6234 jsr 46234 <_API_Mutex_Lock> <== NOT EXECUTED extend_ok = _Heap_Extend(the_heap, starting_address, size, &amount_extended); 47258: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4725c: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 47260: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 47264: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47268: 4eb9 0004 afe0 jsr 4afe0 <_Heap_Extend> <== NOT EXECUTED _RTEMS_Unlock_allocator(); 4726e: 2f39 0005 eb84 movel 5eb84 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 47274: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED 47278: 4eb9 0004 6294 jsr 46294 <_API_Mutex_Unlock> <== NOT EXECUTED return extend_ok; } 4727e: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 47282: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004b330 <_Protected_heap_Get_free_information>: bool _Protected_heap_Get_free_information( Heap_Control *the_heap, Heap_Information *info ) { 4b330: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED /* * TBD: _Heap_Get_free_information does not error check or return status. */ _RTEMS_Lock_allocator(); 4b334: 2f39 0006 3de4 movel 63de4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4b33a: 4eb9 0004 9a28 jsr 49a28 <_API_Mutex_Lock> <== NOT EXECUTED _Heap_Get_free_information( the_heap, info ); 4b340: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4b344: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4b348: 4eb9 0004 f284 jsr 4f284 <_Heap_Get_free_information> <== NOT EXECUTED _RTEMS_Unlock_allocator(); 4b34e: 2f39 0006 3de4 movel 63de4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4b354: 4eb9 0004 9a88 jsr 49a88 <_API_Mutex_Unlock> <== NOT EXECUTED return true; } 4b35a: 7001 moveq #1,%d0 <== NOT EXECUTED 4b35c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00047608 <_Protected_heap_Get_information>: bool _Protected_heap_Get_information( Heap_Control *the_heap, Heap_Information_block *the_info ) { 47608: 4e56 0000 linkw %fp,#0 4760c: 2f03 movel %d3,%sp@- 4760e: 262e 000c movel %fp@(12),%d3 47612: 2f02 movel %d2,%sp@- 47614: 242e 0008 movel %fp@(8),%d2 if ( !the_heap ) 47618: 672e beqs 47648 <_Protected_heap_Get_information+0x40><== NEVER TAKEN return false; if ( !the_info ) 4761a: 4a83 tstl %d3 4761c: 672a beqs 47648 <_Protected_heap_Get_information+0x40><== NEVER TAKEN return false; _RTEMS_Lock_allocator(); 4761e: 2f39 0005 ee58 movel 5ee58 <_RTEMS_Allocator_Mutex>,%sp@- 47624: 4eb9 0004 65bc jsr 465bc <_API_Mutex_Lock> _Heap_Get_information( the_heap, the_info ); 4762a: 2f03 movel %d3,%sp@- 4762c: 2f02 movel %d2,%sp@- 4762e: 4eb9 0004 b7ac jsr 4b7ac <_Heap_Get_information> _RTEMS_Unlock_allocator(); 47634: 2f39 0005 ee58 movel 5ee58 <_RTEMS_Allocator_Mutex>,%sp@- 4763a: 4eb9 0004 661c jsr 4661c <_API_Mutex_Unlock> return true; 47640: 4fef 0010 lea %sp@(16),%sp 47644: 7001 moveq #1,%d0 47646: 6002 bras 4764a <_Protected_heap_Get_information+0x42> { if ( !the_heap ) return false; if ( !the_info ) return false; 47648: 4200 clrb %d0 <== NOT EXECUTED _RTEMS_Lock_allocator(); _Heap_Get_information( the_heap, the_info ); _RTEMS_Unlock_allocator(); return true; } 4764a: 242e fff8 movel %fp@(-8),%d2 4764e: 262e fffc movel %fp@(-4),%d3 47652: 4e5e unlk %fp ... =============================================================================== 0005ae3c <_Protected_heap_Resize_block>: bool _Protected_heap_Resize_block( Heap_Control *the_heap, void *starting_address, uintptr_t size ) { 5ae3c: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 5ae40: 2f02 movel %d2,%sp@- <== NOT EXECUTED Heap_Resize_status status; uintptr_t old_mem_size; uintptr_t avail_mem_size; _RTEMS_Lock_allocator(); 5ae42: 2f39 0005 e538 movel 5e538 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 5ae48: 4eb9 0004 5f20 jsr 45f20 <_API_Mutex_Lock> <== NOT EXECUTED status = _Heap_Resize_block( 5ae4e: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 5ae52: 486e fffc pea %fp@(-4) <== NOT EXECUTED 5ae56: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 5ae5a: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 5ae5e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 5ae62: 4eb9 0005 ae88 jsr 5ae88 <_Heap_Resize_block> <== NOT EXECUTED the_heap, starting_address, size, &old_mem_size, &avail_mem_size ); _RTEMS_Unlock_allocator(); 5ae68: 2f39 0005 e538 movel 5e538 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED Heap_Resize_status status; uintptr_t old_mem_size; uintptr_t avail_mem_size; _RTEMS_Lock_allocator(); status = _Heap_Resize_block( 5ae6e: 2400 movel %d0,%d2 <== NOT EXECUTED the_heap, starting_address, size, &old_mem_size, &avail_mem_size ); _RTEMS_Unlock_allocator(); 5ae70: 4eb9 0004 5f80 jsr 45f80 <_API_Mutex_Unlock> <== NOT EXECUTED return (status == HEAP_RESIZE_SUCCESSFUL); 5ae76: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 5ae7a: 4a82 tstl %d2 <== NOT EXECUTED 5ae7c: 57c0 seq %d0 <== NOT EXECUTED } 5ae7e: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 5ae82: 4480 negl %d0 <== NOT EXECUTED 5ae84: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004b40c <_Protected_heap_Walk>: bool _Protected_heap_Walk( Heap_Control *the_heap, int source, bool do_dump ) { 4b40c: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED * then it is forbidden to lock a mutex. But since we are inside * a critical section, it should be safe to walk it unlocked. * * NOTE: Dispatching is also disabled during initialization. */ if ( !_Thread_Dispatch_disable_level ) { 4b410: 2039 0006 3d24 movel 63d24 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED bool _Protected_heap_Walk( Heap_Control *the_heap, int source, bool do_dump ) { 4b416: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 4b41a: 4284 clrl %d4 <== NOT EXECUTED 4b41c: 182e 0013 moveb %fp@(19),%d4 <== NOT EXECUTED 4b420: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4b424: 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 ) { 4b428: 4a80 tstl %d0 <== NOT EXECUTED 4b42a: 663a bnes 4b466 <_Protected_heap_Walk+0x5a> <== NOT EXECUTED _RTEMS_Lock_allocator(); 4b42c: 2f39 0006 3de4 movel 63de4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4b432: 4eb9 0004 9a28 jsr 49a28 <_API_Mutex_Lock> <== NOT EXECUTED status = _Heap_Walk( the_heap, source, do_dump ); 4b438: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4b43a: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4b43c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b43e: 4eb9 0004 a72e jsr 4a72e <_Heap_Walk> <== NOT EXECUTED _RTEMS_Unlock_allocator(); 4b444: 2f39 0006 3de4 movel 63de4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4b44a: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED 4b44e: 4eb9 0004 9a88 jsr 49a88 <_API_Mutex_Unlock> <== NOT EXECUTED } else { status = _Heap_Walk( the_heap, source, do_dump ); } return status; } 4b454: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED * NOTE: Dispatching is also disabled during initialization. */ if ( !_Thread_Dispatch_disable_level ) { _RTEMS_Lock_allocator(); status = _Heap_Walk( the_heap, source, do_dump ); _RTEMS_Unlock_allocator(); 4b458: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED } else { status = _Heap_Walk( the_heap, source, do_dump ); } return status; } 4b45c: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 4b462: 4e5e unlk %fp <== NOT EXECUTED 4b464: 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 ); 4b466: 2d44 0010 movel %d4,%fp@(16) <== NOT EXECUTED 4b46a: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED 4b46e: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED } return status; } 4b472: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 4b478: 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 ); 4b47a: 4ef9 0004 a72e jmp 4a72e <_Heap_Walk> <== NOT EXECUTED =============================================================================== 0004a8ec <_RTEMS_Tasks_Invoke_task_variable_dtor>: void _RTEMS_Tasks_Invoke_task_variable_dtor( Thread_Control *the_thread, rtems_task_variable_t *tvp ) { 4a8ec: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED void (*dtor)(void *); void *value; dtor = tvp->dtor; if (_Thread_Is_executing(the_thread)) { 4a8f0: 2039 0005 e902 movel 5e902 <_Per_CPU_Information+0xc>,%d0 <== NOT EXECUTED void _RTEMS_Tasks_Invoke_task_variable_dtor( Thread_Control *the_thread, rtems_task_variable_t *tvp ) { 4a8f6: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a8f8: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED void (*dtor)(void *); void *value; dtor = tvp->dtor; 4a8fc: 206a 0010 moveal %a2@(16),%a0 <== NOT EXECUTED if (_Thread_Is_executing(the_thread)) { 4a900: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED 4a904: 660c bnes 4a912 <_RTEMS_Tasks_Invoke_task_variable_dtor+0x26><== NOT EXECUTED value = *tvp->ptr; 4a906: 226a 0004 moveal %a2@(4),%a1 <== NOT EXECUTED 4a90a: 2011 movel %a1@,%d0 <== NOT EXECUTED *tvp->ptr = tvp->gval; 4a90c: 22aa 0008 movel %a2@(8),%a1@ <== NOT EXECUTED 4a910: 6004 bras 4a916 <_RTEMS_Tasks_Invoke_task_variable_dtor+0x2a><== NOT EXECUTED } else { value = tvp->tval; 4a912: 202a 000c movel %a2@(12),%d0 <== NOT EXECUTED } if ( dtor ) 4a916: 4a88 tstl %a0 <== NOT EXECUTED 4a918: 6706 beqs 4a920 <_RTEMS_Tasks_Invoke_task_variable_dtor+0x34><== NOT EXECUTED (*dtor)(value); 4a91a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4a91c: 4e90 jsr %a0@ <== NOT EXECUTED 4a91e: 588f addql #4,%sp <== NOT EXECUTED _Workspace_Free(tvp); 4a920: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED } 4a924: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4a928: 4e5e unlk %fp <== NOT EXECUTED } if ( dtor ) (*dtor)(value); _Workspace_Free(tvp); 4a92a: 4ef9 0004 87b0 jmp 487b0 <_Workspace_Free> <== NOT EXECUTED =============================================================================== 0004a82c <_RTEMS_tasks_Create_extension>: bool _RTEMS_tasks_Create_extension( Thread_Control *executing, Thread_Control *created ) { 4a82c: 4e56 0000 linkw %fp,#0 4a830: 2f0a movel %a2,%sp@- 4a832: 246e 000c moveal %fp@(12),%a2 /* * Notepads must be the last entry in the structure and they * can be left off if disabled in the configuration. */ to_allocate = sizeof( RTEMS_API_Control ); if ( !rtems_configuration_get_notepads_enabled() ) 4a836: 4a39 0005 cb64 tstb 5cb64 4a83c: 6704 beqs 4a842 <_RTEMS_tasks_Create_extension+0x16> /* * 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 ); 4a83e: 705e moveq #94,%d0 4a840: 6002 bras 4a844 <_RTEMS_tasks_Create_extension+0x18> if ( !rtems_configuration_get_notepads_enabled() ) to_allocate -= (RTEMS_NUMBER_NOTEPADS * sizeof(uint32_t)); 4a842: 701e moveq #30,%d0 api = _Workspace_Allocate( to_allocate ); 4a844: 2f00 movel %d0,%sp@- 4a846: 4eb9 0004 8794 jsr 48794 <_Workspace_Allocate> if ( !api ) 4a84c: 588f addql #4,%sp */ to_allocate = sizeof( RTEMS_API_Control ); if ( !rtems_configuration_get_notepads_enabled() ) to_allocate -= (RTEMS_NUMBER_NOTEPADS * sizeof(uint32_t)); api = _Workspace_Allocate( to_allocate ); 4a84e: 2040 moveal %d0,%a0 if ( !api ) 4a850: 4a80 tstl %d0 4a852: 673e beqs 4a892 <_RTEMS_tasks_Create_extension+0x66><== NEVER TAKEN return false; created->API_Extensions[ THREAD_API_RTEMS ] = api; 4a854: 2540 00fe movel %d0,%a2@(254) */ RTEMS_INLINE_ROUTINE void _ASR_Initialize ( ASR_Information *information ) { information->is_enabled = false; 4a858: 4200 clrb %d0 api->pending_events = EVENT_SETS_NONE_PENDING; 4a85a: 4290 clrl %a0@ 4a85c: 1140 0008 moveb %d0,%a0@(8) api->event_condition = 0; 4a860: 42a8 0004 clrl %a0@(4) information->handler = NULL; 4a864: 42a8 000a clrl %a0@(10) information->mode_set = RTEMS_DEFAULT_MODES; 4a868: 42a8 000e clrl %a0@(14) information->signals_posted = 0; 4a86c: 42a8 0012 clrl %a0@(18) information->signals_pending = 0; 4a870: 42a8 0016 clrl %a0@(22) information->nest_level = 0; 4a874: 42a8 001a clrl %a0@(26) _ASR_Initialize( &api->Signal ); created->task_variables = NULL; 4a878: 42aa 010a clrl %a2@(266) if ( rtems_configuration_get_notepads_enabled() ) { 4a87c: 4a39 0005 cb64 tstb 5cb64 4a882: 6712 beqs 4a896 <_RTEMS_tasks_Create_extension+0x6a> * task is created via another API, then this routine is invoked * and this API given the opportunity to initialize its extension * area. */ bool _RTEMS_tasks_Create_extension( 4a884: 41e8 001e lea %a0@(30),%a0 4a888: 7010 moveq #16,%d0 _ASR_Initialize( &api->Signal ); created->task_variables = NULL; if ( rtems_configuration_get_notepads_enabled() ) { for (i=0; i < RTEMS_NUMBER_NOTEPADS; i++) api->Notepads[i] = 0; 4a88a: 4298 clrl %a0@+ 4a88c: 5380 subql #1,%d0 api->event_condition = 0; _ASR_Initialize( &api->Signal ); created->task_variables = NULL; if ( rtems_configuration_get_notepads_enabled() ) { for (i=0; i < RTEMS_NUMBER_NOTEPADS; i++) 4a88e: 66fa bnes 4a88a <_RTEMS_tasks_Create_extension+0x5e> 4a890: 6004 bras 4a896 <_RTEMS_tasks_Create_extension+0x6a> to_allocate -= (RTEMS_NUMBER_NOTEPADS * sizeof(uint32_t)); api = _Workspace_Allocate( to_allocate ); if ( !api ) return false; 4a892: 4200 clrb %d0 <== NOT EXECUTED 4a894: 6002 bras 4a898 <_RTEMS_tasks_Create_extension+0x6c><== NOT EXECUTED if ( rtems_configuration_get_notepads_enabled() ) { for (i=0; i < RTEMS_NUMBER_NOTEPADS; i++) api->Notepads[i] = 0; } return true; 4a896: 7001 moveq #1,%d0 } 4a898: 246e fffc moveal %fp@(-4),%a2 4a89c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004a7e6 <_RTEMS_tasks_Delete_extension>: void _RTEMS_tasks_Delete_extension( Thread_Control *executing, Thread_Control *deleted ) { 4a7e6: 4e56 fff4 linkw %fp,#-12 4a7ea: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ 4a7ee: 246e 000c moveal %fp@(12),%a2 tvp = deleted->task_variables; deleted->task_variables = NULL; while (tvp) { next = (rtems_task_variable_t *)tvp->next; _RTEMS_Tasks_Invoke_task_variable_dtor( deleted, tvp ); 4a7f2: 47f9 0004 a8ec lea 4a8ec <_RTEMS_Tasks_Invoke_task_variable_dtor>,%a3 /* * Free per task variable memory */ tvp = deleted->task_variables; 4a7f8: 206a 010a moveal %a2@(266),%a0 deleted->task_variables = NULL; 4a7fc: 42aa 010a clrl %a2@(266) while (tvp) { 4a800: 600c bras 4a80e <_RTEMS_tasks_Delete_extension+0x28> next = (rtems_task_variable_t *)tvp->next; 4a802: 2410 movel %a0@,%d2 <== NOT EXECUTED _RTEMS_Tasks_Invoke_task_variable_dtor( deleted, tvp ); 4a804: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4a806: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a808: 4e93 jsr %a3@ <== NOT EXECUTED tvp = next; 4a80a: 508f addql #8,%sp <== NOT EXECUTED 4a80c: 2042 moveal %d2,%a0 <== NOT EXECUTED * Free per task variable memory */ tvp = deleted->task_variables; deleted->task_variables = NULL; while (tvp) { 4a80e: 4a88 tstl %a0 4a810: 66f0 bnes 4a802 <_RTEMS_tasks_Delete_extension+0x1c><== NEVER TAKEN /* * Free API specific memory */ (void) _Workspace_Free( deleted->API_Extensions[ THREAD_API_RTEMS ] ); 4a812: 2f2a 00fe movel %a2@(254),%sp@- 4a816: 4eb9 0004 87b0 jsr 487b0 <_Workspace_Free> deleted->API_Extensions[ THREAD_API_RTEMS ] = NULL; 4a81c: 588f addql #4,%sp 4a81e: 42aa 00fe clrl %a2@(254) } 4a822: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 4a828: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004a774 <_RTEMS_tasks_Post_switch_extension>: */ void _RTEMS_tasks_Post_switch_extension( Thread_Control *executing ) { 4a774: 4e56 ffec linkw %fp,#-20 RTEMS_API_Control *api; ASR_Information *asr; rtems_signal_set signal_set; Modes_Control prev_mode; api = executing->API_Extensions[ THREAD_API_RTEMS ]; 4a778: 206e 0008 moveal %fp@(8),%a0 */ void _RTEMS_tasks_Post_switch_extension( Thread_Control *executing ) { 4a77c: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ RTEMS_API_Control *api; ASR_Information *asr; rtems_signal_set signal_set; Modes_Control prev_mode; api = executing->API_Extensions[ THREAD_API_RTEMS ]; 4a780: 2468 00fe moveal %a0@(254),%a2 if ( !api ) 4a784: 4a8a tstl %a2 4a786: 6754 beqs 4a7dc <_RTEMS_tasks_Post_switch_extension+0x68><== NEVER TAKEN * Signal Processing */ asr = &api->Signal; _ISR_Disable( level ); 4a788: 203c 0000 0700 movel #1792,%d0 4a78e: 40c1 movew %sr,%d1 4a790: 8081 orl %d1,%d0 4a792: 46c0 movew %d0,%sr signal_set = asr->signals_posted; 4a794: 262a 0012 movel %a2@(18),%d3 asr->signals_posted = 0; 4a798: 42aa 0012 clrl %a2@(18) _ISR_Enable( level ); 4a79c: 46c1 movew %d1,%sr if ( !signal_set ) /* similar to _ASR_Are_signals_pending( asr ) */ 4a79e: 4a83 tstl %d3 4a7a0: 673a beqs 4a7dc <_RTEMS_tasks_Post_switch_extension+0x68><== ALWAYS TAKEN return; asr->nest_level += 1; 4a7a2: 52aa 001a addql #1,%a2@(26) <== NOT EXECUTED rtems_task_mode( asr->mode_set, RTEMS_ALL_MODE_MASKS, &prev_mode ); 4a7a6: 240e movel %fp,%d2 <== NOT EXECUTED 4a7a8: 5982 subql #4,%d2 <== NOT EXECUTED 4a7aa: 47f9 0004 c4cc lea 4c4cc ,%a3 <== NOT EXECUTED 4a7b0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4a7b2: 2f3c 0000 ffff movel #65535,%sp@- <== NOT EXECUTED 4a7b8: 2f2a 000e movel %a2@(14),%sp@- <== NOT EXECUTED 4a7bc: 4e93 jsr %a3@ <== NOT EXECUTED (*asr->handler)( signal_set ); 4a7be: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4a7c0: 206a 000a moveal %a2@(10),%a0 <== NOT EXECUTED 4a7c4: 4e90 jsr %a0@ <== NOT EXECUTED asr->nest_level -= 1; 4a7c6: 53aa 001a subql #1,%a2@(26) <== NOT EXECUTED rtems_task_mode( prev_mode, RTEMS_ALL_MODE_MASKS, &prev_mode ); 4a7ca: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4a7cc: 2f3c 0000 ffff movel #65535,%sp@- <== NOT EXECUTED 4a7d2: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 4a7d6: 4e93 jsr %a3@ <== NOT EXECUTED 4a7d8: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED } 4a7dc: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 4a7e2: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004a71e <_RTEMS_tasks_Switch_extension>: void _RTEMS_tasks_Switch_extension( Thread_Control *executing, Thread_Control *heir ) { 4a71e: 4e56 0000 linkw %fp,#0 /* * Per Task Variables */ tvp = executing->task_variables; 4a722: 206e 0008 moveal %fp@(8),%a0 4a726: 2068 010a moveal %a0@(266),%a0 while (tvp) { 4a72a: 600e bras 4a73a <_RTEMS_tasks_Switch_extension+0x1c> tvp->tval = *tvp->ptr; 4a72c: 2268 0004 moveal %a0@(4),%a1 <== NOT EXECUTED 4a730: 2151 000c movel %a1@,%a0@(12) <== NOT EXECUTED *tvp->ptr = tvp->gval; 4a734: 22a8 0008 movel %a0@(8),%a1@ <== NOT EXECUTED tvp = (rtems_task_variable_t *)tvp->next; 4a738: 2050 moveal %a0@,%a0 <== NOT EXECUTED /* * Per Task Variables */ tvp = executing->task_variables; while (tvp) { 4a73a: 4a88 tstl %a0 4a73c: 66ee bnes 4a72c <_RTEMS_tasks_Switch_extension+0xe><== NEVER TAKEN tvp->tval = *tvp->ptr; *tvp->ptr = tvp->gval; tvp = (rtems_task_variable_t *)tvp->next; } tvp = heir->task_variables; 4a73e: 206e 000c moveal %fp@(12),%a0 4a742: 2068 010a moveal %a0@(266),%a0 while (tvp) { 4a746: 600e bras 4a756 <_RTEMS_tasks_Switch_extension+0x38> tvp->gval = *tvp->ptr; 4a748: 2268 0004 moveal %a0@(4),%a1 <== NOT EXECUTED 4a74c: 2151 0008 movel %a1@,%a0@(8) <== NOT EXECUTED *tvp->ptr = tvp->tval; 4a750: 22a8 000c movel %a0@(12),%a1@ <== NOT EXECUTED tvp = (rtems_task_variable_t *)tvp->next; 4a754: 2050 moveal %a0@,%a0 <== NOT EXECUTED *tvp->ptr = tvp->gval; tvp = (rtems_task_variable_t *)tvp->next; } tvp = heir->task_variables; while (tvp) { 4a756: 4a88 tstl %a0 4a758: 66ee bnes 4a748 <_RTEMS_tasks_Switch_extension+0x2a><== NEVER TAKEN tvp->gval = *tvp->ptr; *tvp->ptr = tvp->tval; tvp = (rtems_task_variable_t *)tvp->next; } } 4a75a: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004611c <_Rate_monotonic_Get_status>: bool _Rate_monotonic_Get_status( Rate_monotonic_Control *the_period, Rate_monotonic_Period_time_t *wall_since_last_period, Thread_CPU_usage_t *cpu_since_last_period ) { 4611c: 4e56 ffd4 linkw %fp,#-44 <== NOT EXECUTED 46120: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED 46124: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED /* * Determine elapsed wall time since period initiated. */ #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ _TOD_Get_uptime( &uptime ); 46128: 240e movel %fp,%d2 <== NOT EXECUTED 4612a: 5182 subql #8,%d2 <== NOT EXECUTED _Timestamp_Subtract( 4612c: 45f9 0004 9978 lea 49978 <_Timespec_Subtract>,%a2 <== NOT EXECUTED ) { #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ Timestamp_Control uptime; #endif Thread_Control *owning_thread = the_period->owner; 46132: 286b 0040 moveal %a3@(64),%a4 <== NOT EXECUTED /* * Determine elapsed wall time since period initiated. */ #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ _TOD_Get_uptime( &uptime ); 46136: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46138: 4eb9 0004 78c4 jsr 478c4 <_TOD_Get_uptime> <== NOT EXECUTED _Timestamp_Subtract( 4613e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 46142: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46144: 486b 004c pea %a3@(76) <== NOT EXECUTED 46148: 4e92 jsr %a2@ <== NOT EXECUTED * Determine cpu usage since period initiated. */ used = owning_thread->cpu_time_used; #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ if (owning_thread == _Thread_Executing) { 4614a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED #endif /* * Determine cpu usage since period initiated. */ used = owning_thread->cpu_time_used; 4614e: 202c 0082 movel %a4@(130),%d0 <== NOT EXECUTED 46152: 222c 0086 movel %a4@(134),%d1 <== NOT EXECUTED 46156: 2d40 fff0 movel %d0,%fp@(-16) <== NOT EXECUTED 4615a: 2d41 fff4 movel %d1,%fp@(-12) <== NOT EXECUTED #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ if (owning_thread == _Thread_Executing) { 4615e: b9f9 0006 058c cmpal 6058c <_Per_CPU_Information+0xc>,%a4 <== NOT EXECUTED 46164: 6644 bnes 461aa <_Rate_monotonic_Get_status+0x8e><== NOT EXECUTED Thread_CPU_usage_t ran; /* How much time time since last context switch */ _Timestamp_Subtract( 46166: 260e movel %fp,%d3 <== NOT EXECUTED 46168: 0683 ffff ffe8 addil #-24,%d3 <== NOT EXECUTED /* * The cpu usage info was reset while executing. Can't * determine a status. */ if (_Timestamp_Less_than(&used, &the_period->cpu_usage_period_initiated)) 4616e: 47eb 0044 lea %a3@(68),%a3 <== NOT EXECUTED if (owning_thread == _Thread_Executing) { Thread_CPU_usage_t ran; /* How much time time since last context switch */ _Timestamp_Subtract( 46172: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46174: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46176: 4879 0006 01ce pea 601ce <_Thread_Time_of_last_context_switch><== NOT EXECUTED &_Thread_Time_of_last_context_switch, &uptime, &ran ); /* cpu usage += ran */ _Timestamp_Add_to( &used, &ran ); 4617c: 5182 subql #8,%d2 <== NOT EXECUTED if (owning_thread == _Thread_Executing) { Thread_CPU_usage_t ran; /* How much time time since last context switch */ _Timestamp_Subtract( 4617e: 4e92 jsr %a2@ <== NOT EXECUTED &_Thread_Time_of_last_context_switch, &uptime, &ran ); /* cpu usage += ran */ _Timestamp_Add_to( &used, &ran ); 46180: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46182: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46184: 4eb9 0004 9850 jsr 49850 <_Timespec_Add_to> <== NOT EXECUTED /* * The cpu usage info was reset while executing. Can't * determine a status. */ if (_Timestamp_Less_than(&used, &the_period->cpu_usage_period_initiated)) 4618a: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4618c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4618e: 4eb9 0004 9948 jsr 49948 <_Timespec_Less_than> <== NOT EXECUTED 46194: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 46198: 4a00 tstb %d0 <== NOT EXECUTED 4619a: 6612 bnes 461ae <_Rate_monotonic_Get_status+0x92><== NOT EXECUTED return false; /* used = current cpu usage - cpu usage at start of period */ _Timestamp_Subtract( 4619c: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 461a0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 461a2: 2f0b movel %a3,%sp@- <== NOT EXECUTED 461a4: 4e92 jsr %a2@ <== NOT EXECUTED 461a6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED if (used < the_period->cpu_usage_period_initiated) return false; *cpu_since_last_period = used - the_period->cpu_usage_period_initiated; #endif return true; 461aa: 7001 moveq #1,%d0 <== NOT EXECUTED 461ac: 6002 bras 461b0 <_Rate_monotonic_Get_status+0x94><== NOT EXECUTED /* * The cpu usage info was reset while executing. Can't * determine a status. */ if (_Timestamp_Less_than(&used, &the_period->cpu_usage_period_initiated)) return false; 461ae: 4200 clrb %d0 <== NOT EXECUTED return false; *cpu_since_last_period = used - the_period->cpu_usage_period_initiated; #endif return true; } 461b0: 4cee 1c0c ffd4 moveml %fp@(-44),%d2-%d3/%a2-%a4 <== NOT EXECUTED 461b6: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000461ba <_Rate_monotonic_Initiate_statistics>: void _Rate_monotonic_Initiate_statistics( Rate_monotonic_Control *the_period ) { 461ba: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 461be: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED 461c2: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED * If using nanosecond statistics, we need to obtain the uptime. */ #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ Timestamp_Control uptime; _TOD_Get_uptime( &uptime ); 461c6: 260e movel %fp,%d3 <== NOT EXECUTED 461c8: 5183 subql #8,%d3 <== NOT EXECUTED void _Rate_monotonic_Initiate_statistics( Rate_monotonic_Control *the_period ) { Thread_Control *owning_thread = the_period->owner; 461ca: 266a 0040 moveal %a2@(64),%a3 <== NOT EXECUTED * If using nanosecond statistics, we need to obtain the uptime. */ #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ Timestamp_Control uptime; _TOD_Get_uptime( &uptime ); 461ce: 2f03 movel %d3,%sp@- <== NOT EXECUTED 461d0: 4eb9 0004 78c4 jsr 478c4 <_TOD_Get_uptime> <== NOT EXECUTED * routine is invoked from rtems_rate_monotonic_period, the owner will * be the executing thread. When this routine is invoked from * _Rate_monotonic_Timeout, it will not. */ #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ if (owning_thread == _Thread_Executing) { 461d6: 588f addql #4,%sp <== NOT EXECUTED /* * Set the starting point and the CPU time used for the statistics. */ #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ the_period->time_period_initiated = uptime; 461d8: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 461dc: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED 461e0: 2540 004c movel %d0,%a2@(76) <== NOT EXECUTED 461e4: 2541 0050 movel %d1,%a2@(80) <== NOT EXECUTED #else the_period->time_period_initiated = _Watchdog_Ticks_since_boot; #endif the_period->cpu_usage_period_initiated = owning_thread->cpu_time_used; 461e8: 202b 0082 movel %a3@(130),%d0 <== NOT EXECUTED 461ec: 222b 0086 movel %a3@(134),%d1 <== NOT EXECUTED 461f0: 2540 0044 movel %d0,%a2@(68) <== NOT EXECUTED 461f4: 2541 0048 movel %d1,%a2@(72) <== NOT EXECUTED * routine is invoked from rtems_rate_monotonic_period, the owner will * be the executing thread. When this routine is invoked from * _Rate_monotonic_Timeout, it will not. */ #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ if (owning_thread == _Thread_Executing) { 461f8: b7f9 0006 058c cmpal 6058c <_Per_CPU_Information+0xc>,%a3 <== NOT EXECUTED 461fe: 6628 bnes 46228 <_Rate_monotonic_Initiate_statistics+0x6e><== NOT EXECUTED /* * Adjust the CPU time used to account for the time since last * context switch. */ _Timespec_Subtract( &_Thread_Time_of_last_context_switch, &uptime, &ran 46200: 240e movel %fp,%d2 <== NOT EXECUTED 46202: 0682 ffff fff0 addil #-16,%d2 <== NOT EXECUTED /* * Adjust the CPU time used to account for the time since last * context switch. */ _Timespec_Subtract( 46208: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4620a: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4620c: 4879 0006 01ce pea 601ce <_Thread_Time_of_last_context_switch><== NOT EXECUTED 46212: 4eb9 0004 9978 jsr 49978 <_Timespec_Subtract> <== NOT EXECUTED &_Thread_Time_of_last_context_switch, &uptime, &ran ); _Timespec_Add_to( &the_period->cpu_usage_period_initiated, &ran ); 46218: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4621a: 486a 0044 pea %a2@(68) <== NOT EXECUTED 4621e: 4eb9 0004 9850 jsr 49850 <_Timespec_Add_to> <== NOT EXECUTED 46224: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED } #endif } 46228: 4cee 0c0c ffe0 moveml %fp@(-32),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4622e: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000466e8 <_Rate_monotonic_Timeout>: void _Rate_monotonic_Timeout( Objects_Id id, void *ignored ) { 466e8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 466ec: 2f0a movel %a2,%sp@- <== NOT EXECUTED 466ee: 486e fffc pea %fp@(-4) <== NOT EXECUTED 466f2: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 466f6: 4879 0006 000c pea 6000c <_Rate_monotonic_Information> <== NOT EXECUTED 466fc: 4eb9 0004 82e8 jsr 482e8 <_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 ) { 46702: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 46706: 2440 moveal %d0,%a2 <== NOT EXECUTED 46708: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4670c: 6600 0096 bnew 467a4 <_Rate_monotonic_Timeout+0xbc> <== NOT EXECUTED case OBJECTS_LOCAL: the_thread = the_period->owner; 46710: 206a 0040 moveal %a2@(64),%a0 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_period ( States_Control the_states ) { return (the_states & STATES_WAITING_FOR_PERIOD); 46714: 2028 0010 movel %a0@(16),%d0 <== NOT EXECUTED 46718: 0280 0000 4000 andil #16384,%d0 <== NOT EXECUTED if ( _States_Is_waiting_for_period( the_thread->current_state ) && 4671e: 673c beqs 4675c <_Rate_monotonic_Timeout+0x74> <== NOT EXECUTED 46720: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED 46724: b0a8 0020 cmpl %a0@(32),%d0 <== NOT EXECUTED 46728: 6632 bnes 4675c <_Rate_monotonic_Timeout+0x74> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Thread_Unblock ( Thread_Control *the_thread ) { _Thread_Clear_state( the_thread, STATES_BLOCKED ); 4672a: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED 46730: 2f08 movel %a0,%sp@- <== NOT EXECUTED 46732: 4eb9 0004 8a64 jsr 48a64 <_Thread_Clear_state> <== NOT EXECUTED the_thread->Wait.id == the_period->Object.id ) { _Thread_Unblock( the_thread ); _Rate_monotonic_Initiate_statistics( the_period ); 46738: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4673a: 4eb9 0004 61ba jsr 461ba <_Rate_monotonic_Initiate_statistics><== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 46740: 256a 003c 001c movel %a2@(60),%a2@(28) <== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 46746: 486a 0010 pea %a2@(16) <== NOT EXECUTED 4674a: 4879 0006 01e2 pea 601e2 <_Watchdog_Ticks_chain> <== NOT EXECUTED 46750: 4eb9 0004 9c2c jsr 49c2c <_Watchdog_Insert> <== NOT EXECUTED _Watchdog_Insert_ticks( &the_period->Timer, the_period->next_length ); 46756: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4675a: 603a bras 46796 <_Rate_monotonic_Timeout+0xae> <== NOT EXECUTED } else if ( the_period->state == RATE_MONOTONIC_OWNER_IS_BLOCKING ) { 4675c: 7001 moveq #1,%d0 <== NOT EXECUTED 4675e: b0aa 0038 cmpl %a2@(56),%d0 <== NOT EXECUTED 46762: 662c bnes 46790 <_Rate_monotonic_Timeout+0xa8> <== NOT EXECUTED the_period->state = RATE_MONOTONIC_EXPIRED_WHILE_BLOCKING; 46764: 103c 0003 moveb #3,%d0 <== NOT EXECUTED 46768: 2540 0038 movel %d0,%a2@(56) <== NOT EXECUTED _Rate_monotonic_Initiate_statistics( the_period ); 4676c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4676e: 4eb9 0004 61ba jsr 461ba <_Rate_monotonic_Initiate_statistics><== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 46774: 256a 003c 001c movel %a2@(60),%a2@(28) <== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 4677a: 486a 0010 pea %a2@(16) <== NOT EXECUTED 4677e: 4879 0006 01e2 pea 601e2 <_Watchdog_Ticks_chain> <== NOT EXECUTED 46784: 4eb9 0004 9c2c jsr 49c2c <_Watchdog_Insert> <== NOT EXECUTED 4678a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4678e: 6006 bras 46796 <_Rate_monotonic_Timeout+0xae> <== NOT EXECUTED _Watchdog_Insert_ticks( &the_period->Timer, the_period->next_length ); } else the_period->state = RATE_MONOTONIC_EXPIRED; 46790: 7004 moveq #4,%d0 <== NOT EXECUTED 46792: 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; 46796: 2039 0006 0102 movel 60102 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4679c: 5380 subql #1,%d0 <== NOT EXECUTED 4679e: 23c0 0006 0102 movel %d0,60102 <_Thread_Dispatch_disable_level><== NOT EXECUTED case OBJECTS_REMOTE: /* impossible */ #endif case OBJECTS_ERROR: break; } } 467a4: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 467a8: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046232 <_Rate_monotonic_Update_statistics>: * Update the counts. */ stats = &the_period->Statistics; stats->count++; if ( the_period->state == RATE_MONOTONIC_EXPIRED ) 46232: 7004 moveq #4,%d0 <== NOT EXECUTED } void _Rate_monotonic_Update_statistics( Rate_monotonic_Control *the_period ) { 46234: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 46238: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4623a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4623e: 2f02 movel %d2,%sp@- <== NOT EXECUTED /* * Update the counts. */ stats = &the_period->Statistics; stats->count++; 46240: 52aa 0054 addql #1,%a2@(84) <== NOT EXECUTED if ( the_period->state == RATE_MONOTONIC_EXPIRED ) 46244: b0aa 0038 cmpl %a2@(56),%d0 <== NOT EXECUTED 46248: 6604 bnes 4624e <_Rate_monotonic_Update_statistics+0x1c><== NOT EXECUTED stats->missed_count++; 4624a: 52aa 0058 addql #1,%a2@(88) <== NOT EXECUTED /* * Grab status for time statistics. */ valid_status = _Rate_monotonic_Get_status( the_period, &since_last_period, &executed ); 4624e: 240e movel %fp,%d2 <== NOT EXECUTED 46250: 5182 subql #8,%d2 <== NOT EXECUTED stats->missed_count++; /* * Grab status for time statistics. */ valid_status = 46252: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46254: 486e fff0 pea %fp@(-16) <== NOT EXECUTED 46258: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4625a: 4eb9 0004 611c jsr 4611c <_Rate_monotonic_Get_status> <== NOT EXECUTED _Rate_monotonic_Get_status( the_period, &since_last_period, &executed ); if (!valid_status) 46260: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 46264: 4a00 tstb %d0 <== NOT EXECUTED 46266: 6700 00b2 beqw 4631a <_Rate_monotonic_Update_statistics+0xe8><== NOT EXECUTED /* * Update CPU time */ #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ _Timestamp_Add_to( &stats->total_cpu_time, &executed ); 4626a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4626c: 486a 006c pea %a2@(108) <== NOT EXECUTED 46270: 4eb9 0004 9850 jsr 49850 <_Timespec_Add_to> <== NOT EXECUTED if ( _Timestamp_Less_than( &executed, &stats->min_cpu_time ) ) 46276: 486a 005c pea %a2@(92) <== NOT EXECUTED 4627a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4627c: 4eb9 0004 9948 jsr 49948 <_Timespec_Less_than> <== NOT EXECUTED 46282: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 46286: 4a00 tstb %d0 <== NOT EXECUTED 46288: 6710 beqs 4629a <_Rate_monotonic_Update_statistics+0x68><== NOT EXECUTED stats->min_cpu_time = executed; 4628a: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 4628e: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED 46292: 2540 005c movel %d0,%a2@(92) <== NOT EXECUTED 46296: 2541 0060 movel %d1,%a2@(96) <== NOT EXECUTED if ( _Timestamp_Greater_than( &executed, &stats->max_cpu_time ) ) 4629a: 486a 0064 pea %a2@(100) <== NOT EXECUTED 4629e: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 462a2: 4eb9 0004 9918 jsr 49918 <_Timespec_Greater_than> <== NOT EXECUTED 462a8: 508f addql #8,%sp <== NOT EXECUTED 462aa: 4a00 tstb %d0 <== NOT EXECUTED 462ac: 6710 beqs 462be <_Rate_monotonic_Update_statistics+0x8c><== NOT EXECUTED stats->max_cpu_time = executed; 462ae: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 462b2: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED 462b6: 2540 0064 movel %d0,%a2@(100) <== NOT EXECUTED 462ba: 2541 0068 movel %d1,%a2@(104) <== NOT EXECUTED /* * Update Wall time */ #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ _Timestamp_Add_to( &stats->total_wall_time, &since_last_period ); 462be: 240e movel %fp,%d2 <== NOT EXECUTED 462c0: 0682 ffff fff0 addil #-16,%d2 <== NOT EXECUTED 462c6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 462c8: 486a 0084 pea %a2@(132) <== NOT EXECUTED 462cc: 4eb9 0004 9850 jsr 49850 <_Timespec_Add_to> <== NOT EXECUTED if ( _Timestamp_Less_than( &since_last_period, &stats->min_wall_time ) ) 462d2: 486a 0074 pea %a2@(116) <== NOT EXECUTED 462d6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 462d8: 4eb9 0004 9948 jsr 49948 <_Timespec_Less_than> <== NOT EXECUTED 462de: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 462e2: 4a00 tstb %d0 <== NOT EXECUTED 462e4: 6710 beqs 462f6 <_Rate_monotonic_Update_statistics+0xc4><== NOT EXECUTED stats->min_wall_time = since_last_period; 462e6: 202e fff0 movel %fp@(-16),%d0 <== NOT EXECUTED 462ea: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED 462ee: 2540 0074 movel %d0,%a2@(116) <== NOT EXECUTED 462f2: 2541 0078 movel %d1,%a2@(120) <== NOT EXECUTED if ( _Timestamp_Greater_than( &since_last_period, &stats->max_wall_time ) ) 462f6: 486a 007c pea %a2@(124) <== NOT EXECUTED 462fa: 486e fff0 pea %fp@(-16) <== NOT EXECUTED 462fe: 4eb9 0004 9918 jsr 49918 <_Timespec_Greater_than> <== NOT EXECUTED 46304: 508f addql #8,%sp <== NOT EXECUTED 46306: 4a00 tstb %d0 <== NOT EXECUTED 46308: 6710 beqs 4631a <_Rate_monotonic_Update_statistics+0xe8><== NOT EXECUTED stats->max_wall_time = since_last_period; 4630a: 202e fff0 movel %fp@(-16),%d0 <== NOT EXECUTED 4630e: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED 46312: 2540 007c movel %d0,%a2@(124) <== NOT EXECUTED 46316: 2541 0080 movel %d1,%a2@(128) <== NOT EXECUTED stats->min_wall_time = since_last_period; if ( since_last_period > stats->max_wall_time ) stats->max_wall_time = since_last_period; #endif } 4631a: 242e ffe8 movel %fp@(-24),%d2 <== NOT EXECUTED 4631e: 246e ffec moveal %fp@(-20),%a2 <== NOT EXECUTED 46322: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00058048 <_Region_Process_queue>: */ void _Region_Process_queue( Region_Control *the_region ) { 58048: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 5804c: 2039 0007 6f0c movel 76f0c <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 58052: 5280 addql #1,%d0 <== NOT EXECUTED 58054: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@ <== NOT EXECUTED 58058: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED 5805c: 23c0 0007 6f0c movel %d0,76f0c <_Thread_Dispatch_disable_level><== NOT EXECUTED * NOTE: Be sure to disable dispatching before unlocking the mutex * since we do not want to open a window where a context * switch could occur. */ _Thread_Disable_dispatch(); _RTEMS_Unlock_allocator(); 58062: 2f39 0007 6fcc movel 76fcc <_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 ); 58068: 240b movel %a3,%d2 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void *_Region_Allocate_segment ( Region_Control *the_region, uintptr_t size ) { return _Heap_Allocate( &the_region->Memory, size ); 5806a: 260b movel %a3,%d3 <== NOT EXECUTED 5806c: 0682 0000 0010 addil #16,%d2 <== NOT EXECUTED 58072: 0683 0000 0068 addil #104,%d3 <== NOT EXECUTED 58078: 4bf9 0005 347c lea 5347c <_Heap_Allocate_aligned_with_boundary>,%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 ); 5807e: 49f9 0005 8798 lea 58798 <_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(); 58084: 4eb9 0005 2a10 jsr 52a10 <_API_Mutex_Unlock> <== NOT EXECUTED 5808a: 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 ); 5808c: 283c 0005 889c movel #362652,%d4 <== NOT EXECUTED 58092: 2f02 movel %d2,%sp@- <== NOT EXECUTED 58094: 2044 moveal %d4,%a0 <== NOT EXECUTED 58096: 4e90 jsr %a0@ <== NOT EXECUTED if ( the_thread == NULL ) 58098: 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 ); 5809a: 2440 moveal %d0,%a2 <== NOT EXECUTED if ( the_thread == NULL ) 5809c: 4a80 tstl %d0 <== NOT EXECUTED 5809e: 672c beqs 580cc <_Region_Process_queue+0x84> <== NOT EXECUTED 580a0: 42a7 clrl %sp@- <== NOT EXECUTED 580a2: 42a7 clrl %sp@- <== NOT EXECUTED 580a4: 2f2a 0024 movel %a2@(36),%sp@- <== NOT EXECUTED 580a8: 2f03 movel %d3,%sp@- <== NOT EXECUTED 580aa: 4e95 jsr %a5@ <== NOT EXECUTED the_segment = (void **) _Region_Allocate_segment( the_region, the_thread->Wait.count ); if ( the_segment == NULL ) 580ac: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 580b0: 4a80 tstl %d0 <== NOT EXECUTED 580b2: 6718 beqs 580cc <_Region_Process_queue+0x84> <== NOT EXECUTED break; *(void **)the_thread->Wait.return_argument = the_segment; 580b4: 206a 0028 moveal %a2@(40),%a0 <== NOT EXECUTED 580b8: 2080 movel %d0,%a0@ <== NOT EXECUTED the_region->number_of_used_blocks += 1; 580ba: 52ab 0064 addql #1,%a3@(100) <== NOT EXECUTED _Thread_queue_Extract( &the_region->Wait_queue, the_thread ); 580be: 2f0a movel %a2,%sp@- <== NOT EXECUTED 580c0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 580c2: 4e94 jsr %a4@ <== NOT EXECUTED the_thread->Wait.return_code = RTEMS_SUCCESSFUL; } 580c4: 508f addql #8,%sp <== NOT EXECUTED break; *(void **)the_thread->Wait.return_argument = the_segment; the_region->number_of_used_blocks += 1; _Thread_queue_Extract( &the_region->Wait_queue, the_thread ); the_thread->Wait.return_code = RTEMS_SUCCESSFUL; 580c6: 42aa 0034 clrl %a2@(52) <== NOT EXECUTED } 580ca: 60c6 bras 58092 <_Region_Process_queue+0x4a> <== NOT EXECUTED _Thread_Enable_dispatch(); } 580cc: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 <== NOT EXECUTED 580d2: 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(); 580d4: 4ef9 0005 4eb6 jmp 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED ... =============================================================================== 0004ae74 <_Scheduler_priority_Block>: void _Scheduler_priority_Block( Scheduler_Control *the_scheduler, Thread_Control *the_thread ) { 4ae74: 4e56 0000 linkw %fp,#0 4ae78: 226e 000c moveal %fp@(12),%a1 4ae7c: 2f0a movel %a2,%sp@- RTEMS_INLINE_ROUTINE void _Scheduler_priority_Ready_queue_extract( Thread_Control *the_thread ) { Chain_Control *ready = the_thread->scheduler.priority->ready_chain; 4ae7e: 2069 008a moveal %a1@(138),%a0 4ae82: 2050 moveal %a0@,%a0 if ( _Chain_Has_only_one_node( ready ) ) { 4ae84: 2028 0008 movel %a0@(8),%d0 4ae88: b090 cmpl %a0@,%d0 4ae8a: 6636 bnes 4aec2 <_Scheduler_priority_Block+0x4e> RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); 4ae8c: 2008 movel %a0,%d0 4ae8e: 5880 addql #4,%d0 head->next = tail; head->previous = NULL; 4ae90: 42a8 0004 clrl %a0@(4) RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); 4ae94: 2080 movel %d0,%a0@ head->next = tail; head->previous = NULL; tail->previous = head; 4ae96: 2148 0008 movel %a0,%a0@(8) _Chain_Initialize_empty( ready ); _Priority_bit_map_Remove( &the_thread->scheduler.priority->Priority_map ); 4ae9a: 2069 008a moveal %a1@(138),%a0 RTEMS_INLINE_ROUTINE void _Priority_bit_map_Remove ( Priority_bit_map_Information *the_priority_map ) { *the_priority_map->minor &= the_priority_map->block_minor; 4ae9e: 2468 0004 moveal %a0@(4),%a2 4aea2: 3028 000e movew %a0@(14),%d0 4aea6: 3212 movew %a2@,%d1 4aea8: c081 andl %d1,%d0 4aeaa: 3480 movew %d0,%a2@ if ( *the_priority_map->minor == 0 ) 4aeac: 6620 bnes 4aece <_Scheduler_priority_Block+0x5a> _Priority_Major_bit_map &= the_priority_map->block_major; 4aeae: 3039 0005 e910 movew 5e910 <_Priority_Major_bit_map>,%d0 4aeb4: 3228 000c movew %a0@(12),%d1 4aeb8: c081 andl %d1,%d0 4aeba: 33c0 0005 e910 movew %d0,5e910 <_Priority_Major_bit_map> 4aec0: 600c bras 4aece <_Scheduler_priority_Block+0x5a> ) { Chain_Node *next; Chain_Node *previous; next = the_node->next; 4aec2: 2451 moveal %a1@,%a2 previous = the_node->previous; 4aec4: 2069 0004 moveal %a1@(4),%a0 next->previous = previous; 4aec8: 2548 0004 movel %a0,%a2@(4) previous->next = next; 4aecc: 208a movel %a2,%a0@ { _Scheduler_priority_Ready_queue_extract(the_thread); /* TODO: flash critical section */ if ( _Thread_Is_heir( the_thread ) ) 4aece: b3f9 0005 e906 cmpal 5e906 <_Per_CPU_Information+0x10>,%a1 4aed4: 6646 bnes 4af1c <_Scheduler_priority_Block+0xa8> RTEMS_INLINE_ROUTINE Priority_Control _Priority_bit_map_Get_highest( void ) { Priority_bit_map_Control minor; Priority_bit_map_Control major; _Bitfield_Find_first_bit( _Priority_Major_bit_map, major ); 4aed6: 3039 0005 e910 movew 5e910 <_Priority_Major_bit_map>,%d0 4aedc: 4840 swap %d0 4aede: 04c0 ff1 %d0 _Bitfield_Find_first_bit( _Priority_Bit_map[major], minor ); 4aee0: 41f9 0005 e914 lea 5e914 <_Priority_Bit_map>,%a0 4aee6: 0280 0000 ffff andil #65535,%d0 4aeec: 3230 0a00 movew %a0@(00000000,%d0:l:2),%d1 4aef0: 4841 swap %d1 4aef2: 04c1 ff1 %d1 _Scheduler_priority_Block_body(the_scheduler, the_thread); } 4aef4: 206e 0008 moveal %fp@(8),%a0 return (_Priority_Bits_index( major ) << 4) + 4aef8: 0281 0000 ffff andil #65535,%d1 4aefe: e988 lsll #4,%d0 4af00: 2050 moveal %a0@,%a0 4af02: d081 addl %d1,%d0 Chain_Control *the_ready_queue ) { Priority_Control index = _Priority_bit_map_Get_highest(); if ( !_Chain_Is_empty( &the_ready_queue[ index ] ) ) 4af04: 2200 movel %d0,%d1 4af06: e988 lsll #4,%d0 4af08: e589 lsll #2,%d1 4af0a: 9081 subl %d1,%d0 4af0c: d1c0 addal %d0,%a0 4af0e: 2018 movel %a0@+,%d0 4af10: b1c0 cmpal %d0,%a0 4af12: 6602 bnes 4af16 <_Scheduler_priority_Block+0xa2> <== ALWAYS TAKEN return (Thread_Control *) _Chain_First( &the_ready_queue[ index ] ); return NULL; 4af14: 4280 clrl %d0 RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body( Scheduler_Control *the_scheduler ) { _Thread_Heir = _Scheduler_priority_Ready_queue_first( 4af16: 23c0 0005 e906 movel %d0,5e906 <_Per_CPU_Information+0x10> /* TODO: flash critical section */ if ( _Thread_Is_heir( the_thread ) ) _Scheduler_priority_Schedule_body(the_scheduler); if ( _Thread_Is_executing( the_thread ) ) 4af1c: b3f9 0005 e902 cmpal 5e902 <_Per_CPU_Information+0xc>,%a1 4af22: 6608 bnes 4af2c <_Scheduler_priority_Block+0xb8> _Thread_Dispatch_necessary = true; 4af24: 7001 moveq #1,%d0 4af26: 13c0 0005 e90e moveb %d0,5e90e <_Per_CPU_Information+0x18> 4af2c: 245f moveal %sp@+,%a2 4af2e: 4e5e unlk %fp ... =============================================================================== 000470c8 <_Scheduler_priority_Schedule>: */ void _Scheduler_priority_Schedule( Scheduler_Control *the_scheduler ) { 470c8: 4e56 0000 linkw %fp,#0 RTEMS_INLINE_ROUTINE Priority_Control _Priority_bit_map_Get_highest( void ) { Priority_bit_map_Control minor; Priority_bit_map_Control major; _Bitfield_Find_first_bit( _Priority_Major_bit_map, major ); 470cc: 3039 0005 e910 movew 5e910 <_Priority_Major_bit_map>,%d0 470d2: 4840 swap %d0 470d4: 04c0 ff1 %d0 _Bitfield_Find_first_bit( _Priority_Bit_map[major], minor ); 470d6: 41f9 0005 e914 lea 5e914 <_Priority_Bit_map>,%a0 470dc: 0280 0000 ffff andil #65535,%d0 470e2: 3230 0a00 movew %a0@(00000000,%d0:l:2),%d1 470e6: 4841 swap %d1 470e8: 04c1 ff1 %d1 _Scheduler_priority_Schedule_body( the_scheduler ); } 470ea: 206e 0008 moveal %fp@(8),%a0 return (_Priority_Bits_index( major ) << 4) + 470ee: 0281 0000 ffff andil #65535,%d1 470f4: e988 lsll #4,%d0 470f6: 2050 moveal %a0@,%a0 470f8: d081 addl %d1,%d0 Chain_Control *the_ready_queue ) { Priority_Control index = _Priority_bit_map_Get_highest(); if ( !_Chain_Is_empty( &the_ready_queue[ index ] ) ) 470fa: 2200 movel %d0,%d1 470fc: e988 lsll #4,%d0 470fe: e589 lsll #2,%d1 47100: 9081 subl %d1,%d0 47102: d1c0 addal %d0,%a0 47104: 2018 movel %a0@+,%d0 47106: b1c0 cmpal %d0,%a0 47108: 6602 bnes 4710c <_Scheduler_priority_Schedule+0x44><== ALWAYS TAKEN return (Thread_Control *) _Chain_First( &the_ready_queue[ index ] ); return NULL; 4710a: 4280 clrl %d0 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body( Scheduler_Control *the_scheduler ) { _Thread_Heir = _Scheduler_priority_Ready_queue_first( 4710c: 23c0 0005 e906 movel %d0,5e906 <_Per_CPU_Information+0x10> 47112: 4e5e unlk %fp ... =============================================================================== 00047134 <_Scheduler_priority_Thread_scheduler_free>: void _Scheduler_priority_Thread_scheduler_free ( Scheduler_Control *the_scheduler __attribute__((unused)), Thread_Control *the_thread ) { 47134: 4e56 0000 linkw %fp,#0 _Workspace_Free( the_thread->scheduler.priority ); 47138: 206e 000c moveal %fp@(12),%a0 4713c: 2d68 008a 0008 movel %a0@(138),%fp@(8) } 47142: 4e5e unlk %fp void _Scheduler_priority_Thread_scheduler_free ( Scheduler_Control *the_scheduler __attribute__((unused)), Thread_Control *the_thread ) { _Workspace_Free( the_thread->scheduler.priority ); 47144: 4ef9 0004 87b0 jmp 487b0 <_Workspace_Free> ... =============================================================================== 000471bc <_Scheduler_priority_Unblock>: void _Scheduler_priority_Unblock ( Scheduler_Control *the_scheduler, Thread_Control *the_thread ) { 471bc: 4e56 0000 linkw %fp,#0 471c0: 206e 000c moveal %fp@(12),%a0 471c4: 2f0a movel %a2,%sp@- RTEMS_INLINE_ROUTINE void _Scheduler_priority_Ready_queue_enqueue( Thread_Control *the_thread ) { _Priority_bit_map_Add( &the_thread->scheduler.priority->Priority_map ); 471c6: 2268 008a moveal %a0@(138),%a1 RTEMS_INLINE_ROUTINE void _Priority_bit_map_Add ( Priority_bit_map_Information *the_priority_map ) { *the_priority_map->minor |= the_priority_map->ready_minor; 471ca: 2469 0004 moveal %a1@(4),%a2 471ce: 3029 000a movew %a1@(10),%d0 471d2: 3212 movew %a2@,%d1 471d4: 8081 orl %d1,%d0 471d6: 3480 movew %d0,%a2@ _Priority_Major_bit_map |= the_priority_map->ready_major; 471d8: 3229 0008 movew %a1@(8),%d1 471dc: 3039 0005 e910 movew 5e910 <_Priority_Major_bit_map>,%d0 _Chain_Append_unprotected( the_thread->scheduler.priority->ready_chain, 471e2: 2251 moveal %a1@,%a1 471e4: 8081 orl %d1,%d0 Chain_Control *the_chain, Chain_Node *the_node ) { Chain_Node *tail = _Chain_Tail( the_chain ); Chain_Node *old_last = tail->previous; 471e6: 2469 0008 moveal %a1@(8),%a2 471ea: 33c0 0005 e910 movew %d0,5e910 <_Priority_Major_bit_map> RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected( Chain_Control *the_chain, Chain_Node *the_node ) { Chain_Node *tail = _Chain_Tail( the_chain ); 471f0: 2009 movel %a1,%d0 471f2: 5880 addql #4,%d0 Chain_Node *old_last = tail->previous; the_node->next = tail; tail->previous = the_node; 471f4: 2348 0008 movel %a0,%a1@(8) * 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 ) { 471f8: 2279 0005 e906 moveal 5e906 <_Per_CPU_Information+0x10>,%a1 RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected( Chain_Control *the_chain, Chain_Node *the_node ) { Chain_Node *tail = _Chain_Tail( the_chain ); 471fe: 2080 movel %d0,%a0@ 47200: 2028 0014 movel %a0@(20),%d0 Chain_Node *old_last = tail->previous; the_node->next = tail; tail->previous = the_node; old_last->next = the_node; 47204: 2488 movel %a0,%a2@ the_node->previous = old_last; 47206: 214a 0004 movel %a2,%a0@(4) 4720a: b0a9 0014 cmpl %a1@(20),%d0 4720e: 641e bccs 4722e <_Scheduler_priority_Unblock+0x72> _Thread_Heir = the_thread; 47210: 23c8 0005 e906 movel %a0,5e906 <_Per_CPU_Information+0x10> if ( _Thread_Executing->is_preemptible || 47216: 2079 0005 e902 moveal 5e902 <_Per_CPU_Information+0xc>,%a0 4721c: 4a28 0074 tstb %a0@(116) 47220: 6604 bnes 47226 <_Scheduler_priority_Unblock+0x6a> 47222: 4a80 tstl %d0 47224: 6608 bnes 4722e <_Scheduler_priority_Unblock+0x72><== ALWAYS TAKEN the_thread->current_priority == 0 ) _Thread_Dispatch_necessary = true; 47226: 7001 moveq #1,%d0 47228: 13c0 0005 e90e moveb %d0,5e90e <_Per_CPU_Information+0x18> _Scheduler_priority_Unblock_body(the_scheduler, the_thread); } 4722e: 245f moveal %sp@+,%a2 47230: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00047234 <_Scheduler_priority_Yield>: */ void _Scheduler_priority_Yield( Scheduler_Control *the_scheduler __attribute__((unused)) ) { 47234: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED ISR_Level level; Thread_Control *executing; Chain_Control *ready; executing = _Thread_Executing; 47238: 2079 0005 e902 moveal 5e902 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED */ void _Scheduler_priority_Yield( Scheduler_Control *the_scheduler __attribute__((unused)) ) { 4723e: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED Thread_Control *executing; Chain_Control *ready; executing = _Thread_Executing; ready = executing->scheduler.priority->ready_chain; _ISR_Disable( level ); 47242: 243c 0000 0700 movel #1792,%d2 <== NOT EXECUTED 47248: 2002 movel %d2,%d0 <== NOT EXECUTED ISR_Level level; Thread_Control *executing; Chain_Control *ready; executing = _Thread_Executing; ready = executing->scheduler.priority->ready_chain; 4724a: 2268 008a moveal %a0@(138),%a1 <== NOT EXECUTED 4724e: 2251 moveal %a1@,%a1 <== NOT EXECUTED _ISR_Disable( level ); 47250: 40c1 movew %sr,%d1 <== NOT EXECUTED 47252: 8081 orl %d1,%d0 <== NOT EXECUTED 47254: 46c0 movew %d0,%sr <== NOT EXECUTED if ( !_Chain_Has_only_one_node( ready ) ) { 47256: 2029 0008 movel %a1@(8),%d0 <== NOT EXECUTED 4725a: b091 cmpl %a1@,%d0 <== NOT EXECUTED 4725c: 6738 beqs 47296 <_Scheduler_priority_Yield+0x62> <== NOT EXECUTED { Chain_Node *next; Chain_Node *previous; next = the_node->next; previous = the_node->previous; 4725e: 2468 0004 moveal %a0@(4),%a2 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected( Chain_Control *the_chain, Chain_Node *the_node ) { Chain_Node *tail = _Chain_Tail( the_chain ); 47262: 2009 movel %a1,%d0 <== NOT EXECUTED 47264: 5880 addql #4,%d0 <== NOT EXECUTED ) { Chain_Node *next; Chain_Node *previous; next = the_node->next; 47266: 2650 moveal %a0@,%a3 <== NOT EXECUTED previous = the_node->previous; next->previous = previous; 47268: 274a 0004 movel %a2,%a3@(4) <== NOT EXECUTED previous->next = next; 4726c: 248b movel %a3,%a2@ <== NOT EXECUTED Chain_Control *the_chain, Chain_Node *the_node ) { Chain_Node *tail = _Chain_Tail( the_chain ); Chain_Node *old_last = tail->previous; 4726e: 2469 0008 moveal %a1@(8),%a2 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected( Chain_Control *the_chain, Chain_Node *the_node ) { Chain_Node *tail = _Chain_Tail( the_chain ); 47272: 2080 movel %d0,%a0@ <== NOT EXECUTED Chain_Node *old_last = tail->previous; the_node->next = tail; tail->previous = the_node; 47274: 2348 0008 movel %a0,%a1@(8) <== NOT EXECUTED old_last->next = the_node; 47278: 2488 movel %a0,%a2@ <== NOT EXECUTED the_node->previous = old_last; 4727a: 214a 0004 movel %a2,%a0@(4) <== NOT EXECUTED _Chain_Extract_unprotected( &executing->Object.Node ); _Chain_Append_unprotected( ready, &executing->Object.Node ); _ISR_Flash( level ); 4727e: 2002 movel %d2,%d0 <== NOT EXECUTED 47280: 46c1 movew %d1,%sr <== NOT EXECUTED 47282: 8081 orl %d1,%d0 <== NOT EXECUTED 47284: 46c0 movew %d0,%sr <== NOT EXECUTED if ( _Thread_Is_heir( executing ) ) 47286: b1f9 0005 e906 cmpal 5e906 <_Per_CPU_Information+0x10>,%a0 <== NOT EXECUTED 4728c: 6610 bnes 4729e <_Scheduler_priority_Yield+0x6a> <== NOT EXECUTED _Thread_Heir = (Thread_Control *) _Chain_First( ready ); 4728e: 23d1 0005 e906 movel %a1@,5e906 <_Per_CPU_Information+0x10><== NOT EXECUTED 47294: 6008 bras 4729e <_Scheduler_priority_Yield+0x6a> <== NOT EXECUTED _Thread_Dispatch_necessary = true; } else if ( !_Thread_Is_heir( executing ) ) 47296: b1f9 0005 e906 cmpal 5e906 <_Per_CPU_Information+0x10>,%a0 <== NOT EXECUTED 4729c: 6708 beqs 472a6 <_Scheduler_priority_Yield+0x72> <== NOT EXECUTED _Thread_Dispatch_necessary = true; 4729e: 7001 moveq #1,%d0 <== NOT EXECUTED 472a0: 13c0 0005 e90e moveb %d0,5e90e <_Per_CPU_Information+0x18> <== NOT EXECUTED _ISR_Enable( level ); 472a6: 46c1 movew %d1,%sr <== NOT EXECUTED } 472a8: 4cd7 0c04 moveml %sp@,%d2/%a2-%a3 <== NOT EXECUTED 472ac: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045796 <_Semaphore_Translate_core_semaphore_return_code>: #if defined(RTEMS_DEBUG) if ( status > CORE_SEMAPHORE_STATUS_LAST ) return RTEMS_INTERNAL_ERROR; #endif return _Semaphore_Translate_core_semaphore_return_code_[status]; } 45796: 41f9 0005 bc6e lea 5bc6e <_Semaphore_Translate_core_semaphore_return_code_>,%a0<== NOT EXECUTED }; rtems_status_code _Semaphore_Translate_core_semaphore_return_code ( uint32_t status ) { 4579c: 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]; } 457a0: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 457a4: 4e5e unlk %fp <== NOT EXECUTED 457a6: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED =============================================================================== 00046764 <_TOD_Get_uptime_as_timespec>: */ void _TOD_Get_uptime_as_timespec( struct timespec *uptime ) { 46764: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED Timestamp_Control uptime_ts; /* assume time checked for NULL by caller */ _TOD_Get_uptime( &uptime_ts ); 46768: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4676c: 4eb9 0004 af18 jsr 4af18 <_TOD_Get_uptime> <== NOT EXECUTED _Timestamp_To_timespec( &uptime_ts, uptime ); 46772: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 46776: 588f addql #4,%sp <== NOT EXECUTED 46778: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 4677c: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED } 46780: 4e5e unlk %fp <== NOT EXECUTED { Timestamp_Control uptime_ts; /* assume time checked for NULL by caller */ _TOD_Get_uptime( &uptime_ts ); _Timestamp_To_timespec( &uptime_ts, uptime ); 46782: 2080 movel %d0,%a0@ <== NOT EXECUTED 46784: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED } ... =============================================================================== 00047694 <_TOD_Set>: */ void _TOD_Set( const struct timespec *time ) { 47694: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47698: 2039 0006 8378 movel 68378 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4769e: 5280 addql #1,%d0 <== NOT EXECUTED 476a0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 476a2: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 476a6: 23c0 0006 8378 movel %d0,68378 <_Thread_Dispatch_disable_level><== NOT EXECUTED long seconds; _Thread_Disable_dispatch(); _TOD_Deactivate(); seconds = _TOD_Seconds_since_epoch(); 476ac: 2039 0006 8422 movel 68422 <_TOD_Now>,%d0 <== NOT EXECUTED 476b2: 41f9 0004 9a24 lea 49a24 <_Watchdog_Adjust>,%a0 <== NOT EXECUTED if ( time->tv_sec < seconds ) 476b8: 2212 movel %a2@,%d1 <== NOT EXECUTED 476ba: b081 cmpl %d1,%d0 <== NOT EXECUTED 476bc: 6f0a bles 476c8 <_TOD_Set+0x34> <== NOT EXECUTED Watchdog_Adjust_directions direction, Watchdog_Interval units ) { _Watchdog_Adjust( &_Watchdog_Seconds_chain, direction, units ); 476be: 9081 subl %d1,%d0 <== NOT EXECUTED 476c0: 2f00 movel %d0,%sp@- <== NOT EXECUTED 476c2: 4878 0001 pea 1 <== NOT EXECUTED 476c6: 6006 bras 476ce <_TOD_Set+0x3a> <== NOT EXECUTED 476c8: 9280 subl %d0,%d1 <== NOT EXECUTED 476ca: 2f01 movel %d1,%sp@- <== NOT EXECUTED 476cc: 42a7 clrl %sp@- <== NOT EXECUTED 476ce: 4879 0006 844c pea 6844c <_Watchdog_Seconds_chain> <== NOT EXECUTED 476d4: 4e90 jsr %a0@ <== NOT EXECUTED _Watchdog_Adjust_seconds( WATCHDOG_BACKWARD, seconds - time->tv_sec ); else _Watchdog_Adjust_seconds( WATCHDOG_FORWARD, time->tv_sec - seconds ); /* POSIX format TOD (timespec) */ _Timestamp_Set( &_TOD_Now, time->tv_sec, time->tv_nsec ); 476d6: 23d2 0006 8422 movel %a2@,68422 <_TOD_Now> <== NOT EXECUTED 476dc: 588a addql #4,%a2 <== NOT EXECUTED 476de: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 476e2: 23d2 0006 8426 movel %a2@,68426 <_TOD_Now+0x4> <== NOT EXECUTED _TOD_Is_set = true; _TOD_Activate(); _Thread_Enable_dispatch(); } 476e8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 476ec: 4e5e unlk %fp <== NOT EXECUTED else _Watchdog_Adjust_seconds( WATCHDOG_FORWARD, time->tv_sec - seconds ); /* POSIX format TOD (timespec) */ _Timestamp_Set( &_TOD_Now, time->tv_sec, time->tv_nsec ); _TOD_Is_set = true; 476ee: 7001 moveq #1,%d0 <== NOT EXECUTED 476f0: 13c0 0006 8388 moveb %d0,68388 <_TOD_Is_set> <== NOT EXECUTED _TOD_Activate(); _Thread_Enable_dispatch(); 476f6: 4ef9 0004 8b46 jmp 48b46 <_Thread_Enable_dispatch> <== NOT EXECUTED =============================================================================== 00046418 <_TOD_Tickle_ticks>: { Timestamp_Control tick; uint32_t seconds; /* Convert the tick quantum to a timestamp */ _Timestamp_Set( &tick, 0, rtems_configuration_get_nanoseconds_per_tick() ); 46418: 223c 0000 03e8 movel #1000,%d1 * * Output parameters: NONE */ void _TOD_Tickle_ticks( void ) { 4641e: 4e56 fff8 linkw %fp,#-8 Timestamp_Control tick; uint32_t seconds; /* Convert the tick quantum to a timestamp */ _Timestamp_Set( &tick, 0, rtems_configuration_get_nanoseconds_per_tick() ); 46422: 2039 0005 cba0 movel 5cba0 ,%d0 46428: 4c01 0800 mulsl %d1,%d0 * * Output parameters: NONE */ void _TOD_Tickle_ticks( void ) { 4642c: 2f0a movel %a2,%sp@- /* Update the counter of ticks since boot */ _Watchdog_Ticks_since_boot += 1; /* Update the timespec format uptime */ _Timestamp_Add_to( &_TOD_Uptime, &tick ); 4642e: 45f9 0004 8228 lea 48228 <_Timespec_Add_to>,%a2 * * Output parameters: NONE */ void _TOD_Tickle_ticks( void ) { 46434: 2f02 movel %d2,%sp@- /* Update the counter of ticks since boot */ _Watchdog_Ticks_since_boot += 1; /* Update the timespec format uptime */ _Timestamp_Add_to( &_TOD_Uptime, &tick ); 46436: 240e movel %fp,%d2 46438: 5182 subql #8,%d2 { Timestamp_Control tick; uint32_t seconds; /* Convert the tick quantum to a timestamp */ _Timestamp_Set( &tick, 0, rtems_configuration_get_nanoseconds_per_tick() ); 4643a: 2d40 fffc movel %d0,%fp@(-4) /* Update the counter of ticks since boot */ _Watchdog_Ticks_since_boot += 1; 4643e: 2039 0005 e5a2 movel 5e5a2 <_Watchdog_Ticks_since_boot>,%d0 46444: 5280 addql #1,%d0 /* Update the timespec format uptime */ _Timestamp_Add_to( &_TOD_Uptime, &tick ); 46446: 2f02 movel %d2,%sp@- 46448: 4879 0005 e4f2 pea 5e4f2 <_TOD_Uptime> { Timestamp_Control tick; uint32_t seconds; /* Convert the tick quantum to a timestamp */ _Timestamp_Set( &tick, 0, rtems_configuration_get_nanoseconds_per_tick() ); 4644e: 42ae fff8 clrl %fp@(-8) /* Update the counter of ticks since boot */ _Watchdog_Ticks_since_boot += 1; 46452: 23c0 0005 e5a2 movel %d0,5e5a2 <_Watchdog_Ticks_since_boot> /* Update the timespec format uptime */ _Timestamp_Add_to( &_TOD_Uptime, &tick ); 46458: 4e92 jsr %a2@ /* we do not care how much the uptime changed */ /* Update the timespec format TOD */ seconds = _Timestamp_Add_to_at_tick( &_TOD_Now, &tick ); 4645a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4645c: 4879 0005 e522 pea 5e522 <_TOD_Now> <== NOT EXECUTED 46462: 4e92 jsr %a2@ <== NOT EXECUTED while ( seconds ) { 46464: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Watchdog_Tickle_seconds( void ) { _Watchdog_Tickle( &_Watchdog_Seconds_chain ); 46468: 45f9 0004 86b8 lea 486b8 <_Watchdog_Tickle>,%a2 <== NOT EXECUTED /* Update the timespec format uptime */ _Timestamp_Add_to( &_TOD_Uptime, &tick ); /* we do not care how much the uptime changed */ /* Update the timespec format TOD */ seconds = _Timestamp_Add_to_at_tick( &_TOD_Now, &tick ); 4646e: 2400 movel %d0,%d2 <== NOT EXECUTED while ( seconds ) { 46470: 600c bras 4647e <_TOD_Tickle_ticks+0x66> <== NOT EXECUTED 46472: 4879 0005 e54c pea 5e54c <_Watchdog_Seconds_chain> <== NOT EXECUTED _Watchdog_Tickle_seconds(); seconds--; 46478: 5382 subql #1,%d2 <== NOT EXECUTED 4647a: 4e92 jsr %a2@ <== NOT EXECUTED 4647c: 588f addql #4,%sp <== NOT EXECUTED _Timestamp_Add_to( &_TOD_Uptime, &tick ); /* we do not care how much the uptime changed */ /* Update the timespec format TOD */ seconds = _Timestamp_Add_to_at_tick( &_TOD_Now, &tick ); while ( seconds ) { 4647e: 4a82 tstl %d2 <== NOT EXECUTED 46480: 66f0 bnes 46472 <_TOD_Tickle_ticks+0x5a> <== NOT EXECUTED _Watchdog_Tickle_seconds(); seconds--; } } 46482: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 46486: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 4648a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00045f68 <_TOD_To_seconds>: */ uint32_t _TOD_To_seconds( const rtems_time_of_day *the_tod ) { 45f68: 43f9 0005 dc7a lea 5dc7a <_TOD_Days_to_date>,%a1 <== NOT EXECUTED 45f6e: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 45f72: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 45f76: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED uint32_t time; uint32_t year_mod_4; time = the_tod->day - 1; year_mod_4 = the_tod->year & 3; 45f7a: 2210 movel %a0@,%d1 <== NOT EXECUTED 45f7c: 7403 moveq #3,%d2 <== NOT EXECUTED ) { uint32_t time; uint32_t year_mod_4; time = the_tod->day - 1; 45f7e: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED 45f82: 5380 subql #1,%d0 <== NOT EXECUTED year_mod_4 = the_tod->year & 3; 45f84: c481 andl %d1,%d2 <== NOT EXECUTED if ( year_mod_4 == 0 ) 45f86: 660c bnes 45f94 <_TOD_To_seconds+0x2c> <== NOT EXECUTED time += _TOD_Days_to_date[ 1 ][ the_tod->month ]; 45f88: 2628 0004 movel %a0@(4),%d3 <== NOT EXECUTED 45f8c: 0683 0000 000d addil #13,%d3 <== NOT EXECUTED 45f92: 6004 bras 45f98 <_TOD_To_seconds+0x30> <== NOT EXECUTED else time += _TOD_Days_to_date[ 0 ][ the_tod->month ]; 45f94: 2628 0004 movel %a0@(4),%d3 <== 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 ]; 45f98: 45f9 0005 dcae lea 5dcae <_TOD_Days_since_last_leap_year>,%a2<== 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 ) * 45f9e: 0681 ffff f83c addil #-1988,%d1 <== NOT EXECUTED 45fa4: e489 lsrl #2,%d1 <== 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 ]; 45fa6: 3631 3a00 movew %a1@(00000000,%d3:l:2),%d3 <== NOT EXECUTED 45faa: 0283 0000 ffff andil #65535,%d3 <== NOT EXECUTED 45fb0: 2243 moveal %d3,%a1 <== NOT EXECUTED 45fb2: d3c0 addal %d0,%a1 <== 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 ]; 45fb4: 4280 clrl %d0 <== NOT EXECUTED 45fb6: 3032 2a00 movew %a2@(00000000,%d2:l:2),%d0 <== 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 ) * 45fba: 243c 0000 05b5 movel #1461,%d2 <== NOT EXECUTED 45fc0: 4c02 1800 mulsl %d2,%d1 <== NOT EXECUTED 45fc4: d280 addl %d0,%d1 <== NOT EXECUTED ( (TOD_DAYS_PER_YEAR * 4) + 1); time += _TOD_Days_since_last_leap_year[ year_mod_4 ]; 45fc6: 2001 movel %d1,%d0 <== NOT EXECUTED 45fc8: d089 addl %a1,%d0 <== NOT EXECUTED time *= TOD_SECONDS_PER_DAY; 45fca: 223c 0001 5180 movel #86400,%d1 <== NOT EXECUTED 45fd0: 4c01 0800 mulsl %d1,%d0 <== NOT EXECUTED time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute) 45fd4: 2228 000c movel %a0@(12),%d1 <== NOT EXECUTED 45fd8: 2401 movel %d1,%d2 <== NOT EXECUTED 45fda: ed89 lsll #6,%d1 <== NOT EXECUTED 45fdc: e58a lsll #2,%d2 <== NOT EXECUTED 45fde: 2268 0014 moveal %a0@(20),%a1 <== NOT EXECUTED 45fe2: 9282 subl %d2,%d1 <== NOT EXECUTED 45fe4: d2a8 0010 addl %a0@(16),%d1 <== NOT EXECUTED 45fe8: d3fc 21da e500 addal #567993600,%a1 <== NOT EXECUTED * TOD_SECONDS_PER_MINUTE; 45fee: 2401 movel %d1,%d2 <== NOT EXECUTED 45ff0: ed89 lsll #6,%d1 <== NOT EXECUTED 45ff2: e58a lsll #2,%d2 <== NOT EXECUTED 45ff4: 9282 subl %d2,%d1 <== NOT EXECUTED time += the_tod->second; 45ff6: d289 addl %a1,%d1 <== NOT EXECUTED time += TOD_SECONDS_1970_THROUGH_1988; return( time ); } 45ff8: d081 addl %d1,%d0 <== NOT EXECUTED 45ffa: 4cd7 040c moveml %sp@,%d2-%d3/%a2 <== NOT EXECUTED 45ffe: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046004 <_TOD_Validate>: */ bool _TOD_Validate( const rtems_time_of_day *the_tod ) { 46004: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46008: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4600c: 2f03 movel %d3,%sp@- <== NOT EXECUTED uint32_t days_in_month; uint32_t ticks_per_second; ticks_per_second = TOD_MICROSECONDS_PER_SECOND / rtems_configuration_get_microseconds_per_tick(); 4600e: 2039 0005 ecd0 movel 5ecd0 ,%d0 <== NOT EXECUTED */ bool _TOD_Validate( const rtems_time_of_day *the_tod ) { 46014: 2f02 movel %d2,%sp@- <== NOT EXECUTED uint32_t days_in_month; uint32_t ticks_per_second; ticks_per_second = TOD_MICROSECONDS_PER_SECOND / rtems_configuration_get_microseconds_per_tick(); if ((!the_tod) || 46016: 4a88 tstl %a0 <== NOT EXECUTED 46018: 6762 beqs 4607c <_TOD_Validate+0x78> <== NOT EXECUTED ) { uint32_t days_in_month; uint32_t ticks_per_second; ticks_per_second = TOD_MICROSECONDS_PER_SECOND / 4601a: 243c 000f 4240 movel #1000000,%d2 <== NOT EXECUTED 46020: 4c40 2002 remul %d0,%d2,%d2 <== NOT EXECUTED rtems_configuration_get_microseconds_per_tick(); if ((!the_tod) || 46024: b4a8 0018 cmpl %a0@(24),%d2 <== NOT EXECUTED 46028: 6352 blss 4607c <_TOD_Validate+0x78> <== NOT EXECUTED (the_tod->ticks >= ticks_per_second) || 4602a: 763b moveq #59,%d3 <== NOT EXECUTED 4602c: b6a8 0014 cmpl %a0@(20),%d3 <== NOT EXECUTED 46030: 654a bcss 4607c <_TOD_Validate+0x78> <== NOT EXECUTED (the_tod->second >= TOD_SECONDS_PER_MINUTE) || 46032: b6a8 0010 cmpl %a0@(16),%d3 <== NOT EXECUTED 46036: 6544 bcss 4607c <_TOD_Validate+0x78> <== NOT EXECUTED (the_tod->minute >= TOD_MINUTES_PER_HOUR) || 46038: 7017 moveq #23,%d0 <== NOT EXECUTED 4603a: b0a8 000c cmpl %a0@(12),%d0 <== NOT EXECUTED 4603e: 653c bcss 4607c <_TOD_Validate+0x78> <== NOT EXECUTED (the_tod->hour >= TOD_HOURS_PER_DAY) || (the_tod->month == 0) || 46040: 2028 0004 movel %a0@(4),%d0 <== NOT EXECUTED rtems_configuration_get_microseconds_per_tick(); if ((!the_tod) || (the_tod->ticks >= ticks_per_second) || (the_tod->second >= TOD_SECONDS_PER_MINUTE) || (the_tod->minute >= TOD_MINUTES_PER_HOUR) || (the_tod->hour >= TOD_HOURS_PER_DAY) || 46044: 6736 beqs 4607c <_TOD_Validate+0x78> <== NOT EXECUTED (the_tod->month == 0) || 46046: 720c moveq #12,%d1 <== NOT EXECUTED 46048: b280 cmpl %d0,%d1 <== NOT EXECUTED 4604a: 6530 bcss 4607c <_TOD_Validate+0x78> <== NOT EXECUTED (the_tod->month > TOD_MONTHS_PER_YEAR) || (the_tod->year < TOD_BASE_YEAR) || 4604c: 2410 movel %a0@,%d2 <== NOT EXECUTED (the_tod->ticks >= ticks_per_second) || (the_tod->second >= TOD_SECONDS_PER_MINUTE) || (the_tod->minute >= TOD_MINUTES_PER_HOUR) || (the_tod->hour >= TOD_HOURS_PER_DAY) || (the_tod->month == 0) || (the_tod->month > TOD_MONTHS_PER_YEAR) || 4604e: 0c82 0000 07c3 cmpil #1987,%d2 <== NOT EXECUTED 46054: 6326 blss 4607c <_TOD_Validate+0x78> <== NOT EXECUTED (the_tod->year < TOD_BASE_YEAR) || (the_tod->day == 0) ) 46056: 2228 0008 movel %a0@(8),%d1 <== NOT EXECUTED (the_tod->second >= TOD_SECONDS_PER_MINUTE) || (the_tod->minute >= TOD_MINUTES_PER_HOUR) || (the_tod->hour >= TOD_HOURS_PER_DAY) || (the_tod->month == 0) || (the_tod->month > TOD_MONTHS_PER_YEAR) || (the_tod->year < TOD_BASE_YEAR) || 4605a: 6720 beqs 4607c <_TOD_Validate+0x78> <== NOT EXECUTED (the_tod->day == 0) ) return false; if ( (the_tod->year % 4) == 0 ) 4605c: 163c 0003 moveb #3,%d3 <== NOT EXECUTED 46060: 41f9 0005 dcb6 lea 5dcb6 <_TOD_Days_per_month>,%a0 <== NOT EXECUTED 46066: c483 andl %d3,%d2 <== NOT EXECUTED 46068: 6606 bnes 46070 <_TOD_Validate+0x6c> <== NOT EXECUTED days_in_month = _TOD_Days_per_month[ 1 ][ the_tod->month ]; 4606a: 2030 0c34 movel %a0@(00000034,%d0:l:4),%d0 <== NOT EXECUTED 4606e: 6004 bras 46074 <_TOD_Validate+0x70> <== NOT EXECUTED else days_in_month = _TOD_Days_per_month[ 0 ][ the_tod->month ]; 46070: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED * false - if the the_tod is invalid * * NOTE: This routine only works for leap-years through 2099. */ bool _TOD_Validate( 46074: b081 cmpl %d1,%d0 <== NOT EXECUTED 46076: 54c0 scc %d0 <== NOT EXECUTED 46078: 4480 negl %d0 <== NOT EXECUTED 4607a: 6002 bras 4607e <_TOD_Validate+0x7a> <== NOT EXECUTED (the_tod->hour >= TOD_HOURS_PER_DAY) || (the_tod->month == 0) || (the_tod->month > TOD_MONTHS_PER_YEAR) || (the_tod->year < TOD_BASE_YEAR) || (the_tod->day == 0) ) return false; 4607c: 4200 clrb %d0 <== NOT EXECUTED if ( the_tod->day > days_in_month ) return false; return true; } 4607e: 241f movel %sp@+,%d2 <== NOT EXECUTED 46080: 261f movel %sp@+,%d3 <== NOT EXECUTED 46082: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00047300 <_Thread_Change_priority>: void _Thread_Change_priority( Thread_Control *the_thread, Priority_Control new_priority, bool prepend_it ) { 47300: 4e56 fff0 linkw %fp,#-16 47304: 48d7 041c moveml %d2-%d4/%a2,%sp@ 47308: 246e 0008 moveal %fp@(8),%a2 */ /* * Save original state */ original_state = the_thread->current_state; 4730c: 282a 0010 movel %a2@(16),%d4 void _Thread_Change_priority( Thread_Control *the_thread, Priority_Control new_priority, bool prepend_it ) { 47310: 242e 000c movel %fp@(12),%d2 /* * Set a transient state for the thread so it is pulled off the Ready chains. * This will prevent it from being scheduled no matter what happens in an * ISR. */ _Thread_Set_transient( the_thread ); 47314: 2f0a movel %a2,%sp@- void _Thread_Change_priority( Thread_Control *the_thread, Priority_Control new_priority, bool prepend_it ) { 47316: 162e 0013 moveb %fp@(19),%d3 /* * 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 ); 4731a: 4eb9 0004 7fbc jsr 47fbc <_Thread_Set_transient> /* * Do not bother recomputing all the priority related information if * we are not REALLY changing priority. */ if ( the_thread->current_priority != new_priority ) 47320: 588f addql #4,%sp 47322: b4aa 0014 cmpl %a2@(20),%d2 47326: 670c beqs 47334 <_Thread_Change_priority+0x34> _Thread_Set_priority( the_thread, new_priority ); 47328: 2f02 movel %d2,%sp@- 4732a: 2f0a movel %a2,%sp@- 4732c: 4eb9 0004 7f48 jsr 47f48 <_Thread_Set_priority> 47332: 508f addql #8,%sp _ISR_Disable( level ); 47334: 203c 0000 0700 movel #1792,%d0 4733a: 40c2 movew %sr,%d2 4733c: 8082 orl %d2,%d0 4733e: 46c0 movew %d0,%sr 47340: 7204 moveq #4,%d1 /* * 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; 47342: 202a 0010 movel %a2@(16),%d0 47346: c284 andl %d4,%d1 if ( state != STATES_TRANSIENT ) { 47348: 7804 moveq #4,%d4 4734a: b880 cmpl %d0,%d4 4734c: 6730 beqs 4737e <_Thread_Change_priority+0x7e> /* Only clear the transient state if it wasn't set already */ if ( ! _States_Is_transient( original_state ) ) 4734e: 4a81 tstl %d1 47350: 6608 bnes 4735a <_Thread_Change_priority+0x5a> <== NEVER TAKEN RTEMS_INLINE_ROUTINE States_Control _States_Clear ( States_Control states_to_clear, States_Control current_state ) { return (current_state & ~states_to_clear); 47352: 72fb moveq #-5,%d1 47354: c280 andl %d0,%d1 47356: 2541 0010 movel %d1,%a2@(16) the_thread->current_state = _States_Clear( STATES_TRANSIENT, state ); _ISR_Enable( level ); 4735a: 46c2 movew %d2,%sr */ RTEMS_INLINE_ROUTINE bool _States_Is_waiting_on_thread_queue ( States_Control the_states ) { return (the_states & STATES_WAITING_ON_THREAD_QUEUE); 4735c: 0280 0003 bee0 andil #245472,%d0 if ( _States_Is_waiting_on_thread_queue( state ) ) { 47362: 6700 00cc beqw 47430 <_Thread_Change_priority+0x130> _Thread_queue_Requeue( the_thread->Wait.queue, the_thread ); 47366: 2d4a 000c movel %a2,%fp@(12) 4736a: 2d6a 0044 0008 movel %a2@(68),%fp@(8) if ( !_Thread_Is_executing_also_the_heir() && _Thread_Executing->is_preemptible ) _Thread_Dispatch_necessary = true; _ISR_Enable( level ); } 47370: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 47376: 4e5e unlk %fp /* Only clear the transient state if it wasn't set already */ if ( ! _States_Is_transient( original_state ) ) the_thread->current_state = _States_Clear( STATES_TRANSIENT, state ); _ISR_Enable( level ); if ( _States_Is_waiting_on_thread_queue( state ) ) { _Thread_queue_Requeue( the_thread->Wait.queue, the_thread ); 47378: 4ef9 0004 7eac jmp 47eac <_Thread_queue_Requeue> } return; } /* Only clear the transient state if it wasn't set already */ if ( ! _States_Is_transient( original_state ) ) { 4737e: 4a81 tstl %d1 47380: 6674 bnes 473f6 <_Thread_Change_priority+0xf6> <== NEVER TAKEN 47382: 206a 008a moveal %a2@(138),%a0 * Ready Queue with interrupts off. * * FIXME: hard-coded for priority scheduling. Might be ok since this * function is specific to priority scheduling? */ the_thread->current_state = _States_Clear( STATES_TRANSIENT, state ); 47386: 42aa 0010 clrl %a2@(16) if ( prepend_it ) 4738a: 4a03 tstb %d3 4738c: 6732 beqs 473c0 <_Thread_Change_priority+0xc0> RTEMS_INLINE_ROUTINE void _Priority_bit_map_Add ( Priority_bit_map_Information *the_priority_map ) { *the_priority_map->minor |= the_priority_map->ready_minor; 4738e: 2268 0004 moveal %a0@(4),%a1 47392: 3028 000a movew %a0@(10),%d0 47396: 3211 movew %a1@,%d1 47398: 8081 orl %d1,%d0 4739a: 3280 movew %d0,%a1@ _Priority_Major_bit_map |= the_priority_map->ready_major; 4739c: 3228 0008 movew %a0@(8),%d1 473a0: 3039 0005 e910 movew 5e910 <_Priority_Major_bit_map>,%d0 Thread_Control *the_thread ) { _Priority_bit_map_Add( &the_thread->scheduler.priority->Priority_map ); _Chain_Prepend_unprotected( the_thread->scheduler.priority->ready_chain, 473a6: 2050 moveal %a0@,%a0 473a8: 8081 orl %d1,%d0 ) { Chain_Node *before_node; the_node->previous = after_node; before_node = after_node->next; 473aa: 2250 moveal %a0@,%a1 473ac: 33c0 0005 e910 movew %d0,5e910 <_Priority_Major_bit_map> Chain_Node *the_node ) { Chain_Node *before_node; the_node->previous = after_node; 473b2: 2548 0004 movel %a0,%a2@(4) before_node = after_node->next; after_node->next = the_node; 473b6: 208a movel %a2,%a0@ the_node->next = before_node; before_node->previous = the_node; 473b8: 234a 0004 movel %a2,%a1@(4) Chain_Node *before_node; the_node->previous = after_node; before_node = after_node->next; after_node->next = the_node; the_node->next = before_node; 473bc: 2489 movel %a1,%a2@ 473be: 6036 bras 473f6 <_Thread_Change_priority+0xf6> RTEMS_INLINE_ROUTINE void _Priority_bit_map_Add ( Priority_bit_map_Information *the_priority_map ) { *the_priority_map->minor |= the_priority_map->ready_minor; 473c0: 2268 0004 moveal %a0@(4),%a1 473c4: 3028 000a movew %a0@(10),%d0 473c8: 3211 movew %a1@,%d1 473ca: 8081 orl %d1,%d0 473cc: 3280 movew %d0,%a1@ _Priority_Major_bit_map |= the_priority_map->ready_major; 473ce: 3228 0008 movew %a0@(8),%d1 473d2: 3039 0005 e910 movew 5e910 <_Priority_Major_bit_map>,%d0 Thread_Control *the_thread ) { _Priority_bit_map_Add( &the_thread->scheduler.priority->Priority_map ); _Chain_Append_unprotected( the_thread->scheduler.priority->ready_chain, 473d8: 2050 moveal %a0@,%a0 RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected( Chain_Control *the_chain, Chain_Node *the_node ) { Chain_Node *tail = _Chain_Tail( the_chain ); 473da: 2808 movel %a0,%d4 473dc: 5884 addql #4,%d4 473de: 8081 orl %d1,%d0 Chain_Node *old_last = tail->previous; 473e0: 2268 0008 moveal %a0@(8),%a1 473e4: 33c0 0005 e910 movew %d0,5e910 <_Priority_Major_bit_map> the_node->next = tail; tail->previous = the_node; 473ea: 214a 0008 movel %a2,%a0@(8) RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected( Chain_Control *the_chain, Chain_Node *the_node ) { Chain_Node *tail = _Chain_Tail( the_chain ); 473ee: 2484 movel %d4,%a2@ Chain_Node *old_last = tail->previous; the_node->next = tail; tail->previous = the_node; old_last->next = the_node; the_node->previous = old_last; 473f0: 2549 0004 movel %a1,%a2@(4) Chain_Node *tail = _Chain_Tail( the_chain ); Chain_Node *old_last = tail->previous; the_node->next = tail; tail->previous = the_node; old_last->next = the_node; 473f4: 228a movel %a2,%a1@ _Scheduler_priority_Ready_queue_enqueue_first( the_thread ); else _Scheduler_priority_Ready_queue_enqueue( the_thread ); } _ISR_Flash( level ); 473f6: 203c 0000 0700 movel #1792,%d0 473fc: 46c2 movew %d2,%sr 473fe: 8082 orl %d2,%d0 47400: 46c0 movew %d0,%sr */ RTEMS_INLINE_ROUTINE void _Scheduler_Schedule( Scheduler_Control *the_scheduler ) { the_scheduler->Operations.schedule( the_scheduler ); 47402: 4879 0005 e4fe pea 5e4fe <_Scheduler> 47408: 2079 0005 e502 moveal 5e502 <_Scheduler+0x4>,%a0 4740e: 4e90 jsr %a0@ * is also the heir thread, and false otherwise. */ RTEMS_INLINE_ROUTINE bool _Thread_Is_executing_also_the_heir( void ) { return ( _Thread_Executing == _Thread_Heir ); 47410: 2079 0005 e902 moveal 5e902 <_Per_CPU_Information+0xc>,%a0 * We altered the set of thread priorities. So let's figure out * who is the heir and if we need to switch to them. */ _Scheduler_Schedule(&_Scheduler); if ( !_Thread_Is_executing_also_the_heir() && 47416: 588f addql #4,%sp 47418: b1f9 0005 e906 cmpal 5e906 <_Per_CPU_Information+0x10>,%a0 4741e: 670e beqs 4742e <_Thread_Change_priority+0x12e> 47420: 4a28 0074 tstb %a0@(116) 47424: 6708 beqs 4742e <_Thread_Change_priority+0x12e> <== NEVER TAKEN _Thread_Executing->is_preemptible ) _Thread_Dispatch_necessary = true; 47426: 7001 moveq #1,%d0 47428: 13c0 0005 e90e moveb %d0,5e90e <_Per_CPU_Information+0x18> _ISR_Enable( level ); 4742e: 46c2 movew %d2,%sr } 47430: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 47436: 4e5e unlk %fp ... =============================================================================== 0004743c <_Thread_Clear_state>: ) { ISR_Level level; States_Control current_state; _ISR_Disable( level ); 4743c: 223c 0000 0700 movel #1792,%d1 void _Thread_Clear_state( Thread_Control *the_thread, States_Control state ) { 47442: 4e56 0000 linkw %fp,#0 47446: 206e 0008 moveal %fp@(8),%a0 4744a: 2f03 movel %d3,%sp@- 4744c: 202e 000c movel %fp@(12),%d0 47450: 2f02 movel %d2,%sp@- ISR_Level level; States_Control current_state; _ISR_Disable( level ); 47452: 40c2 movew %sr,%d2 47454: 8282 orl %d2,%d1 47456: 46c1 movew %d1,%sr current_state = the_thread->current_state; 47458: 2228 0010 movel %a0@(16),%d1 if ( current_state & state ) { 4745c: 2600 movel %d0,%d3 4745e: c681 andl %d1,%d3 47460: 671c beqs 4747e <_Thread_Clear_state+0x42> <== NEVER TAKEN RTEMS_INLINE_ROUTINE States_Control _States_Clear ( States_Control states_to_clear, States_Control current_state ) { return (current_state & ~states_to_clear); 47462: 4680 notl %d0 47464: c081 andl %d1,%d0 current_state = the_thread->current_state = _States_Clear( state, current_state ); 47466: 2140 0010 movel %d0,%a0@(16) if ( _States_Is_ready( current_state ) ) { 4746a: 6612 bnes 4747e <_Thread_Clear_state+0x42> <== NEVER TAKEN RTEMS_INLINE_ROUTINE void _Scheduler_Unblock( Scheduler_Control *the_scheduler, Thread_Control *the_thread ) { the_scheduler->Operations.unblock( the_scheduler, the_thread ); 4746c: 2f08 movel %a0,%sp@- 4746e: 4879 0005 e4fe pea 5e4fe <_Scheduler> 47474: 2079 0005 e50e moveal 5e50e <_Scheduler+0x10>,%a0 4747a: 4e90 jsr %a0@ 4747c: 508f addql #8,%sp _Scheduler_Unblock( &_Scheduler, the_thread); } } _ISR_Enable( level ); 4747e: 46c2 movew %d2,%sr } 47480: 242e fff8 movel %fp@(-8),%d2 47484: 262e fffc movel %fp@(-4),%d3 47488: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004748c <_Thread_Close>: RTEMS_INLINE_ROUTINE void _Objects_Invalidate_Id( Objects_Information *information, Objects_Control *the_object ) { _Objects_Set_local_object( 4748c: 4280 clrl %d0 void _Thread_Close( Objects_Information *information, Thread_Control *the_thread ) { 4748e: 4e56 0000 linkw %fp,#0 47492: 2f0b movel %a3,%sp@- 47494: 266e 0008 moveal %fp@(8),%a3 47498: 2f0a movel %a2,%sp@- 4749a: 246e 000c moveal %fp@(12),%a2 #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4749e: 206b 0018 moveal %a3@(24),%a0 RTEMS_INLINE_ROUTINE void _Objects_Invalidate_Id( Objects_Information *information, Objects_Control *the_object ) { _Objects_Set_local_object( 474a2: 302a 000a movew %a2@(10),%d0 #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 474a6: 42b0 0c00 clrl %a0@(00000000,%d0:l:4) */ RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void ) { RTEMS_COMPILER_MEMORY_BARRIER(); _Thread_Dispatch_disable_level -= 1; 474aa: 2039 0005 e478 movel 5e478 <_Thread_Dispatch_disable_level>,%d0 474b0: 5380 subql #1,%d0 * disappear and set a transient state on it. So we temporarily * unnest dispatching. */ _Thread_Unnest_dispatch(); _User_extensions_Thread_delete( the_thread ); 474b2: 2f0a movel %a2,%sp@- 474b4: 23c0 0005 e478 movel %d0,5e478 <_Thread_Dispatch_disable_level> 474ba: 4eb9 0004 845c jsr 4845c <_User_extensions_Thread_delete> rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 474c0: 2039 0005 e478 movel 5e478 <_Thread_Dispatch_disable_level>,%d0 474c6: 5280 addql #1,%d0 474c8: 23c0 0005 e478 movel %d0,5e478 <_Thread_Dispatch_disable_level> /* * Now we are in a dispatching critical section again and we * can take the thread OUT of the published set. It is invalid * to use this thread's Id OR name after this call. */ _Objects_Close( information, &the_thread->Object ); 474ce: 2f0a movel %a2,%sp@- 474d0: 2f0b movel %a3,%sp@- 474d2: 4eb9 0004 68e4 jsr 468e4 <_Objects_Close> /* * By setting the dormant state, the thread will not be considered * for scheduling when we remove any blocking states. */ _Thread_Set_state( the_thread, STATES_DORMANT ); 474d8: 4878 0001 pea 1 474dc: 2f0a movel %a2,%sp@- 474de: 4eb9 0004 7f70 jsr 47f70 <_Thread_Set_state> if ( !_Thread_queue_Extract_with_proxy( the_thread ) ) { 474e4: 2f0a movel %a2,%sp@- 474e6: 4eb9 0004 7de0 jsr 47de0 <_Thread_queue_Extract_with_proxy> 474ec: 4fef 0018 lea %sp@(24),%sp 474f0: 4a00 tstb %d0 474f2: 6614 bnes 47508 <_Thread_Close+0x7c> <== NEVER TAKEN if ( _Watchdog_Is_active( &the_thread->Timer ) ) 474f4: 7002 moveq #2,%d0 474f6: b0aa 0050 cmpl %a2@(80),%d0 474fa: 660c bnes 47508 <_Thread_Close+0x7c> <== ALWAYS TAKEN (void) _Watchdog_Remove( &the_thread->Timer ); 474fc: 486a 0048 pea %a2@(72) <== NOT EXECUTED 47500: 4eb9 0004 863c jsr 4863c <_Watchdog_Remove> <== NOT EXECUTED 47506: 588f addql #4,%sp <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Scheduler_Thread_scheduler_free( Scheduler_Control *the_scheduler, Thread_Control *the_thread ) { return the_scheduler->Operations.scheduler_free( the_scheduler, the_thread ); 47508: 2f0a movel %a2,%sp@- 4750a: 4879 0005 e4fe pea 5e4fe <_Scheduler> 47510: 2079 0005 e516 moveal 5e516 <_Scheduler+0x18>,%a0 47516: 4e90 jsr %a0@ /* * The thread might have been FP. So deal with that. */ #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) #if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE ) if ( _Thread_Is_allocated_fp( the_thread ) ) 47518: 508f addql #8,%sp 4751a: b5f9 0005 e4fa cmpal 5e4fa <_Thread_Allocated_fp>,%a2 47520: 6606 bnes 47528 <_Thread_Close+0x9c> <== ALWAYS TAKEN */ #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) RTEMS_INLINE_ROUTINE void _Thread_Deallocate_fp( void ) { _Thread_Allocated_fp = NULL; 47522: 42b9 0005 e4fa clrl 5e4fa <_Thread_Allocated_fp> <== NOT EXECUTED _Thread_Deallocate_fp(); #endif the_thread->fp_context = NULL; if ( the_thread->Start.fp_context ) 47528: 202a 00ba movel %a2@(186),%d0 #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) #if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE ) if ( _Thread_Is_allocated_fp( the_thread ) ) _Thread_Deallocate_fp(); #endif the_thread->fp_context = NULL; 4752c: 42aa 00f6 clrl %a2@(246) if ( the_thread->Start.fp_context ) 47530: 4a80 tstl %d0 47532: 670a beqs 4753e <_Thread_Close+0xb2> <== ALWAYS TAKEN (void) _Workspace_Free( the_thread->Start.fp_context ); 47534: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47536: 4eb9 0004 87b0 jsr 487b0 <_Workspace_Free> <== NOT EXECUTED 4753c: 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 ); 4753e: 2f0a movel %a2,%sp@- 47540: 4eb9 0004 808c jsr 4808c <_Thread_Stack_Free> the_thread->Start.stack = NULL; if ( the_thread->extensions ) 47546: 202a 0106 movel %a2@(262),%d0 4754a: 588f addql #4,%sp /* * Free the rest of the memory associated with this task * and set the associated pointers to NULL for safety. */ _Thread_Stack_Free( the_thread ); the_thread->Start.stack = NULL; 4754c: 42aa 00be clrl %a2@(190) if ( the_thread->extensions ) 47550: 4a80 tstl %d0 47552: 670a beqs 4755e <_Thread_Close+0xd2> <== ALWAYS TAKEN (void) _Workspace_Free( the_thread->extensions ); 47554: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47556: 4eb9 0004 87b0 jsr 487b0 <_Workspace_Free> <== NOT EXECUTED 4755c: 588f addql #4,%sp <== NOT EXECUTED the_thread->extensions = NULL; 4755e: 42aa 0106 clrl %a2@(262) } 47562: 246e fff8 moveal %fp@(-8),%a2 47566: 266e fffc moveal %fp@(-4),%a3 4756a: 4e5e unlk %fp ... =============================================================================== 00047620 <_Thread_Delay_ended>: void _Thread_Delay_ended( Objects_Id id, void *ignored __attribute__((unused)) ) { 47620: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED Thread_Control *the_thread; Objects_Locations location; the_thread = _Thread_Get( id, &location ); 47624: 486e fffc pea %fp@(-4) <== NOT EXECUTED 47628: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4762c: 4eb9 0004 77c0 jsr 477c0 <_Thread_Get> <== NOT EXECUTED switch ( location ) { 47632: 508f addql #8,%sp <== NOT EXECUTED 47634: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 47638: 661e bnes 47658 <_Thread_Delay_ended+0x38> <== NOT EXECUTED #if defined(RTEMS_MULTIPROCESSING) case OBJECTS_REMOTE: /* impossible */ #endif break; case OBJECTS_LOCAL: _Thread_Clear_state( 4763a: 2f3c 1000 0018 movel #268435480,%sp@- <== NOT EXECUTED 47640: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47642: 4eb9 0004 743c jsr 4743c <_Thread_Clear_state> <== NOT EXECUTED 47648: 508f addql #8,%sp <== NOT EXECUTED 4764a: 2039 0005 e478 movel 5e478 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 47650: 5380 subql #1,%d0 <== NOT EXECUTED 47652: 23c0 0005 e478 movel %d0,5e478 <_Thread_Dispatch_disable_level><== NOT EXECUTED | STATES_INTERRUPTIBLE_BY_SIGNAL ); _Thread_Unnest_dispatch(); break; } } 47658: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00040564 <_Thread_Disable_dispatch>: */ extern Heap_Control *RTEMS_Malloc_Heap; #endif RTEMS_INLINE_ROUTINE void _Thread_Disable_dispatch( void ) { 40564: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 40568: 2039 0006 3d24 movel 63d24 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4056e: 5280 addql #1,%d0 <== NOT EXECUTED 40570: 23c0 0006 3d24 movel %d0,63d24 <_Thread_Dispatch_disable_level><== NOT EXECUTED #if defined(RTEMS_HEAVY_MALLOC_DEBUG) if ( _Thread_Dispatch_disable_level == 1 ) { _Heap_Walk( RTEMS_Malloc_Heap,99, false ); } #endif } 40576: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004765c <_Thread_Dispatch>: * dispatch thread * no dispatch thread */ void _Thread_Dispatch( void ) { 4765c: 4e56 ffc8 linkw %fp,#-56 47660: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ Thread_Control *executing; Thread_Control *heir; ISR_Level level; executing = _Thread_Executing; _ISR_Disable( level ); 47664: 283c 0000 0700 movel #1792,%d4 4766a: 2204 movel %d4,%d1 { Thread_Control *executing; Thread_Control *heir; ISR_Level level; executing = _Thread_Executing; 4766c: 2479 0005 e902 moveal 5e902 <_Per_CPU_Information+0xc>,%a2 _ISR_Disable( level ); 47672: 40c0 movew %sr,%d0 47674: 8280 orl %d0,%d1 47676: 46c1 movew %d1,%sr _ISR_Enable( level ); #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ { Timestamp_Control uptime, ran; _TOD_Get_uptime( &uptime ); 47678: 260e movel %fp,%d3 _Timestamp_Subtract( 4767a: 240e movel %fp,%d2 _ISR_Enable( level ); #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ { Timestamp_Control uptime, ran; _TOD_Get_uptime( &uptime ); 4767c: 5183 subql #8,%d3 _Timestamp_Subtract( 4767e: 0682 ffff fff0 addil #-16,%d2 &_Thread_Time_of_last_context_switch, &uptime, &ran ); _Timestamp_Add_to( &executing->cpu_time_used, &ran ); 47684: 2e3c 0004 8228 movel #295464,%d7 if ( _Thread_libc_reent ) { executing->libc_reent = *_Thread_libc_reent; *_Thread_libc_reent = heir->libc_reent; } _User_extensions_Thread_switch( executing, heir ); 4768a: 2c3c 0004 84dc movel #296156,%d6 if ( executing->fp_context != NULL ) _Context_Save_fp( &executing->fp_context ); #endif #endif _Context_Switch( &executing->Registers, &heir->Registers ); 47690: 2a3c 0004 87fc movel #296956,%d5 #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 ); 47696: 4bf9 0004 8964 lea 48964 <_CPU_Context_restore_fp>,%a5 #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 ); 4769c: 49f9 0004 8942 lea 48942 <_CPU_Context_save_fp>,%a4 Thread_Control *heir; ISR_Level level; executing = _Thread_Executing; _ISR_Disable( level ); while ( _Thread_Dispatch_necessary == true ) { 476a2: 6000 00d4 braw 47778 <_Thread_Dispatch+0x11c> heir = _Thread_Heir; _Thread_Dispatch_disable_level = 1; 476a6: 7201 moveq #1,%d1 476a8: 23c1 0005 e478 movel %d1,5e478 <_Thread_Dispatch_disable_level> ISR_Level level; executing = _Thread_Executing; _ISR_Disable( level ); while ( _Thread_Dispatch_necessary == true ) { heir = _Thread_Heir; 476ae: 2679 0005 e906 moveal 5e906 <_Per_CPU_Information+0x10>,%a3 _Thread_Dispatch_disable_level = 1; _Thread_Dispatch_necessary = false; 476b4: 4201 clrb %d1 _Thread_Executing = heir; 476b6: 23cb 0005 e902 movel %a3,5e902 <_Per_CPU_Information+0xc> executing = _Thread_Executing; _ISR_Disable( level ); while ( _Thread_Dispatch_necessary == true ) { heir = _Thread_Heir; _Thread_Dispatch_disable_level = 1; _Thread_Dispatch_necessary = false; 476bc: 13c1 0005 e90e moveb %d1,5e90e <_Per_CPU_Information+0x18> /* * When the heir and executing are the same, then we are being * requested to do the post switch dispatching. This is normally * done to dispatch signals. */ if ( heir == executing ) 476c2: b5cb cmpal %a3,%a2 476c4: 6700 00bc beqw 47782 <_Thread_Dispatch+0x126> */ #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 ) 476c8: 7201 moveq #1,%d1 476ca: b2ab 007a cmpl %a3@(122),%d1 476ce: 660a bnes 476da <_Thread_Dispatch+0x7e> <== ALWAYS TAKEN heir->cpu_time_budget = _Thread_Ticks_per_timeslice; 476d0: 41f9 0005 e430 lea 5e430 <_Thread_Ticks_per_timeslice>,%a0 <== NOT EXECUTED 476d6: 2750 0076 movel %a0@,%a3@(118) <== NOT EXECUTED _ISR_Enable( level ); 476da: 46c0 movew %d0,%sr #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ { Timestamp_Control uptime, ran; _TOD_Get_uptime( &uptime ); 476dc: 2f03 movel %d3,%sp@- 476de: 4eb9 0004 ab00 jsr 4ab00 <_TOD_Get_uptime> _Timestamp_Subtract( 476e4: 2f02 movel %d2,%sp@- 476e6: 2f03 movel %d3,%sp@- 476e8: 4879 0005 e544 pea 5e544 <_Thread_Time_of_last_context_switch> 476ee: 4eb9 0004 8260 jsr 48260 <_Timespec_Subtract> &_Thread_Time_of_last_context_switch, &uptime, &ran ); _Timestamp_Add_to( &executing->cpu_time_used, &ran ); 476f4: 2047 moveal %d7,%a0 476f6: 2f02 movel %d2,%sp@- 476f8: 486a 0082 pea %a2@(130) 476fc: 4e90 jsr %a0@ #endif /* * Switch libc's task specific data. */ if ( _Thread_libc_reent ) { 476fe: 2079 0005 e51e moveal 5e51e <_Thread_libc_reent>,%a0 47704: 4fef 0018 lea %sp@(24),%sp &_Thread_Time_of_last_context_switch, &uptime, &ran ); _Timestamp_Add_to( &executing->cpu_time_used, &ran ); _Thread_Time_of_last_context_switch = uptime; 47708: 202e fff8 movel %fp@(-8),%d0 4770c: 222e fffc movel %fp@(-4),%d1 47710: 23c0 0005 e544 movel %d0,5e544 <_Thread_Time_of_last_context_switch> 47716: 23c1 0005 e548 movel %d1,5e548 <_Thread_Time_of_last_context_switch+0x4> #endif /* * Switch libc's task specific data. */ if ( _Thread_libc_reent ) { 4771c: 4a88 tstl %a0 4771e: 6708 beqs 47728 <_Thread_Dispatch+0xcc> <== NEVER TAKEN executing->libc_reent = *_Thread_libc_reent; 47720: 2550 00fa movel %a0@,%a2@(250) *_Thread_libc_reent = heir->libc_reent; 47724: 20ab 00fa movel %a3@(250),%a0@ } _User_extensions_Thread_switch( executing, heir ); 47728: 2f0b movel %a3,%sp@- 4772a: 2046 moveal %d6,%a0 4772c: 2f0a movel %a2,%sp@- 4772e: 4e90 jsr %a0@ if ( executing->fp_context != NULL ) _Context_Save_fp( &executing->fp_context ); #endif #endif _Context_Switch( &executing->Registers, &heir->Registers ); 47730: 486b 00c2 pea %a3@(194) 47734: 2045 moveal %d5,%a0 47736: 486a 00c2 pea %a2@(194) 4773a: 4e90 jsr %a0@ #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) #if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE ) if ( (executing->fp_context != NULL) && 4773c: 4fef 0010 lea %sp@(16),%sp 47740: 4aaa 00f6 tstl %a2@(246) 47744: 6724 beqs 4776a <_Thread_Dispatch+0x10e> <== ALWAYS TAKEN #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) RTEMS_INLINE_ROUTINE bool _Thread_Is_allocated_fp ( const Thread_Control *the_thread ) { return ( the_thread == _Thread_Allocated_fp ); 47746: 2079 0005 e4fa moveal 5e4fa <_Thread_Allocated_fp>,%a0 <== NOT EXECUTED 4774c: b1ca cmpal %a2,%a0 <== NOT EXECUTED 4774e: 671a beqs 4776a <_Thread_Dispatch+0x10e> <== NOT EXECUTED !_Thread_Is_allocated_fp( executing ) ) { if ( _Thread_Allocated_fp != NULL ) 47750: 4a88 tstl %a0 <== NOT EXECUTED 47752: 6708 beqs 4775c <_Thread_Dispatch+0x100> <== NOT EXECUTED _Context_Save_fp( &_Thread_Allocated_fp->fp_context ); 47754: 4868 00f6 pea %a0@(246) <== NOT EXECUTED 47758: 4e94 jsr %a4@ <== NOT EXECUTED 4775a: 588f addql #4,%sp <== NOT EXECUTED _Context_Restore_fp( &executing->fp_context ); 4775c: 486a 00f6 pea %a2@(246) <== NOT EXECUTED 47760: 4e95 jsr %a5@ <== NOT EXECUTED _Thread_Allocated_fp = executing; 47762: 588f addql #4,%sp <== NOT EXECUTED 47764: 23ca 0005 e4fa movel %a2,5e4fa <_Thread_Allocated_fp> <== NOT EXECUTED if ( executing->fp_context != NULL ) _Context_Restore_fp( &executing->fp_context ); #endif #endif executing = _Thread_Executing; 4776a: 2479 0005 e902 moveal 5e902 <_Per_CPU_Information+0xc>,%a2 _ISR_Disable( level ); 47770: 2204 movel %d4,%d1 47772: 40c0 movew %sr,%d0 47774: 8280 orl %d0,%d1 47776: 46c1 movew %d1,%sr Thread_Control *heir; ISR_Level level; executing = _Thread_Executing; _ISR_Disable( level ); while ( _Thread_Dispatch_necessary == true ) { 47778: 1239 0005 e90e moveb 5e90e <_Per_CPU_Information+0x18>,%d1 4777e: 6600 ff26 bnew 476a6 <_Thread_Dispatch+0x4a> _ISR_Disable( level ); } post_switch: _Thread_Dispatch_disable_level = 0; 47782: 42b9 0005 e478 clrl 5e478 <_Thread_Dispatch_disable_level> _ISR_Enable( level ); 47788: 46c0 movew %d0,%sr _API_extensions_Run_postswitch(); 4778a: 4eb9 0004 5e84 jsr 45e84 <_API_extensions_Run_postswitch> } 47790: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 47796: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000477c0 <_Thread_Get>: */ Thread_Control *_Thread_Get ( Objects_Id id, Objects_Locations *location ) { 477c0: 4e56 0000 linkw %fp,#0 477c4: 202e 0008 movel %fp@(8),%d0 477c8: 2f03 movel %d3,%sp@- 477ca: 206e 000c moveal %fp@(12),%a0 477ce: 2f02 movel %d2,%sp@- uint32_t the_class; Objects_Information **api_information; Objects_Information *information; Thread_Control *tp = (Thread_Control *) 0; if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) ) { 477d0: 4a80 tstl %d0 477d2: 6618 bnes 477ec <_Thread_Get+0x2c> rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 477d4: 2039 0005 e478 movel 5e478 <_Thread_Dispatch_disable_level>,%d0 477da: 5280 addql #1,%d0 477dc: 23c0 0005 e478 movel %d0,5e478 <_Thread_Dispatch_disable_level> _Thread_Disable_dispatch(); *location = OBJECTS_LOCAL; 477e2: 4290 clrl %a0@ tp = _Thread_Executing; 477e4: 2039 0005 e902 movel 5e902 <_Per_CPU_Information+0xc>,%d0 goto done; 477ea: 6040 bras 4782c <_Thread_Get+0x6c> */ RTEMS_INLINE_ROUTINE Objects_APIs _Objects_Get_API( Objects_Id id ) { return (Objects_APIs) ((id >> OBJECTS_API_START_BIT) & OBJECTS_API_VALID_BITS); 477ec: 7418 moveq #24,%d2 477ee: 2200 movel %d0,%d1 477f0: e4a9 lsrl %d2,%d1 477f2: 7607 moveq #7,%d3 */ RTEMS_INLINE_ROUTINE bool _Objects_Is_api_valid( uint32_t the_api ) { if ( !the_api || the_api > OBJECTS_APIS_LAST ) 477f4: 143c 0002 moveb #2,%d2 */ RTEMS_INLINE_ROUTINE Objects_APIs _Objects_Get_API( Objects_Id id ) { return (Objects_APIs) ((id >> OBJECTS_API_START_BIT) & OBJECTS_API_VALID_BITS); 477f8: c283 andl %d3,%d1 */ RTEMS_INLINE_ROUTINE bool _Objects_Is_api_valid( uint32_t the_api ) { if ( !the_api || the_api > OBJECTS_APIS_LAST ) 477fa: 2241 moveal %d1,%a1 477fc: 5389 subql #1,%a1 477fe: b489 cmpl %a1,%d2 47800: 6436 bccs 47838 <_Thread_Get+0x78> <== ALWAYS TAKEN 47802: 6010 bras 47814 <_Thread_Get+0x54> <== NOT EXECUTED if ( the_class != 1 ) { /* threads are always first class :) */ *location = OBJECTS_ERROR; goto done; } api_information = _Objects_Information_table[ the_api ]; 47804: 43f9 0005 e434 lea 5e434 <_Objects_Information_table>,%a1 *location = OBJECTS_ERROR; goto done; } #endif information = api_information[ the_class ]; 4780a: 2271 1c00 moveal %a1@(00000000,%d1:l:4),%a1 4780e: 2229 0004 movel %a1@(4),%d1 if ( !information ) { 47812: 6608 bnes 4781c <_Thread_Get+0x5c> <== ALWAYS TAKEN *location = OBJECTS_ERROR; 47814: 7001 moveq #1,%d0 <== NOT EXECUTED 47816: 2080 movel %d0,%a0@ <== NOT EXECUTED { uint32_t the_api; uint32_t the_class; Objects_Information **api_information; Objects_Information *information; Thread_Control *tp = (Thread_Control *) 0; 47818: 4280 clrl %d0 <== NOT EXECUTED #endif information = api_information[ the_class ]; if ( !information ) { *location = OBJECTS_ERROR; goto done; 4781a: 6010 bras 4782c <_Thread_Get+0x6c> <== NOT EXECUTED } tp = (Thread_Control *) _Objects_Get( information, id, location ); 4781c: 2f08 movel %a0,%sp@- 4781e: 2f00 movel %d0,%sp@- 47820: 2f01 movel %d1,%sp@- 47822: 4eb9 0004 6cc0 jsr 46cc0 <_Objects_Get> 47828: 4fef 000c lea %sp@(12),%sp done: return tp; } 4782c: 242e fff8 movel %fp@(-8),%d2 47830: 262e fffc movel %fp@(-4),%d3 47834: 4e5e unlk %fp 47836: 4e75 rts */ RTEMS_INLINE_ROUTINE uint32_t _Objects_Get_class( Objects_Id id ) { return (uint32_t) 47838: 761b moveq #27,%d3 4783a: 2400 movel %d0,%d2 4783c: e6aa lsrl %d3,%d2 *location = OBJECTS_ERROR; goto done; } the_class = _Objects_Get_class( id ); if ( the_class != 1 ) { /* threads are always first class :) */ 4783e: 163c 0001 moveb #1,%d3 47842: b682 cmpl %d2,%d3 47844: 67be beqs 47804 <_Thread_Get+0x44> <== ALWAYS TAKEN 47846: 60cc bras 47814 <_Thread_Get+0x54> <== NOT EXECUTED =============================================================================== 0004c764 <_Thread_Handler>: * * Output parameters: NONE */ void _Thread_Handler( void ) { 4c764: 4e56 0000 linkw %fp,#0 4c768: 2f0a movel %a2,%sp@- #if defined(EXECUTE_GLOBAL_CONSTRUCTORS) static char doneConstructors; char doneCons; #endif executing = _Thread_Executing; 4c76a: 2479 0005 e902 moveal 5e902 <_Per_CPU_Information+0xc>,%a2 * * Output parameters: NONE */ void _Thread_Handler( void ) { 4c770: 2f02 movel %d2,%sp@- /* * have to put level into a register for those cpu's that use * inline asm here */ level = executing->Start.isr_level; 4c772: 222a 00a8 movel %a2@(168),%d1 _ISR_Set_level(level); 4c776: 40c0 movew %sr,%d0 4c778: e189 lsll #8,%d1 4c77a: 0280 0000 f8ff andil #63743,%d0 4c780: 8081 orl %d1,%d0 4c782: 46c0 movew %d0,%sr #if defined(EXECUTE_GLOBAL_CONSTRUCTORS) doneCons = doneConstructors; doneConstructors = 1; 4c784: 7001 moveq #1,%d0 level = executing->Start.isr_level; _ISR_Set_level(level); #if defined(EXECUTE_GLOBAL_CONSTRUCTORS) doneCons = doneConstructors; 4c786: 1439 0005 dc38 moveb 5dc38 ,%d2 doneConstructors = 1; 4c78c: 13c0 0005 dc38 moveb %d0,5dc38 #endif #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) #if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE ) if ( (executing->fp_context != NULL) && 4c792: 4aaa 00f6 tstl %a2@(246) 4c796: 6720 beqs 4c7b8 <_Thread_Handler+0x54> #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) RTEMS_INLINE_ROUTINE bool _Thread_Is_allocated_fp ( const Thread_Control *the_thread ) { return ( the_thread == _Thread_Allocated_fp ); 4c798: 2079 0005 e4fa moveal 5e4fa <_Thread_Allocated_fp>,%a0 4c79e: b1ca cmpal %a2,%a0 4c7a0: 6716 beqs 4c7b8 <_Thread_Handler+0x54> <== NEVER TAKEN !_Thread_Is_allocated_fp( executing ) ) { if ( _Thread_Allocated_fp != NULL ) 4c7a2: 4a88 tstl %a0 4c7a4: 670c beqs 4c7b2 <_Thread_Handler+0x4e> <== ALWAYS TAKEN _Context_Save_fp( &_Thread_Allocated_fp->fp_context ); 4c7a6: 4868 00f6 pea %a0@(246) <== NOT EXECUTED 4c7aa: 4eb9 0004 8942 jsr 48942 <_CPU_Context_save_fp> <== NOT EXECUTED 4c7b0: 588f addql #4,%sp <== NOT EXECUTED _Thread_Allocated_fp = executing; 4c7b2: 23ca 0005 e4fa movel %a2,5e4fa <_Thread_Allocated_fp> /* * Take care that 'begin' extensions get to complete before * 'switch' extensions can run. This means must keep dispatch * disabled until all 'begin' extensions complete. */ _User_extensions_Thread_begin( executing ); 4c7b8: 2f0a movel %a2,%sp@- 4c7ba: 4eb9 0004 8358 jsr 48358 <_User_extensions_Thread_begin> /* * At this point, the dispatch disable level BETTER be 1. */ _Thread_Enable_dispatch(); 4c7c0: 4eb9 0004 779a jsr 4779a <_Thread_Enable_dispatch> /* * _init could be a weak symbol and we SHOULD test it but it isn't * in any configuration I know of and it generates a warning on every * RTEMS target configuration. --joel (12 May 2007) */ if (!doneCons) /* && (volatile void *)_init) */ { 4c7c6: 588f addql #4,%sp 4c7c8: 4a02 tstb %d2 4c7ca: 6606 bnes 4c7d2 <_Thread_Handler+0x6e> INIT_NAME (); 4c7cc: 4eb9 0005 b06c jsr 5b06c <_init> } #endif if ( executing->Start.prototype == THREAD_START_NUMERIC ) { 4c7d2: 202a 0092 movel %a2@(146),%d0 4c7d6: 6606 bnes 4c7de <_Thread_Handler+0x7a> executing->Wait.return_argument = (*(Thread_Entry_numeric) executing->Start.entry_point)( 4c7d8: 2f2a 009a movel %a2@(154),%sp@- 4c7dc: 600a bras 4c7e8 <_Thread_Handler+0x84> executing->Start.numeric_argument ); } #if defined(RTEMS_POSIX_API) else if ( executing->Start.prototype == THREAD_START_POINTER ) { 4c7de: 7201 moveq #1,%d1 4c7e0: b280 cmpl %d0,%d1 4c7e2: 6610 bnes 4c7f4 <_Thread_Handler+0x90> <== NEVER TAKEN executing->Wait.return_argument = (*(Thread_Entry_pointer) executing->Start.entry_point)( 4c7e4: 2f2a 0096 movel %a2@(150),%sp@- 4c7e8: 206a 008e moveal %a2@(142),%a0 4c7ec: 4e90 jsr %a0@ executing->Start.numeric_argument ); } #if defined(RTEMS_POSIX_API) else if ( executing->Start.prototype == THREAD_START_POINTER ) { executing->Wait.return_argument = 4c7ee: 588f addql #4,%sp 4c7f0: 2540 0028 movel %d0,%a2@(40) * was placed in return_argument. This assumed that if it returned * anything (which is not supporting in all APIs), then it would be * able to fit in a (void *). */ _User_extensions_Thread_exitted( executing ); 4c7f4: 2f0a movel %a2,%sp@- 4c7f6: 4eb9 0004 8390 jsr 48390 <_User_extensions_Thread_exitted> _Internal_error_Occurred( 4c7fc: 4878 0005 pea 5 4c800: 4878 0001 pea 1 4c804: 42a7 clrl %sp@- 4c806: 4eb9 0004 67b4 jsr 467b4 <_Internal_error_Occurred> =============================================================================== 00047848 <_Thread_Initialize>: Thread_CPU_budget_algorithms budget_algorithm, Thread_CPU_budget_algorithm_callout budget_callout, uint32_t isr_level, Objects_Name name ) { 47848: 4e56 ffe8 linkw %fp,#-24 4784c: 222e 0010 movel %fp@(16),%d1 47850: 48d7 047c moveml %d2-%d6/%a2,%sp@ 47854: 246e 000c moveal %fp@(12),%a2 47858: 242e 0014 movel %fp@(20),%d2 4785c: 2a2e 001c movel %fp@(28),%d5 47860: 282e 0024 movel %fp@(36),%d4 47864: 162e 001b moveb %fp@(27),%d3 47868: 1c2e 0023 moveb %fp@(35),%d6 /* * Zero out all the allocated memory fields */ for ( i=0 ; i <= THREAD_API_LAST ; i++ ) the_thread->API_Extensions[i] = NULL; 4786c: 42aa 00fe clrl %a2@(254) 47870: 42aa 0102 clrl %a2@(258) extensions_area = NULL; the_thread->libc_reent = NULL; 47874: 42aa 00fa clrl %a2@(250) if ( !actual_stack_size || actual_stack_size < stack_size ) return false; /* stack allocation failed */ stack = the_thread->Start.stack; #else if ( !stack_area ) { 47878: 4a81 tstl %d1 4787a: 6624 bnes 478a0 <_Thread_Initialize+0x58> <== NEVER TAKEN actual_stack_size = _Thread_Stack_Allocate( the_thread, stack_size ); 4787c: 2f02 movel %d2,%sp@- 4787e: 2f0a movel %a2,%sp@- 47880: 4eb9 0004 8040 jsr 48040 <_Thread_Stack_Allocate> if ( !actual_stack_size || actual_stack_size < stack_size ) 47886: 508f addql #8,%sp 47888: 4a80 tstl %d0 4788a: 6700 0188 beqw 47a14 <_Thread_Initialize+0x1cc> 4788e: b480 cmpl %d0,%d2 47890: 6200 0182 bhiw 47a14 <_Thread_Initialize+0x1cc> return false; /* stack allocation failed */ stack = the_thread->Start.stack; 47894: 222a 00be movel %a2@(190),%d1 the_thread->Start.core_allocated_stack = true; 47898: 7401 moveq #1,%d2 4789a: 1542 00b0 moveb %d2,%a2@(176) 4789e: 6008 bras 478a8 <_Thread_Initialize+0x60> } else { stack = stack_area; actual_stack_size = stack_size; the_thread->Start.core_allocated_stack = false; 478a0: 4200 clrb %d0 <== NOT EXECUTED 478a2: 1540 00b0 moveb %d0,%a2@(176) <== NOT EXECUTED 478a6: 2002 movel %d2,%d0 <== NOT EXECUTED Stack_Control *the_stack, void *starting_address, size_t size ) { the_stack->area = starting_address; 478a8: 2541 00b6 movel %d1,%a2@(182) the_stack->size = size; 478ac: 2540 00b2 movel %d0,%a2@(178) /* * Allocate the floating point area for this thread */ #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) if ( is_fp ) { 478b0: 4a03 tstb %d3 478b2: 6714 beqs 478c8 <_Thread_Initialize+0x80> fp_area = _Workspace_Allocate( CONTEXT_FP_SIZE ); 478b4: 4878 001c pea 1c 478b8: 4eb9 0004 8794 jsr 48794 <_Workspace_Allocate> if ( !fp_area ) 478be: 588f addql #4,%sp /* * Allocate the floating point area for this thread */ #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) if ( is_fp ) { fp_area = _Workspace_Allocate( CONTEXT_FP_SIZE ); 478c0: 2600 movel %d0,%d3 if ( !fp_area ) 478c2: 6606 bnes 478ca <_Thread_Initialize+0x82> <== ALWAYS TAKEN 478c4: 6000 00e6 braw 479ac <_Thread_Initialize+0x164> <== NOT EXECUTED extensions_area = NULL; the_thread->libc_reent = NULL; #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) fp_area = NULL; 478c8: 4283 clrl %d3 #endif /* * Allocate the extensions area for this thread */ if ( _Thread_Maximum_extensions ) { 478ca: 2039 0005 e52a movel 5e52a <_Thread_Maximum_extensions>,%d0 fp_area = _Workspace_Allocate( CONTEXT_FP_SIZE ); if ( !fp_area ) goto failed; fp_area = _Context_Fp_start( fp_area, 0 ); } the_thread->fp_context = fp_area; 478d0: 2543 00f6 movel %d3,%a2@(246) the_thread->Start.fp_context = fp_area; 478d4: 2543 00ba movel %d3,%a2@(186) Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 478d8: 42aa 0050 clrl %a2@(80) the_watchdog->routine = routine; 478dc: 42aa 0064 clrl %a2@(100) the_watchdog->id = id; 478e0: 42aa 0068 clrl %a2@(104) the_watchdog->user_data = user_data; 478e4: 42aa 006c clrl %a2@(108) #endif /* * Allocate the extensions area for this thread */ if ( _Thread_Maximum_extensions ) { 478e8: 4a80 tstl %d0 478ea: 6718 beqs 47904 <_Thread_Initialize+0xbc> extensions_area = _Workspace_Allocate( 478ec: e588 lsll #2,%d0 478ee: 2040 moveal %d0,%a0 478f0: 4868 0004 pea %a0@(4) 478f4: 4eb9 0004 8794 jsr 48794 <_Workspace_Allocate> (_Thread_Maximum_extensions + 1) * sizeof( void * ) ); if ( !extensions_area ) 478fa: 588f addql #4,%sp /* * Allocate the extensions area for this thread */ if ( _Thread_Maximum_extensions ) { extensions_area = _Workspace_Allocate( 478fc: 2400 movel %d0,%d2 (_Thread_Maximum_extensions + 1) * sizeof( void * ) ); if ( !extensions_area ) 478fe: 6606 bnes 47906 <_Thread_Initialize+0xbe> <== ALWAYS TAKEN 47900: 6000 00ac braw 479ae <_Thread_Initialize+0x166> <== NOT EXECUTED * Zero out all the allocated memory fields */ for ( i=0 ; i <= THREAD_API_LAST ; i++ ) the_thread->API_Extensions[i] = NULL; extensions_area = NULL; 47904: 4282 clrl %d2 (_Thread_Maximum_extensions + 1) * sizeof( void * ) ); if ( !extensions_area ) goto failed; } the_thread->extensions = (void **) extensions_area; 47906: 2542 0106 movel %d2,%a2@(262) * if they are linked to the thread. An extension user may * create the extension long after tasks have been created * so they cannot rely on the thread create user extension * call. */ if ( the_thread->extensions ) { 4790a: 6714 beqs 47920 <_Thread_Initialize+0xd8> for ( i = 0; i <= _Thread_Maximum_extensions ; i++ ) 4790c: 2239 0005 e52a movel 5e52a <_Thread_Maximum_extensions>,%d1 47912: 2042 moveal %d2,%a0 47914: 4280 clrl %d0 47916: 6004 bras 4791c <_Thread_Initialize+0xd4> the_thread->extensions[i] = NULL; 47918: 4298 clrl %a0@+ * create the extension long after tasks have been created * so they cannot rely on the thread create user extension * call. */ if ( the_thread->extensions ) { for ( i = 0; i <= _Thread_Maximum_extensions ; i++ ) 4791a: 5280 addql #1,%d0 4791c: b280 cmpl %d0,%d1 4791e: 64f8 bccs 47918 <_Thread_Initialize+0xd0> /* * General initialization */ the_thread->Start.is_preemptible = is_preemptible; the_thread->Start.budget_algorithm = budget_algorithm; 47920: 2544 00a0 movel %d4,%a2@(160) the_thread->Start.budget_callout = budget_callout; switch ( budget_algorithm ) { 47924: 7002 moveq #2,%d0 /* * General initialization */ the_thread->Start.is_preemptible = is_preemptible; 47926: 1546 009e moveb %d6,%a2@(158) the_thread->Start.budget_algorithm = budget_algorithm; the_thread->Start.budget_callout = budget_callout; 4792a: 256e 0028 00a4 movel %fp@(40),%a2@(164) switch ( budget_algorithm ) { 47930: b084 cmpl %d4,%d0 47932: 660a bnes 4793e <_Thread_Initialize+0xf6> <== ALWAYS TAKEN case THREAD_CPU_BUDGET_ALGORITHM_NONE: case THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE: break; #if defined(RTEMS_SCORE_THREAD_ENABLE_EXHAUST_TIMESLICE) case THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE: the_thread->cpu_time_budget = _Thread_Ticks_per_timeslice; 47934: 41f9 0005 e430 lea 5e430 <_Thread_Ticks_per_timeslice>,%a0 <== NOT EXECUTED 4793a: 2550 0076 movel %a0@,%a2@(118) <== NOT EXECUTED #endif } the_thread->Start.isr_level = isr_level; the_thread->current_state = STATES_DORMANT; 4793e: 7001 moveq #1,%d0 case THREAD_CPU_BUDGET_ALGORITHM_CALLOUT: break; #endif } the_thread->Start.isr_level = isr_level; 47940: 256e 002c 00a8 movel %fp@(44),%a2@(168) RTEMS_INLINE_ROUTINE void* _Scheduler_Thread_scheduler_allocate( Scheduler_Control *the_scheduler, Thread_Control *the_thread ) { return 47946: 2079 0005 e512 moveal 5e512 <_Scheduler+0x14>,%a0 the_thread->current_state = STATES_DORMANT; 4794c: 2540 0010 movel %d0,%a2@(16) the_thread->Wait.queue = NULL; 47950: 42aa 0044 clrl %a2@(68) the_thread->resource_count = 0; 47954: 42aa 001c clrl %a2@(28) the_thread->real_priority = priority; 47958: 2545 0018 movel %d5,%a2@(24) the_thread->Start.initial_priority = priority; 4795c: 2545 00ac movel %d5,%a2@(172) 47960: 2f0a movel %a2,%sp@- 47962: 4879 0005 e4fe pea 5e4fe <_Scheduler> 47968: 4e90 jsr %a0@ sched =_Scheduler_Thread_scheduler_allocate( &_Scheduler, the_thread ); if ( !sched ) 4796a: 508f addql #8,%sp 4796c: 2800 movel %d0,%d4 4796e: 6740 beqs 479b0 <_Thread_Initialize+0x168> <== NEVER TAKEN goto failed; _Thread_Set_priority( the_thread, priority ); 47970: 2f05 movel %d5,%sp@- 47972: 2f0a movel %a2,%sp@- 47974: 4eb9 0004 7f48 jsr 47f48 <_Thread_Set_priority> _Thread_Stack_Free( the_thread ); return false; } 4797a: 206e 0008 moveal %fp@(8),%a0 Objects_Information *information, Objects_Control *the_object, Objects_Name name ) { _Objects_Set_local_object( 4797e: 4280 clrl %d0 47980: 2068 0018 moveal %a0@(24),%a0 47984: 302a 000a movew %a2@(10),%d0 /* * Initialize the CPU usage statistics */ #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ _Timestamp_Set_to_zero( &the_thread->cpu_time_used ); 47988: 42aa 0082 clrl %a2@(130) 4798c: 42aa 0086 clrl %a2@(134) #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 47990: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) information, _Objects_Get_index( the_object->id ), the_object ); the_object->name = name; 47994: 256e 0030 000c movel %fp@(48),%a2@(12) * enabled when we get here. We want to be able to run the * user extensions with dispatching enabled. The Allocator * Mutex provides sufficient protection to let the user extensions * run safely. */ extension_status = _User_extensions_Thread_create( the_thread ); 4799a: 2f0a movel %a2,%sp@- 4799c: 4eb9 0004 8414 jsr 48414 <_User_extensions_Thread_create> if ( extension_status ) 479a2: 4fef 000c lea %sp@(12),%sp 479a6: 4a00 tstb %d0 479a8: 6706 beqs 479b0 <_Thread_Initialize+0x168> <== NEVER TAKEN 479aa: 606c bras 47a18 <_Thread_Initialize+0x1d0> * Zero out all the allocated memory fields */ for ( i=0 ; i <= THREAD_API_LAST ; i++ ) the_thread->API_Extensions[i] = NULL; extensions_area = NULL; 479ac: 4282 clrl %d2 <== NOT EXECUTED size_t actual_stack_size = 0; void *stack = NULL; #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) void *fp_area; #endif void *sched = NULL; 479ae: 4284 clrl %d4 <== NOT EXECUTED extension_status = _User_extensions_Thread_create( the_thread ); if ( extension_status ) return true; failed: if ( the_thread->libc_reent ) 479b0: 202a 00fa movel %a2@(250),%d0 <== NOT EXECUTED 479b4: 670a beqs 479c0 <_Thread_Initialize+0x178> <== NOT EXECUTED _Workspace_Free( the_thread->libc_reent ); 479b6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 479b8: 4eb9 0004 87b0 jsr 487b0 <_Workspace_Free> <== NOT EXECUTED 479be: 588f addql #4,%sp <== NOT EXECUTED for ( i=0 ; i <= THREAD_API_LAST ; i++ ) if ( the_thread->API_Extensions[i] ) 479c0: 202a 00fe movel %a2@(254),%d0 <== NOT EXECUTED 479c4: 670a beqs 479d0 <_Thread_Initialize+0x188> <== NOT EXECUTED _Workspace_Free( the_thread->API_Extensions[i] ); 479c6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 479c8: 4eb9 0004 87b0 jsr 487b0 <_Workspace_Free> <== NOT EXECUTED 479ce: 588f addql #4,%sp <== NOT EXECUTED failed: if ( the_thread->libc_reent ) _Workspace_Free( the_thread->libc_reent ); for ( i=0 ; i <= THREAD_API_LAST ; i++ ) if ( the_thread->API_Extensions[i] ) 479d0: 202a 0102 movel %a2@(258),%d0 <== NOT EXECUTED 479d4: 670a beqs 479e0 <_Thread_Initialize+0x198> <== NOT EXECUTED _Workspace_Free( the_thread->API_Extensions[i] ); 479d6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 479d8: 4eb9 0004 87b0 jsr 487b0 <_Workspace_Free> <== NOT EXECUTED 479de: 588f addql #4,%sp <== NOT EXECUTED if ( extensions_area ) 479e0: 4a82 tstl %d2 <== NOT EXECUTED 479e2: 670a beqs 479ee <_Thread_Initialize+0x1a6> <== NOT EXECUTED (void) _Workspace_Free( extensions_area ); 479e4: 2f02 movel %d2,%sp@- <== NOT EXECUTED 479e6: 4eb9 0004 87b0 jsr 487b0 <_Workspace_Free> <== NOT EXECUTED 479ec: 588f addql #4,%sp <== NOT EXECUTED #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) if ( fp_area ) 479ee: 4a83 tstl %d3 <== NOT EXECUTED 479f0: 670a beqs 479fc <_Thread_Initialize+0x1b4> <== NOT EXECUTED (void) _Workspace_Free( fp_area ); 479f2: 2f03 movel %d3,%sp@- <== NOT EXECUTED 479f4: 4eb9 0004 87b0 jsr 487b0 <_Workspace_Free> <== NOT EXECUTED 479fa: 588f addql #4,%sp <== NOT EXECUTED #endif if ( sched ) 479fc: 4a84 tstl %d4 <== NOT EXECUTED 479fe: 670a beqs 47a0a <_Thread_Initialize+0x1c2> <== NOT EXECUTED (void) _Workspace_Free( sched ); 47a00: 2f04 movel %d4,%sp@- <== NOT EXECUTED 47a02: 4eb9 0004 87b0 jsr 487b0 <_Workspace_Free> <== NOT EXECUTED 47a08: 588f addql #4,%sp <== NOT EXECUTED _Thread_Stack_Free( the_thread ); 47a0a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47a0c: 4eb9 0004 808c jsr 4808c <_Thread_Stack_Free> <== NOT EXECUTED return false; 47a12: 588f addql #4,%sp <== NOT EXECUTED stack = the_thread->Start.stack; #else if ( !stack_area ) { actual_stack_size = _Thread_Stack_Allocate( the_thread, stack_size ); if ( !actual_stack_size || actual_stack_size < stack_size ) return false; /* stack allocation failed */ 47a14: 4200 clrb %d0 47a16: 6002 bras 47a1a <_Thread_Initialize+0x1d2> * Mutex provides sufficient protection to let the user extensions * run safely. */ extension_status = _User_extensions_Thread_create( the_thread ); if ( extension_status ) return true; 47a18: 7001 moveq #1,%d0 _Thread_Stack_Free( the_thread ); return false; } 47a1a: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2 47a20: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004ba80 <_Thread_Reset>: void _Thread_Reset( Thread_Control *the_thread, void *pointer_argument, Thread_Entry_numeric_type numeric_argument ) { 4ba80: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4ba84: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4ba86: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED the_thread->resource_count = 0; the_thread->is_preemptible = the_thread->Start.is_preemptible; the_thread->budget_algorithm = the_thread->Start.budget_algorithm; 4ba8a: 256a 00a0 007a movel %a2@(160),%a2@(122) <== NOT EXECUTED the_thread->budget_callout = the_thread->Start.budget_callout; 4ba90: 256a 00a4 007e movel %a2@(164),%a2@(126) <== NOT EXECUTED the_thread->Start.pointer_argument = pointer_argument; 4ba96: 256e 000c 0096 movel %fp@(12),%a2@(150) <== NOT EXECUTED the_thread->Start.numeric_argument = numeric_argument; 4ba9c: 256e 0010 009a movel %fp@(16),%a2@(154) <== NOT EXECUTED void *pointer_argument, Thread_Entry_numeric_type numeric_argument ) { the_thread->resource_count = 0; the_thread->is_preemptible = the_thread->Start.is_preemptible; 4baa2: 156a 009e 0074 moveb %a2@(158),%a2@(116) <== NOT EXECUTED Thread_Control *the_thread, void *pointer_argument, Thread_Entry_numeric_type numeric_argument ) { the_thread->resource_count = 0; 4baa8: 42aa 001c clrl %a2@(28) <== NOT EXECUTED the_thread->budget_callout = the_thread->Start.budget_callout; the_thread->Start.pointer_argument = pointer_argument; the_thread->Start.numeric_argument = numeric_argument; if ( !_Thread_queue_Extract_with_proxy( the_thread ) ) { 4baac: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4baae: 4eb9 0004 8598 jsr 48598 <_Thread_queue_Extract_with_proxy><== NOT EXECUTED 4bab4: 588f addql #4,%sp <== NOT EXECUTED 4bab6: 4a00 tstb %d0 <== NOT EXECUTED 4bab8: 6614 bnes 4bace <_Thread_Reset+0x4e> <== NOT EXECUTED if ( _Watchdog_Is_active( &the_thread->Timer ) ) 4baba: 7002 moveq #2,%d0 <== NOT EXECUTED 4babc: b0aa 0050 cmpl %a2@(80),%d0 <== NOT EXECUTED 4bac0: 660c bnes 4bace <_Thread_Reset+0x4e> <== NOT EXECUTED (void) _Watchdog_Remove( &the_thread->Timer ); 4bac2: 486a 0048 pea %a2@(72) <== NOT EXECUTED 4bac6: 4eb9 0004 8eb8 jsr 48eb8 <_Watchdog_Remove> <== NOT EXECUTED 4bacc: 588f addql #4,%sp <== NOT EXECUTED } if ( the_thread->current_priority != the_thread->Start.initial_priority ) { 4bace: 202a 00ac movel %a2@(172),%d0 <== NOT EXECUTED 4bad2: b0aa 0014 cmpl %a2@(20),%d0 <== NOT EXECUTED 4bad6: 6718 beqs 4baf0 <_Thread_Reset+0x70> <== NOT EXECUTED the_thread->real_priority = the_thread->Start.initial_priority; 4bad8: 2540 0018 movel %d0,%a2@(24) <== NOT EXECUTED _Thread_Set_priority( the_thread, the_thread->Start.initial_priority ); 4badc: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED } } 4bae0: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED (void) _Watchdog_Remove( &the_thread->Timer ); } if ( the_thread->current_priority != the_thread->Start.initial_priority ) { the_thread->real_priority = the_thread->Start.initial_priority; _Thread_Set_priority( the_thread, the_thread->Start.initial_priority ); 4bae4: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED } } 4bae8: 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 ); 4baea: 4ef9 0004 8784 jmp 48784 <_Thread_Set_priority> <== NOT EXECUTED } } 4baf0: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4baf4: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00048700 <_Thread_Restart>: */ RTEMS_INLINE_ROUTINE bool _States_Is_dormant ( States_Control the_states ) { return (the_states & STATES_DORMANT); 48700: 7001 moveq #1,%d0 <== NOT EXECUTED bool _Thread_Restart( Thread_Control *the_thread, void *pointer_argument, Thread_Entry_numeric_type numeric_argument ) { 48702: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 48706: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48708: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4870c: c0aa 0010 andl %a2@(16),%d0 <== NOT EXECUTED if ( !_States_Is_dormant( the_thread->current_state ) ) { 48710: 6664 bnes 48776 <_Thread_Restart+0x76> <== NOT EXECUTED _Thread_Set_transient( the_thread ); 48712: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48714: 4eb9 0004 87f8 jsr 487f8 <_Thread_Set_transient> <== NOT EXECUTED _Thread_Reset( the_thread, pointer_argument, numeric_argument ); 4871a: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4871e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 48722: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48724: 4eb9 0004 ba80 jsr 4ba80 <_Thread_Reset> <== NOT EXECUTED _Thread_Load_environment( the_thread ); 4872a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4872c: 4eb9 0004 b7b0 jsr 4b7b0 <_Thread_Load_environment> <== NOT EXECUTED _Thread_Ready( the_thread ); 48732: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48734: 4eb9 0004 ba48 jsr 4ba48 <_Thread_Ready> <== NOT EXECUTED _User_extensions_Thread_restart( the_thread ); 4873a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4873c: 4eb9 0004 8cd8 jsr 48cd8 <_User_extensions_Thread_restart> <== NOT EXECUTED if ( _Thread_Is_executing ( the_thread ) ) 48742: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 48746: b5f9 0005 f42a cmpal 5f42a <_Per_CPU_Information+0xc>,%a2 <== NOT EXECUTED 4874c: 662c bnes 4877a <_Thread_Restart+0x7a> <== 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 ) 4874e: 4aaa 00f6 tstl %a2@(246) <== NOT EXECUTED 48752: 670c beqs 48760 <_Thread_Restart+0x60> <== NOT EXECUTED _Context_Restore_fp( &_Thread_Executing->fp_context ); 48754: 486a 00f6 pea %a2@(246) <== NOT EXECUTED 48758: 4eb9 0004 91e0 jsr 491e0 <_CPU_Context_restore_fp> <== NOT EXECUTED 4875e: 588f addql #4,%sp <== NOT EXECUTED #endif _CPU_Context_Restart_self( &_Thread_Executing->Registers ); 48760: 2079 0005 f42a moveal 5f42a <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 48766: 41e8 00c2 lea %a0@(194),%a0 <== NOT EXECUTED 4876a: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4876c: 4eb9 0004 908e jsr 4908e <_CPU_Context_Restart_self> <== NOT EXECUTED 48772: 588f addql #4,%sp <== NOT EXECUTED 48774: 6004 bras 4877a <_Thread_Restart+0x7a> <== NOT EXECUTED _Thread_Restart_self(); return true; } return false; 48776: 4200 clrb %d0 <== NOT EXECUTED 48778: 6002 bras 4877c <_Thread_Restart+0x7c> <== NOT EXECUTED _User_extensions_Thread_restart( the_thread ); if ( _Thread_Is_executing ( the_thread ) ) _Thread_Restart_self(); return true; 4877a: 7001 moveq #1,%d0 <== NOT EXECUTED } return false; } 4877c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 48780: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004ad58 <_Thread_Resume>: { ISR_Level level; States_Control current_state; _ISR_Disable( level ); 4ad58: 203c 0000 0700 movel #1792,%d0 void _Thread_Resume( Thread_Control *the_thread, bool force ) { 4ad5e: 4e56 0000 linkw %fp,#0 4ad62: 206e 0008 moveal %fp@(8),%a0 4ad66: 2f02 movel %d2,%sp@- ISR_Level level; States_Control current_state; _ISR_Disable( level ); 4ad68: 40c2 movew %sr,%d2 4ad6a: 8082 orl %d2,%d0 4ad6c: 46c0 movew %d0,%sr current_state = the_thread->current_state; 4ad6e: 2028 0010 movel %a0@(16),%d0 if ( current_state & STATES_SUSPENDED ) { 4ad72: 0800 0001 btst #1,%d0 4ad76: 671c beqs 4ad94 <_Thread_Resume+0x3c> <== NEVER TAKEN RTEMS_INLINE_ROUTINE States_Control _States_Clear ( States_Control states_to_clear, States_Control current_state ) { return (current_state & ~states_to_clear); 4ad78: 72fd moveq #-3,%d1 4ad7a: c081 andl %d1,%d0 current_state = the_thread->current_state = _States_Clear(STATES_SUSPENDED, current_state); 4ad7c: 2140 0010 movel %d0,%a0@(16) if ( _States_Is_ready( current_state ) ) { 4ad80: 6612 bnes 4ad94 <_Thread_Resume+0x3c> <== NEVER TAKEN RTEMS_INLINE_ROUTINE void _Scheduler_Unblock( Scheduler_Control *the_scheduler, Thread_Control *the_thread ) { the_scheduler->Operations.unblock( the_scheduler, the_thread ); 4ad82: 2f08 movel %a0,%sp@- 4ad84: 4879 0006 18d6 pea 618d6 <_Scheduler> 4ad8a: 2079 0006 18e6 moveal 618e6 <_Scheduler+0x10>,%a0 4ad90: 4e90 jsr %a0@ 4ad92: 508f addql #8,%sp _Scheduler_Unblock( &_Scheduler, the_thread ); } } _ISR_Enable( level ); 4ad94: 46c2 movew %d2,%sr } 4ad96: 242e fffc movel %fp@(-4),%d2 4ad9a: 4e5e unlk %fp ... =============================================================================== 00047f48 <_Thread_Set_priority>: void _Thread_Set_priority( Thread_Control *the_thread, Priority_Control new_priority ) { 47f48: 4e56 0000 linkw %fp,#0 RTEMS_INLINE_ROUTINE void _Scheduler_Thread_scheduler_update( Scheduler_Control *the_scheduler, Thread_Control *the_thread ) { the_scheduler->Operations.scheduler_update( the_scheduler, the_thread ); 47f4c: 203c 0005 e4fe movel #386302,%d0 47f52: 206e 0008 moveal %fp@(8),%a0 the_thread->current_priority = new_priority; 47f56: 216e 000c 0014 movel %fp@(12),%a0@(20) 47f5c: 2279 0005 e51a moveal 5e51a <_Scheduler+0x1c>,%a1 47f62: 2d48 000c movel %a0,%fp@(12) 47f66: 2d40 0008 movel %d0,%fp@(8) _Scheduler_Thread_scheduler_update(&_Scheduler, the_thread); } 47f6a: 4e5e unlk %fp 47f6c: 4ed1 jmp %a1@ ... =============================================================================== 00047f70 <_Thread_Set_state>: States_Control state ) { ISR_Level level; _ISR_Disable( level ); 47f70: 203c 0000 0700 movel #1792,%d0 void _Thread_Set_state( Thread_Control *the_thread, States_Control state ) { 47f76: 4e56 0000 linkw %fp,#0 47f7a: 206e 0008 moveal %fp@(8),%a0 47f7e: 2f02 movel %d2,%sp@- 47f80: 222e 000c movel %fp@(12),%d1 ISR_Level level; _ISR_Disable( level ); 47f84: 40c2 movew %sr,%d2 47f86: 8082 orl %d2,%d0 47f88: 46c0 movew %d0,%sr if ( !_States_Is_ready( the_thread->current_state ) ) { 47f8a: 2028 0010 movel %a0@(16),%d0 47f8e: 670a beqs 47f9a <_Thread_Set_state+0x2a> <== ALWAYS TAKEN RTEMS_INLINE_ROUTINE States_Control _States_Set ( States_Control states_to_set, States_Control current_state ) { return (current_state | states_to_set); 47f90: 8280 orl %d0,%d1 <== NOT EXECUTED 47f92: 2141 0010 movel %d1,%a0@(16) <== NOT EXECUTED the_thread->current_state = _States_Set( state, the_thread->current_state ); _ISR_Enable( level ); 47f96: 46c2 movew %d2,%sr <== NOT EXECUTED return; 47f98: 6018 bras 47fb2 <_Thread_Set_state+0x42> <== NOT EXECUTED } the_thread->current_state = state; 47f9a: 2141 0010 movel %d1,%a0@(16) RTEMS_INLINE_ROUTINE void _Scheduler_Block( Scheduler_Control *the_scheduler, Thread_Control *the_thread ) { the_scheduler->Operations.block( the_scheduler, the_thread ); 47f9e: 2f08 movel %a0,%sp@- 47fa0: 4879 0005 e4fe pea 5e4fe <_Scheduler> 47fa6: 2079 0005 e50a moveal 5e50a <_Scheduler+0xc>,%a0 47fac: 4e90 jsr %a0@ _Scheduler_Block( &_Scheduler, the_thread); _ISR_Enable( level ); 47fae: 46c2 movew %d2,%sr 47fb0: 508f addql #8,%sp } 47fb2: 242e fffc movel %fp@(-4),%d2 47fb6: 4e5e unlk %fp ... =============================================================================== 00047fbc <_Thread_Set_transient>: ) { ISR_Level level; uint32_t old_state; _ISR_Disable( level ); 47fbc: 203c 0000 0700 movel #1792,%d0 */ void _Thread_Set_transient( Thread_Control *the_thread ) { 47fc2: 4e56 0000 linkw %fp,#0 47fc6: 226e 0008 moveal %fp@(8),%a1 47fca: 2f0a movel %a2,%sp@- 47fcc: 2f02 movel %d2,%sp@- ISR_Level level; uint32_t old_state; _ISR_Disable( level ); 47fce: 40c1 movew %sr,%d1 47fd0: 8081 orl %d1,%d0 47fd2: 46c0 movew %d0,%sr old_state = the_thread->current_state; 47fd4: 2029 0010 movel %a1@(16),%d0 47fd8: 7404 moveq #4,%d2 47fda: 8480 orl %d0,%d2 47fdc: 2342 0010 movel %d2,%a1@(16) the_thread->current_state = _States_Set( STATES_TRANSIENT, old_state ); /* FIXME: need to check which scheduler to use? */ if ( _States_Is_ready( old_state ) ) { 47fe0: 4a80 tstl %d0 47fe2: 6650 bnes 48034 <_Thread_Set_transient+0x78> RTEMS_INLINE_ROUTINE void _Scheduler_priority_Ready_queue_extract( Thread_Control *the_thread ) { Chain_Control *ready = the_thread->scheduler.priority->ready_chain; 47fe4: 2069 008a moveal %a1@(138),%a0 47fe8: 2050 moveal %a0@,%a0 if ( _Chain_Has_only_one_node( ready ) ) { 47fea: 2028 0008 movel %a0@(8),%d0 47fee: b090 cmpl %a0@,%d0 47ff0: 6636 bnes 48028 <_Thread_Set_transient+0x6c> <== NEVER TAKEN RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); 47ff2: 2408 movel %a0,%d2 47ff4: 5882 addql #4,%d2 head->next = tail; head->previous = NULL; 47ff6: 42a8 0004 clrl %a0@(4) RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); 47ffa: 2082 movel %d2,%a0@ head->next = tail; head->previous = NULL; tail->previous = head; 47ffc: 2148 0008 movel %a0,%a0@(8) _Chain_Initialize_empty( ready ); _Priority_bit_map_Remove( &the_thread->scheduler.priority->Priority_map ); 48000: 2069 008a moveal %a1@(138),%a0 RTEMS_INLINE_ROUTINE void _Priority_bit_map_Remove ( Priority_bit_map_Information *the_priority_map ) { *the_priority_map->minor &= the_priority_map->block_minor; 48004: 2268 0004 moveal %a0@(4),%a1 48008: 3028 000e movew %a0@(14),%d0 4800c: 3411 movew %a1@,%d2 4800e: c082 andl %d2,%d0 48010: 3280 movew %d0,%a1@ if ( *the_priority_map->minor == 0 ) 48012: 6620 bnes 48034 <_Thread_Set_transient+0x78> _Priority_Major_bit_map &= the_priority_map->block_major; 48014: 3039 0005 e910 movew 5e910 <_Priority_Major_bit_map>,%d0 4801a: 3428 000c movew %a0@(12),%d2 4801e: c082 andl %d2,%d0 48020: 33c0 0005 e910 movew %d0,5e910 <_Priority_Major_bit_map> 48026: 600c bras 48034 <_Thread_Set_transient+0x78> ) { Chain_Node *next; Chain_Node *previous; next = the_node->next; 48028: 2451 moveal %a1@,%a2 <== NOT EXECUTED previous = the_node->previous; 4802a: 2069 0004 moveal %a1@(4),%a0 <== NOT EXECUTED next->previous = previous; 4802e: 2548 0004 movel %a0,%a2@(4) <== NOT EXECUTED previous->next = next; 48032: 208a movel %a2,%a0@ <== NOT EXECUTED _Scheduler_priority_Ready_queue_extract( the_thread); } _ISR_Enable( level ); 48034: 46c1 movew %d1,%sr } 48036: 241f movel %sp@+,%d2 48038: 245f moveal %sp@+,%a2 4803a: 4e5e unlk %fp ... =============================================================================== 0004808c <_Thread_Stack_Free>: */ void _Thread_Stack_Free( Thread_Control *the_thread ) { 4808c: 4e56 0000 linkw %fp,#0 48090: 206e 0008 moveal %fp@(8),%a0 #if defined(RTEMS_SCORE_THREAD_ENABLE_USER_PROVIDED_STACK_VIA_API) /* * If the API provided the stack space, then don't free it. */ if ( !the_thread->Start.core_allocated_stack ) 48094: 4a28 00b0 tstb %a0@(176) 48098: 6722 beqs 480bc <_Thread_Stack_Free+0x30> <== NEVER TAKEN * Call ONLY the CPU table stack free hook, or the * the RTEMS workspace free. This is so the free * routine properly matches the allocation of the stack. */ if ( Configuration.stack_free_hook ) 4809a: 2279 0005 cbbc moveal 5cbbc ,%a1 480a0: 4a89 tstl %a1 480a2: 670a beqs 480ae <_Thread_Stack_Free+0x22> <== ALWAYS TAKEN (*Configuration.stack_free_hook)( the_thread->Start.Initial_stack.area ); 480a4: 2d68 00b6 0008 movel %a0@(182),%fp@(8) <== NOT EXECUTED else _Workspace_Free( the_thread->Start.Initial_stack.area ); } 480aa: 4e5e unlk %fp <== NOT EXECUTED * the RTEMS workspace free. This is so the free * routine properly matches the allocation of the stack. */ if ( Configuration.stack_free_hook ) (*Configuration.stack_free_hook)( the_thread->Start.Initial_stack.area ); 480ac: 4ed1 jmp %a1@ <== NOT EXECUTED else _Workspace_Free( the_thread->Start.Initial_stack.area ); 480ae: 2d68 00b6 0008 movel %a0@(182),%fp@(8) } 480b4: 4e5e unlk %fp */ if ( Configuration.stack_free_hook ) (*Configuration.stack_free_hook)( the_thread->Start.Initial_stack.area ); else _Workspace_Free( the_thread->Start.Initial_stack.area ); 480b6: 4ef9 0004 87b0 jmp 487b0 <_Workspace_Free> } 480bc: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00048110 <_Thread_Start>: */ RTEMS_INLINE_ROUTINE bool _States_Is_dormant ( States_Control the_states ) { return (the_states & STATES_DORMANT); 48110: 7001 moveq #1,%d0 Thread_Start_types the_prototype, void *entry_point, void *pointer_argument, Thread_Entry_numeric_type numeric_argument ) { 48112: 4e56 0000 linkw %fp,#0 48116: 2f0a movel %a2,%sp@- 48118: 246e 0008 moveal %fp@(8),%a2 4811c: c0aa 0010 andl %a2@(16),%d0 if ( _States_Is_dormant( the_thread->current_state ) ) { 48120: 6738 beqs 4815a <_Thread_Start+0x4a> <== NEVER TAKEN the_thread->Start.entry_point = (Thread_Entry) entry_point; 48122: 256e 0010 008e movel %fp@(16),%a2@(142) the_thread->Start.prototype = the_prototype; 48128: 256e 000c 0092 movel %fp@(12),%a2@(146) the_thread->Start.pointer_argument = pointer_argument; 4812e: 256e 0014 0096 movel %fp@(20),%a2@(150) the_thread->Start.numeric_argument = numeric_argument; 48134: 256e 0018 009a movel %fp@(24),%a2@(154) _Thread_Load_environment( the_thread ); 4813a: 2f0a movel %a2,%sp@- 4813c: 4eb9 0004 af34 jsr 4af34 <_Thread_Load_environment> _Thread_Ready( the_thread ); 48142: 2f0a movel %a2,%sp@- 48144: 4eb9 0004 b1cc jsr 4b1cc <_Thread_Ready> _User_extensions_Thread_start( the_thread ); 4814a: 2f0a movel %a2,%sp@- 4814c: 4eb9 0004 849c jsr 4849c <_User_extensions_Thread_start> return true; 48152: 4fef 000c lea %sp@(12),%sp 48156: 7001 moveq #1,%d0 48158: 6002 bras 4815c <_Thread_Start+0x4c> } return false; 4815a: 4200 clrb %d0 <== NOT EXECUTED } 4815c: 246e fffc moveal %fp@(-4),%a2 48160: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00048164 <_Thread_Suspend>: Thread_Control *the_thread ) { ISR_Level level; _ISR_Disable( level ); 48164: 203c 0000 0700 movel #1792,%d0 */ void _Thread_Suspend( Thread_Control *the_thread ) { 4816a: 4e56 0000 linkw %fp,#0 4816e: 206e 0008 moveal %fp@(8),%a0 48172: 2f02 movel %d2,%sp@- ISR_Level level; _ISR_Disable( level ); 48174: 40c2 movew %sr,%d2 48176: 8082 orl %d2,%d0 48178: 46c0 movew %d0,%sr if ( !_States_Is_ready( the_thread->current_state ) ) { 4817a: 2028 0010 movel %a0@(16),%d0 4817e: 670c beqs 4818c <_Thread_Suspend+0x28> <== ALWAYS TAKEN RTEMS_INLINE_ROUTINE States_Control _States_Set ( States_Control states_to_set, States_Control current_state ) { return (current_state | states_to_set); 48180: 7202 moveq #2,%d1 <== NOT EXECUTED 48182: 8280 orl %d0,%d1 <== NOT EXECUTED 48184: 2141 0010 movel %d1,%a0@(16) <== NOT EXECUTED the_thread->current_state = _States_Set( STATES_SUSPENDED, the_thread->current_state ); _ISR_Enable( level ); 48188: 46c2 movew %d2,%sr <== NOT EXECUTED return; 4818a: 601a bras 481a6 <_Thread_Suspend+0x42> <== NOT EXECUTED } the_thread->current_state = STATES_SUSPENDED; 4818c: 7002 moveq #2,%d0 4818e: 2140 0010 movel %d0,%a0@(16) 48192: 2f08 movel %a0,%sp@- 48194: 4879 0005 e4fe pea 5e4fe <_Scheduler> 4819a: 2079 0005 e50a moveal 5e50a <_Scheduler+0xc>,%a0 481a0: 4e90 jsr %a0@ _Scheduler_Block(&_Scheduler, the_thread); _ISR_Enable( level ); 481a2: 46c2 movew %d2,%sr 481a4: 508f addql #8,%sp } 481a6: 242e fffc movel %fp@(-4),%d2 481aa: 4e5e unlk %fp ... =============================================================================== 000481b0 <_Thread_Tickle_timeslice>: * * Output parameters: NONE */ void _Thread_Tickle_timeslice( void ) { 481b0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 481b4: 2f0a movel %a2,%sp@- <== NOT EXECUTED Thread_Control *executing; executing = _Thread_Executing; 481b6: 2479 0005 e902 moveal 5e902 <_Per_CPU_Information+0xc>,%a2 <== NOT EXECUTED /* * If the thread is not preemptible or is not ready, then * just return. */ if ( !executing->is_preemptible ) 481bc: 4a2a 0074 tstb %a2@(116) <== NOT EXECUTED 481c0: 675e beqs 48220 <_Thread_Tickle_timeslice+0x70> <== NOT EXECUTED return; if ( !_States_Is_ready( executing->current_state ) ) 481c2: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED 481c6: 6658 bnes 48220 <_Thread_Tickle_timeslice+0x70> <== NOT EXECUTED /* * The cpu budget algorithm determines what happens next. */ switch ( executing->budget_algorithm ) { 481c8: 202a 007a movel %a2@(122),%d0 <== NOT EXECUTED 481cc: 7201 moveq #1,%d1 <== NOT EXECUTED 481ce: b280 cmpl %d0,%d1 <== NOT EXECUTED 481d0: 624e bhis 48220 <_Thread_Tickle_timeslice+0x70> <== NOT EXECUTED 481d2: 123c 0002 moveb #2,%d1 <== NOT EXECUTED 481d6: b280 cmpl %d0,%d1 <== NOT EXECUTED 481d8: 640a bccs 481e4 <_Thread_Tickle_timeslice+0x34> <== NOT EXECUTED 481da: 123c 0003 moveb #3,%d1 <== NOT EXECUTED 481de: b280 cmpl %d0,%d1 <== NOT EXECUTED 481e0: 663e bnes 48220 <_Thread_Tickle_timeslice+0x70> <== NOT EXECUTED 481e2: 6026 bras 4820a <_Thread_Tickle_timeslice+0x5a> <== NOT EXECUTED case THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE: #if defined(RTEMS_SCORE_THREAD_ENABLE_EXHAUST_TIMESLICE) case THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE: #endif if ( (int)(--executing->cpu_time_budget) <= 0 ) { 481e4: 202a 0076 movel %a2@(118),%d0 <== NOT EXECUTED 481e8: 5380 subql #1,%d0 <== NOT EXECUTED 481ea: 2540 0076 movel %d0,%a2@(118) <== NOT EXECUTED 481ee: 6e30 bgts 48220 <_Thread_Tickle_timeslice+0x70> <== NOT EXECUTED * always operates on the scheduler that 'owns' the currently executing * thread. */ RTEMS_INLINE_ROUTINE void _Scheduler_Yield( void ) { _Scheduler.Operations.yield( &_Scheduler ); 481f0: 4879 0005 e4fe pea 5e4fe <_Scheduler> <== NOT EXECUTED 481f6: 2079 0005 e506 moveal 5e506 <_Scheduler+0x8>,%a0 <== NOT EXECUTED 481fc: 4e90 jsr %a0@ <== NOT EXECUTED * executing thread's timeslice is reset. Otherwise, the * currently executing thread is placed at the rear of the * FIFO for this priority and a new heir is selected. */ _Scheduler_Yield( ); executing->cpu_time_budget = _Thread_Ticks_per_timeslice; 481fe: 41f9 0005 e430 lea 5e430 <_Thread_Ticks_per_timeslice>,%a0 <== NOT EXECUTED 48204: 2550 0076 movel %a0@,%a2@(118) <== NOT EXECUTED 48208: 6014 bras 4821e <_Thread_Tickle_timeslice+0x6e> <== NOT EXECUTED } break; #if defined(RTEMS_SCORE_THREAD_ENABLE_SCHEDULER_CALLOUT) case THREAD_CPU_BUDGET_ALGORITHM_CALLOUT: if ( --executing->cpu_time_budget == 0 ) 4820a: 202a 0076 movel %a2@(118),%d0 <== NOT EXECUTED 4820e: 5380 subql #1,%d0 <== NOT EXECUTED 48210: 2540 0076 movel %d0,%a2@(118) <== NOT EXECUTED 48214: 660a bnes 48220 <_Thread_Tickle_timeslice+0x70> <== NOT EXECUTED (*executing->budget_callout)( executing ); 48216: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48218: 206a 007e moveal %a2@(126),%a0 <== NOT EXECUTED 4821c: 4e90 jsr %a0@ <== NOT EXECUTED 4821e: 588f addql #4,%sp <== NOT EXECUTED break; #endif } } 48220: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 48224: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000472b0 <_Thread_blocking_operation_Cancel>: /* * If the sync state is timed out, this is very likely not needed. * But better safe than sorry when it comes to critical sections. */ if ( _Watchdog_Is_active( &the_thread->Timer ) ) { 472b0: 7202 moveq #2,%d1 <== NOT EXECUTED Thread_blocking_operation_States sync_state __attribute__((unused)), #endif Thread_Control *the_thread, ISR_Level level ) { 472b2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 472b6: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED 472ba: 2f0a movel %a2,%sp@- <== NOT EXECUTED 472bc: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED #endif /* * The thread is not waiting on anything after this completes. */ the_thread->Wait.queue = NULL; 472c0: 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 ) ) { 472c4: b2aa 0050 cmpl %a2@(80),%d1 <== NOT EXECUTED 472c8: 6618 bnes 472e2 <_Thread_blocking_operation_Cancel+0x32><== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate( Watchdog_Control *the_watchdog ) { the_watchdog->state = WATCHDOG_REMOVE_IT; 472ca: 123c 0003 moveb #3,%d1 <== NOT EXECUTED 472ce: 2541 0050 movel %d1,%a2@(80) <== NOT EXECUTED _Watchdog_Deactivate( &the_thread->Timer ); _ISR_Enable( level ); 472d2: 46c0 movew %d0,%sr <== NOT EXECUTED (void) _Watchdog_Remove( &the_thread->Timer ); 472d4: 486a 0048 pea %a2@(72) <== NOT EXECUTED 472d8: 4eb9 0004 863c jsr 4863c <_Watchdog_Remove> <== NOT EXECUTED 472de: 588f addql #4,%sp <== NOT EXECUTED 472e0: 6002 bras 472e4 <_Thread_blocking_operation_Cancel+0x34><== NOT EXECUTED } else _ISR_Enable( level ); 472e2: 46c0 movew %d0,%sr <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Thread_Unblock ( Thread_Control *the_thread ) { _Thread_Clear_state( the_thread, STATES_BLOCKED ); 472e4: 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 } 472e8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 472ec: 203c 1003 fff8 movel #268697592,%d0 <== NOT EXECUTED 472f2: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED 472f6: 4e5e unlk %fp <== NOT EXECUTED 472f8: 4ef9 0004 743c jmp 4743c <_Thread_Clear_state> <== NOT EXECUTED ... =============================================================================== 00047abc <_Thread_queue_Dequeue>: Thread_blocking_operation_States sync_state; if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) dequeue_p = _Thread_queue_Dequeue_priority; else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */ dequeue_p = _Thread_queue_Dequeue_fifo; 47abc: 41f9 0004 afb0 lea 4afb0 <_Thread_queue_Dequeue_fifo>,%a0 Thread_Control *(*dequeue_p)( Thread_queue_Control * ); Thread_Control *the_thread; ISR_Level level; Thread_blocking_operation_States sync_state; if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) 47ac2: 7001 moveq #1,%d0 */ Thread_Control *_Thread_queue_Dequeue( Thread_queue_Control *the_thread_queue ) { 47ac4: 4e56 fff4 linkw %fp,#-12 47ac8: 48d7 040c moveml %d2-%d3/%a2,%sp@ 47acc: 246e 0008 moveal %fp@(8),%a2 Thread_Control *(*dequeue_p)( Thread_queue_Control * ); Thread_Control *the_thread; ISR_Level level; Thread_blocking_operation_States sync_state; if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) 47ad0: b0aa 0034 cmpl %a2@(52),%d0 47ad4: 6606 bnes 47adc <_Thread_queue_Dequeue+0x20> dequeue_p = _Thread_queue_Dequeue_priority; 47ad6: 41f9 0004 7b18 lea 47b18 <_Thread_queue_Dequeue_priority>,%a0 else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */ dequeue_p = _Thread_queue_Dequeue_fifo; the_thread = (*dequeue_p)( the_thread_queue ); 47adc: 2f0a movel %a2,%sp@- 47ade: 4e90 jsr %a0@ _ISR_Disable( level ); 47ae0: 223c 0000 0700 movel #1792,%d1 47ae6: 40c2 movew %sr,%d2 47ae8: 8282 orl %d2,%d1 47aea: 46c1 movew %d1,%sr if ( !the_thread ) { 47aec: 588f addql #4,%sp 47aee: 4a80 tstl %d0 47af0: 661a bnes 47b0c <_Thread_queue_Dequeue+0x50> sync_state = the_thread_queue->sync_state; if ( (sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) || 47af2: 222a 0030 movel %a2@(48),%d1 47af6: 7601 moveq #1,%d3 47af8: 5381 subql #1,%d1 47afa: b681 cmpl %d1,%d3 47afc: 650e bcss 47b0c <_Thread_queue_Dequeue+0x50> <== ALWAYS TAKEN (sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) ) { the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SATISFIED; 47afe: 103c 0003 moveb #3,%d0 <== NOT EXECUTED 47b02: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED the_thread = _Thread_Executing; 47b06: 2039 0005 e902 movel 5e902 <_Per_CPU_Information+0xc>,%d0 <== NOT EXECUTED } } _ISR_Enable( level ); 47b0c: 46c2 movew %d2,%sr return the_thread; } 47b0e: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 47b14: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004afb0 <_Thread_queue_Dequeue_fifo>: ) { ISR_Level level; Thread_Control *the_thread; _ISR_Disable( level ); 4afb0: 223c 0000 0700 movel #1792,%d1 */ Thread_Control *_Thread_queue_Dequeue_fifo( Thread_queue_Control *the_thread_queue ) { 4afb6: 4e56 fff4 linkw %fp,#-12 4afba: 206e 0008 moveal %fp@(8),%a0 4afbe: 48d7 1c00 moveml %a2-%a4,%sp@ ISR_Level level; Thread_Control *the_thread; _ISR_Disable( level ); 4afc2: 40c0 movew %sr,%d0 4afc4: 8280 orl %d0,%d1 4afc6: 46c1 movew %d1,%sr return the_thread; } _ISR_Enable( level ); return NULL; } 4afc8: 2248 moveal %a0,%a1 4afca: 2459 moveal %a1@+,%a2 { ISR_Level level; Thread_Control *the_thread; _ISR_Disable( level ); if ( !_Chain_Is_empty( &the_thread_queue->Queues.Fifo ) ) { 4afcc: b3ca cmpal %a2,%a1 4afce: 674e beqs 4b01e <_Thread_queue_Dequeue_fifo+0x6e><== ALWAYS TAKEN Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *old_first = head->next; Chain_Node *new_first = old_first->next; 4afd0: 2252 moveal %a2@,%a1 <== NOT EXECUTED the_thread = (Thread_Control *) 4afd2: 264a moveal %a2,%a3 <== NOT EXECUTED 4afd4: 49f9 0004 743c lea 4743c <_Thread_Clear_state>,%a4 <== NOT EXECUTED _Chain_Get_first_unprotected( &the_thread_queue->Queues.Fifo ); the_thread->Wait.queue = NULL; if ( !_Watchdog_Is_active( &the_thread->Timer ) ) { 4afda: 7202 moveq #2,%d1 <== NOT EXECUTED head->next = new_first; 4afdc: 2089 movel %a1,%a0@ <== NOT EXECUTED new_first->previous = head; 4afde: 2348 0004 movel %a0,%a1@(4) <== NOT EXECUTED if ( !_Chain_Is_empty( &the_thread_queue->Queues.Fifo ) ) { the_thread = (Thread_Control *) _Chain_Get_first_unprotected( &the_thread_queue->Queues.Fifo ); the_thread->Wait.queue = NULL; 4afe2: 42aa 0044 clrl %a2@(68) <== NOT EXECUTED if ( !_Watchdog_Is_active( &the_thread->Timer ) ) { 4afe6: b2aa 0050 cmpl %a2@(80),%d1 <== NOT EXECUTED 4afea: 6710 beqs 4affc <_Thread_queue_Dequeue_fifo+0x4c><== NOT EXECUTED _ISR_Enable( level ); 4afec: 46c0 movew %d0,%sr <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Thread_Unblock ( Thread_Control *the_thread ) { _Thread_Clear_state( the_thread, STATES_BLOCKED ); 4afee: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED 4aff4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4aff6: 4e94 jsr %a4@ <== NOT EXECUTED 4aff8: 508f addql #8,%sp <== NOT EXECUTED 4affa: 6026 bras 4b022 <_Thread_queue_Dequeue_fifo+0x72><== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate( Watchdog_Control *the_watchdog ) { the_watchdog->state = WATCHDOG_REMOVE_IT; 4affc: 7203 moveq #3,%d1 <== NOT EXECUTED 4affe: 2541 0050 movel %d1,%a2@(80) <== NOT EXECUTED _Thread_Unblock( the_thread ); } else { _Watchdog_Deactivate( &the_thread->Timer ); _ISR_Enable( level ); 4b002: 46c0 movew %d0,%sr <== NOT EXECUTED (void) _Watchdog_Remove( &the_thread->Timer ); 4b004: 486a 0048 pea %a2@(72) <== NOT EXECUTED 4b008: 4eb9 0004 863c jsr 4863c <_Watchdog_Remove> <== NOT EXECUTED 4b00e: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED 4b014: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b016: 4e94 jsr %a4@ <== NOT EXECUTED 4b018: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4b01c: 6004 bras 4b022 <_Thread_queue_Dequeue_fifo+0x72><== NOT EXECUTED #endif return the_thread; } _ISR_Enable( level ); 4b01e: 46c0 movew %d0,%sr return NULL; 4b020: 97cb subal %a3,%a3 } 4b022: 200b movel %a3,%d0 4b024: 4cee 1c00 fff4 moveml %fp@(-12),%a2-%a4 4b02a: 4e5e unlk %fp ... =============================================================================== 00047b18 <_Thread_queue_Dequeue_priority>: Chain_Node *new_second_node; Chain_Node *last_node; Chain_Node *next_node; Chain_Node *previous_node; _ISR_Disable( level ); 47b18: 203c 0000 0700 movel #1792,%d0 */ Thread_Control *_Thread_queue_Dequeue_priority( Thread_queue_Control *the_thread_queue ) { 47b1e: 4e56 ffe8 linkw %fp,#-24 47b22: 226e 0008 moveal %fp@(8),%a1 47b26: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ Chain_Node *new_second_node; Chain_Node *last_node; Chain_Node *next_node; Chain_Node *previous_node; _ISR_Disable( level ); 47b2a: 40c1 movew %sr,%d1 47b2c: 8081 orl %d1,%d0 47b2e: 46c0 movew %d0,%sr for( index=0 ; 47b30: 4280 clrl %d0 Chain_Node *new_second_node; Chain_Node *last_node; Chain_Node *next_node; Chain_Node *previous_node; _ISR_Disable( level ); 47b32: 2049 moveal %a1,%a0 RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( const Chain_Control *the_chain ) { return _Chain_Immutable_first( the_chain ) == _Chain_Immutable_tail( the_chain ); 47b34: 2600 movel %d0,%d3 47b36: 2400 movel %d0,%d2 47b38: e58b lsll #2,%d3 47b3a: e98a lsll #4,%d2 #if defined(RTEMS_MULTIPROCESSING) if ( !_Objects_Is_local_id( the_thread->Object.id ) ) _Thread_MP_Free_proxy( the_thread ); #endif return( the_thread ); } 47b3c: 2450 moveal %a0@,%a2 47b3e: 9483 subl %d3,%d2 47b40: 47f1 2804 lea %a1@(00000004,%d2:l),%a3 _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 ] ) ) { 47b44: b7ca cmpal %a2,%a3 47b46: 671e beqs 47b66 <_Thread_queue_Dequeue_priority+0x4e> 47b48: 200a movel %a2,%d0 the_thread = (Thread_Control *) _Chain_First( 47b4a: 240a movel %a2,%d2 47b4c: 0680 0000 003c addil #60,%d0 #if defined(RTEMS_MULTIPROCESSING) if ( !_Objects_Is_local_id( the_thread->Object.id ) ) _Thread_MP_Free_proxy( the_thread ); #endif return( the_thread ); } 47b52: 206a 0038 moveal %a2@(56),%a0 dequeue: the_thread->Wait.queue = NULL; new_first_node = _Chain_First( &the_thread->Wait.Block2n ); new_first_thread = (Thread_Control *) new_first_node; next_node = the_thread->Object.Node.next; 47b56: 2252 moveal %a2@,%a1 previous_node = the_thread->Object.Node.previous; 47b58: 266a 0004 moveal %a2@(4),%a3 */ _ISR_Enable( level ); return NULL; dequeue: the_thread->Wait.queue = NULL; 47b5c: 42aa 0044 clrl %a2@(68) new_first_node = _Chain_First( &the_thread->Wait.Block2n ); new_first_thread = (Thread_Control *) new_first_node; next_node = the_thread->Object.Node.next; previous_node = the_thread->Object.Node.previous; if ( !_Chain_Is_empty( &the_thread->Wait.Block2n ) ) { 47b60: b088 cmpl %a0,%d0 47b62: 6614 bnes 47b78 <_Thread_queue_Dequeue_priority+0x60><== NEVER TAKEN 47b64: 6046 bras 47bac <_Thread_queue_Dequeue_priority+0x94> Chain_Node *previous_node; _ISR_Disable( level ); for( index=0 ; index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ; index++ ) { 47b66: 5280 addql #1,%d0 47b68: 41e8 000c lea %a0@(12),%a0 Chain_Node *last_node; Chain_Node *next_node; Chain_Node *previous_node; _ISR_Disable( level ); for( index=0 ; 47b6c: 7404 moveq #4,%d2 47b6e: b480 cmpl %d0,%d2 47b70: 66c2 bnes 47b34 <_Thread_queue_Dequeue_priority+0x1c> } /* * We did not find a thread to unblock. */ _ISR_Enable( level ); 47b72: 46c1 movew %d1,%sr return NULL; 47b74: 4202 clrb %d2 47b76: 6078 bras 47bf0 <_Thread_queue_Dequeue_priority+0xd8> #if defined(RTEMS_MULTIPROCESSING) if ( !_Objects_Is_local_id( the_thread->Object.id ) ) _Thread_MP_Free_proxy( the_thread ); #endif return( the_thread ); } 47b78: 286a 0040 moveal %a2@(64),%a4 <== NOT EXECUTED next_node = the_thread->Object.Node.next; previous_node = the_thread->Object.Node.previous; if ( !_Chain_Is_empty( &the_thread->Wait.Block2n ) ) { last_node = _Chain_Last( &the_thread->Wait.Block2n ); new_second_node = new_first_node->next; 47b7c: 2a50 moveal %a0@,%a5 <== NOT EXECUTED previous_node->next = new_first_node; next_node->previous = new_first_node; 47b7e: 2348 0004 movel %a0,%a1@(4) <== NOT EXECUTED if ( !_Chain_Is_empty( &the_thread->Wait.Block2n ) ) { last_node = _Chain_Last( &the_thread->Wait.Block2n ); new_second_node = new_first_node->next; previous_node->next = new_first_node; 47b82: 2688 movel %a0,%a3@ <== NOT EXECUTED next_node->previous = new_first_node; new_first_node->next = next_node; new_first_node->previous = previous_node; 47b84: 214b 0004 movel %a3,%a0@(4) <== NOT EXECUTED last_node = _Chain_Last( &the_thread->Wait.Block2n ); new_second_node = new_first_node->next; previous_node->next = new_first_node; next_node->previous = new_first_node; new_first_node->next = next_node; 47b88: 2089 movel %a1,%a0@ <== NOT EXECUTED new_first_node->previous = previous_node; if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) { 47b8a: 226a 0040 moveal %a2@(64),%a1 <== NOT EXECUTED 47b8e: b3ea 0038 cmpal %a2@(56),%a1 <== NOT EXECUTED 47b92: 671e beqs 47bb2 <_Thread_queue_Dequeue_priority+0x9a><== NOT EXECUTED /* > two threads on 2-n */ head = _Chain_Head( &new_first_thread->Wait.Block2n ); 47b94: 43e8 0038 lea %a0@(56),%a1 <== NOT EXECUTED 47b98: 2b49 0004 movel %a1,%a5@(4) <== NOT EXECUTED tail = _Chain_Tail( &new_first_thread->Wait.Block2n ); new_second_node->previous = head; head->next = new_second_node; 47b9c: 214d 0038 movel %a5,%a0@(56) <== NOT EXECUTED tail->previous = last_node; 47ba0: 214c 0040 movel %a4,%a0@(64) <== NOT EXECUTED new_first_node->previous = previous_node; if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) { /* > two threads on 2-n */ head = _Chain_Head( &new_first_thread->Wait.Block2n ); tail = _Chain_Tail( &new_first_thread->Wait.Block2n ); 47ba4: 41e8 003c lea %a0@(60),%a0 <== NOT EXECUTED 47ba8: 2888 movel %a0,%a4@ <== NOT EXECUTED 47baa: 6006 bras 47bb2 <_Thread_queue_Dequeue_priority+0x9a><== NOT EXECUTED head->next = new_second_node; tail->previous = last_node; last_node->next = tail; } } else { previous_node->next = next_node; 47bac: 2689 movel %a1,%a3@ next_node->previous = previous_node; 47bae: 234b 0004 movel %a3,%a1@(4) 47bb2: 47f9 0004 743c lea 4743c <_Thread_Clear_state>,%a3 } if ( !_Watchdog_Is_active( &the_thread->Timer ) ) { 47bb8: 7002 moveq #2,%d0 47bba: b0aa 0050 cmpl %a2@(80),%d0 47bbe: 6710 beqs 47bd0 <_Thread_queue_Dequeue_priority+0xb8><== NEVER TAKEN _ISR_Enable( level ); 47bc0: 46c1 movew %d1,%sr RTEMS_INLINE_ROUTINE void _Thread_Unblock ( Thread_Control *the_thread ) { _Thread_Clear_state( the_thread, STATES_BLOCKED ); 47bc2: 2f3c 1003 fff8 movel #268697592,%sp@- 47bc8: 2f0a movel %a2,%sp@- 47bca: 4e93 jsr %a3@ 47bcc: 508f addql #8,%sp 47bce: 6020 bras 47bf0 <_Thread_queue_Dequeue_priority+0xd8> RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate( Watchdog_Control *the_watchdog ) { the_watchdog->state = WATCHDOG_REMOVE_IT; 47bd0: 7003 moveq #3,%d0 <== NOT EXECUTED 47bd2: 2540 0050 movel %d0,%a2@(80) <== NOT EXECUTED _Thread_Unblock( the_thread ); } else { _Watchdog_Deactivate( &the_thread->Timer ); _ISR_Enable( level ); 47bd6: 46c1 movew %d1,%sr <== NOT EXECUTED (void) _Watchdog_Remove( &the_thread->Timer ); 47bd8: 486a 0048 pea %a2@(72) <== NOT EXECUTED 47bdc: 4eb9 0004 863c jsr 4863c <_Watchdog_Remove> <== NOT EXECUTED 47be2: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED 47be8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47bea: 4e93 jsr %a3@ <== NOT EXECUTED 47bec: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED #if defined(RTEMS_MULTIPROCESSING) if ( !_Objects_Is_local_id( the_thread->Object.id ) ) _Thread_MP_Free_proxy( the_thread ); #endif return( the_thread ); } 47bf0: 2002 movel %d2,%d0 47bf2: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 47bf8: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004b030 <_Thread_queue_Enqueue_fifo>: ) { Thread_blocking_operation_States sync_state; ISR_Level level; _ISR_Disable( level ); 4b030: 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 ) { 4b036: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b03a: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4b03e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b040: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED 4b044: 2f02 movel %d2,%sp@- <== NOT EXECUTED Thread_blocking_operation_States sync_state; ISR_Level level; _ISR_Disable( level ); 4b046: 40c1 movew %sr,%d1 <== NOT EXECUTED 4b048: 8081 orl %d1,%d0 <== NOT EXECUTED 4b04a: 46c0 movew %d0,%sr <== NOT EXECUTED sync_state = the_thread_queue->sync_state; 4b04c: 2028 0030 movel %a0@(48),%d0 <== NOT EXECUTED the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED; if (sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) { 4b050: 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; 4b052: 42a8 0030 clrl %a0@(48) <== NOT EXECUTED if (sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) { 4b056: b480 cmpl %d0,%d2 <== NOT EXECUTED 4b058: 661c bnes 4b076 <_Thread_queue_Enqueue_fifo+0x46><== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected( Chain_Control *the_chain, Chain_Node *the_node ) { Chain_Node *tail = _Chain_Tail( the_chain ); 4b05a: 2408 movel %a0,%d2 <== NOT EXECUTED 4b05c: 5882 addql #4,%d2 <== NOT EXECUTED Chain_Node *old_last = tail->previous; 4b05e: 2468 0008 moveal %a0@(8),%a2 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected( Chain_Control *the_chain, Chain_Node *the_node ) { Chain_Node *tail = _Chain_Tail( the_chain ); 4b062: 2282 movel %d2,%a1@ <== NOT EXECUTED Chain_Node *old_last = tail->previous; the_node->next = tail; tail->previous = the_node; 4b064: 2149 0008 movel %a1,%a0@(8) <== NOT EXECUTED old_last->next = the_node; 4b068: 2489 movel %a1,%a2@ <== NOT EXECUTED the_node->previous = old_last; 4b06a: 234a 0004 movel %a2,%a1@(4) <== NOT EXECUTED _Chain_Append_unprotected( &the_thread_queue->Queues.Fifo, &the_thread->Object.Node ); the_thread->Wait.queue = the_thread_queue; 4b06e: 2348 0044 movel %a0,%a1@(68) <== NOT EXECUTED the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED; _ISR_Enable( level ); 4b072: 46c1 movew %d1,%sr <== NOT EXECUTED return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED; 4b074: 6006 bras 4b07c <_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; 4b076: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED 4b07a: 2081 movel %d1,%a0@ <== NOT EXECUTED return sync_state; } 4b07c: 241f movel %sp@+,%d2 <== NOT EXECUTED 4b07e: 245f moveal %sp@+,%a2 <== NOT EXECUTED 4b080: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00047c94 <_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 ) { 47c94: 4e56 ffe0 linkw %fp,#-32 47c98: 206e 000c moveal %fp@(12),%a0 RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); 47c9c: 43e8 003c lea %a0@(60),%a1 47ca0: 48d7 1c7c moveml %d2-%d6/%a2-%a4,%sp@ 47ca4: 246e 0008 moveal %fp@(8),%a2 */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); 47ca8: 49e8 0038 lea %a0@(56),%a4 Priority_Control priority; States_Control block_state; _Chain_Initialize_empty( &the_thread->Wait.Block2n ); priority = the_thread->current_priority; 47cac: 2028 0014 movel %a0@(20),%d0 RTEMS_INLINE_ROUTINE uint32_t _Thread_queue_Header_number ( Priority_Control the_priority ) { return (the_priority / TASK_QUEUE_DATA_PRIORITIES_PER_HEADER); 47cb0: 2200 movel %d0,%d1 47cb2: ec89 lsrl #6,%d1 header_index = _Thread_queue_Header_number( priority ); header = &the_thread_queue->Queues.Priority[ header_index ]; block_state = the_thread_queue->state; 47cb4: 2a2a 0038 movel %a2@(56),%d5 Chain_Node *tail = _Chain_Tail( the_chain ); 47cb8: 2149 0038 movel %a1,%a0@(56) head->next = tail; head->previous = NULL; 47cbc: 42a8 003c clrl %a0@(60) */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); 47cc0: 214c 0040 movel %a4,%a0@(64) if ( _Thread_queue_Is_reverse_search( priority ) ) 47cc4: 0800 0005 btst #5,%d0 47cc8: 6670 bnes 47d3a <_Thread_queue_Enqueue_priority+0xa6> * * WARNING! Returning with interrupts disabled! */ *level_p = level; return the_thread_queue->sync_state; } 47cca: 2401 movel %d1,%d2 if ( _Thread_queue_Is_reverse_search( priority ) ) goto restart_reverse_search; restart_forward_search: search_priority = PRIORITY_MINIMUM - 1; _ISR_Disable( level ); 47ccc: 367c 0700 moveaw #1792,%a3 * * WARNING! Returning with interrupts disabled! */ *level_p = level; return the_thread_queue->sync_state; } 47cd0: e58a lsll #2,%d2 47cd2: e989 lsll #4,%d1 47cd4: 9282 subl %d2,%d1 RTEMS_INLINE_ROUTINE bool _Chain_Is_tail( Chain_Control *the_chain, const Chain_Node *the_node ) { return (the_node == _Chain_Tail(the_chain)); 47cd6: 49f2 1804 lea %a2@(00000004,%d1:l),%a4 if ( _Thread_queue_Is_reverse_search( priority ) ) goto restart_reverse_search; restart_forward_search: search_priority = PRIORITY_MINIMUM - 1; _ISR_Disable( level ); 47cda: 260b movel %a3,%d3 47cdc: 40c2 movew %sr,%d2 47cde: 8682 orl %d2,%d3 47ce0: 46c3 movew %d3,%sr 47ce2: 2602 movel %d2,%d3 search_thread = (Thread_Control *) _Chain_First( header ); 47ce4: 2272 1800 moveal %a2@(00000000,%d1:l),%a1 if ( _Thread_queue_Is_reverse_search( priority ) ) goto restart_reverse_search; restart_forward_search: search_priority = PRIORITY_MINIMUM - 1; 47ce8: 78ff moveq #-1,%d4 _ISR_Disable( level ); search_thread = (Thread_Control *) _Chain_First( header ); while ( !_Chain_Is_tail( header, (Chain_Node *)search_thread ) ) { 47cea: 601e bras 47d0a <_Thread_queue_Enqueue_priority+0x76> search_priority = search_thread->current_priority; 47cec: 2829 0014 movel %a1@(20),%d4 if ( priority <= search_priority ) 47cf0: b880 cmpl %d0,%d4 47cf2: 641a bccs 47d0e <_Thread_queue_Enqueue_priority+0x7a> break; search_priority = search_thread->current_priority; if ( priority <= search_priority ) break; #endif _ISR_Flash( level ); 47cf4: 2c0b movel %a3,%d6 47cf6: 46c2 movew %d2,%sr 47cf8: 8c82 orl %d2,%d6 47cfa: 46c6 movew %d6,%sr RTEMS_INLINE_ROUTINE bool _States_Are_set ( States_Control the_states, States_Control mask ) { return ( (the_states & mask) != STATES_READY); 47cfc: 2c05 movel %d5,%d6 47cfe: cca9 0010 andl %a1@(16),%d6 if ( !_States_Are_set( search_thread->current_state, block_state) ) { 47d02: 6604 bnes 47d08 <_Thread_queue_Enqueue_priority+0x74><== ALWAYS TAKEN _ISR_Enable( level ); 47d04: 46c2 movew %d2,%sr <== NOT EXECUTED goto restart_forward_search; 47d06: 60d2 bras 47cda <_Thread_queue_Enqueue_priority+0x46><== NOT EXECUTED } search_thread = (Thread_Control *)search_thread->Object.Node.next; 47d08: 2251 moveal %a1@,%a1 restart_forward_search: search_priority = PRIORITY_MINIMUM - 1; _ISR_Disable( level ); search_thread = (Thread_Control *) _Chain_First( header ); while ( !_Chain_Is_tail( header, (Chain_Node *)search_thread ) ) { 47d0a: b9c9 cmpal %a1,%a4 47d0c: 66de bnes 47cec <_Thread_queue_Enqueue_priority+0x58> } search_thread = (Thread_Control *)search_thread->Object.Node.next; } if ( the_thread_queue->sync_state != 47d0e: 7201 moveq #1,%d1 47d10: b2aa 0030 cmpl %a2@(48),%d1 47d14: 6600 00b8 bnew 47dce <_Thread_queue_Enqueue_priority+0x13a> THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) goto synchronize; the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED; 47d18: 42aa 0030 clrl %a2@(48) if ( priority == search_priority ) 47d1c: b880 cmpl %d0,%d4 47d1e: 6700 0092 beqw 47db2 <_Thread_queue_Enqueue_priority+0x11e> goto equal_priority; search_node = (Chain_Node *) search_thread; previous_node = search_node->previous; 47d22: 2669 0004 moveal %a1@(4),%a3 the_node = (Chain_Node *) the_thread; the_node->next = search_node; 47d26: 2089 movel %a1,%a0@ the_node->previous = previous_node; 47d28: 214b 0004 movel %a3,%a0@(4) previous_node->next = the_node; 47d2c: 2688 movel %a0,%a3@ search_node->previous = the_node; 47d2e: 2348 0004 movel %a0,%a1@(4) the_thread->Wait.queue = the_thread_queue; 47d32: 214a 0044 movel %a2,%a0@(68) _ISR_Enable( level ); 47d36: 46c2 movew %d2,%sr 47d38: 6074 bras 47dae <_Thread_queue_Enqueue_priority+0x11a> * * WARNING! Returning with interrupts disabled! */ *level_p = level; return the_thread_queue->sync_state; } 47d3a: 2401 movel %d1,%d2 47d3c: 280a movel %a2,%d4 return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED; restart_reverse_search: search_priority = PRIORITY_MAXIMUM + 1; _ISR_Disable( level ); 47d3e: 367c 0700 moveaw #1792,%a3 * * WARNING! Returning with interrupts disabled! */ *level_p = level; return the_thread_queue->sync_state; } 47d42: e58a lsll #2,%d2 47d44: e989 lsll #4,%d1 47d46: 9282 subl %d2,%d1 47d48: d881 addl %d1,%d4 47d4a: 2844 moveal %d4,%a4 47d4c: 508c addql #8,%a4 the_thread->Wait.queue = the_thread_queue; _ISR_Enable( level ); return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED; restart_reverse_search: search_priority = PRIORITY_MAXIMUM + 1; 47d4e: 4282 clrl %d2 47d50: 1439 0005 cb92 moveb 5cb92 ,%d2 _ISR_Disable( level ); 47d56: 260b movel %a3,%d3 the_thread->Wait.queue = the_thread_queue; _ISR_Enable( level ); return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED; restart_reverse_search: search_priority = PRIORITY_MAXIMUM + 1; 47d58: 5282 addql #1,%d2 _ISR_Disable( level ); 47d5a: 40c1 movew %sr,%d1 47d5c: 8681 orl %d1,%d3 47d5e: 46c3 movew %d3,%sr 47d60: 2601 movel %d1,%d3 search_thread = (Thread_Control *) _Chain_Last( header ); 47d62: 2254 moveal %a4@,%a1 while ( !_Chain_Is_head( header, (Chain_Node *)search_thread ) ) { 47d64: 6020 bras 47d86 <_Thread_queue_Enqueue_priority+0xf2> search_priority = search_thread->current_priority; 47d66: 2429 0014 movel %a1@(20),%d2 if ( priority >= search_priority ) 47d6a: b480 cmpl %d0,%d2 47d6c: 631c blss 47d8a <_Thread_queue_Enqueue_priority+0xf6><== ALWAYS TAKEN break; search_priority = search_thread->current_priority; if ( priority >= search_priority ) break; #endif _ISR_Flash( level ); 47d6e: 2c0b movel %a3,%d6 <== NOT EXECUTED 47d70: 46c1 movew %d1,%sr <== NOT EXECUTED 47d72: 8c81 orl %d1,%d6 <== NOT EXECUTED 47d74: 46c6 movew %d6,%sr <== NOT EXECUTED 47d76: 2c05 movel %d5,%d6 <== NOT EXECUTED 47d78: cca9 0010 andl %a1@(16),%d6 <== NOT EXECUTED if ( !_States_Are_set( search_thread->current_state, block_state) ) { 47d7c: 6604 bnes 47d82 <_Thread_queue_Enqueue_priority+0xee><== NOT EXECUTED _ISR_Enable( level ); 47d7e: 46c1 movew %d1,%sr <== NOT EXECUTED goto restart_reverse_search; 47d80: 60cc bras 47d4e <_Thread_queue_Enqueue_priority+0xba><== NOT EXECUTED } search_thread = (Thread_Control *) search_thread->Object.Node.previous; 47d82: 2269 0004 moveal %a1@(4),%a1 <== NOT EXECUTED restart_reverse_search: search_priority = PRIORITY_MAXIMUM + 1; _ISR_Disable( level ); search_thread = (Thread_Control *) _Chain_Last( header ); while ( !_Chain_Is_head( header, (Chain_Node *)search_thread ) ) { 47d86: b889 cmpl %a1,%d4 47d88: 66dc bnes 47d66 <_Thread_queue_Enqueue_priority+0xd2> } search_thread = (Thread_Control *) search_thread->Object.Node.previous; } if ( the_thread_queue->sync_state != 47d8a: 7801 moveq #1,%d4 47d8c: b8aa 0030 cmpl %a2@(48),%d4 47d90: 663c bnes 47dce <_Thread_queue_Enqueue_priority+0x13a><== NEVER TAKEN THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) goto synchronize; the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED; 47d92: 42aa 0030 clrl %a2@(48) if ( priority == search_priority ) 47d96: b480 cmpl %d0,%d2 47d98: 6718 beqs 47db2 <_Thread_queue_Enqueue_priority+0x11e><== NEVER TAKEN goto equal_priority; search_node = (Chain_Node *) search_thread; next_node = search_node->next; 47d9a: 2651 moveal %a1@,%a3 the_node = (Chain_Node *) the_thread; the_node->next = next_node; the_node->previous = search_node; 47d9c: 2149 0004 movel %a1,%a0@(4) search_node = (Chain_Node *) search_thread; next_node = search_node->next; the_node = (Chain_Node *) the_thread; the_node->next = next_node; 47da0: 208b movel %a3,%a0@ the_node->previous = search_node; search_node->next = the_node; next_node->previous = the_node; 47da2: 2748 0004 movel %a0,%a3@(4) next_node = search_node->next; the_node = (Chain_Node *) the_thread; the_node->next = next_node; the_node->previous = search_node; search_node->next = the_node; 47da6: 2288 movel %a0,%a1@ next_node->previous = the_node; the_thread->Wait.queue = the_thread_queue; 47da8: 214a 0044 movel %a2,%a0@(68) _ISR_Enable( level ); 47dac: 46c1 movew %d1,%sr return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED; 47dae: 7001 moveq #1,%d0 47db0: 6026 bras 47dd8 <_Thread_queue_Enqueue_priority+0x144> equal_priority: /* add at end of priority group */ search_node = _Chain_Tail( &search_thread->Wait.Block2n ); 47db2: 49e9 003c lea %a1@(60),%a4 <== NOT EXECUTED previous_node = search_node->previous; 47db6: 2669 0040 moveal %a1@(64),%a3 <== NOT EXECUTED the_thread->Wait.queue = the_thread_queue; _ISR_Enable( level ); return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED; equal_priority: /* add at end of priority group */ search_node = _Chain_Tail( &search_thread->Wait.Block2n ); 47dba: 208c movel %a4,%a0@ <== NOT EXECUTED previous_node = search_node->previous; the_node = (Chain_Node *) the_thread; the_node->next = search_node; the_node->previous = previous_node; 47dbc: 214b 0004 movel %a3,%a0@(4) <== NOT EXECUTED previous_node->next = the_node; 47dc0: 2688 movel %a0,%a3@ <== NOT EXECUTED search_node->previous = the_node; 47dc2: 2348 0040 movel %a0,%a1@(64) <== NOT EXECUTED the_thread->Wait.queue = the_thread_queue; 47dc6: 214a 0044 movel %a2,%a0@(68) <== NOT EXECUTED _ISR_Enable( level ); 47dca: 46c3 movew %d3,%sr <== NOT EXECUTED 47dcc: 60e0 bras 47dae <_Thread_queue_Enqueue_priority+0x11a><== 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; 47dce: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED return the_thread_queue->sync_state; 47dd2: 202a 0030 movel %a2@(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; 47dd6: 2083 movel %d3,%a0@ <== NOT EXECUTED return the_thread_queue->sync_state; } 47dd8: 4cd7 1c7c moveml %sp@,%d2-%d6/%a2-%a4 47ddc: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00047bfc <_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 ) { 47bfc: 4e56 fff0 linkw %fp,#-16 47c00: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ 47c04: 266e 0008 moveal %fp@(8),%a3 else #endif /* * Set the blocking state for this thread queue in the thread. */ _Thread_Set_state( the_thread, the_thread_queue->state ); 47c08: 2f2b 0038 movel %a3@(56),%sp@- Thread_queue_Control *, Thread_Control *, ISR_Level * ); the_thread = _Thread_Executing; 47c0c: 2479 0005 e902 moveal 5e902 <_Per_CPU_Information+0xc>,%a2 void _Thread_queue_Enqueue_with_handler( Thread_queue_Control *the_thread_queue, Watchdog_Interval timeout, Thread_queue_Timeout_callout handler ) { 47c12: 242e 000c movel %fp@(12),%d2 else #endif /* * Set the blocking state for this thread queue in the thread. */ _Thread_Set_state( the_thread, the_thread_queue->state ); 47c16: 2f0a movel %a2,%sp@- 47c18: 4eb9 0004 7f70 jsr 47f70 <_Thread_Set_state> /* * If the thread wants to timeout, then schedule its timer. */ if ( timeout ) { 47c1e: 508f addql #8,%sp 47c20: 4a82 tstl %d2 47c22: 672c beqs 47c50 <_Thread_queue_Enqueue_with_handler+0x54><== ALWAYS TAKEN _Watchdog_Initialize( 47c24: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 47c28: 256e 0010 0064 movel %fp@(16),%a2@(100) <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 47c2e: 42aa 0050 clrl %a2@(80) <== NOT EXECUTED the_watchdog->routine = routine; the_watchdog->id = id; 47c32: 2540 0068 movel %d0,%a2@(104) <== NOT EXECUTED the_watchdog->user_data = user_data; 47c36: 42aa 006c clrl %a2@(108) <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 47c3a: 2542 0054 movel %d2,%a2@(84) <== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 47c3e: 486a 0048 pea %a2@(72) <== NOT EXECUTED 47c42: 4879 0005 e558 pea 5e558 <_Watchdog_Ticks_chain> <== NOT EXECUTED 47c48: 4eb9 0004 8514 jsr 48514 <_Watchdog_Insert> <== NOT EXECUTED 47c4e: 508f addql #8,%sp <== NOT EXECUTED * Now enqueue the thread per the discipline for this thread queue. */ if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) enqueue_p = _Thread_queue_Enqueue_priority; else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */ enqueue_p = _Thread_queue_Enqueue_fifo; 47c50: 41f9 0004 b030 lea 4b030 <_Thread_queue_Enqueue_fifo>,%a0 } /* * Now enqueue the thread per the discipline for this thread queue. */ if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) 47c56: 7001 moveq #1,%d0 47c58: b0ab 0034 cmpl %a3@(52),%d0 47c5c: 6606 bnes 47c64 <_Thread_queue_Enqueue_with_handler+0x68><== NEVER TAKEN enqueue_p = _Thread_queue_Enqueue_priority; 47c5e: 41f9 0004 7c94 lea 47c94 <_Thread_queue_Enqueue_priority>,%a0 else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */ enqueue_p = _Thread_queue_Enqueue_fifo; sync_state = (*enqueue_p)( the_thread_queue, the_thread, &level ); 47c64: 486e fffc pea %fp@(-4) 47c68: 2f0a movel %a2,%sp@- 47c6a: 2f0b movel %a3,%sp@- 47c6c: 4e90 jsr %a0@ if ( sync_state != THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) 47c6e: 4fef 000c lea %sp@(12),%sp 47c72: 7201 moveq #1,%d1 47c74: b280 cmpl %d0,%d1 47c76: 6712 beqs 47c8a <_Thread_queue_Enqueue_with_handler+0x8e><== ALWAYS TAKEN _Thread_blocking_operation_Cancel( sync_state, the_thread, level ); 47c78: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 47c7c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47c7e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47c80: 4eb9 0004 72b0 jsr 472b0 <_Thread_blocking_operation_Cancel><== NOT EXECUTED 47c86: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED } 47c8a: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 47c90: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004b084 <_Thread_queue_Extract>: { /* * Can not use indirect function pointer here since Extract priority * is a macro and the underlying methods do not have the same signature. */ if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) 4b084: 7201 moveq #1,%d1 <== NOT EXECUTED void _Thread_queue_Extract( Thread_queue_Control *the_thread_queue, Thread_Control *the_thread ) { 4b086: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b08a: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4b08e: 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 ) 4b092: b2a8 0034 cmpl %a0@(52),%d1 <== NOT EXECUTED 4b096: 6614 bnes 4b0ac <_Thread_queue_Extract+0x28> <== NOT EXECUTED _Thread_queue_Extract_priority( the_thread_queue, the_thread ); 4b098: 42a7 clrl %sp@- <== NOT EXECUTED 4b09a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4b09c: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4b09e: 4eb9 0004 b0bc jsr 4b0bc <_Thread_queue_Extract_priority_helper><== NOT EXECUTED 4b0a4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */ _Thread_queue_Extract_fifo( the_thread_queue, the_thread ); } 4b0a8: 4e5e unlk %fp <== NOT EXECUTED 4b0aa: 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 ); 4b0ac: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED 4b0b0: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED } 4b0b4: 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 ); 4b0b6: 4ef9 0004 c80c jmp 4c80c <_Thread_queue_Extract_fifo> <== NOT EXECUTED =============================================================================== 0004c80c <_Thread_queue_Extract_fifo>: Thread_Control *the_thread ) { ISR_Level level; _ISR_Disable( level ); 4c80c: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED void _Thread_queue_Extract_fifo( Thread_queue_Control *the_thread_queue __attribute__((unused)), Thread_Control *the_thread ) { 4c812: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4c816: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c818: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED ISR_Level level; _ISR_Disable( level ); 4c81c: 40c0 movew %sr,%d0 <== NOT EXECUTED 4c81e: 8280 orl %d0,%d1 <== NOT EXECUTED 4c820: 46c1 movew %d1,%sr <== NOT EXECUTED 4c822: 222a 0010 movel %a2@(16),%d1 <== NOT EXECUTED 4c826: 0281 0003 bee0 andil #245472,%d1 <== NOT EXECUTED if ( !_States_Is_waiting_on_thread_queue( the_thread->current_state ) ) { 4c82c: 660a bnes 4c838 <_Thread_queue_Extract_fifo+0x2c><== NOT EXECUTED _ISR_Enable( level ); 4c82e: 46c0 movew %d0,%sr <== NOT EXECUTED #if defined(RTEMS_MULTIPROCESSING) if ( !_Objects_Is_local_id( the_thread->Object.id ) ) _Thread_MP_Free_proxy( the_thread ); #endif } 4c830: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4c834: 4e5e unlk %fp <== NOT EXECUTED 4c836: 4e75 rts <== NOT EXECUTED ) { Chain_Node *next; Chain_Node *previous; next = the_node->next; 4c838: 2252 moveal %a2@,%a1 <== NOT EXECUTED _Chain_Extract_unprotected( &the_thread->Object.Node ); the_thread->Wait.queue = NULL; if ( !_Watchdog_Is_active( &the_thread->Timer ) ) { 4c83a: 7202 moveq #2,%d1 <== NOT EXECUTED previous = the_node->previous; 4c83c: 206a 0004 moveal %a2@(4),%a0 <== NOT EXECUTED next->previous = previous; 4c840: 2348 0004 movel %a0,%a1@(4) <== NOT EXECUTED previous->next = next; 4c844: 2089 movel %a1,%a0@ <== NOT EXECUTED return; } _Chain_Extract_unprotected( &the_thread->Object.Node ); the_thread->Wait.queue = NULL; 4c846: 42aa 0044 clrl %a2@(68) <== NOT EXECUTED if ( !_Watchdog_Is_active( &the_thread->Timer ) ) { 4c84a: b2aa 0050 cmpl %a2@(80),%d1 <== NOT EXECUTED 4c84e: 6704 beqs 4c854 <_Thread_queue_Extract_fifo+0x48><== NOT EXECUTED _ISR_Enable( level ); 4c850: 46c0 movew %d0,%sr <== NOT EXECUTED 4c852: 6014 bras 4c868 <_Thread_queue_Extract_fifo+0x5c><== NOT EXECUTED 4c854: 7203 moveq #3,%d1 <== NOT EXECUTED 4c856: 2541 0050 movel %d1,%a2@(80) <== NOT EXECUTED } else { _Watchdog_Deactivate( &the_thread->Timer ); _ISR_Enable( level ); 4c85a: 46c0 movew %d0,%sr <== NOT EXECUTED (void) _Watchdog_Remove( &the_thread->Timer ); 4c85c: 486a 0048 pea %a2@(72) <== NOT EXECUTED 4c860: 4eb9 0004 863c jsr 4863c <_Watchdog_Remove> <== NOT EXECUTED 4c866: 588f addql #4,%sp <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Thread_Unblock ( Thread_Control *the_thread ) { _Thread_Clear_state( the_thread, STATES_BLOCKED ); 4c868: 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 } 4c86c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4c870: 203c 1003 fff8 movel #268697592,%d0 <== NOT EXECUTED 4c876: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED 4c87a: 4e5e unlk %fp <== NOT EXECUTED 4c87c: 4ef9 0004 743c jmp 4743c <_Thread_Clear_state> <== NOT EXECUTED ... =============================================================================== 0004b0bc <_Thread_queue_Extract_priority_helper>: Chain_Node *new_first_node; Chain_Node *new_second_node; Chain_Node *last_node; the_node = (Chain_Node *) the_thread; _ISR_Disable( level ); 4b0bc: 223c 0000 0700 movel #1792,%d1 void _Thread_queue_Extract_priority_helper( Thread_queue_Control *the_thread_queue __attribute__((unused)), Thread_Control *the_thread, bool requeuing ) { 4b0c2: 4e56 ffec linkw %fp,#-20 4b0c6: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ 4b0ca: 246e 000c moveal %fp@(12),%a2 4b0ce: 142e 0013 moveb %fp@(19),%d2 Chain_Node *new_first_node; Chain_Node *new_second_node; Chain_Node *last_node; the_node = (Chain_Node *) the_thread; _ISR_Disable( level ); 4b0d2: 40c0 movew %sr,%d0 4b0d4: 8280 orl %d0,%d1 4b0d6: 46c1 movew %d1,%sr */ RTEMS_INLINE_ROUTINE bool _States_Is_waiting_on_thread_queue ( States_Control the_states ) { return (the_states & STATES_WAITING_ON_THREAD_QUEUE); 4b0d8: 222a 0010 movel %a2@(16),%d1 4b0dc: 0281 0003 bee0 andil #245472,%d1 if ( !_States_Is_waiting_on_thread_queue( the_thread->current_state ) ) { 4b0e2: 6606 bnes 4b0ea <_Thread_queue_Extract_priority_helper+0x2e><== ALWAYS TAKEN _ISR_Enable( level ); 4b0e4: 46c0 movew %d0,%sr <== NOT EXECUTED return; 4b0e6: 6000 0096 braw 4b17e <_Thread_queue_Extract_priority_helper+0xc2><== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( const Chain_Control *the_chain ) { return _Chain_Immutable_first( the_chain ) == _Chain_Immutable_tail( the_chain ); 4b0ea: 220a movel %a2,%d1 4b0ec: 0681 0000 003c addil #60,%d1 /* * The thread was actually waiting on a thread queue so let's remove it. */ next_node = the_node->next; 4b0f2: 2252 moveal %a2@,%a1 previous_node = the_node->previous; 4b0f4: 266a 0004 moveal %a2@(4),%a3 #if defined(RTEMS_MULTIPROCESSING) if ( !_Objects_Is_local_id( the_thread->Object.id ) ) _Thread_MP_Free_proxy( the_thread ); #endif } 4b0f8: 206a 0038 moveal %a2@(56),%a0 */ next_node = the_node->next; previous_node = the_node->previous; if ( !_Chain_Is_empty( &the_thread->Wait.Block2n ) ) { 4b0fc: b288 cmpl %a0,%d1 4b0fe: 6734 beqs 4b134 <_Thread_queue_Extract_priority_helper+0x78><== ALWAYS TAKEN #if defined(RTEMS_MULTIPROCESSING) if ( !_Objects_Is_local_id( the_thread->Object.id ) ) _Thread_MP_Free_proxy( the_thread ); #endif } 4b100: 286a 0040 moveal %a2@(64),%a4 <== NOT EXECUTED if ( !_Chain_Is_empty( &the_thread->Wait.Block2n ) ) { new_first_node = _Chain_First( &the_thread->Wait.Block2n ); new_first_thread = (Thread_Control *) new_first_node; last_node = _Chain_Last( &the_thread->Wait.Block2n ); new_second_node = new_first_node->next; 4b104: 2a50 moveal %a0@,%a5 <== NOT EXECUTED previous_node->next = new_first_node; next_node->previous = new_first_node; 4b106: 2348 0004 movel %a0,%a1@(4) <== NOT EXECUTED new_first_node = _Chain_First( &the_thread->Wait.Block2n ); new_first_thread = (Thread_Control *) new_first_node; last_node = _Chain_Last( &the_thread->Wait.Block2n ); new_second_node = new_first_node->next; previous_node->next = new_first_node; 4b10a: 2688 movel %a0,%a3@ <== NOT EXECUTED next_node->previous = new_first_node; new_first_node->next = next_node; new_first_node->previous = previous_node; 4b10c: 214b 0004 movel %a3,%a0@(4) <== NOT EXECUTED last_node = _Chain_Last( &the_thread->Wait.Block2n ); new_second_node = new_first_node->next; previous_node->next = new_first_node; next_node->previous = new_first_node; new_first_node->next = next_node; 4b110: 2089 movel %a1,%a0@ <== NOT EXECUTED new_first_node->previous = previous_node; if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) { 4b112: 222a 0040 movel %a2@(64),%d1 <== NOT EXECUTED 4b116: b2aa 0038 cmpl %a2@(56),%d1 <== NOT EXECUTED 4b11a: 671e beqs 4b13a <_Thread_queue_Extract_priority_helper+0x7e><== NOT EXECUTED /* > two threads on 2-n */ head = _Chain_Head( &new_first_thread->Wait.Block2n ); 4b11c: 43e8 0038 lea %a0@(56),%a1 <== NOT EXECUTED 4b120: 2b49 0004 movel %a1,%a5@(4) <== NOT EXECUTED tail = _Chain_Tail( &new_first_thread->Wait.Block2n ); new_second_node->previous = head; head->next = new_second_node; 4b124: 214d 0038 movel %a5,%a0@(56) <== NOT EXECUTED tail->previous = last_node; 4b128: 214c 0040 movel %a4,%a0@(64) <== NOT EXECUTED new_first_node->previous = previous_node; if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) { /* > two threads on 2-n */ head = _Chain_Head( &new_first_thread->Wait.Block2n ); tail = _Chain_Tail( &new_first_thread->Wait.Block2n ); 4b12c: 41e8 003c lea %a0@(60),%a0 <== NOT EXECUTED 4b130: 2888 movel %a0,%a4@ <== NOT EXECUTED 4b132: 6006 bras 4b13a <_Thread_queue_Extract_priority_helper+0x7e><== NOT EXECUTED head->next = new_second_node; tail->previous = last_node; last_node->next = tail; } } else { previous_node->next = next_node; 4b134: 2689 movel %a1,%a3@ next_node->previous = previous_node; 4b136: 234b 0004 movel %a3,%a1@(4) /* * If we are not supposed to touch timers or the thread's state, return. */ if ( requeuing ) { 4b13a: 4a02 tstb %d2 4b13c: 6704 beqs 4b142 <_Thread_queue_Extract_priority_helper+0x86><== NEVER TAKEN _ISR_Enable( level ); 4b13e: 46c0 movew %d0,%sr 4b140: 603c bras 4b17e <_Thread_queue_Extract_priority_helper+0xc2> return; } if ( !_Watchdog_Is_active( &the_thread->Timer ) ) { 4b142: 7202 moveq #2,%d1 <== NOT EXECUTED 4b144: b2aa 0050 cmpl %a2@(80),%d1 <== NOT EXECUTED 4b148: 6704 beqs 4b14e <_Thread_queue_Extract_priority_helper+0x92><== NOT EXECUTED _ISR_Enable( level ); 4b14a: 46c0 movew %d0,%sr <== NOT EXECUTED 4b14c: 6014 bras 4b162 <_Thread_queue_Extract_priority_helper+0xa6><== NOT EXECUTED 4b14e: 7203 moveq #3,%d1 <== NOT EXECUTED 4b150: 2541 0050 movel %d1,%a2@(80) <== NOT EXECUTED } else { _Watchdog_Deactivate( &the_thread->Timer ); _ISR_Enable( level ); 4b154: 46c0 movew %d0,%sr <== NOT EXECUTED (void) _Watchdog_Remove( &the_thread->Timer ); 4b156: 486a 0048 pea %a2@(72) <== NOT EXECUTED 4b15a: 4eb9 0004 863c jsr 4863c <_Watchdog_Remove> <== NOT EXECUTED 4b160: 588f addql #4,%sp <== NOT EXECUTED 4b162: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED 4b166: 227c 1003 fff8 moveal #268697592,%a1 <== NOT EXECUTED #if defined(RTEMS_MULTIPROCESSING) if ( !_Objects_Is_local_id( the_thread->Object.id ) ) _Thread_MP_Free_proxy( the_thread ); #endif } 4b16c: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED 4b172: 2d49 000c movel %a1,%fp@(12) <== NOT EXECUTED 4b176: 4e5e unlk %fp <== NOT EXECUTED 4b178: 4ef9 0004 743c jmp 4743c <_Thread_Clear_state> <== NOT EXECUTED 4b17e: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 4b184: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00047de0 <_Thread_queue_Extract_with_proxy>: */ bool _Thread_queue_Extract_with_proxy( Thread_Control *the_thread ) { 47de0: 4e56 0000 linkw %fp,#0 47de4: 206e 0008 moveal %fp@(8),%a0 */ RTEMS_INLINE_ROUTINE bool _States_Is_waiting_on_thread_queue ( States_Control the_states ) { return (the_states & STATES_WAITING_ON_THREAD_QUEUE); 47de8: 2028 0010 movel %a0@(16),%d0 47dec: 0280 0003 bee0 andil #245472,%d0 States_Control state; state = the_thread->current_state; if ( _States_Is_waiting_on_thread_queue( state ) ) { 47df2: 6712 beqs 47e06 <_Thread_queue_Extract_with_proxy+0x26><== ALWAYS TAKEN if ( proxy_extract_callout ) (*proxy_extract_callout)( the_thread ); } #endif _Thread_queue_Extract( the_thread->Wait.queue, the_thread ); 47df4: 2f08 movel %a0,%sp@- <== NOT EXECUTED 47df6: 2f28 0044 movel %a0@(68),%sp@- <== NOT EXECUTED 47dfa: 4eb9 0004 b084 jsr 4b084 <_Thread_queue_Extract> <== NOT EXECUTED return true; 47e00: 508f addql #8,%sp <== NOT EXECUTED 47e02: 7001 moveq #1,%d0 <== NOT EXECUTED 47e04: 6002 bras 47e08 <_Thread_queue_Extract_with_proxy+0x28><== NOT EXECUTED } return false; 47e06: 4200 clrb %d0 } 47e08: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00049a48 <_Thread_queue_First>: Thread_Control * (*first_p)(Thread_queue_Control *); if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) first_p = _Thread_queue_First_priority; else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */ first_p = _Thread_queue_First_fifo; 49a48: 43f9 0004 ce7c lea 4ce7c <_Thread_queue_First_fifo>,%a1 <== NOT EXECUTED Thread_queue_Control *the_thread_queue ) { Thread_Control * (*first_p)(Thread_queue_Control *); if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) 49a4e: 7001 moveq #1,%d0 <== NOT EXECUTED */ Thread_Control *_Thread_queue_First( Thread_queue_Control *the_thread_queue ) { 49a50: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 49a54: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED Thread_Control * (*first_p)(Thread_queue_Control *); if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) 49a58: b0a8 0034 cmpl %a0@(52),%d0 <== NOT EXECUTED 49a5c: 6606 bnes 49a64 <_Thread_queue_First+0x1c> <== NOT EXECUTED first_p = _Thread_queue_First_priority; 49a5e: 43f9 0004 9a6c lea 49a6c <_Thread_queue_First_priority>,%a1<== NOT EXECUTED else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */ first_p = _Thread_queue_First_fifo; return (*first_p)( the_thread_queue ); 49a64: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED } 49a68: 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 ); 49a6a: 4ed1 jmp %a1@ <== NOT EXECUTED =============================================================================== 0004ce7c <_Thread_queue_First_fifo>: */ Thread_Control *_Thread_queue_First_fifo( Thread_queue_Control *the_thread_queue ) { 4ce7c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED if ( !_Chain_Is_empty( &the_thread_queue->Queues.Fifo ) ) return (Thread_Control *) _Chain_First( &the_thread_queue->Queues.Fifo ); return NULL; } 4ce80: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4ce84: 2018 movel %a0@+,%d0 <== NOT EXECUTED Thread_Control *_Thread_queue_First_fifo( Thread_queue_Control *the_thread_queue ) { if ( !_Chain_Is_empty( &the_thread_queue->Queues.Fifo ) ) 4ce86: b1c0 cmpal %d0,%a0 <== NOT EXECUTED 4ce88: 6602 bnes 4ce8c <_Thread_queue_First_fifo+0x10> <== NOT EXECUTED return (Thread_Control *) _Chain_First( &the_thread_queue->Queues.Fifo ); return NULL; 4ce8a: 4280 clrl %d0 <== NOT EXECUTED } 4ce8c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00049a6c <_Thread_queue_First_priority>: Thread_queue_Control *the_thread_queue ) { uint32_t index; for( index=0 ; 49a6c: 4281 clrl %d1 <== NOT EXECUTED */ Thread_Control *_Thread_queue_First_priority ( Thread_queue_Control *the_thread_queue ) { 49a6e: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 49a72: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED if ( !_Chain_Is_empty( &the_thread_queue->Queues.Priority[ index ] ) ) return (Thread_Control *) _Chain_First( &the_thread_queue->Queues.Priority[ index ] ); } return NULL; 49a76: 2049 moveal %a1,%a0 <== NOT EXECUTED */ Thread_Control *_Thread_queue_First_priority ( Thread_queue_Control *the_thread_queue ) { 49a78: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( const Chain_Control *the_chain ) { return _Chain_Immutable_first( the_chain ) == _Chain_Immutable_tail( the_chain ); 49a7c: 2601 movel %d1,%d3 <== NOT EXECUTED 49a7e: 2401 movel %d1,%d2 <== NOT EXECUTED 49a80: e58b lsll #2,%d3 <== NOT EXECUTED 49a82: e98a lsll #4,%d2 <== NOT EXECUTED return (Thread_Control *) _Chain_First( &the_thread_queue->Queues.Priority[ index ] ); } return NULL; } 49a84: 2010 movel %a0@,%d0 <== NOT EXECUTED 49a86: 9483 subl %d3,%d2 <== NOT EXECUTED 49a88: 45f1 2804 lea %a1@(00000004,%d2:l),%a2 <== 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 ] ) ) 49a8c: b5c0 cmpal %d0,%a2 <== NOT EXECUTED 49a8e: 660e bnes 49a9e <_Thread_queue_First_priority+0x32><== NOT EXECUTED { uint32_t index; for( index=0 ; index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ; index++ ) { 49a90: 5281 addql #1,%d1 <== NOT EXECUTED 49a92: 41e8 000c lea %a0@(12),%a0 <== NOT EXECUTED Thread_queue_Control *the_thread_queue ) { uint32_t index; for( index=0 ; 49a96: 7004 moveq #4,%d0 <== NOT EXECUTED 49a98: b081 cmpl %d1,%d0 <== NOT EXECUTED 49a9a: 66e0 bnes 49a7c <_Thread_queue_First_priority+0x10><== NOT EXECUTED if ( !_Chain_Is_empty( &the_thread_queue->Queues.Priority[ index ] ) ) return (Thread_Control *) _Chain_First( &the_thread_queue->Queues.Priority[ index ] ); } return NULL; 49a9c: 4200 clrb %d0 <== NOT EXECUTED } 49a9e: 4cd7 040c moveml %sp@,%d2-%d3/%a2 <== NOT EXECUTED 49aa2: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004b188 <_Thread_queue_Process_timeout>: #include void _Thread_queue_Process_timeout( Thread_Control *the_thread ) { 4b188: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b18c: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED Thread_queue_Control *the_thread_queue = the_thread->Wait.queue; 4b190: 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 && 4b194: 2028 0030 movel %a0@(48),%d0 <== NOT EXECUTED 4b198: 671c beqs 4b1b6 <_Thread_queue_Process_timeout+0x2e><== NOT EXECUTED 4b19a: b3f9 0005 e902 cmpal 5e902 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED 4b1a0: 6614 bnes 4b1b6 <_Thread_queue_Process_timeout+0x2e><== NOT EXECUTED _Thread_Is_executing( the_thread ) ) { if ( the_thread_queue->sync_state != THREAD_BLOCKING_OPERATION_SATISFIED ) { 4b1a2: 7203 moveq #3,%d1 <== NOT EXECUTED 4b1a4: b280 cmpl %d0,%d1 <== NOT EXECUTED 4b1a6: 6720 beqs 4b1c8 <_Thread_queue_Process_timeout+0x40><== NOT EXECUTED the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status; the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT; 4b1a8: 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; 4b1aa: 2368 003c 0034 movel %a0@(60),%a1@(52) <== NOT EXECUTED the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT; 4b1b0: 2140 0030 movel %d0,%a0@(48) <== NOT EXECUTED 4b1b4: 6012 bras 4b1c8 <_Thread_queue_Process_timeout+0x40><== NOT EXECUTED } } else { the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status; 4b1b6: 2368 003c 0034 movel %a0@(60),%a1@(52) <== NOT EXECUTED _Thread_queue_Extract( the_thread->Wait.queue, the_thread ); 4b1bc: 2f09 movel %a1,%sp@- <== NOT EXECUTED 4b1be: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4b1c0: 4eb9 0004 b084 jsr 4b084 <_Thread_queue_Extract> <== NOT EXECUTED 4b1c6: 508f addql #8,%sp <== NOT EXECUTED } } 4b1c8: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00047eac <_Thread_queue_Requeue>: void _Thread_queue_Requeue( Thread_queue_Control *the_thread_queue, Thread_Control *the_thread ) { 47eac: 4e56 fff0 linkw %fp,#-16 47eb0: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ 47eb4: 246e 0008 moveal %fp@(8),%a2 47eb8: 266e 000c moveal %fp@(12),%a3 /* * Just in case the thread really wasn't blocked on a thread queue * when we get here. */ if ( !the_thread_queue ) 47ebc: 4a8a tstl %a2 47ebe: 6746 beqs 47f06 <_Thread_queue_Requeue+0x5a> <== NEVER TAKEN /* * If queueing by FIFO, there is nothing to do. This only applies to * priority blocking discipline. */ if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) { 47ec0: 7001 moveq #1,%d0 47ec2: b0aa 0034 cmpl %a2@(52),%d0 47ec6: 663e bnes 47f06 <_Thread_queue_Requeue+0x5a> <== NEVER TAKEN Thread_queue_Control *tq = the_thread_queue; ISR_Level level; ISR_Level level_ignored; _ISR_Disable( level ); 47ec8: 303c 0700 movew #1792,%d0 47ecc: 40c2 movew %sr,%d2 47ece: 8082 orl %d2,%d0 47ed0: 46c0 movew %d0,%sr 47ed2: 202b 0010 movel %a3@(16),%d0 47ed6: 0280 0003 bee0 andil #245472,%d0 if ( _States_Is_waiting_on_thread_queue( the_thread->current_state ) ) { 47edc: 6726 beqs 47f04 <_Thread_queue_Requeue+0x58> <== NEVER TAKEN 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; 47ede: 7001 moveq #1,%d0 47ee0: 2540 0030 movel %d0,%a2@(48) _Thread_queue_Enter_critical_section( tq ); _Thread_queue_Extract_priority_helper( tq, the_thread, true ); 47ee4: 4878 0001 pea 1 47ee8: 2f0b movel %a3,%sp@- 47eea: 2f0a movel %a2,%sp@- 47eec: 4eb9 0004 b0bc jsr 4b0bc <_Thread_queue_Extract_priority_helper> (void) _Thread_queue_Enqueue_priority( tq, the_thread, &level_ignored ); 47ef2: 486e fffc pea %fp@(-4) 47ef6: 2f0b movel %a3,%sp@- 47ef8: 2f0a movel %a2,%sp@- 47efa: 4eb9 0004 7c94 jsr 47c94 <_Thread_queue_Enqueue_priority> 47f00: 4fef 0018 lea %sp@(24),%sp } _ISR_Enable( level ); 47f04: 46c2 movew %d2,%sr } } 47f06: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 47f0c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00047f10 <_Thread_queue_Timeout>: void _Thread_queue_Timeout( Objects_Id id, void *ignored __attribute__((unused)) ) { 47f10: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED Thread_Control *the_thread; Objects_Locations location; the_thread = _Thread_Get( id, &location ); 47f14: 486e fffc pea %fp@(-4) <== NOT EXECUTED 47f18: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47f1c: 4eb9 0004 77c0 jsr 477c0 <_Thread_Get> <== NOT EXECUTED switch ( location ) { 47f22: 508f addql #8,%sp <== NOT EXECUTED 47f24: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 47f28: 6618 bnes 47f42 <_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 ); 47f2a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47f2c: 4eb9 0004 b188 jsr 4b188 <_Thread_queue_Process_timeout> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void ) { RTEMS_COMPILER_MEMORY_BARRIER(); _Thread_Dispatch_disable_level -= 1; 47f32: 588f addql #4,%sp <== NOT EXECUTED 47f34: 2039 0005 e478 movel 5e478 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 47f3a: 5380 subql #1,%d0 <== NOT EXECUTED 47f3c: 23c0 0005 e478 movel %d0,5e478 <_Thread_Dispatch_disable_level><== NOT EXECUTED _Thread_Unnest_dispatch(); break; } } 47f42: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00051fa2 <_Timer_server_Body>: * @a arg points to the corresponding timer server control block. */ static rtems_task _Timer_server_Body( rtems_task_argument arg ) { 51fa2: 4e56 ffb4 linkw %fp,#-76 <== NOT EXECUTED ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; 51fa6: 41ee ffec lea %fp@(-20),%a0 <== NOT EXECUTED 51faa: 200e movel %fp,%d0 <== NOT EXECUTED 51fac: 220e movel %fp,%d1 <== NOT EXECUTED 51fae: 5181 subql #8,%d1 <== NOT EXECUTED 51fb0: 0680 ffff fff4 addil #-12,%d0 <== NOT EXECUTED 51fb6: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED 51fba: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 51fbe: 260e movel %fp,%d3 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_tail( const Chain_Control *the_chain ) { return &the_chain->Tail.Node; 51fc0: 2808 movel %a0,%d4 <== NOT EXECUTED static void _Timer_server_Stop_tod_system_watchdog( Timer_server_Control *ts ) { _Watchdog_Remove( &ts->TOD_watchdogs.System_watchdog ); 51fc2: 2c0a movel %a2,%d6 <== NOT EXECUTED ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; 51fc4: 0683 ffff ffe8 addil #-24,%d3 <== NOT EXECUTED 51fca: 0686 0000 0040 addil #64,%d6 <== NOT EXECUTED */ Watchdog_Interval delta = snapshot - watchdogs->last_snapshot; watchdogs->last_snapshot = snapshot; _Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain ); 51fd0: 2a0a movel %a2,%d5 <== NOT EXECUTED /* * The current TOD is before the last TOD which indicates that * TOD has been set backwards. */ delta = last_snapshot - snapshot; _Watchdog_Adjust( &watchdogs->Chain, WATCHDOG_BACKWARD, delta ); 51fd2: 240a movel %a2,%d2 <== NOT EXECUTED */ Watchdog_Interval delta = snapshot - watchdogs->last_snapshot; watchdogs->last_snapshot = snapshot; _Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain ); 51fd4: 0685 0000 0030 addil #48,%d5 <== NOT EXECUTED 51fda: 47f9 0005 5e1c lea 55e1c <_Watchdog_Adjust_to_chain>,%a3 <== NOT EXECUTED /* * The current TOD is before the last TOD which indicates that * TOD has been set backwards. */ delta = last_snapshot - snapshot; _Watchdog_Adjust( &watchdogs->Chain, WATCHDOG_BACKWARD, delta ); 51fe0: 0682 0000 0068 addil #104,%d2 <== NOT EXECUTED 51fe6: 4bf9 0005 5d9c lea 55d9c <_Watchdog_Adjust>,%a5 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_tail( const Chain_Control *the_chain ) { return &the_chain->Tail.Node; 51fec: 2e01 movel %d1,%d7 <== NOT EXECUTED ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; 51fee: 2d48 ffe8 movel %a0,%fp@(-24) <== NOT EXECUTED static void _Timer_server_Stop_interval_system_watchdog( Timer_server_Control *ts ) { _Watchdog_Remove( &ts->Interval_watchdogs.System_watchdog ); 51ff2: 41ea 0008 lea %a2@(8),%a0 <== NOT EXECUTED 51ff6: 2d41 fff4 movel %d1,%fp@(-12) <== NOT EXECUTED head->previous = NULL; 51ffa: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED tail->previous = head; 51ffe: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; head->previous = NULL; 52002: 42ae ffec clrl %fp@(-20) <== NOT EXECUTED tail->previous = head; 52006: 2d43 fff0 movel %d3,%fp@(-16) <== NOT EXECUTED 5200a: 2d48 ffe4 movel %a0,%fp@(-28) <== NOT EXECUTED static void _Timer_server_Stop_tod_system_watchdog( Timer_server_Control *ts ) { _Watchdog_Remove( &ts->TOD_watchdogs.System_watchdog ); 5200e: 2d46 ffe0 movel %d6,%fp@(-32) <== NOT EXECUTED Chain_Control *tmp; /* * Afterwards all timer inserts are directed to this chain and the interval * and TOD chains will be no more modified by other parties. */ ts->insert_chain = insert_chain; 52012: 41ee fff4 lea %fp@(-12),%a0 <== NOT EXECUTED ) { if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) { _Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker ); } else if ( timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) { _Watchdog_Insert( &ts->TOD_watchdogs.Chain, &timer->Ticker ); 52016: 49f9 0005 5eac lea 55eac <_Watchdog_Insert>,%a4 <== NOT EXECUTED Chain_Control *tmp; /* * Afterwards all timer inserts are directed to this chain and the interval * and TOD chains will be no more modified by other parties. */ ts->insert_chain = insert_chain; 5201c: 2548 0078 movel %a0,%a2@(120) <== NOT EXECUTED static void _Timer_server_Process_interval_watchdogs( Timer_server_Watchdogs *watchdogs, Chain_Control *fire_chain ) { Watchdog_Interval snapshot = _Watchdog_Ticks_since_boot; 52020: 2039 0007 7036 movel 77036 <_Watchdog_Ticks_since_boot>,%d0<== NOT EXECUTED /* * We assume adequate unsigned arithmetic here. */ Watchdog_Interval delta = snapshot - watchdogs->last_snapshot; 52026: 222a 003c movel %a2@(60),%d1 <== NOT EXECUTED watchdogs->last_snapshot = snapshot; 5202a: 2540 003c movel %d0,%a2@(60) <== NOT EXECUTED _Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain ); 5202e: 9081 subl %d1,%d0 <== NOT EXECUTED 52030: 2f03 movel %d3,%sp@- <== NOT EXECUTED 52032: 2f00 movel %d0,%sp@- <== NOT EXECUTED 52034: 2f05 movel %d5,%sp@- <== NOT EXECUTED 52036: 4e93 jsr %a3@ <== NOT EXECUTED static void _Timer_server_Process_tod_watchdogs( Timer_server_Watchdogs *watchdogs, Chain_Control *fire_chain ) { Watchdog_Interval snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch(); 52038: 2039 0007 6fb6 movel 76fb6 <_TOD_Now>,%d0 <== NOT EXECUTED /* * Process the seconds chain. Start by checking that the Time * of Day (TOD) has not been set backwards. If it has then * we want to adjust the watchdogs->Chain to indicate this. */ if ( snapshot > last_snapshot ) { 5203e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED Timer_server_Watchdogs *watchdogs, Chain_Control *fire_chain ) { Watchdog_Interval snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch(); Watchdog_Interval last_snapshot = watchdogs->last_snapshot; 52042: 222a 0074 movel %a2@(116),%d1 <== NOT EXECUTED /* * Process the seconds chain. Start by checking that the Time * of Day (TOD) has not been set backwards. If it has then * we want to adjust the watchdogs->Chain to indicate this. */ if ( snapshot > last_snapshot ) { 52046: b280 cmpl %d0,%d1 <== NOT EXECUTED 52048: 6412 bccs 5205c <_Timer_server_Body+0xba> <== NOT EXECUTED /* * This path is for normal forward movement and cases where the * TOD has been set forward. */ delta = snapshot - last_snapshot; _Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain ); 5204a: 2f03 movel %d3,%sp@- <== NOT EXECUTED 5204c: 2c00 movel %d0,%d6 <== NOT EXECUTED 5204e: 9c81 subl %d1,%d6 <== NOT EXECUTED 52050: 2f06 movel %d6,%sp@- <== NOT EXECUTED 52052: 2d40 ffdc movel %d0,%fp@(-36) <== NOT EXECUTED 52056: 2f02 movel %d2,%sp@- <== NOT EXECUTED 52058: 4e93 jsr %a3@ <== NOT EXECUTED 5205a: 6014 bras 52070 <_Timer_server_Body+0xce> <== NOT EXECUTED } else if ( snapshot < last_snapshot ) { 5205c: b280 cmpl %d0,%d1 <== NOT EXECUTED 5205e: 6318 blss 52078 <_Timer_server_Body+0xd6> <== NOT EXECUTED /* * The current TOD is before the last TOD which indicates that * TOD has been set backwards. */ delta = last_snapshot - snapshot; _Watchdog_Adjust( &watchdogs->Chain, WATCHDOG_BACKWARD, delta ); 52060: 9280 subl %d0,%d1 <== NOT EXECUTED 52062: 2f01 movel %d1,%sp@- <== NOT EXECUTED 52064: 4878 0001 pea 1 <== NOT EXECUTED 52068: 2d40 ffdc movel %d0,%fp@(-36) <== NOT EXECUTED 5206c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5206e: 4e95 jsr %a5@ <== NOT EXECUTED 52070: 202e ffdc movel %fp@(-36),%d0 <== NOT EXECUTED 52074: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED } watchdogs->last_snapshot = snapshot; 52078: 2540 0074 movel %d0,%a2@(116) <== NOT EXECUTED } static void _Timer_server_Process_insertions( Timer_server_Control *ts ) { while ( true ) { Timer_Control *timer = (Timer_Control *) _Chain_Get( ts->insert_chain ); 5207c: 202a 0078 movel %a2@(120),%d0 <== NOT EXECUTED 52080: 2f00 movel %d0,%sp@- <== NOT EXECUTED 52082: 4eb9 0005 2aa4 jsr 52aa4 <_Chain_Get> <== NOT EXECUTED if ( timer == NULL ) { 52088: 588f addql #4,%sp <== NOT EXECUTED } static void _Timer_server_Process_insertions( Timer_server_Control *ts ) { while ( true ) { Timer_Control *timer = (Timer_Control *) _Chain_Get( ts->insert_chain ); 5208a: 2040 moveal %d0,%a0 <== NOT EXECUTED if ( timer == NULL ) { 5208c: 4a80 tstl %d0 <== NOT EXECUTED 5208e: 6724 beqs 520b4 <_Timer_server_Body+0x112> <== NOT EXECUTED static void _Timer_server_Insert_timer( Timer_server_Control *ts, Timer_Control *timer ) { if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) { 52090: 2028 0038 movel %a0@(56),%d0 <== NOT EXECUTED 52094: 7201 moveq #1,%d1 <== NOT EXECUTED 52096: b280 cmpl %d0,%d1 <== NOT EXECUTED 52098: 6608 bnes 520a2 <_Timer_server_Body+0x100> <== NOT EXECUTED _Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker ); 5209a: 4868 0010 pea %a0@(16) <== NOT EXECUTED 5209e: 2f05 movel %d5,%sp@- <== NOT EXECUTED 520a0: 600c bras 520ae <_Timer_server_Body+0x10c> <== NOT EXECUTED } else if ( timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) { 520a2: 7c03 moveq #3,%d6 <== NOT EXECUTED 520a4: bc80 cmpl %d0,%d6 <== NOT EXECUTED 520a6: 66d4 bnes 5207c <_Timer_server_Body+0xda> <== NOT EXECUTED _Watchdog_Insert( &ts->TOD_watchdogs.Chain, &timer->Ticker ); 520a8: 4868 0010 pea %a0@(16) <== NOT EXECUTED 520ac: 2f02 movel %d2,%sp@- <== NOT EXECUTED 520ae: 4e94 jsr %a4@ <== NOT EXECUTED 520b0: 508f addql #8,%sp <== NOT EXECUTED 520b2: 60c8 bras 5207c <_Timer_server_Body+0xda> <== NOT EXECUTED * of zero it will be processed in the next iteration of the timer server * body loop. */ _Timer_server_Process_insertions( ts ); _ISR_Disable( level ); 520b4: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 520ba: 40c1 movew %sr,%d1 <== NOT EXECUTED 520bc: 8081 orl %d1,%d0 <== NOT EXECUTED 520be: 46c0 movew %d0,%sr <== NOT EXECUTED tmp = ts->insert_chain; 520c0: 202a 0078 movel %a2@(120),%d0 <== NOT EXECUTED if ( _Chain_Is_empty( insert_chain ) ) { 520c4: beae fff4 cmpl %fp@(-12),%d7 <== NOT EXECUTED 520c8: 6608 bnes 520d2 <_Timer_server_Body+0x130> <== NOT EXECUTED ts->insert_chain = NULL; 520ca: 42aa 0078 clrl %a2@(120) <== NOT EXECUTED do_loop = false; 520ce: 4200 clrb %d0 <== NOT EXECUTED 520d0: 6002 bras 520d4 <_Timer_server_Body+0x132> <== NOT EXECUTED */ _Timer_server_Process_insertions( ts ); _ISR_Disable( level ); tmp = ts->insert_chain; if ( _Chain_Is_empty( insert_chain ) ) { 520d2: 7001 moveq #1,%d0 <== NOT EXECUTED ts->insert_chain = NULL; do_loop = false; } _ISR_Enable( level ); 520d4: 46c1 movew %d1,%sr <== NOT EXECUTED * Afterwards all timer inserts are directed to this chain and the interval * and TOD chains will be no more modified by other parties. */ ts->insert_chain = insert_chain; while ( do_loop ) { 520d6: 4a00 tstb %d0 <== NOT EXECUTED 520d8: 6600 ff46 bnew 52020 <_Timer_server_Body+0x7e> <== NOT EXECUTED _Chain_Initialize_empty( &fire_chain ); while ( true ) { _Timer_server_Get_watchdogs_that_fire_now( ts, &insert_chain, &fire_chain ); if ( !_Chain_Is_empty( &fire_chain ) ) { 520dc: b8ae ffe8 cmpl %fp@(-24),%d4 <== NOT EXECUTED 520e0: 6742 beqs 52124 <_Timer_server_Body+0x182> <== NOT EXECUTED /* * It is essential that interrupts are disable here since an interrupt * service routine may remove a watchdog from the chain. */ _ISR_Disable( level ); 520e2: 2c3c 0000 0700 movel #1792,%d6 <== NOT EXECUTED 520e8: 2006 movel %d6,%d0 <== NOT EXECUTED 520ea: 40c1 movew %sr,%d1 <== NOT EXECUTED 520ec: 8081 orl %d1,%d0 <== NOT EXECUTED 520ee: 46c0 movew %d0,%sr <== NOT EXECUTED initialized = false; } #endif return status; } 520f0: 206e ffe8 moveal %fp@(-24),%a0 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected( Chain_Control *the_chain ) { if ( !_Chain_Is_empty(the_chain)) 520f4: b888 cmpl %a0,%d4 <== NOT EXECUTED 520f6: 6726 beqs 5211e <_Timer_server_Body+0x17c> <== NOT EXECUTED Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *old_first = head->next; Chain_Node *new_first = old_first->next; 520f8: 2250 moveal %a0@,%a1 <== NOT EXECUTED head->next = new_first; 520fa: 2d49 ffe8 movel %a1,%fp@(-24) <== NOT EXECUTED new_first->previous = head; 520fe: 2343 0004 movel %d3,%a1@(4) <== NOT EXECUTED * It is essential that interrupts are disable here since an interrupt * service routine may remove a watchdog from the chain. */ _ISR_Disable( level ); watchdog = (Watchdog_Control *) _Chain_Get_unprotected( &fire_chain ); if ( watchdog != NULL ) { 52102: 4a88 tstl %a0 <== NOT EXECUTED 52104: 6718 beqs 5211e <_Timer_server_Body+0x17c> <== NOT EXECUTED watchdog->state = WATCHDOG_INACTIVE; 52106: 42a8 0008 clrl %a0@(8) <== NOT EXECUTED _ISR_Enable( level ); 5210a: 46c1 movew %d1,%sr <== NOT EXECUTED /* * The timer server may block here and wait for resources or time. * The system watchdogs are inactive and will remain inactive since * the active flag of the timer server is true. */ (*watchdog->routine)( watchdog->id, watchdog->user_data ); 5210c: 2f28 0024 movel %a0@(36),%sp@- <== NOT EXECUTED 52110: 2f28 0020 movel %a0@(32),%sp@- <== NOT EXECUTED 52114: 2068 001c moveal %a0@(28),%a0 <== NOT EXECUTED 52118: 4e90 jsr %a0@ <== NOT EXECUTED } 5211a: 508f addql #8,%sp <== NOT EXECUTED 5211c: 60ca bras 520e8 <_Timer_server_Body+0x146> <== NOT EXECUTED watchdog = (Watchdog_Control *) _Chain_Get_unprotected( &fire_chain ); if ( watchdog != NULL ) { watchdog->state = WATCHDOG_INACTIVE; _ISR_Enable( level ); } else { _ISR_Enable( level ); 5211e: 46c1 movew %d1,%sr <== NOT EXECUTED 52120: 6000 fef0 braw 52012 <_Timer_server_Body+0x70> <== NOT EXECUTED static void _Timer_server_Stop_interval_system_watchdog( Timer_server_Control *ts ) { _Watchdog_Remove( &ts->Interval_watchdogs.System_watchdog ); 52124: 49f9 0005 5fd4 lea 55fd4 <_Watchdog_Remove>,%a4 <== NOT EXECUTED * the active flag of the timer server is true. */ (*watchdog->routine)( watchdog->id, watchdog->user_data ); } } else { ts->active = false; 5212a: 4200 clrb %d0 <== NOT EXECUTED 5212c: 1540 007c moveb %d0,%a2@(124) <== NOT EXECUTED /* * Block until there is something to do. */ _Thread_Disable_dispatch(); 52130: 4eba fd96 jsr %pc@(51ec8 <_Thread_Disable_dispatch>) <== NOT EXECUTED _Thread_Set_state( ts->thread, STATES_DELAYING ); 52134: 4878 0008 pea 8 <== NOT EXECUTED 52138: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 5213a: 4eb9 0005 5758 jsr 55758 <_Thread_Set_state> <== NOT EXECUTED _Timer_server_Reset_interval_system_watchdog( ts ); 52140: 2f0a movel %a2,%sp@- <== NOT EXECUTED 52142: 4eba fd9a jsr %pc@(51ede <_Timer_server_Reset_interval_system_watchdog>)<== NOT EXECUTED _Timer_server_Reset_tod_system_watchdog( ts ); 52146: 2f0a movel %a2,%sp@- <== NOT EXECUTED 52148: 4eba fdf4 jsr %pc@(51f3e <_Timer_server_Reset_tod_system_watchdog>)<== NOT EXECUTED _Thread_Enable_dispatch(); 5214c: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED ts->active = true; 52152: 7201 moveq #1,%d1 <== NOT EXECUTED 52154: 1541 007c moveb %d1,%a2@(124) <== NOT EXECUTED static void _Timer_server_Stop_interval_system_watchdog( Timer_server_Control *ts ) { _Watchdog_Remove( &ts->Interval_watchdogs.System_watchdog ); 52158: 2f2e ffe4 movel %fp@(-28),%sp@- <== NOT EXECUTED 5215c: 4e94 jsr %a4@ <== NOT EXECUTED static void _Timer_server_Stop_tod_system_watchdog( Timer_server_Control *ts ) { _Watchdog_Remove( &ts->TOD_watchdogs.System_watchdog ); 5215e: 2f2e ffe0 movel %fp@(-32),%sp@- <== NOT EXECUTED 52162: 4e94 jsr %a4@ <== NOT EXECUTED 52164: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 52168: 6000 fea8 braw 52012 <_Timer_server_Body+0x70> <== NOT EXECUTED =============================================================================== 00051ede <_Timer_server_Reset_interval_system_watchdog>: } static void _Timer_server_Reset_interval_system_watchdog( Timer_server_Control *ts ) { 51ede: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 51ee2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 51ee4: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 51ee8: 2f02 movel %d2,%sp@- <== NOT EXECUTED static void _Timer_server_Stop_interval_system_watchdog( Timer_server_Control *ts ) { _Watchdog_Remove( &ts->Interval_watchdogs.System_watchdog ); 51eea: 240a movel %a2,%d2 <== NOT EXECUTED 51eec: 5082 addql #8,%d2 <== NOT EXECUTED 51eee: 2f02 movel %d2,%sp@- <== NOT EXECUTED 51ef0: 4eb9 0005 5fd4 jsr 55fd4 <_Watchdog_Remove> <== NOT EXECUTED { ISR_Level level; _Timer_server_Stop_interval_system_watchdog( ts ); _ISR_Disable( level ); 51ef6: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 51efc: 40c1 movew %sr,%d1 <== NOT EXECUTED 51efe: 8081 orl %d1,%d0 <== NOT EXECUTED 51f00: 46c0 movew %d0,%sr <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( const Chain_Control *the_chain ) { return _Chain_Immutable_first( the_chain ) == _Chain_Immutable_tail( the_chain ); 51f02: 200a movel %a2,%d0 <== NOT EXECUTED 51f04: 0680 0000 0034 addil #52,%d0 <== NOT EXECUTED if ( !_Chain_Is_empty( &ts->Interval_watchdogs.Chain ) ) { 51f0a: 588f addql #4,%sp <== NOT EXECUTED initialized = false; } #endif return status; } 51f0c: 206a 0030 moveal %a2@(48),%a0 <== NOT EXECUTED ISR_Level level; _Timer_server_Stop_interval_system_watchdog( ts ); _ISR_Disable( level ); if ( !_Chain_Is_empty( &ts->Interval_watchdogs.Chain ) ) { 51f10: b088 cmpl %a0,%d0 <== NOT EXECUTED 51f12: 671c beqs 51f30 <_Timer_server_Reset_interval_system_watchdog+0x52><== NOT EXECUTED Watchdog_Interval delta_interval = 51f14: 2028 0010 movel %a0@(16),%d0 <== NOT EXECUTED _Watchdog_First( &ts->Interval_watchdogs.Chain )->delta_interval; _ISR_Enable( level ); 51f18: 46c1 movew %d1,%sr <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 51f1a: 2540 0014 movel %d0,%a2@(20) <== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 51f1e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 51f20: 4879 0007 6fec pea 76fec <_Watchdog_Ticks_chain> <== NOT EXECUTED 51f26: 4eb9 0005 5eac jsr 55eac <_Watchdog_Insert> <== NOT EXECUTED 51f2c: 508f addql #8,%sp <== NOT EXECUTED 51f2e: 6002 bras 51f32 <_Timer_server_Reset_interval_system_watchdog+0x54><== NOT EXECUTED _Watchdog_Insert_ticks( &ts->Interval_watchdogs.System_watchdog, delta_interval ); } else { _ISR_Enable( level ); 51f30: 46c1 movew %d1,%sr <== NOT EXECUTED } } 51f32: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 51f36: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 51f3a: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00051f3e <_Timer_server_Reset_tod_system_watchdog>: } static void _Timer_server_Reset_tod_system_watchdog( Timer_server_Control *ts ) { 51f3e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 51f42: 2f0a movel %a2,%sp@- <== NOT EXECUTED 51f44: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 51f48: 2f02 movel %d2,%sp@- <== NOT EXECUTED static void _Timer_server_Stop_tod_system_watchdog( Timer_server_Control *ts ) { _Watchdog_Remove( &ts->TOD_watchdogs.System_watchdog ); 51f4a: 240a movel %a2,%d2 <== NOT EXECUTED 51f4c: 0682 0000 0040 addil #64,%d2 <== NOT EXECUTED 51f52: 2f02 movel %d2,%sp@- <== NOT EXECUTED 51f54: 4eb9 0005 5fd4 jsr 55fd4 <_Watchdog_Remove> <== NOT EXECUTED { ISR_Level level; _Timer_server_Stop_tod_system_watchdog( ts ); _ISR_Disable( level ); 51f5a: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 51f60: 40c1 movew %sr,%d1 <== NOT EXECUTED 51f62: 8081 orl %d1,%d0 <== NOT EXECUTED 51f64: 46c0 movew %d0,%sr <== NOT EXECUTED 51f66: 200a movel %a2,%d0 <== NOT EXECUTED 51f68: 0680 0000 006c addil #108,%d0 <== NOT EXECUTED if ( !_Chain_Is_empty( &ts->TOD_watchdogs.Chain ) ) { 51f6e: 588f addql #4,%sp <== NOT EXECUTED initialized = false; } #endif return status; } 51f70: 206a 0068 moveal %a2@(104),%a0 <== NOT EXECUTED ISR_Level level; _Timer_server_Stop_tod_system_watchdog( ts ); _ISR_Disable( level ); if ( !_Chain_Is_empty( &ts->TOD_watchdogs.Chain ) ) { 51f74: b088 cmpl %a0,%d0 <== NOT EXECUTED 51f76: 671c beqs 51f94 <_Timer_server_Reset_tod_system_watchdog+0x56><== NOT EXECUTED Watchdog_Interval delta_interval = 51f78: 2028 0010 movel %a0@(16),%d0 <== NOT EXECUTED _Watchdog_First( &ts->TOD_watchdogs.Chain )->delta_interval; _ISR_Enable( level ); 51f7c: 46c1 movew %d1,%sr <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 51f7e: 2540 004c movel %d0,%a2@(76) <== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog ); 51f82: 2f02 movel %d2,%sp@- <== NOT EXECUTED 51f84: 4879 0007 6fe0 pea 76fe0 <_Watchdog_Seconds_chain> <== NOT EXECUTED 51f8a: 4eb9 0005 5eac jsr 55eac <_Watchdog_Insert> <== NOT EXECUTED 51f90: 508f addql #8,%sp <== NOT EXECUTED 51f92: 6002 bras 51f96 <_Timer_server_Reset_tod_system_watchdog+0x58><== NOT EXECUTED _Watchdog_Insert_seconds( &ts->TOD_watchdogs.System_watchdog, delta_interval ); } else { _ISR_Enable( level ); 51f94: 46c1 movew %d1,%sr <== NOT EXECUTED } } 51f96: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 51f9a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 51f9e: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0005216c <_Timer_server_Schedule_operation_method>: static void _Timer_server_Schedule_operation_method( Timer_server_Control *ts, Timer_Control *timer ) { 5216c: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 52170: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED 52174: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 52178: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED if ( ts->insert_chain == NULL ) { 5217c: 202a 0078 movel %a2@(120),%d0 <== NOT EXECUTED 52180: 6600 00ea bnew 5226c <_Timer_server_Schedule_operation_method+0x100><== NOT EXECUTED * is the reference point for the delta chain. Thus if we do not update the * reference point we have to add DT to the initial delta of the watchdog * being inserted. This could result in an integer overflow. */ _Thread_Disable_dispatch(); 52184: 4eba fd42 jsr %pc@(51ec8 <_Thread_Disable_dispatch>) <== NOT EXECUTED if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) { 52188: 202b 0038 movel %a3@(56),%d0 <== NOT EXECUTED 5218c: 7201 moveq #1,%d1 <== NOT EXECUTED 5218e: b280 cmpl %d0,%d1 <== NOT EXECUTED 52190: 665c bnes 521ee <_Timer_server_Schedule_operation_method+0x82><== NOT EXECUTED /* * We have to advance the last known ticks value of the server and update * the watchdog chain accordingly. */ _ISR_Disable( level ); 52192: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 52198: 40c2 movew %sr,%d2 <== NOT EXECUTED 5219a: 8082 orl %d2,%d0 <== NOT EXECUTED 5219c: 46c0 movew %d0,%sr <== NOT EXECUTED snapshot = _Watchdog_Ticks_since_boot; 5219e: 2039 0007 7036 movel 77036 <_Watchdog_Ticks_since_boot>,%d0<== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( const Chain_Control *the_chain ) { return _Chain_Immutable_first( the_chain ) == _Chain_Immutable_tail( the_chain ); 521a4: 43ea 0034 lea %a2@(52),%a1 <== NOT EXECUTED last_snapshot = ts->Interval_watchdogs.last_snapshot; 521a8: 222a 003c movel %a2@(60),%d1 <== NOT EXECUTED initialized = false; } #endif return status; } 521ac: 206a 0030 moveal %a2@(48),%a0 <== NOT EXECUTED * the watchdog chain accordingly. */ _ISR_Disable( level ); snapshot = _Watchdog_Ticks_since_boot; last_snapshot = ts->Interval_watchdogs.last_snapshot; if ( !_Chain_Is_empty( &ts->Interval_watchdogs.Chain ) ) { 521b0: b3c8 cmpal %a0,%a1 <== NOT EXECUTED 521b2: 6716 beqs 521ca <_Timer_server_Schedule_operation_method+0x5e><== NOT EXECUTED first_watchdog = _Watchdog_First( &ts->Interval_watchdogs.Chain ); /* * We assume adequate unsigned arithmetic here. */ delta = snapshot - last_snapshot; 521b4: 2240 moveal %d0,%a1 <== NOT EXECUTED 521b6: 93c1 subal %d1,%a1 <== NOT EXECUTED delta_interval = first_watchdog->delta_interval; 521b8: 2228 0010 movel %a0@(16),%d1 <== NOT EXECUTED if (delta_interval > delta) { 521bc: b3c1 cmpal %d1,%a1 <== NOT EXECUTED 521be: 6404 bccs 521c4 <_Timer_server_Schedule_operation_method+0x58><== NOT EXECUTED delta_interval -= delta; 521c0: 9289 subl %a1,%d1 <== NOT EXECUTED 521c2: 6002 bras 521c6 <_Timer_server_Schedule_operation_method+0x5a><== NOT EXECUTED } else { delta_interval = 0; 521c4: 4281 clrl %d1 <== NOT EXECUTED } first_watchdog->delta_interval = delta_interval; 521c6: 2141 0010 movel %d1,%a0@(16) <== NOT EXECUTED } ts->Interval_watchdogs.last_snapshot = snapshot; 521ca: 2540 003c movel %d0,%a2@(60) <== NOT EXECUTED _ISR_Enable( level ); 521ce: 46c2 movew %d2,%sr <== NOT EXECUTED _Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker ); 521d0: 486b 0010 pea %a3@(16) <== NOT EXECUTED 521d4: 486a 0030 pea %a2@(48) <== NOT EXECUTED 521d8: 4eb9 0005 5eac jsr 55eac <_Watchdog_Insert> <== NOT EXECUTED if ( !ts->active ) { 521de: 508f addql #8,%sp <== NOT EXECUTED 521e0: 102a 007c moveb %a2@(124),%d0 <== NOT EXECUTED 521e4: 6678 bnes 5225e <_Timer_server_Schedule_operation_method+0xf2><== NOT EXECUTED _Timer_server_Reset_interval_system_watchdog( ts ); 521e6: 2f0a movel %a2,%sp@- <== NOT EXECUTED 521e8: 4eba fcf4 jsr %pc@(51ede <_Timer_server_Reset_interval_system_watchdog>)<== NOT EXECUTED 521ec: 606e bras 5225c <_Timer_server_Schedule_operation_method+0xf0><== NOT EXECUTED } } else if ( timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) { 521ee: 7203 moveq #3,%d1 <== NOT EXECUTED 521f0: b280 cmpl %d0,%d1 <== NOT EXECUTED 521f2: 666a bnes 5225e <_Timer_server_Schedule_operation_method+0xf2><== NOT EXECUTED /* * We have to advance the last known seconds value of the server and update * the watchdog chain accordingly. */ _ISR_Disable( level ); 521f4: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 521fa: 40c2 movew %sr,%d2 <== NOT EXECUTED 521fc: 8082 orl %d2,%d0 <== NOT EXECUTED 521fe: 46c0 movew %d0,%sr <== NOT EXECUTED 52200: 200a movel %a2,%d0 <== NOT EXECUTED 52202: 0680 0000 006c addil #108,%d0 <== NOT EXECUTED snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch(); 52208: 2239 0007 6fb6 movel 76fb6 <_TOD_Now>,%d1 <== NOT EXECUTED last_snapshot = ts->TOD_watchdogs.last_snapshot; 5220e: 226a 0074 moveal %a2@(116),%a1 <== NOT EXECUTED initialized = false; } #endif return status; } 52212: 206a 0068 moveal %a2@(104),%a0 <== NOT EXECUTED * the watchdog chain accordingly. */ _ISR_Disable( level ); snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch(); last_snapshot = ts->TOD_watchdogs.last_snapshot; if ( !_Chain_Is_empty( &ts->TOD_watchdogs.Chain ) ) { 52216: b088 cmpl %a0,%d0 <== NOT EXECUTED 52218: 6720 beqs 5223a <_Timer_server_Schedule_operation_method+0xce><== NOT EXECUTED first_watchdog = _Watchdog_First( &ts->TOD_watchdogs.Chain ); delta_interval = first_watchdog->delta_interval; 5221a: 2028 0010 movel %a0@(16),%d0 <== NOT EXECUTED if ( snapshot > last_snapshot ) { 5221e: b3c1 cmpal %d1,%a1 <== NOT EXECUTED 52220: 640c bccs 5222e <_Timer_server_Schedule_operation_method+0xc2><== NOT EXECUTED /* * We advanced in time. */ delta = snapshot - last_snapshot; 52222: 2841 moveal %d1,%a4 <== NOT EXECUTED 52224: 99c9 subal %a1,%a4 <== NOT EXECUTED if (delta_interval > delta) { 52226: b9c0 cmpal %d0,%a4 <== NOT EXECUTED 52228: 640a bccs 52234 <_Timer_server_Schedule_operation_method+0xc8><== NOT EXECUTED delta_interval -= delta; 5222a: 908c subl %a4,%d0 <== NOT EXECUTED 5222c: 6008 bras 52236 <_Timer_server_Schedule_operation_method+0xca><== NOT EXECUTED } } else { /* * Someone put us in the past. */ delta = last_snapshot - snapshot; 5222e: d089 addl %a1,%d0 <== NOT EXECUTED delta_interval += delta; 52230: 9081 subl %d1,%d0 <== NOT EXECUTED 52232: 6002 bras 52236 <_Timer_server_Schedule_operation_method+0xca><== NOT EXECUTED */ delta = snapshot - last_snapshot; if (delta_interval > delta) { delta_interval -= delta; } else { delta_interval = 0; 52234: 4280 clrl %d0 <== NOT EXECUTED * Someone put us in the past. */ delta = last_snapshot - snapshot; delta_interval += delta; } first_watchdog->delta_interval = delta_interval; 52236: 2140 0010 movel %d0,%a0@(16) <== NOT EXECUTED } ts->TOD_watchdogs.last_snapshot = snapshot; 5223a: 2541 0074 movel %d1,%a2@(116) <== NOT EXECUTED _ISR_Enable( level ); 5223e: 46c2 movew %d2,%sr <== NOT EXECUTED _Watchdog_Insert( &ts->TOD_watchdogs.Chain, &timer->Ticker ); 52240: 486b 0010 pea %a3@(16) <== NOT EXECUTED 52244: 486a 0068 pea %a2@(104) <== NOT EXECUTED 52248: 4eb9 0005 5eac jsr 55eac <_Watchdog_Insert> <== NOT EXECUTED if ( !ts->active ) { 5224e: 508f addql #8,%sp <== NOT EXECUTED 52250: 102a 007c moveb %a2@(124),%d0 <== NOT EXECUTED 52254: 6608 bnes 5225e <_Timer_server_Schedule_operation_method+0xf2><== NOT EXECUTED _Timer_server_Reset_tod_system_watchdog( ts ); 52256: 2f0a movel %a2,%sp@- <== NOT EXECUTED 52258: 4eba fce4 jsr %pc@(51f3e <_Timer_server_Reset_tod_system_watchdog>)<== NOT EXECUTED 5225c: 588f addql #4,%sp <== NOT EXECUTED * critical section. We have to use the protected chain methods because * we may be interrupted by a higher priority interrupt. */ _Chain_Append( ts->insert_chain, &timer->Object.Node ); } } 5225e: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED 52264: 4e5e unlk %fp <== NOT EXECUTED if ( !ts->active ) { _Timer_server_Reset_tod_system_watchdog( ts ); } } _Thread_Enable_dispatch(); 52266: 4ef9 0005 4eb6 jmp 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED * server is not preemptible, so we must be in interrupt context here. No * thread dispatch will happen until the timer server finishes its * critical section. We have to use the protected chain methods because * we may be interrupted by a higher priority interrupt. */ _Chain_Append( ts->insert_chain, &timer->Object.Node ); 5226c: 202a 0078 movel %a2@(120),%d0 <== NOT EXECUTED 52270: 2d4b 000c movel %a3,%fp@(12) <== NOT EXECUTED } } 52274: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED * server is not preemptible, so we must be in interrupt context here. No * thread dispatch will happen until the timer server finishes its * critical section. We have to use the protected chain methods because * we may be interrupted by a higher priority interrupt. */ _Chain_Append( ts->insert_chain, &timer->Object.Node ); 5227a: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED } } 5227e: 4e5e unlk %fp <== NOT EXECUTED * server is not preemptible, so we must be in interrupt context here. No * thread dispatch will happen until the timer server finishes its * critical section. We have to use the protected chain methods because * we may be interrupted by a higher priority interrupt. */ _Chain_Append( ts->insert_chain, &timer->Object.Node ); 52280: 4ef9 0005 2a44 jmp 52a44 <_Chain_Append> <== NOT EXECUTED =============================================================================== 00048228 <_Timespec_Add_to>: uint32_t _Timespec_Add_to( struct timespec *time, const struct timespec *add ) { 48228: 4e56 0000 linkw %fp,#0 4822c: 226e 000c moveal %fp@(12),%a1 48230: 206e 0008 moveal %fp@(8),%a0 uint32_t seconds = add->tv_sec; 48234: 2011 movel %a1@,%d0 /* Add the basics */ time->tv_sec += add->tv_sec; 48236: d190 addl %d0,%a0@ time->tv_nsec += add->tv_nsec; 48238: 2229 0004 movel %a1@(4),%d1 4823c: d3a8 0004 addl %d1,%a0@(4) /* Now adjust it so nanoseconds is in range */ while ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) { 48240: 600e bras 48250 <_Timespec_Add_to+0x28> time->tv_nsec -= TOD_NANOSECONDS_PER_SECOND; time->tv_sec++; 48242: 5290 addql #1,%a0@ <== NOT EXECUTED time->tv_sec += add->tv_sec; time->tv_nsec += add->tv_nsec; /* Now adjust it so nanoseconds is in range */ while ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) { time->tv_nsec -= TOD_NANOSECONDS_PER_SECOND; 48244: 0681 c465 3600 addil #-1000000000,%d1 <== NOT EXECUTED time->tv_sec++; seconds++; 4824a: 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; 4824c: 2141 0004 movel %d1,%a0@(4) <== 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 ) { 48250: 2228 0004 movel %a0@(4),%d1 48254: 0c81 3b9a c9ff cmpil #999999999,%d1 4825a: 62e6 bhis 48242 <_Timespec_Add_to+0x1a> <== NEVER TAKEN time->tv_sec++; seconds++; } return seconds; } 4825c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00049654 <_Timespec_Divide>: const struct timespec *lhs, const struct timespec *rhs, uint32_t *ival_percentage, uint32_t *fval_percentage ) { 49654: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 49658: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4965c: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@ <== NOT EXECUTED /* * For math simplicity just convert the timespec to nanoseconds * in a 64-bit integer. */ left = lhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND; 49660: 2a10 movel %a0@,%d5 <== NOT EXECUTED left += lhs->tv_nsec; right = rhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND; 49662: 49f9 0005 aae8 lea 5aae8 <__muldi3>,%a4 <== NOT EXECUTED /* * For math simplicity just convert the timespec to nanoseconds * in a 64-bit integer. */ left = lhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND; left += lhs->tv_nsec; 49668: 2828 0004 movel %a0@(4),%d4 <== NOT EXECUTED right = rhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND; 4966c: 2f3c 3b9a ca00 movel #1000000000,%sp@- <== NOT EXECUTED const struct timespec *lhs, const struct timespec *rhs, uint32_t *ival_percentage, uint32_t *fval_percentage ) { 49672: 2a6e 000c moveal %fp@(12),%a5 <== NOT EXECUTED * For math simplicity just convert the timespec to nanoseconds * in a 64-bit integer. */ left = lhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND; left += lhs->tv_nsec; right = rhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND; 49676: 42a7 clrl %sp@- <== NOT EXECUTED const struct timespec *lhs, const struct timespec *rhs, uint32_t *ival_percentage, uint32_t *fval_percentage ) { 49678: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED * For math simplicity just convert the timespec to nanoseconds * in a 64-bit integer. */ left = lhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND; left += lhs->tv_nsec; right = rhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND; 4967c: 2f15 movel %a5@,%sp@- <== NOT EXECUTED 4967e: 5bc0 smi %d0 <== NOT EXECUTED 49680: 49c0 extbl %d0 <== NOT EXECUTED 49682: 2f00 movel %d0,%sp@- <== NOT EXECUTED const struct timespec *lhs, const struct timespec *rhs, uint32_t *ival_percentage, uint32_t *fval_percentage ) { 49684: 246e 0014 moveal %fp@(20),%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; right = rhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND; 49688: 4e94 jsr %a4@ <== NOT EXECUTED 4968a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4968e: 2040 moveal %d0,%a0 <== NOT EXECUTED 49690: 2241 moveal %d1,%a1 <== NOT EXECUTED right += rhs->tv_nsec; 49692: 262d 0004 movel %a5@(4),%d3 <== NOT EXECUTED 49696: 5bc2 smi %d2 <== NOT EXECUTED 49698: 49c2 extbl %d2 <== NOT EXECUTED 4969a: 2208 movel %a0,%d1 <== NOT EXECUTED 4969c: d689 addl %a1,%d3 <== NOT EXECUTED 4969e: d581 addxl %d1,%d2 <== NOT EXECUTED if ( right == 0 ) { 496a0: 6606 bnes 496a8 <_Timespec_Divide+0x54> <== NOT EXECUTED *ival_percentage = 0; 496a2: 4293 clrl %a3@ <== NOT EXECUTED *fval_percentage = 0; 496a4: 4292 clrl %a2@ <== NOT EXECUTED return; 496a6: 607a bras 49722 <_Timespec_Divide+0xce> <== 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; 496a8: 2f3c 3b9a ca00 movel #1000000000,%sp@- <== NOT EXECUTED 496ae: 42a7 clrl %sp@- <== NOT EXECUTED 496b0: 2f05 movel %d5,%sp@- <== NOT EXECUTED 496b2: 5bc1 smi %d1 <== NOT EXECUTED 496b4: 49c1 extbl %d1 <== NOT EXECUTED 496b6: 2f01 movel %d1,%sp@- <== NOT EXECUTED left += lhs->tv_nsec; 496b8: 2a04 movel %d4,%d5 <== NOT EXECUTED 496ba: 5bc4 smi %d4 <== NOT EXECUTED 496bc: 49c4 extbl %d4 <== NOT EXECUTED /* * For math simplicity just convert the timespec to nanoseconds * in a 64-bit integer. */ left = lhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND; 496be: 4e94 jsr %a4@ <== NOT EXECUTED 496c0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 496c4: 2040 moveal %d0,%a0 <== NOT EXECUTED 496c6: 2241 moveal %d1,%a1 <== NOT EXECUTED * Put it back in the timespec result. * * TODO: Rounding on the last digit of the fval. */ answer = (left * 100000) / right; 496c8: 2f3c 0001 86a0 movel #100000,%sp@- <== NOT EXECUTED 496ce: 2008 movel %a0,%d0 <== NOT EXECUTED 496d0: 2209 movel %a1,%d1 <== NOT EXECUTED 496d2: 42a7 clrl %sp@- <== NOT EXECUTED 496d4: d285 addl %d5,%d1 <== NOT EXECUTED 496d6: d184 addxl %d4,%d0 <== NOT EXECUTED 496d8: 2f01 movel %d1,%sp@- <== NOT EXECUTED 496da: 2f00 movel %d0,%sp@- <== NOT EXECUTED 496dc: 4e94 jsr %a4@ <== NOT EXECUTED 496de: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 496e2: 49f9 0005 b334 lea 5b334 <__udivdi3>,%a4 <== NOT EXECUTED 496e8: 2f03 movel %d3,%sp@- <== NOT EXECUTED 496ea: 2f02 movel %d2,%sp@- <== NOT EXECUTED 496ec: 2f01 movel %d1,%sp@- <== NOT EXECUTED 496ee: 2f00 movel %d0,%sp@- <== NOT EXECUTED 496f0: 4e94 jsr %a4@ <== NOT EXECUTED 496f2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 496f6: 2400 movel %d0,%d2 <== NOT EXECUTED *ival_percentage = answer / 1000; 496f8: 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; 496fc: 2601 movel %d1,%d3 <== NOT EXECUTED *ival_percentage = answer / 1000; 496fe: 42a7 clrl %sp@- <== NOT EXECUTED 49700: 2f01 movel %d1,%sp@- <== NOT EXECUTED 49702: 2f02 movel %d2,%sp@- <== NOT EXECUTED 49704: 4e94 jsr %a4@ <== NOT EXECUTED 49706: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4970a: 2681 movel %d1,%a3@ <== NOT EXECUTED *fval_percentage = answer % 1000; 4970c: 4878 03e8 pea 3e8 <== NOT EXECUTED 49710: 42a7 clrl %sp@- <== NOT EXECUTED 49712: 2f03 movel %d3,%sp@- <== NOT EXECUTED 49714: 2f02 movel %d2,%sp@- <== NOT EXECUTED 49716: 4eb9 0005 b6c0 jsr 5b6c0 <__umoddi3> <== NOT EXECUTED 4971c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 49720: 2481 movel %d1,%a2@ <== NOT EXECUTED } 49722: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED 49728: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00049888 <_Timespec_Divide_by_integer>: void _Timespec_Divide_by_integer( const struct timespec *time, uint32_t iterations, struct timespec *result ) { 49888: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 4988c: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%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; 49890: 2f3c 3b9a ca00 movel #1000000000,%sp@- <== NOT EXECUTED void _Timespec_Divide_by_integer( const struct timespec *time, uint32_t iterations, struct timespec *result ) { 49896: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED /* * For math simplicity just convert the timespec to nanoseconds * in a 64-bit integer. */ t = time->tv_sec; t *= TOD_NANOSECONDS_PER_SECOND; 4989a: 42a7 clrl %sp@- <== NOT EXECUTED void _Timespec_Divide_by_integer( const struct timespec *time, uint32_t iterations, struct timespec *result ) { 4989c: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED /* * For math simplicity just convert the timespec to nanoseconds * in a 64-bit integer. */ t = time->tv_sec; t *= TOD_NANOSECONDS_PER_SECOND; 498a0: 2f13 movel %a3@,%sp@- <== NOT EXECUTED 498a2: 5bc0 smi %d0 <== NOT EXECUTED 498a4: 49c0 extbl %d0 <== NOT EXECUTED 498a6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 498a8: 4eb9 0005 a7b4 jsr 5a7b4 <__muldi3> <== NOT EXECUTED 498ae: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 498b2: 2040 moveal %d0,%a0 <== NOT EXECUTED 498b4: 2241 moveal %d1,%a1 <== NOT EXECUTED t += time->tv_nsec; 498b6: 222b 0004 movel %a3@(4),%d1 <== NOT EXECUTED 498ba: 5bc0 smi %d0 <== NOT EXECUTED 498bc: 49c0 extbl %d0 <== NOT EXECUTED /* * Divide to get nanoseconds per iteration */ t /= iterations; 498be: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 498c2: 47f9 0005 b000 lea 5b000 <__udivdi3>,%a3 <== NOT EXECUTED 498c8: 2408 movel %a0,%d2 <== NOT EXECUTED 498ca: 2609 movel %a1,%d3 <== NOT EXECUTED 498cc: 42a7 clrl %sp@- <== NOT EXECUTED 498ce: d681 addl %d1,%d3 <== NOT EXECUTED 498d0: d580 addxl %d0,%d2 <== NOT EXECUTED 498d2: 2f03 movel %d3,%sp@- <== NOT EXECUTED 498d4: 2f02 movel %d2,%sp@- <== NOT EXECUTED 498d6: 4e93 jsr %a3@ <== NOT EXECUTED 498d8: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 498dc: 2400 movel %d0,%d2 <== NOT EXECUTED 498de: 2601 movel %d1,%d3 <== NOT EXECUTED /* * Put it back in the timespec result */ result->tv_sec = t / TOD_NANOSECONDS_PER_SECOND; 498e0: 2f3c 3b9a ca00 movel #1000000000,%sp@- <== NOT EXECUTED 498e6: 42a7 clrl %sp@- <== NOT EXECUTED 498e8: 2f01 movel %d1,%sp@- <== NOT EXECUTED 498ea: 2f02 movel %d2,%sp@- <== NOT EXECUTED 498ec: 4e93 jsr %a3@ <== NOT EXECUTED 498ee: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 498f2: 2481 movel %d1,%a2@ <== NOT EXECUTED result->tv_nsec = t % TOD_NANOSECONDS_PER_SECOND; 498f4: 2f3c 3b9a ca00 movel #1000000000,%sp@- <== NOT EXECUTED 498fa: 42a7 clrl %sp@- <== NOT EXECUTED 498fc: 2f03 movel %d3,%sp@- <== NOT EXECUTED 498fe: 2f02 movel %d2,%sp@- <== NOT EXECUTED 49900: 4eb9 0005 b38c jsr 5b38c <__umoddi3> <== NOT EXECUTED 49906: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4990a: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED } 4990e: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED 49914: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0005b4e0 <_Timespec_From_ticks>: struct timespec *time ) { uint32_t usecs; usecs = ticks * rtems_configuration_get_microseconds_per_tick(); 5b4e0: 43f9 0005 da00 lea 5da00 ,%a1 <== NOT EXECUTED void _Timespec_From_ticks( uint32_t ticks, struct timespec *time ) { 5b4e6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED uint32_t usecs; usecs = ticks * rtems_configuration_get_microseconds_per_tick(); 5b4ea: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 5b4ee: 4c11 0800 mulsl %a1@,%d0 <== NOT EXECUTED void _Timespec_From_ticks( uint32_t ticks, struct timespec *time ) { 5b4f2: 2f02 movel %d2,%sp@- <== NOT EXECUTED uint32_t usecs; usecs = ticks * rtems_configuration_get_microseconds_per_tick(); time->tv_sec = usecs / TOD_MICROSECONDS_PER_SECOND; 5b4f4: 243c 000f 4240 movel #1000000,%d2 <== NOT EXECUTED void _Timespec_From_ticks( uint32_t ticks, struct timespec *time ) { 5b4fa: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED uint32_t usecs; usecs = ticks * rtems_configuration_get_microseconds_per_tick(); time->tv_sec = usecs / TOD_MICROSECONDS_PER_SECOND; 5b4fe: 4c42 0001 remul %d2,%d1,%d0 <== NOT EXECUTED 5b502: 4c42 0000 remul %d2,%d0,%d0 <== NOT EXECUTED time->tv_nsec = (usecs % TOD_MICROSECONDS_PER_SECOND) * TOD_NANOSECONDS_PER_MICROSECOND; } 5b506: 241f movel %sp@+,%d2 <== NOT EXECUTED 5b508: 4e5e unlk %fp <== NOT EXECUTED { uint32_t usecs; usecs = ticks * rtems_configuration_get_microseconds_per_tick(); time->tv_sec = usecs / TOD_MICROSECONDS_PER_SECOND; 5b50a: 2080 movel %d0,%a0@ <== NOT EXECUTED time->tv_nsec = (usecs % TOD_MICROSECONDS_PER_SECOND) * 5b50c: 203c 0000 03e8 movel #1000,%d0 <== NOT EXECUTED 5b512: 4c01 0800 mulsl %d1,%d0 <== NOT EXECUTED 5b516: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED TOD_NANOSECONDS_PER_MICROSECOND; } =============================================================================== 000488d8 <_Timespec_Greater_than>: bool _Timespec_Greater_than( const struct timespec *lhs, const struct timespec *rhs ) { 488d8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 488dc: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED 488e0: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED if ( lhs->tv_sec > rhs->tv_sec ) 488e4: 2211 movel %a1@,%d1 <== NOT EXECUTED 488e6: 2010 movel %a0@,%d0 <== NOT EXECUTED 488e8: b081 cmpl %d1,%d0 <== NOT EXECUTED 488ea: 6d10 blts 488fc <_Timespec_Greater_than+0x24> <== NOT EXECUTED return true; if ( lhs->tv_sec < rhs->tv_sec ) 488ec: 6e12 bgts 48900 <_Timespec_Greater_than+0x28> <== NOT EXECUTED #include #include #include bool _Timespec_Greater_than( 488ee: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED 488f2: b1e9 0004 cmpal %a1@(4),%a0 <== NOT EXECUTED 488f6: 5dc0 slt %d0 <== NOT EXECUTED 488f8: 4480 negl %d0 <== NOT EXECUTED 488fa: 6006 bras 48902 <_Timespec_Greater_than+0x2a> <== NOT EXECUTED const struct timespec *lhs, const struct timespec *rhs ) { if ( lhs->tv_sec > rhs->tv_sec ) return true; 488fc: 7001 moveq #1,%d0 <== NOT EXECUTED 488fe: 6002 bras 48902 <_Timespec_Greater_than+0x2a> <== NOT EXECUTED if ( lhs->tv_sec < rhs->tv_sec ) return false; 48900: 4200 clrb %d0 <== NOT EXECUTED /* ASSERT: lhs->tv_sec == rhs->tv_sec */ if ( lhs->tv_nsec > rhs->tv_nsec ) return true; return false; } 48902: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0005b51c <_Timespec_Is_valid>: #include bool _Timespec_Is_valid( const struct timespec *time ) { 5b51c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 5b520: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !time ) 5b524: 4a88 tstl %a0 <== NOT EXECUTED 5b526: 6716 beqs 5b53e <_Timespec_Is_valid+0x22> <== NOT EXECUTED return false; if ( time->tv_sec < 0 ) 5b528: 4a90 tstl %a0@ <== NOT EXECUTED 5b52a: 6d12 blts 5b53e <_Timespec_Is_valid+0x22> <== NOT EXECUTED return false; if ( time->tv_nsec < 0 ) 5b52c: 2028 0004 movel %a0@(4),%d0 <== NOT EXECUTED 5b530: 6d0c blts 5b53e <_Timespec_Is_valid+0x22> <== NOT EXECUTED #include #include #include bool _Timespec_Is_valid( 5b532: 0c80 3b9a c9ff cmpil #999999999,%d0 <== NOT EXECUTED 5b538: 53c0 sls %d0 <== NOT EXECUTED 5b53a: 4480 negl %d0 <== NOT EXECUTED 5b53c: 6002 bras 5b540 <_Timespec_Is_valid+0x24> <== NOT EXECUTED if ( time->tv_sec < 0 ) return false; if ( time->tv_nsec < 0 ) return false; 5b53e: 4200 clrb %d0 <== NOT EXECUTED if ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) return false; return true; } 5b540: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004ae98 <_Timespec_Less_than>: bool _Timespec_Less_than( const struct timespec *lhs, const struct timespec *rhs ) { 4ae98: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4ae9c: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED 4aea0: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED if ( lhs->tv_sec < rhs->tv_sec ) 4aea4: 2211 movel %a1@,%d1 <== NOT EXECUTED 4aea6: 2010 movel %a0@,%d0 <== NOT EXECUTED 4aea8: b081 cmpl %d1,%d0 <== NOT EXECUTED 4aeaa: 6e10 bgts 4aebc <_Timespec_Less_than+0x24> <== NOT EXECUTED return true; if ( lhs->tv_sec > rhs->tv_sec ) 4aeac: 6d12 blts 4aec0 <_Timespec_Less_than+0x28> <== NOT EXECUTED #include #include #include bool _Timespec_Less_than( 4aeae: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED 4aeb2: b1e9 0004 cmpal %a1@(4),%a0 <== NOT EXECUTED 4aeb6: 5ec0 sgt %d0 <== NOT EXECUTED 4aeb8: 4480 negl %d0 <== NOT EXECUTED 4aeba: 6006 bras 4aec2 <_Timespec_Less_than+0x2a> <== NOT EXECUTED const struct timespec *lhs, const struct timespec *rhs ) { if ( lhs->tv_sec < rhs->tv_sec ) return true; 4aebc: 7001 moveq #1,%d0 <== NOT EXECUTED 4aebe: 6002 bras 4aec2 <_Timespec_Less_than+0x2a> <== NOT EXECUTED if ( lhs->tv_sec > rhs->tv_sec ) return false; 4aec0: 4200 clrb %d0 <== NOT EXECUTED /* ASSERT: lhs->tv_sec == rhs->tv_sec */ if ( lhs->tv_nsec < rhs->tv_nsec ) return true; return false; } 4aec2: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00048260 <_Timespec_Subtract>: void _Timespec_Subtract( const struct timespec *start, const struct timespec *end, struct timespec *result ) { 48260: 4e56 0000 linkw %fp,#0 48264: 226e 0008 moveal %fp@(8),%a1 48268: 2f0a movel %a2,%sp@- 4826a: 246e 000c moveal %fp@(12),%a2 4826e: 206e 0010 moveal %fp@(16),%a0 if (end->tv_nsec < start->tv_nsec) { 48272: 222a 0004 movel %a2@(4),%d1 48276: 2029 0004 movel %a1@(4),%d0 void _Timespec_Subtract( const struct timespec *start, const struct timespec *end, struct timespec *result ) { 4827a: 2f02 movel %d2,%sp@- if (end->tv_nsec < start->tv_nsec) { 4827c: b081 cmpl %d1,%d0 4827e: 6f10 bles 48290 <_Timespec_Subtract+0x30> <== ALWAYS TAKEN result->tv_sec = end->tv_sec - start->tv_sec - 1; 48280: 2452 moveal %a2@,%a2 <== NOT EXECUTED 48282: 538a subql #1,%a2 <== NOT EXECUTED 48284: 95d1 subal %a1@,%a2 <== NOT EXECUTED result->tv_nsec = (TOD_NANOSECONDS_PER_SECOND - start->tv_nsec) + end->tv_nsec; 48286: 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; 4828c: 208a movel %a2,%a0@ <== NOT EXECUTED 4828e: 6006 bras 48296 <_Timespec_Subtract+0x36> <== NOT EXECUTED result->tv_nsec = (TOD_NANOSECONDS_PER_SECOND - start->tv_nsec) + end->tv_nsec; } else { result->tv_sec = end->tv_sec - start->tv_sec; 48290: 2412 movel %a2@,%d2 48292: 9491 subl %a1@,%d2 48294: 2082 movel %d2,%a0@ result->tv_nsec = end->tv_nsec - start->tv_nsec; } } 48296: 241f movel %sp@+,%d2 result->tv_sec = end->tv_sec - start->tv_sec - 1; result->tv_nsec = (TOD_NANOSECONDS_PER_SECOND - start->tv_nsec) + end->tv_nsec; } else { result->tv_sec = end->tv_sec - start->tv_sec; result->tv_nsec = end->tv_nsec - start->tv_nsec; 48298: 9280 subl %d0,%d1 } } 4829a: 245f moveal %sp@+,%a2 4829c: 4e5e unlk %fp result->tv_sec = end->tv_sec - start->tv_sec - 1; result->tv_nsec = (TOD_NANOSECONDS_PER_SECOND - start->tv_nsec) + end->tv_nsec; } else { result->tv_sec = end->tv_sec - start->tv_sec; result->tv_nsec = end->tv_nsec - start->tv_nsec; 4829e: 2141 0004 movel %d1,%a0@(4) } } =============================================================================== 0004b204 <_Timespec_To_ticks>: */ uint32_t _Timespec_To_ticks( const struct timespec *time ) { 4b204: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 4b208: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 4b20c: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED uint32_t ticks; if ( (time->tv_sec == 0) && (time->tv_nsec == 0) ) 4b210: 2412 movel %a2@,%d2 <== NOT EXECUTED 4b212: 6606 bnes 4b21a <_Timespec_To_ticks+0x16> <== NOT EXECUTED 4b214: 4aaa 0004 tstl %a2@(4) <== NOT EXECUTED 4b218: 672c beqs 4b246 <_Timespec_To_ticks+0x42> <== NOT EXECUTED return 0; ticks = time->tv_sec * TOD_TICKS_PER_SECOND; 4b21a: 4eb9 0004 c74c jsr 4c74c <== NOT EXECUTED ticks += time->tv_nsec / rtems_configuration_get_nanoseconds_per_tick(); 4b220: 2239 0005 cba0 movel 5cba0 ,%d1 <== NOT EXECUTED uint32_t ticks; if ( (time->tv_sec == 0) && (time->tv_nsec == 0) ) return 0; ticks = time->tv_sec * TOD_TICKS_PER_SECOND; 4b226: 4c02 0800 mulsl %d2,%d0 <== NOT EXECUTED ticks += time->tv_nsec / rtems_configuration_get_nanoseconds_per_tick(); 4b22a: 243c 0000 03e8 movel #1000,%d2 <== NOT EXECUTED 4b230: 4c02 1800 mulsl %d2,%d1 <== NOT EXECUTED 4b234: 262a 0004 movel %a2@(4),%d3 <== NOT EXECUTED 4b238: 4c41 3003 remul %d1,%d3,%d3 <== NOT EXECUTED 4b23c: d083 addl %d3,%d0 <== NOT EXECUTED if (ticks) 4b23e: 6608 bnes 4b248 <_Timespec_To_ticks+0x44> <== NOT EXECUTED return ticks; return 1; 4b240: 103c 0001 moveb #1,%d0 <== NOT EXECUTED 4b244: 6002 bras 4b248 <_Timespec_To_ticks+0x44> <== NOT EXECUTED ) { uint32_t ticks; if ( (time->tv_sec == 0) && (time->tv_nsec == 0) ) return 0; 4b246: 4280 clrl %d0 <== NOT EXECUTED if (ticks) return ticks; return 1; } 4b248: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED 4b24e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000483ca <_User_extensions_Fatal>: void _User_extensions_Fatal ( Internal_errors_Source the_source, bool is_internal, Internal_errors_t the_error ) { 483ca: 4e56 fff0 linkw %fp,#-16 483ce: 48d7 041c moveml %d2-%d4/%a2,%sp@ 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 ); 483d2: 4282 clrl %d2 483d4: 142e 000f moveb %fp@(15),%d2 void _User_extensions_Fatal ( Internal_errors_Source the_source, bool is_internal, Internal_errors_t the_error ) { 483d8: 282e 0008 movel %fp@(8),%d4 483dc: 262e 0010 movel %fp@(16),%d3 the_extension = (User_extensions_Control *) the_node; if ( the_extension->Callouts.fatal != NULL ) (*the_extension->Callouts.fatal)( the_source, is_internal, the_error ); } } 483e0: 2479 0005 e5f0 moveal 5e5f0 <_User_extensions_List+0x8>,%a2 ) { Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _Chain_Last( &_User_extensions_List ); 483e6: 6018 bras 48400 <_User_extensions_Fatal+0x36> !_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 ) 483e8: 206a 0030 moveal %a2@(48),%a0 483ec: 4a88 tstl %a0 483ee: 670c beqs 483fc <_User_extensions_Fatal+0x32> (*the_extension->Callouts.fatal)( the_source, is_internal, the_error ); 483f0: 2f03 movel %d3,%sp@- 483f2: 2f02 movel %d2,%sp@- 483f4: 2f04 movel %d4,%sp@- 483f6: 4e90 jsr %a0@ 483f8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _Chain_Last( &_User_extensions_List ); !_Chain_Is_head( &_User_extensions_List, the_node ) ; the_node = the_node->previous ) { 483fc: 246a 0004 moveal %a2@(4),%a2 ) { Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _Chain_Last( &_User_extensions_List ); 48400: b5fc 0005 e5e8 cmpal #386536,%a2 48406: 66e0 bnes 483e8 <_User_extensions_Fatal+0x1e> <== ALWAYS TAKEN the_extension = (User_extensions_Control *) the_node; if ( the_extension->Callouts.fatal != NULL ) (*the_extension->Callouts.fatal)( the_source, is_internal, the_error ); } } 48408: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 4840e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000482a4 <_User_extensions_Handler_initialization>: #include #include #include void _User_extensions_Handler_initialization(void) { 482a4: 4e56 ffe8 linkw %fp,#-24 ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; 482a8: 203c 0005 e5ec movel #386540,%d0 482ae: 23c0 0005 e5e8 movel %d0,5e5e8 <_User_extensions_List> head->previous = NULL; tail->previous = head; 482b4: 203c 0005 e5e8 movel #386536,%d0 482ba: 23c0 0005 e5f0 movel %d0,5e5f0 <_User_extensions_List+0x8> ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; 482c0: 203c 0005 e480 movel #386176,%d0 482c6: 23c0 0005 e47c movel %d0,5e47c <_User_extensions_Switches_list> head->previous = NULL; tail->previous = head; 482cc: 203c 0005 e47c movel #386172,%d0 { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; head->previous = NULL; 482d2: 42b9 0005 e5ec clrl 5e5ec <_User_extensions_List+0x4> 482d8: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ User_extensions_Control *extension; uint32_t i; uint32_t number_of_extensions; User_extensions_Table *initial_extensions; number_of_extensions = Configuration.number_of_initial_extensions; 482dc: 2839 0005 cbce movel 5cbce ,%d4 initial_extensions = Configuration.User_extension_table; 482e2: 2639 0005 cbd2 movel 5cbd2 ,%d3 482e8: 42b9 0005 e480 clrl 5e480 <_User_extensions_Switches_list+0x4> tail->previous = head; 482ee: 23c0 0005 e484 movel %d0,5e484 <_User_extensions_Switches_list+0x8> _Chain_Initialize_empty( &_User_extensions_List ); _Chain_Initialize_empty( &_User_extensions_Switches_list ); if ( initial_extensions ) { 482f4: 4a83 tstl %d3 482f6: 6754 beqs 4834c <_User_extensions_Handler_initialization+0xa8><== NEVER TAKEN extension = (User_extensions_Control *) _Workspace_Allocate_or_fatal_error( 482f8: 7434 moveq #52,%d2 482fa: 4c04 2800 mulsl %d4,%d2 RTEMS_INLINE_ROUTINE void _User_extensions_Add_set_with_table( User_extensions_Control *extension, const User_extensions_Table *extension_table ) { extension->Callouts = *extension_table; 482fe: 49f9 0004 d1f8 lea 4d1f8 ,%a4 _User_extensions_Add_set( extension ); 48304: 47f9 0004 b254 lea 4b254 <_User_extensions_Add_set>,%a3 4830a: 2f02 movel %d2,%sp@- 4830c: 4eb9 0004 87c8 jsr 487c8 <_Workspace_Allocate_or_fatal_error> 48312: 2440 moveal %d0,%a2 number_of_extensions * sizeof( User_extensions_Control ) ); memset ( 48314: 2f02 movel %d2,%sp@- extension, 0, number_of_extensions * sizeof( User_extensions_Control ) ); for ( i = 0 ; i < number_of_extensions ; i++ ) { 48316: 4282 clrl %d2 extension = (User_extensions_Control *) _Workspace_Allocate_or_fatal_error( number_of_extensions * sizeof( User_extensions_Control ) ); memset ( 48318: 42a7 clrl %sp@- 4831a: 2f00 movel %d0,%sp@- 4831c: 4eb9 0004 d268 jsr 4d268 extension, 0, number_of_extensions * sizeof( User_extensions_Control ) ); for ( i = 0 ; i < number_of_extensions ; i++ ) { 48322: 4fef 0010 lea %sp@(16),%sp 48326: 6020 bras 48348 <_User_extensions_Handler_initialization+0xa4> RTEMS_INLINE_ROUTINE void _User_extensions_Add_set_with_table( User_extensions_Control *extension, const User_extensions_Table *extension_table ) { extension->Callouts = *extension_table; 48328: 4878 0020 pea 20 4832c: 5282 addql #1,%d2 4832e: 2f03 movel %d3,%sp@- 48330: 486a 0014 pea %a2@(20) 48334: 0683 0000 0020 addil #32,%d3 4833a: 4e94 jsr %a4@ _User_extensions_Add_set( extension ); 4833c: 2f0a movel %a2,%sp@- _User_extensions_Add_set_with_table (extension, &initial_extensions[i]); extension++; 4833e: 45ea 0034 lea %a2@(52),%a2 48342: 4e93 jsr %a3@ extension, 0, number_of_extensions * sizeof( User_extensions_Control ) ); for ( i = 0 ; i < number_of_extensions ; i++ ) { 48344: 4fef 0010 lea %sp@(16),%sp 48348: b882 cmpl %d2,%d4 4834a: 62dc bhis 48328 <_User_extensions_Handler_initialization+0x84> _User_extensions_Add_set_with_table (extension, &initial_extensions[i]); extension++; } } } 4834c: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 48352: 4e5e unlk %fp ... =============================================================================== 00049438 <_User_extensions_Remove_set>: #include void _User_extensions_Remove_set ( User_extensions_Control *the_extension ) { 49438: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4943c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4943e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED _Chain_Extract( &the_extension->Node ); 49442: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49444: 4eb9 0004 704c jsr 4704c <_Chain_Extract> <== NOT EXECUTED /* * If a switch handler is present, remove it. */ if ( the_extension->Callouts.thread_switch != NULL ) 4944a: 588f addql #4,%sp <== NOT EXECUTED 4944c: 4aaa 0024 tstl %a2@(36) <== NOT EXECUTED 49450: 6712 beqs 49464 <_User_extensions_Remove_set+0x2c><== NOT EXECUTED _Chain_Extract( &the_extension->Switch.Node ); 49452: 508a addql #8,%a2 <== NOT EXECUTED 49454: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED } 49458: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4945c: 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 ); 4945e: 4ef9 0004 704c jmp 4704c <_Chain_Extract> <== NOT EXECUTED } 49464: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 49468: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00048414 <_User_extensions_Thread_create>: #include bool _User_extensions_Thread_create ( Thread_Control *the_thread ) { 48414: 4e56 0000 linkw %fp,#0 48418: 2f0a movel %a2,%sp@- return false; } } return true; } 4841a: 2479 0005 e5e8 moveal 5e5e8 <_User_extensions_List>,%a2 #include bool _User_extensions_Thread_create ( Thread_Control *the_thread ) { 48420: 2f02 movel %d2,%sp@- 48422: 242e 0008 movel %fp@(8),%d2 Chain_Node *the_node; User_extensions_Control *the_extension; bool status; for ( the_node = _Chain_First( &_User_extensions_List ); 48426: 601a bras 48442 <_User_extensions_Thread_create+0x2e> !_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 ) { 48428: 206a 0014 moveal %a2@(20),%a0 4842c: 4a88 tstl %a0 4842e: 6710 beqs 48440 <_User_extensions_Thread_create+0x2c> status = (*the_extension->Callouts.thread_create)( 48430: 2f02 movel %d2,%sp@- 48432: 2f39 0005 e902 movel 5e902 <_Per_CPU_Information+0xc>,%sp@- 48438: 4e90 jsr %a0@ _Thread_Executing, the_thread ); if ( !status ) 4843a: 508f addql #8,%sp 4843c: 4a00 tstb %d0 4843e: 670e beqs 4844e <_User_extensions_Thread_create+0x3a><== NEVER TAKEN User_extensions_Control *the_extension; bool status; for ( the_node = _Chain_First( &_User_extensions_List ); !_Chain_Is_tail( &_User_extensions_List, the_node ) ; the_node = the_node->next ) { 48440: 2452 moveal %a2@,%a2 { Chain_Node *the_node; User_extensions_Control *the_extension; bool status; for ( the_node = _Chain_First( &_User_extensions_List ); 48442: b5fc 0005 e5ec cmpal #386540,%a2 48448: 66de bnes 48428 <_User_extensions_Thread_create+0x14> if ( !status ) return false; } } return true; 4844a: 7001 moveq #1,%d0 4844c: 6002 bras 48450 <_User_extensions_Thread_create+0x3c> status = (*the_extension->Callouts.thread_create)( _Thread_Executing, the_thread ); if ( !status ) return false; 4844e: 4200 clrb %d0 <== NOT EXECUTED } } return true; } 48450: 242e fff8 movel %fp@(-8),%d2 48454: 246e fffc moveal %fp@(-4),%a2 48458: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004845c <_User_extensions_Thread_delete>: #include void _User_extensions_Thread_delete ( Thread_Control *the_thread ) { 4845c: 4e56 0000 linkw %fp,#0 48460: 2f0a movel %a2,%sp@- (*the_extension->Callouts.thread_delete)( _Thread_Executing, the_thread ); } } 48462: 2479 0005 e5f0 moveal 5e5f0 <_User_extensions_List+0x8>,%a2 #include void _User_extensions_Thread_delete ( Thread_Control *the_thread ) { 48468: 2f02 movel %d2,%sp@- 4846a: 242e 0008 movel %fp@(8),%d2 Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _Chain_Last( &_User_extensions_List ); 4846e: 6018 bras 48488 <_User_extensions_Thread_delete+0x2c> !_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 ) 48470: 206a 0020 moveal %a2@(32),%a0 48474: 4a88 tstl %a0 48476: 670c beqs 48484 <_User_extensions_Thread_delete+0x28><== NEVER TAKEN (*the_extension->Callouts.thread_delete)( 48478: 2f02 movel %d2,%sp@- 4847a: 2f39 0005 e902 movel 5e902 <_Per_CPU_Information+0xc>,%sp@- 48480: 4e90 jsr %a0@ 48482: 508f addql #8,%sp Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _Chain_Last( &_User_extensions_List ); !_Chain_Is_head( &_User_extensions_List, the_node ) ; the_node = the_node->previous ) { 48484: 246a 0004 moveal %a2@(4),%a2 ) { Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _Chain_Last( &_User_extensions_List ); 48488: b5fc 0005 e5e8 cmpal #386536,%a2 4848e: 66e0 bnes 48470 <_User_extensions_Thread_delete+0x14> (*the_extension->Callouts.thread_delete)( _Thread_Executing, the_thread ); } } 48490: 242e fff8 movel %fp@(-8),%d2 48494: 246e fffc moveal %fp@(-4),%a2 48498: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00048cd8 <_User_extensions_Thread_restart>: #include void _User_extensions_Thread_restart ( Thread_Control *the_thread ) { 48cd8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 48cdc: 2f0a movel %a2,%sp@- <== NOT EXECUTED (*the_extension->Callouts.thread_restart)( _Thread_Executing, the_thread ); } } 48cde: 2479 0005 f110 moveal 5f110 <_User_extensions_List>,%a2 <== NOT EXECUTED #include void _User_extensions_Thread_restart ( Thread_Control *the_thread ) { 48ce4: 2f02 movel %d2,%sp@- <== NOT EXECUTED 48ce6: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _Chain_First( &_User_extensions_List ); 48cea: 6016 bras 48d02 <_User_extensions_Thread_restart+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_restart != NULL ) 48cec: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED 48cf0: 4a88 tstl %a0 <== NOT EXECUTED 48cf2: 670c beqs 48d00 <_User_extensions_Thread_restart+0x28><== NOT EXECUTED (*the_extension->Callouts.thread_restart)( 48cf4: 2f02 movel %d2,%sp@- <== NOT EXECUTED 48cf6: 2f39 0005 f42a movel 5f42a <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED 48cfc: 4e90 jsr %a0@ <== NOT EXECUTED 48cfe: 508f addql #8,%sp <== NOT EXECUTED Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _Chain_First( &_User_extensions_List ); !_Chain_Is_tail( &_User_extensions_List, the_node ) ; the_node = the_node->next ) { 48d00: 2452 moveal %a2@,%a2 <== NOT EXECUTED ) { Chain_Node *the_node; User_extensions_Control *the_extension; for ( the_node = _Chain_First( &_User_extensions_List ); 48d02: b5fc 0005 f114 cmpal #389396,%a2 <== NOT EXECUTED 48d08: 66e2 bnes 48cec <_User_extensions_Thread_restart+0x14><== NOT EXECUTED (*the_extension->Callouts.thread_restart)( _Thread_Executing, the_thread ); } } 48d0a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 48d0e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 48d12: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00049a24 <_Watchdog_Adjust>: Watchdog_Interval units ) { ISR_Level level; _ISR_Disable( level ); 49a24: 327c 0700 moveaw #1792,%a1 <== NOT EXECUTED 49a28: 2209 movel %a1,%d1 <== NOT EXECUTED void _Watchdog_Adjust( Chain_Control *header, Watchdog_Adjust_directions direction, Watchdog_Interval units ) { 49a2a: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 49a2e: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED 49a32: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED 49a36: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 49a3a: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED ISR_Level level; _ISR_Disable( level ); 49a3e: 40c0 movew %sr,%d0 <== NOT EXECUTED 49a40: 8280 orl %d0,%d1 <== NOT EXECUTED 49a42: 46c1 movew %d1,%sr <== NOT EXECUTED } } _ISR_Enable( level ); } 49a44: 244b moveal %a3,%a2 <== NOT EXECUTED 49a46: 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 ) ) { 49a48: b5c8 cmpal %a0,%a2 <== NOT EXECUTED 49a4a: 674c beqs 49a98 <_Watchdog_Adjust+0x74> <== NOT EXECUTED switch ( direction ) { 49a4c: 4a83 tstl %d3 <== NOT EXECUTED 49a4e: 673c beqs 49a8c <_Watchdog_Adjust+0x68> <== NOT EXECUTED 49a50: 7201 moveq #1,%d1 <== NOT EXECUTED 49a52: b283 cmpl %d3,%d1 <== NOT EXECUTED 49a54: 6642 bnes 49a98 <_Watchdog_Adjust+0x74> <== NOT EXECUTED case WATCHDOG_BACKWARD: _Watchdog_First( header )->delta_interval += units; 49a56: d5a8 0010 addl %d2,%a0@(16) <== NOT EXECUTED break; 49a5a: 603c bras 49a98 <_Watchdog_Adjust+0x74> <== NOT EXECUTED RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_First( Chain_Control *header ) { return ( (Watchdog_Control *) _Chain_First( header ) ); 49a5c: 2053 moveal %a3@,%a0 <== NOT EXECUTED case WATCHDOG_FORWARD: while ( units ) { if ( units < _Watchdog_First( header )->delta_interval ) { 49a5e: 2628 0010 movel %a0@(16),%d3 <== NOT EXECUTED 49a62: b682 cmpl %d2,%d3 <== NOT EXECUTED 49a64: 6308 blss 49a6e <_Watchdog_Adjust+0x4a> <== NOT EXECUTED _Watchdog_First( header )->delta_interval -= units; 49a66: 9682 subl %d2,%d3 <== NOT EXECUTED 49a68: 2143 0010 movel %d3,%a0@(16) <== NOT EXECUTED break; 49a6c: 602a bras 49a98 <_Watchdog_Adjust+0x74> <== NOT EXECUTED } else { units -= _Watchdog_First( header )->delta_interval; _Watchdog_First( header )->delta_interval = 1; 49a6e: 7201 moveq #1,%d1 <== NOT EXECUTED 49a70: 2141 0010 movel %d1,%a0@(16) <== NOT EXECUTED _ISR_Enable( level ); 49a74: 46c0 movew %d0,%sr <== NOT EXECUTED _Watchdog_Tickle( header ); 49a76: 2f0b movel %a3,%sp@- <== NOT EXECUTED 49a78: 4e94 jsr %a4@ <== NOT EXECUTED _ISR_Disable( level ); 49a7a: 2204 movel %d4,%d1 <== NOT EXECUTED 49a7c: 40c0 movew %sr,%d0 <== NOT EXECUTED 49a7e: 8280 orl %d0,%d1 <== NOT EXECUTED 49a80: 46c1 movew %d1,%sr <== NOT EXECUTED if ( _Chain_Is_empty( header ) ) 49a82: 588f addql #4,%sp <== NOT EXECUTED 49a84: b5d3 cmpal %a3@,%a2 <== NOT EXECUTED 49a86: 6710 beqs 49a98 <_Watchdog_Adjust+0x74> <== 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; 49a88: 9483 subl %d3,%d2 <== NOT EXECUTED 49a8a: 6008 bras 49a94 <_Watchdog_Adjust+0x70> <== NOT EXECUTED _Watchdog_First( header )->delta_interval = 1; _ISR_Enable( level ); _Watchdog_Tickle( header ); 49a8c: 49f9 0004 9c48 lea 49c48 <_Watchdog_Tickle>,%a4 <== NOT EXECUTED _ISR_Disable( level ); 49a92: 2809 movel %a1,%d4 <== NOT EXECUTED switch ( direction ) { case WATCHDOG_BACKWARD: _Watchdog_First( header )->delta_interval += units; break; case WATCHDOG_FORWARD: while ( units ) { 49a94: 4a82 tstl %d2 <== NOT EXECUTED 49a96: 66c4 bnes 49a5c <_Watchdog_Adjust+0x38> <== NOT EXECUTED } break; } } _ISR_Enable( level ); 49a98: 46c0 movew %d0,%sr <== NOT EXECUTED } 49a9a: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED 49aa0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00055e1c <_Watchdog_Adjust_to_chain>: Chain_Control *header, Watchdog_Interval units_arg, Chain_Control *to_fire ) { 55e1c: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 55e20: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED 55e24: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED 55e28: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 55e2c: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED Watchdog_Interval units = units_arg; ISR_Level level; Watchdog_Control *first; if ( units <= 0 ) { 55e30: 4a80 tstl %d0 <== NOT EXECUTED 55e32: 6770 beqs 55ea4 <_Watchdog_Adjust_to_chain+0x88> <== NOT EXECUTED return; } _ISR_Disable( level ); 55e34: 307c 0700 moveaw #1792,%a0 <== NOT EXECUTED 55e38: 2208 movel %a0,%d1 <== NOT EXECUTED 55e3a: 40c2 movew %sr,%d2 <== NOT EXECUTED 55e3c: 8282 orl %d2,%d1 <== NOT EXECUTED 55e3e: 46c1 movew %d1,%sr <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( const Chain_Control *the_chain ) { return _Chain_Immutable_first( the_chain ) == _Chain_Immutable_tail( the_chain ); 55e40: 260a movel %a2,%d3 <== NOT EXECUTED 55e42: 5883 addql #4,%d3 <== NOT EXECUTED while ( 1 ) { _Chain_Extract_unprotected( &first->Node ); _Chain_Append_unprotected( to_fire, &first->Node ); _ISR_Flash( level ); 55e44: 2808 movel %a0,%d4 <== NOT EXECUTED 55e46: 6004 bras 55e4c <_Watchdog_Adjust_to_chain+0x30> <== NOT EXECUTED } _ISR_Disable( level ); while ( 1 ) { if ( units <= 0 ) { 55e48: 4a80 tstl %d0 <== NOT EXECUTED 55e4a: 6756 beqs 55ea2 <_Watchdog_Adjust_to_chain+0x86> <== NOT EXECUTED break; } } _ISR_Enable( level ); } 55e4c: 2252 moveal %a2@,%a1 <== NOT EXECUTED while ( 1 ) { if ( units <= 0 ) { break; } if ( _Chain_Is_empty( header ) ) { 55e4e: b689 cmpl %a1,%d3 <== NOT EXECUTED 55e50: 6750 beqs 55ea2 <_Watchdog_Adjust_to_chain+0x86> <== NOT EXECUTED /* * If it is longer than "units" until the first element on the chain * fires, then bump it and quit. */ if ( units < first->delta_interval ) { 55e52: 2229 0010 movel %a1@(16),%d1 <== NOT EXECUTED 55e56: 2049 moveal %a1,%a0 <== NOT EXECUTED 55e58: b280 cmpl %d0,%d1 <== NOT EXECUTED 55e5a: 6308 blss 55e64 <_Watchdog_Adjust_to_chain+0x48> <== NOT EXECUTED first->delta_interval -= units; 55e5c: 9280 subl %d0,%d1 <== NOT EXECUTED 55e5e: 2341 0010 movel %d1,%a1@(16) <== NOT EXECUTED break; 55e62: 603e bras 55ea2 <_Watchdog_Adjust_to_chain+0x86> <== NOT EXECUTED /* * The first set happens in less than units, so take all of them * off the chain and adjust units to reflect this. */ units -= first->delta_interval; 55e64: 9081 subl %d1,%d0 <== NOT EXECUTED first->delta_interval = 0; 55e66: 42a9 0010 clrl %a1@(16) <== NOT EXECUTED { Chain_Node *next; Chain_Node *previous; next = the_node->next; previous = the_node->previous; 55e6a: 2268 0004 moveal %a0@(4),%a1 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected( Chain_Control *the_chain, Chain_Node *the_node ) { Chain_Node *tail = _Chain_Tail( the_chain ); 55e6e: 220b movel %a3,%d1 <== NOT EXECUTED 55e70: 5881 addql #4,%d1 <== NOT EXECUTED ) { Chain_Node *next; Chain_Node *previous; next = the_node->next; 55e72: 2850 moveal %a0@,%a4 <== NOT EXECUTED previous = the_node->previous; next->previous = previous; previous->next = next; 55e74: 228c movel %a4,%a1@ <== NOT EXECUTED Chain_Node *next; Chain_Node *previous; next = the_node->next; previous = the_node->previous; next->previous = previous; 55e76: 2949 0004 movel %a1,%a4@(4) <== NOT EXECUTED Chain_Control *the_chain, Chain_Node *the_node ) { Chain_Node *tail = _Chain_Tail( the_chain ); Chain_Node *old_last = tail->previous; 55e7a: 226b 0008 moveal %a3@(8),%a1 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected( Chain_Control *the_chain, Chain_Node *the_node ) { Chain_Node *tail = _Chain_Tail( the_chain ); 55e7e: 2081 movel %d1,%a0@ <== NOT EXECUTED Chain_Node *old_last = tail->previous; the_node->next = tail; tail->previous = the_node; 55e80: 2748 0008 movel %a0,%a3@(8) <== NOT EXECUTED old_last->next = the_node; 55e84: 2288 movel %a0,%a1@ <== NOT EXECUTED the_node->previous = old_last; 55e86: 2149 0004 movel %a1,%a0@(4) <== NOT EXECUTED while ( 1 ) { _Chain_Extract_unprotected( &first->Node ); _Chain_Append_unprotected( to_fire, &first->Node ); _ISR_Flash( level ); 55e8a: 2204 movel %d4,%d1 <== NOT EXECUTED 55e8c: 46c2 movew %d2,%sr <== NOT EXECUTED 55e8e: 8282 orl %d2,%d1 <== NOT EXECUTED 55e90: 46c1 movew %d1,%sr <== NOT EXECUTED break; } } _ISR_Enable( level ); } 55e92: 2212 movel %a2@,%d1 <== NOT EXECUTED _Chain_Extract_unprotected( &first->Node ); _Chain_Append_unprotected( to_fire, &first->Node ); _ISR_Flash( level ); if ( _Chain_Is_empty( header ) ) 55e94: b681 cmpl %d1,%d3 <== NOT EXECUTED 55e96: 67b0 beqs 55e48 <_Watchdog_Adjust_to_chain+0x2c> <== NOT EXECUTED 55e98: 2041 moveal %d1,%a0 <== NOT EXECUTED break; first = _Watchdog_First( header ); if ( first->delta_interval != 0 ) 55e9a: 4aa8 0010 tstl %a0@(16) <== NOT EXECUTED 55e9e: 67ca beqs 55e6a <_Watchdog_Adjust_to_chain+0x4e> <== NOT EXECUTED 55ea0: 60a6 bras 55e48 <_Watchdog_Adjust_to_chain+0x2c> <== NOT EXECUTED break; } } _ISR_Enable( level ); 55ea2: 46c2 movew %d2,%sr <== NOT EXECUTED } 55ea4: 4cd7 1c1c moveml %sp@,%d2-%d4/%a2-%a4 <== NOT EXECUTED 55ea8: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00048514 <_Watchdog_Insert>: Watchdog_Interval delta_interval; insert_isr_nest_level = _ISR_Nest_level; _ISR_Disable( level ); 48514: 327c 0700 moveaw #1792,%a1 48518: 2009 movel %a1,%d0 void _Watchdog_Insert( Chain_Control *header, Watchdog_Control *the_watchdog ) { 4851a: 4e56 ffec linkw %fp,#-20 4851e: 206e 000c moveal %fp@(12),%a0 48522: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ 48526: 266e 0008 moveal %fp@(8),%a3 Watchdog_Control *after; uint32_t insert_isr_nest_level; Watchdog_Interval delta_interval; insert_isr_nest_level = _ISR_Nest_level; 4852a: 2439 0005 e8fe movel 5e8fe <_Per_CPU_Information+0x8>,%d2 _ISR_Disable( level ); 48530: 40c1 movew %sr,%d1 48532: 8081 orl %d1,%d0 48534: 46c0 movew %d0,%sr /* * Check to see if the watchdog has just been inserted by a * higher priority interrupt. If so, abandon this insert. */ if ( the_watchdog->state != WATCHDOG_INACTIVE ) { 48536: 4aa8 0008 tstl %a0@(8) 4853a: 6706 beqs 48542 <_Watchdog_Insert+0x2e> <== ALWAYS TAKEN _ISR_Enable( level ); 4853c: 46c1 movew %d1,%sr <== NOT EXECUTED return; 4853e: 6000 009a braw 485da <_Watchdog_Insert+0xc6> <== NOT EXECUTED } the_watchdog->state = WATCHDOG_BEING_INSERTED; 48542: 7001 moveq #1,%d0 break; } delta_interval -= after->delta_interval; _ISR_Flash( level ); 48544: 2449 moveal %a1,%a2 if ( the_watchdog->state != WATCHDOG_INACTIVE ) { _ISR_Enable( level ); return; } the_watchdog->state = WATCHDOG_BEING_INSERTED; 48546: 2140 0008 movel %d0,%a0@(8) _Watchdog_Sync_count++; 4854a: 2039 0005 e59e movel 5e59e <_Watchdog_Sync_count>,%d0 48550: 5280 addql #1,%d0 48552: 23c0 0005 e59e movel %d0,5e59e <_Watchdog_Sync_count> restart: delta_interval = the_watchdog->initial; 48558: 2028 000c movel %a0@(12),%d0 RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_First( Chain_Control *header ) { return ( (Watchdog_Control *) _Chain_First( header ) ); 4855c: 2253 moveal %a3@,%a1 for ( after = _Watchdog_First( header ) ; ; after = _Watchdog_Next( after ) ) { if ( delta_interval == 0 || !_Watchdog_Next( after ) ) 4855e: 4a80 tstl %d0 48560: 673c beqs 4859e <_Watchdog_Insert+0x8a> <== NEVER TAKEN 48562: 4a91 tstl %a1@ 48564: 6738 beqs 4859e <_Watchdog_Insert+0x8a> <== ALWAYS TAKEN break; if ( delta_interval < after->delta_interval ) { 48566: 2629 0010 movel %a1@(16),%d3 <== NOT EXECUTED 4856a: b680 cmpl %d0,%d3 <== NOT EXECUTED 4856c: 6308 blss 48576 <_Watchdog_Insert+0x62> <== NOT EXECUTED after->delta_interval -= delta_interval; 4856e: 9680 subl %d0,%d3 <== NOT EXECUTED 48570: 2343 0010 movel %d3,%a1@(16) <== NOT EXECUTED break; 48574: 6028 bras 4859e <_Watchdog_Insert+0x8a> <== NOT EXECUTED } delta_interval -= after->delta_interval; _ISR_Flash( level ); 48576: 280a movel %a2,%d4 <== NOT EXECUTED 48578: 46c1 movew %d1,%sr <== NOT EXECUTED 4857a: 8881 orl %d1,%d4 <== NOT EXECUTED 4857c: 46c4 movew %d4,%sr <== NOT EXECUTED if ( the_watchdog->state != WATCHDOG_BEING_INSERTED ) { 4857e: 7801 moveq #1,%d4 <== NOT EXECUTED 48580: b8a8 0008 cmpl %a0@(8),%d4 <== NOT EXECUTED 48584: 663e bnes 485c4 <_Watchdog_Insert+0xb0> <== NOT EXECUTED goto exit_insert; } if ( _Watchdog_Sync_level > insert_isr_nest_level ) { 48586: 2839 0005 e53c movel 5e53c <_Watchdog_Sync_level>,%d4 <== NOT EXECUTED 4858c: b484 cmpl %d4,%d2 <== NOT EXECUTED 4858e: 6408 bccs 48598 <_Watchdog_Insert+0x84> <== NOT EXECUTED _Watchdog_Sync_level = insert_isr_nest_level; 48590: 23c2 0005 e53c movel %d2,5e53c <_Watchdog_Sync_level> <== NOT EXECUTED goto restart; 48596: 60c0 bras 48558 <_Watchdog_Insert+0x44> <== NOT EXECUTED exit_insert: _Watchdog_Sync_level = insert_isr_nest_level; _Watchdog_Sync_count--; _ISR_Enable( level ); } 48598: 2251 moveal %a1@,%a1 <== NOT EXECUTED if ( delta_interval < after->delta_interval ) { after->delta_interval -= delta_interval; break; } delta_interval -= after->delta_interval; 4859a: 9083 subl %d3,%d0 <== NOT EXECUTED if ( _Watchdog_Sync_level > insert_isr_nest_level ) { _Watchdog_Sync_level = insert_isr_nest_level; goto restart; } } 4859c: 60c0 bras 4855e <_Watchdog_Insert+0x4a> <== NOT EXECUTED _Watchdog_Activate( the_watchdog ); the_watchdog->delta_interval = delta_interval; _Chain_Insert_unprotected( after->Node.previous, &the_watchdog->Node ); 4859e: 2269 0004 moveal %a1@(4),%a1 RTEMS_INLINE_ROUTINE void _Watchdog_Activate( Watchdog_Control *the_watchdog ) { the_watchdog->state = WATCHDOG_ACTIVE; 485a2: 7602 moveq #2,%d3 ) { Chain_Node *before_node; the_node->previous = after_node; before_node = after_node->next; 485a4: 2451 moveal %a1@,%a2 } } _Watchdog_Activate( the_watchdog ); the_watchdog->delta_interval = delta_interval; 485a6: 2140 0010 movel %d0,%a0@(16) _Chain_Insert_unprotected( after->Node.previous, &the_watchdog->Node ); the_watchdog->start_time = _Watchdog_Ticks_since_boot; 485aa: 2039 0005 e5a2 movel 5e5a2 <_Watchdog_Ticks_since_boot>,%d0 485b0: 2143 0008 movel %d3,%a0@(8) Chain_Node *the_node ) { Chain_Node *before_node; the_node->previous = after_node; 485b4: 2149 0004 movel %a1,%a0@(4) before_node = after_node->next; after_node->next = the_node; 485b8: 2288 movel %a0,%a1@ the_node->next = before_node; before_node->previous = the_node; 485ba: 2548 0004 movel %a0,%a2@(4) Chain_Node *before_node; the_node->previous = after_node; before_node = after_node->next; after_node->next = the_node; the_node->next = before_node; 485be: 208a movel %a2,%a0@ 485c0: 2140 0014 movel %d0,%a0@(20) exit_insert: _Watchdog_Sync_level = insert_isr_nest_level; 485c4: 23c2 0005 e53c movel %d2,5e53c <_Watchdog_Sync_level> _Watchdog_Sync_count--; 485ca: 2039 0005 e59e movel 5e59e <_Watchdog_Sync_count>,%d0 485d0: 5380 subql #1,%d0 485d2: 23c0 0005 e59e movel %d0,5e59e <_Watchdog_Sync_count> _ISR_Enable( level ); 485d8: 46c1 movew %d1,%sr } 485da: 4cd7 0c1c moveml %sp@,%d2-%d4/%a2-%a3 485de: 4e5e unlk %fp ... =============================================================================== 0004863c <_Watchdog_Remove>: { ISR_Level level; Watchdog_States previous_state; Watchdog_Control *next_watchdog; _ISR_Disable( level ); 4863c: 203c 0000 0700 movel #1792,%d0 */ Watchdog_States _Watchdog_Remove( Watchdog_Control *the_watchdog ) { 48642: 4e56 0000 linkw %fp,#0 48646: 206e 0008 moveal %fp@(8),%a0 4864a: 2f0a movel %a2,%sp@- 4864c: 2f02 movel %d2,%sp@- ISR_Level level; Watchdog_States previous_state; Watchdog_Control *next_watchdog; _ISR_Disable( level ); 4864e: 40c1 movew %sr,%d1 48650: 8081 orl %d1,%d0 48652: 46c0 movew %d0,%sr previous_state = the_watchdog->state; 48654: 2028 0008 movel %a0@(8),%d0 switch ( previous_state ) { 48658: 7401 moveq #1,%d2 4865a: b480 cmpl %d0,%d2 4865c: 670c beqs 4866a <_Watchdog_Remove+0x2e> <== NEVER TAKEN 4865e: 6242 bhis 486a2 <_Watchdog_Remove+0x66> <== NEVER TAKEN 48660: 143c 0003 moveb #3,%d2 48664: b480 cmpl %d0,%d2 48666: 653a bcss 486a2 <_Watchdog_Remove+0x66> <== NEVER TAKEN 48668: 6006 bras 48670 <_Watchdog_Remove+0x34> /* * 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; 4866a: 42a8 0008 clrl %a0@(8) <== NOT EXECUTED break; 4866e: 6032 bras 486a2 <_Watchdog_Remove+0x66> <== NOT EXECUTED } the_watchdog->stop_time = _Watchdog_Ticks_since_boot; _ISR_Enable( level ); return( previous_state ); } 48670: 2250 moveal %a0@,%a1 break; case WATCHDOG_ACTIVE: case WATCHDOG_REMOVE_IT: the_watchdog->state = WATCHDOG_INACTIVE; 48672: 42a8 0008 clrl %a0@(8) next_watchdog = _Watchdog_Next( the_watchdog ); if ( _Watchdog_Next(next_watchdog) ) 48676: 4a91 tstl %a1@ 48678: 6708 beqs 48682 <_Watchdog_Remove+0x46> <== ALWAYS TAKEN next_watchdog->delta_interval += the_watchdog->delta_interval; 4867a: 2428 0010 movel %a0@(16),%d2 <== NOT EXECUTED 4867e: d5a9 0010 addl %d2,%a1@(16) <== NOT EXECUTED if ( _Watchdog_Sync_count ) 48682: 2479 0005 e59e moveal 5e59e <_Watchdog_Sync_count>,%a2 48688: 4a8a tstl %a2 4868a: 670c beqs 48698 <_Watchdog_Remove+0x5c> <== ALWAYS TAKEN _Watchdog_Sync_level = _ISR_Nest_level; 4868c: 45f9 0005 e8fe lea 5e8fe <_Per_CPU_Information+0x8>,%a2 <== NOT EXECUTED 48692: 23d2 0005 e53c movel %a2@,5e53c <_Watchdog_Sync_level> <== NOT EXECUTED { Chain_Node *next; Chain_Node *previous; next = the_node->next; previous = the_node->previous; 48698: 2468 0004 moveal %a0@(4),%a2 next->previous = previous; 4869c: 234a 0004 movel %a2,%a1@(4) previous->next = next; 486a0: 2489 movel %a1,%a2@ _Chain_Extract_unprotected( &the_watchdog->Node ); break; } the_watchdog->stop_time = _Watchdog_Ticks_since_boot; 486a2: 2279 0005 e5a2 moveal 5e5a2 <_Watchdog_Ticks_since_boot>,%a1 486a8: 2149 0018 movel %a1,%a0@(24) _ISR_Enable( level ); 486ac: 46c1 movew %d1,%sr return( previous_state ); } 486ae: 241f movel %sp@+,%d2 486b0: 245f moveal %sp@+,%a2 486b2: 4e5e unlk %fp ... =============================================================================== 000496a8 <_Watchdog_Report>: void _Watchdog_Report( const char *name, Watchdog_Control *watch ) { 496a8: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED printk( 496ac: 223c 0005 d6fd movel #382717,%d1 <== NOT EXECUTED void _Watchdog_Report( const char *name, Watchdog_Control *watch ) { 496b2: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 496b6: 48d7 003c moveml %d2-%d5,%sp@ <== NOT EXECUTED 496ba: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED printk( 496be: 2a28 0024 movel %a0@(36),%d5 <== NOT EXECUTED 496c2: 2828 0020 movel %a0@(32),%d4 <== NOT EXECUTED 496c6: 2628 001c movel %a0@(28),%d3 <== NOT EXECUTED 496ca: 2428 000c movel %a0@(12),%d2 <== NOT EXECUTED 496ce: 2268 0010 moveal %a0@(16),%a1 <== NOT EXECUTED 496d2: 4a80 tstl %d0 <== NOT EXECUTED 496d4: 6608 bnes 496de <_Watchdog_Report+0x36> <== NOT EXECUTED 496d6: 223c 0005 d702 movel #382722,%d1 <== NOT EXECUTED 496dc: 2001 movel %d1,%d0 <== NOT EXECUTED 496de: 2f05 movel %d5,%sp@- <== NOT EXECUTED 496e0: 2f04 movel %d4,%sp@- <== NOT EXECUTED 496e2: 2f03 movel %d3,%sp@- <== NOT EXECUTED 496e4: 2f08 movel %a0,%sp@- <== NOT EXECUTED 496e6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 496e8: 2f09 movel %a1,%sp@- <== NOT EXECUTED 496ea: 2f01 movel %d1,%sp@- <== NOT EXECUTED 496ec: 2f00 movel %d0,%sp@- <== NOT EXECUTED 496ee: 4879 0005 d88c pea 5d88c <== NOT EXECUTED 496f4: 4eb9 0004 3dec jsr 43dec <== NOT EXECUTED 496fa: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED watch, watch->routine, watch->id, watch->user_data ); } 496fe: 4cee 003c fff0 moveml %fp@(-16),%d2-%d5 <== NOT EXECUTED 49704: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00049634 <_Watchdog_Report_chain>: ) { ISR_Level level; Chain_Node *node; _ISR_Disable( level ); 49634: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED void _Watchdog_Report_chain( const char *name, Chain_Control *header ) { 4963a: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 4963e: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED 49642: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 49646: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED ISR_Level level; Chain_Node *node; _ISR_Disable( level ); 4964a: 40c3 movew %sr,%d3 <== NOT EXECUTED 4964c: 8083 orl %d3,%d0 <== NOT EXECUTED 4964e: 46c0 movew %d0,%sr <== NOT EXECUTED printk( "Watchdog Chain: %s %p\n", name, header ); 49650: 2f0b movel %a3,%sp@- <== NOT EXECUTED 49652: 49f9 0004 3dec lea 43dec ,%a4 <== NOT EXECUTED 49658: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4965a: 4879 0005 d856 pea 5d856 <== NOT EXECUTED 49660: 4e94 jsr %a4@ <== NOT EXECUTED printk( "== end of %s \n", name ); } else { printk( "Chain is empty\n" ); } _ISR_Enable( level ); } 49662: 245b moveal %a3@+,%a2 <== NOT EXECUTED ISR_Level level; Chain_Node *node; _ISR_Disable( level ); printk( "Watchdog Chain: %s %p\n", name, header ); if ( !_Chain_Is_empty( header ) ) { 49664: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 49668: b7ca cmpal %a2,%a3 <== NOT EXECUTED 4966a: 6726 beqs 49692 <_Watchdog_Report_chain+0x5e> <== NOT EXECUTED node != _Chain_Tail(header) ; node = node->next ) { Watchdog_Control *watch = (Watchdog_Control *) node; _Watchdog_Report( NULL, watch ); 4966c: 49f9 0004 96a8 lea 496a8 <_Watchdog_Report>,%a4 <== NOT EXECUTED 49672: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49674: 42a7 clrl %sp@- <== NOT EXECUTED 49676: 4e94 jsr %a4@ <== NOT EXECUTED _ISR_Disable( level ); printk( "Watchdog Chain: %s %p\n", name, header ); if ( !_Chain_Is_empty( header ) ) { for ( node = _Chain_First( header ) ; node != _Chain_Tail(header) ; node = node->next ) 49678: 2452 moveal %a2@,%a2 <== NOT EXECUTED Chain_Node *node; _ISR_Disable( level ); printk( "Watchdog Chain: %s %p\n", name, header ); if ( !_Chain_Is_empty( header ) ) { for ( node = _Chain_First( header ) ; 4967a: 508f addql #8,%sp <== NOT EXECUTED 4967c: b7ca cmpal %a2,%a3 <== NOT EXECUTED 4967e: 66f2 bnes 49672 <_Watchdog_Report_chain+0x3e> <== NOT EXECUTED { Watchdog_Control *watch = (Watchdog_Control *) node; _Watchdog_Report( NULL, watch ); } printk( "== end of %s \n", name ); 49680: 2f02 movel %d2,%sp@- <== NOT EXECUTED 49682: 4879 0005 d86d pea 5d86d <== NOT EXECUTED 49688: 4eb9 0004 3dec jsr 43dec <== NOT EXECUTED 4968e: 508f addql #8,%sp <== NOT EXECUTED 49690: 600a bras 4969c <_Watchdog_Report_chain+0x68> <== NOT EXECUTED } else { printk( "Chain is empty\n" ); 49692: 4879 0005 d87c pea 5d87c <== NOT EXECUTED 49698: 4e94 jsr %a4@ <== NOT EXECUTED 4969a: 588f addql #4,%sp <== NOT EXECUTED } _ISR_Enable( level ); 4969c: 46c3 movew %d3,%sr <== NOT EXECUTED } 4969e: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 <== NOT EXECUTED 496a4: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000486b8 <_Watchdog_Tickle>: * See the comment in watchdoginsert.c and watchdogadjust.c * about why it's safe not to declare header a pointer to * volatile data - till, 2003/7 */ _ISR_Disable( level ); 486b8: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED */ void _Watchdog_Tickle( Chain_Control *header ) { 486be: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 486c2: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ <== NOT EXECUTED 486c6: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED * See the comment in watchdoginsert.c and watchdogadjust.c * about why it's safe not to declare header a pointer to * volatile data - till, 2003/7 */ _ISR_Disable( level ); 486ca: 40c2 movew %sr,%d2 <== NOT EXECUTED 486cc: 8082 orl %d2,%d0 <== NOT EXECUTED 486ce: 46c0 movew %d0,%sr <== NOT EXECUTED } while ( !_Chain_Is_empty( header ) && (the_watchdog->delta_interval == 0) ); leave: _ISR_Enable(level); } 486d0: 264c moveal %a4,%a3 <== NOT EXECUTED 486d2: 245b moveal %a3@+,%a2 <== NOT EXECUTED * volatile data - till, 2003/7 */ _ISR_Disable( level ); if ( _Chain_Is_empty( header ) ) 486d4: b7ca cmpal %a2,%a3 <== NOT EXECUTED 486d6: 674c beqs 48724 <_Watchdog_Tickle+0x6c> <== 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) { 486d8: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED 486dc: 6708 beqs 486e6 <_Watchdog_Tickle+0x2e> <== NOT EXECUTED the_watchdog->delta_interval--; 486de: 5380 subql #1,%d0 <== NOT EXECUTED 486e0: 2540 0010 movel %d0,%a2@(16) <== NOT EXECUTED if ( the_watchdog->delta_interval != 0 ) 486e4: 663e bnes 48724 <_Watchdog_Tickle+0x6c> <== NOT EXECUTED goto leave; } do { watchdog_state = _Watchdog_Remove( the_watchdog ); 486e6: 4bf9 0004 863c lea 4863c <_Watchdog_Remove>,%a5 <== NOT EXECUTED case WATCHDOG_REMOVE_IT: break; } _ISR_Disable( level ); 486ec: 263c 0000 0700 movel #1792,%d3 <== NOT EXECUTED if ( the_watchdog->delta_interval != 0 ) goto leave; } do { watchdog_state = _Watchdog_Remove( the_watchdog ); 486f2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 486f4: 4e95 jsr %a5@ <== NOT EXECUTED _ISR_Enable( level ); 486f6: 46c2 movew %d2,%sr <== NOT EXECUTED switch( watchdog_state ) { 486f8: 7202 moveq #2,%d1 <== NOT EXECUTED 486fa: 588f addql #4,%sp <== NOT EXECUTED 486fc: b280 cmpl %d0,%d1 <== NOT EXECUTED 486fe: 6610 bnes 48710 <_Watchdog_Tickle+0x58> <== NOT EXECUTED case WATCHDOG_ACTIVE: (*the_watchdog->routine)( 48700: 2f2a 0024 movel %a2@(36),%sp@- <== NOT EXECUTED 48704: 2f2a 0020 movel %a2@(32),%sp@- <== NOT EXECUTED 48708: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED 4870c: 4e90 jsr %a0@ <== NOT EXECUTED the_watchdog->id, the_watchdog->user_data ); break; 4870e: 508f addql #8,%sp <== NOT EXECUTED case WATCHDOG_REMOVE_IT: break; } _ISR_Disable( level ); 48710: 2003 movel %d3,%d0 <== NOT EXECUTED 48712: 40c2 movew %sr,%d2 <== NOT EXECUTED 48714: 8082 orl %d2,%d0 <== NOT EXECUTED 48716: 46c0 movew %d0,%sr <== NOT EXECUTED } while ( !_Chain_Is_empty( header ) && (the_watchdog->delta_interval == 0) ); leave: _ISR_Enable(level); } 48718: 2454 moveal %a4@,%a2 <== NOT EXECUTED _ISR_Disable( level ); the_watchdog = _Watchdog_First( header ); } while ( !_Chain_Is_empty( header ) && (the_watchdog->delta_interval == 0) ); 4871a: b7ca cmpal %a2,%a3 <== NOT EXECUTED 4871c: 6706 beqs 48724 <_Watchdog_Tickle+0x6c> <== NOT EXECUTED } _ISR_Disable( level ); the_watchdog = _Watchdog_First( header ); } while ( !_Chain_Is_empty( header ) && 4871e: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED 48722: 67ce beqs 486f2 <_Watchdog_Tickle+0x3a> <== NOT EXECUTED (the_watchdog->delta_interval == 0) ); leave: _ISR_Enable(level); 48724: 46c2 movew %d2,%sr <== NOT EXECUTED } 48726: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED 4872c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0005b620 <_execve>: int _execve( const char *path __attribute__((unused)), char *const argv[] __attribute__((unused)), char *const envp[] __attribute__((unused)) ) { 5b620: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 5b624: 4eb9 0004 d19c jsr 4d19c <__errno> <== NOT EXECUTED } 5b62a: 4e5e unlk %fp <== NOT EXECUTED const char *path __attribute__((unused)), char *const argv[] __attribute__((unused)), char *const envp[] __attribute__((unused)) ) { rtems_set_errno_and_return_minus_one( ENOSYS ); 5b62c: 2040 moveal %d0,%a0 <== NOT EXECUTED 5b62e: 7058 moveq #88,%d0 <== NOT EXECUTED 5b630: 2080 movel %d0,%a0@ <== NOT EXECUTED } 5b632: 70ff moveq #-1,%d0 <== NOT EXECUTED ... =============================================================================== 0005a868 <_kill_r>: int _kill_r( struct _reent *ptr, pid_t pid, int sig ) { 5a868: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 5a86c: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED 5a870: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED return killinfo( pid, sig, NULL ); 5a874: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED 5a878: 42ae 0010 clrl %fp@(16) <== NOT EXECUTED 5a87c: 2d41 000c movel %d1,%fp@(12) <== NOT EXECUTED } 5a880: 4e5e unlk %fp <== NOT EXECUTED struct _reent *ptr, pid_t pid, int sig ) { return killinfo( pid, sig, NULL ); 5a882: 4ef9 0005 aa04 jmp 5aa04 <== NOT EXECUTED =============================================================================== 000455fc : int adjtime( struct timeval *delta, struct timeval *olddelta ) { 455fc: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 45600: 2f0b movel %a3,%sp@- <== NOT EXECUTED 45602: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED 45606: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45608: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED long adjustment; /* * Simple validations */ if ( !delta ) 4560c: 4a8a tstl %a2 <== NOT EXECUTED 4560e: 670c beqs 4561c <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); if ( delta->tv_usec >= TOD_MICROSECONDS_PER_SECOND ) 45610: 203c 000f 423f movel #999999,%d0 <== NOT EXECUTED 45616: b0aa 0004 cmpl %a2@(4),%d0 <== NOT EXECUTED 4561a: 6412 bccs 4562e <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 4561c: 4eb9 0004 d38c jsr 4d38c <__errno> <== NOT EXECUTED 45622: 2040 moveal %d0,%a0 <== NOT EXECUTED 45624: 7016 moveq #22,%d0 <== NOT EXECUTED 45626: 2080 movel %d0,%a0@ <== NOT EXECUTED 45628: 70ff moveq #-1,%d0 <== NOT EXECUTED 4562a: 6000 00ae braw 456da <== NOT EXECUTED if ( olddelta ) { 4562e: 4a8b tstl %a3 <== NOT EXECUTED 45630: 6706 beqs 45638 <== NOT EXECUTED olddelta->tv_sec = 0; 45632: 4293 clrl %a3@ <== NOT EXECUTED olddelta->tv_usec = 0; 45634: 42ab 0004 clrl %a3@(4) <== NOT EXECUTED } /* convert delta to microseconds */ adjustment = (delta->tv_sec * TOD_MICROSECONDS_PER_SECOND); 45638: 203c 000f 4240 movel #1000000,%d0 <== NOT EXECUTED 4563e: 4c12 0800 mulsl %a2@,%d0 <== NOT EXECUTED adjustment += delta->tv_usec; 45642: d0aa 0004 addl %a2@(4),%d0 <== NOT EXECUTED /* too small to account for */ if ( adjustment < rtems_configuration_get_microseconds_per_tick() ) 45646: b0b9 0005 e050 cmpl 5e050 ,%d0 <== NOT EXECUTED 4564c: 6500 008a bcsw 456d8 <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 45650: 2039 0005 fa60 movel 5fa60 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 45656: 5280 addql #1,%d0 <== NOT EXECUTED 45658: 23c0 0005 fa60 movel %d0,5fa60 <_Thread_Dispatch_disable_level><== NOT EXECUTED * This prevents context switches while we are adjusting the TOD */ _Thread_Disable_dispatch(); _TOD_Get( &ts ); 4565e: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 45662: 4eb9 0004 6cac jsr 46cac <_TOD_Get> <== NOT EXECUTED ts.tv_sec += delta->tv_sec; 45668: 2012 movel %a2@,%d0 <== NOT EXECUTED 4566a: d1ae fff8 addl %d0,%fp@(-8) <== NOT EXECUTED ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND; 4566e: 223c 0000 03e8 movel #1000,%d1 <== NOT EXECUTED /* if adjustment is too much positive */ while ( ts.tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) { 45674: 588f addql #4,%sp <== NOT EXECUTED _Thread_Disable_dispatch(); _TOD_Get( &ts ); ts.tv_sec += delta->tv_sec; ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND; 45676: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 4567a: 4c01 0800 mulsl %d1,%d0 <== NOT EXECUTED _Thread_Disable_dispatch(); _TOD_Get( &ts ); ts.tv_sec += delta->tv_sec; 4567e: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND; 45682: d0ae fffc addl %fp@(-4),%d0 <== NOT EXECUTED /* if adjustment is too much positive */ while ( ts.tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) { 45686: 6006 bras 4568e <== NOT EXECUTED 45688: 0680 c465 3600 addil #-1000000000,%d0 <== NOT EXECUTED 4568e: 2208 movel %a0,%d1 <== NOT EXECUTED 45690: 5288 addql #1,%a0 <== NOT EXECUTED 45692: 0c80 3b9a c9ff cmpil #999999999,%d0 <== NOT EXECUTED 45698: 62ee bhis 45688 <== NOT EXECUTED 4569a: 6006 bras 456a2 <== NOT EXECUTED 4569c: 0680 3b9a ca00 addil #1000000000,%d0 <== NOT EXECUTED 456a2: 2041 moveal %d1,%a0 <== NOT EXECUTED 456a4: 5381 subql #1,%d1 <== 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) ) { 456a6: 0c80 c465 3600 cmpil #-1000000000,%d0 <== NOT EXECUTED 456ac: 63ee blss 4569c <== NOT EXECUTED ts.tv_nsec += TOD_NANOSECONDS_PER_SECOND; ts.tv_sec--; } _TOD_Set( &ts ); 456ae: 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) ) { 456b2: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED 456b6: 2d48 fff8 movel %a0,%fp@(-8) <== NOT EXECUTED ts.tv_nsec += TOD_NANOSECONDS_PER_SECOND; ts.tv_sec--; } _TOD_Set( &ts ); 456ba: 4eb9 0004 6d40 jsr 46d40 <_TOD_Set> <== NOT EXECUTED _Thread_Enable_dispatch(); 456c0: 4eb9 0004 80b6 jsr 480b6 <_Thread_Enable_dispatch> <== NOT EXECUTED /* set the user's output */ if ( olddelta ) 456c6: 588f addql #4,%sp <== NOT EXECUTED 456c8: 4a8b tstl %a3 <== NOT EXECUTED 456ca: 670c beqs 456d8 <== NOT EXECUTED *olddelta = *delta; 456cc: 2012 movel %a2@,%d0 <== NOT EXECUTED 456ce: 222a 0004 movel %a2@(4),%d1 <== NOT EXECUTED 456d2: 2680 movel %d0,%a3@ <== NOT EXECUTED 456d4: 2741 0004 movel %d1,%a3@(4) <== NOT EXECUTED return 0; 456d8: 4280 clrl %d0 <== NOT EXECUTED } 456da: 246e fff0 moveal %fp@(-16),%a2 <== NOT EXECUTED 456de: 266e fff4 moveal %fp@(-12),%a3 <== NOT EXECUTED 456e2: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00045d34 : * operation(s) cannot be canceled */ int aio_cancel(int fildes, struct aiocb *aiocbp) { 45d34: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 45d38: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ <== NOT EXECUTED rtems_aio_request_chain *r_chain; int result; pthread_mutex_lock (&aio_request_queue.mutex); 45d3c: 4879 0006 0e58 pea 60e58 <== NOT EXECUTED 45d42: 49f9 0004 6e18 lea 46e18 ,%a4 <== NOT EXECUTED * operation(s) cannot be canceled */ int aio_cancel(int fildes, struct aiocb *aiocbp) { 45d48: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 45d4c: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED rtems_aio_request_chain *r_chain; int result; pthread_mutex_lock (&aio_request_queue.mutex); 45d50: 4e94 jsr %a4@ <== NOT EXECUTED if (fcntl (fildes, F_GETFD) < 0) { 45d52: 4878 0001 pea 1 <== NOT EXECUTED 45d56: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45d58: 4eb9 0004 c078 jsr 4c078 <== NOT EXECUTED 45d5e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 45d62: 4a80 tstl %d0 <== NOT EXECUTED 45d64: 6c1c bges 45d82 <== NOT EXECUTED pthread_mutex_unlock(&aio_request_queue.mutex); 45d66: 4879 0006 0e58 pea 60e58 <== NOT EXECUTED 45d6c: 4eb9 0004 6eb0 jsr 46eb0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one (EBADF); 45d72: 4eb9 0004 efdc jsr 4efdc <__errno> <== NOT EXECUTED 45d78: 7209 moveq #9,%d1 <== NOT EXECUTED 45d7a: 2040 moveal %d0,%a0 <== NOT EXECUTED 45d7c: 2081 movel %d1,%a0@ <== NOT EXECUTED 45d7e: 6000 00f4 braw 45e74 <== NOT EXECUTED } /* if aiocbp is NULL remove all request for given file descriptor */ if (aiocbp == NULL) { 45d82: 4a8b tstl %a3 <== NOT EXECUTED 45d84: 6600 00d0 bnew 45e56 <== NOT EXECUTED AIO_printf ("Cancel all requests\n"); r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, fildes, 0); 45d88: 42a7 clrl %sp@- <== NOT EXECUTED 45d8a: 47f9 0004 60ea lea 460ea ,%a3 <== NOT EXECUTED 45d90: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45d92: 4879 0006 0ea0 pea 60ea0 <== NOT EXECUTED 45d98: 4e93 jsr %a3@ <== NOT EXECUTED if (r_chain == NULL) { 45d9a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED /* if aiocbp is NULL remove all request for given file descriptor */ if (aiocbp == NULL) { AIO_printf ("Cancel all requests\n"); r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, fildes, 0); 45d9e: 2440 moveal %d0,%a2 <== NOT EXECUTED if (r_chain == NULL) { 45da0: 4a80 tstl %d0 <== NOT EXECUTED 45da2: 667a bnes 45e1e <== NOT EXECUTED AIO_printf ("Request chain not on [WQ]\n"); if (!rtems_chain_is_empty (&aio_request_queue.idle_req)) { 45da4: 203c 0006 0eb0 movel #396976,%d0 <== NOT EXECUTED 45daa: b0b9 0006 0eac cmpl 60eac ,%d0 <== NOT EXECUTED 45db0: 6700 0136 beqw 45ee8 <== NOT EXECUTED r_chain = rtems_aio_search_fd (&aio_request_queue.idle_req, fildes, 0); 45db4: 42a7 clrl %sp@- <== NOT EXECUTED 45db6: 45f9 0004 6eb0 lea 46eb0 ,%a2 <== NOT EXECUTED 45dbc: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45dbe: 4879 0006 0eac pea 60eac <== NOT EXECUTED 45dc4: 4e93 jsr %a3@ <== NOT EXECUTED if (r_chain == NULL) { 45dc6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, fildes, 0); if (r_chain == NULL) { AIO_printf ("Request chain not on [WQ]\n"); if (!rtems_chain_is_empty (&aio_request_queue.idle_req)) { r_chain = rtems_aio_search_fd (&aio_request_queue.idle_req, fildes, 0); 45dca: 2400 movel %d0,%d2 <== NOT EXECUTED if (r_chain == NULL) { 45dcc: 6612 bnes 45de0 <== NOT EXECUTED pthread_mutex_unlock(&aio_request_queue.mutex); 45dce: 4879 0006 0e58 pea 60e58 <== NOT EXECUTED return AIO_ALLDONE; 45dd4: 143c 0002 moveb #2,%d2 <== NOT EXECUTED AIO_printf ("Request chain not on [WQ]\n"); if (!rtems_chain_is_empty (&aio_request_queue.idle_req)) { r_chain = rtems_aio_search_fd (&aio_request_queue.idle_req, fildes, 0); if (r_chain == NULL) { pthread_mutex_unlock(&aio_request_queue.mutex); 45dd8: 4e92 jsr %a2@ <== NOT EXECUTED return AIO_ALLDONE; 45dda: 588f addql #4,%sp <== NOT EXECUTED 45ddc: 6000 014c braw 45f2a <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void rtems_chain_extract( rtems_chain_node *the_node ) { _Chain_Extract( the_node ); 45de0: 2f00 movel %d0,%sp@- <== NOT EXECUTED AIO_printf ("Request chain on [IQ]\n"); rtems_chain_extract (&r_chain->next_fd); rtems_aio_remove_fd (r_chain); pthread_mutex_destroy (&r_chain->mutex); 45de2: 2602 movel %d2,%d3 <== NOT EXECUTED 45de4: 0683 0000 001c addil #28,%d3 <== NOT EXECUTED 45dea: 4eb9 0004 8674 jsr 48674 <_Chain_Extract> <== NOT EXECUTED } AIO_printf ("Request chain on [IQ]\n"); rtems_chain_extract (&r_chain->next_fd); rtems_aio_remove_fd (r_chain); 45df0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45df2: 4eb9 0004 643e jsr 4643e <== NOT EXECUTED pthread_mutex_destroy (&r_chain->mutex); 45df8: 2f03 movel %d3,%sp@- <== NOT EXECUTED 45dfa: 4eb9 0004 6be0 jsr 46be0 <== NOT EXECUTED pthread_cond_destroy (&r_chain->mutex); 45e00: 2f03 movel %d3,%sp@- <== NOT EXECUTED 45e02: 4eb9 0004 68dc jsr 468dc <== NOT EXECUTED free (r_chain); 45e08: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45e0a: 4eb9 0004 31fc jsr 431fc <== NOT EXECUTED pthread_mutex_unlock (&aio_request_queue.mutex); 45e10: 4879 0006 0e58 pea 60e58 <== NOT EXECUTED 45e16: 4e92 jsr %a2@ <== NOT EXECUTED return AIO_CANCELED; 45e18: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 45e1c: 6032 bras 45e50 <== NOT EXECUTED return AIO_ALLDONE; } AIO_printf ("Request chain on [WQ]\n"); pthread_mutex_lock (&r_chain->mutex); 45e1e: 2400 movel %d0,%d2 <== NOT EXECUTED 45e20: 0682 0000 001c addil #28,%d2 <== NOT EXECUTED 45e26: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45e28: 4e94 jsr %a4@ <== NOT EXECUTED 45e2a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45e2c: 4eb9 0004 8674 jsr 48674 <_Chain_Extract> <== NOT EXECUTED rtems_chain_extract (&r_chain->next_fd); rtems_aio_remove_fd (r_chain); 45e32: 2f0a movel %a2,%sp@- <== NOT EXECUTED pthread_mutex_unlock (&r_chain->mutex); 45e34: 45f9 0004 6eb0 lea 46eb0 ,%a2 <== NOT EXECUTED AIO_printf ("Request chain on [WQ]\n"); pthread_mutex_lock (&r_chain->mutex); rtems_chain_extract (&r_chain->next_fd); rtems_aio_remove_fd (r_chain); 45e3a: 4eb9 0004 643e jsr 4643e <== NOT EXECUTED pthread_mutex_unlock (&r_chain->mutex); 45e40: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45e42: 4e92 jsr %a2@ <== NOT EXECUTED pthread_mutex_unlock (&aio_request_queue.mutex); 45e44: 4879 0006 0e58 pea 60e58 <== NOT EXECUTED 45e4a: 4e92 jsr %a2@ <== NOT EXECUTED return AIO_CANCELED; 45e4c: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 45e50: 4282 clrl %d2 <== NOT EXECUTED 45e52: 6000 00d6 braw 45f2a <== NOT EXECUTED } else { AIO_printf ("Cancel request\n"); if (aiocbp->aio_fildes != fildes) { 45e56: 2613 movel %a3@,%d3 <== NOT EXECUTED 45e58: b483 cmpl %d3,%d2 <== NOT EXECUTED 45e5a: 6720 beqs 45e7c <== NOT EXECUTED pthread_mutex_unlock (&aio_request_queue.mutex); 45e5c: 4879 0006 0e58 pea 60e58 <== NOT EXECUTED 45e62: 4eb9 0004 6eb0 jsr 46eb0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one (EINVAL); 45e68: 4eb9 0004 efdc jsr 4efdc <__errno> <== NOT EXECUTED 45e6e: 2040 moveal %d0,%a0 <== NOT EXECUTED 45e70: 7016 moveq #22,%d0 <== NOT EXECUTED 45e72: 2080 movel %d0,%a0@ <== NOT EXECUTED 45e74: 588f addql #4,%sp <== NOT EXECUTED 45e76: 74ff moveq #-1,%d2 <== NOT EXECUTED 45e78: 6000 00b0 braw 45f2a <== NOT EXECUTED } r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, fildes, 0); 45e7c: 42a7 clrl %sp@- <== NOT EXECUTED 45e7e: 4bf9 0004 60ea lea 460ea ,%a5 <== NOT EXECUTED 45e84: 2f03 movel %d3,%sp@- <== NOT EXECUTED 45e86: 4879 0006 0ea0 pea 60ea0 <== NOT EXECUTED 45e8c: 4e95 jsr %a5@ <== NOT EXECUTED if (r_chain == NULL) { 45e8e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED if (aiocbp->aio_fildes != fildes) { pthread_mutex_unlock (&aio_request_queue.mutex); rtems_set_errno_and_return_minus_one (EINVAL); } r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, fildes, 0); 45e92: 2440 moveal %d0,%a2 <== NOT EXECUTED if (r_chain == NULL) { 45e94: 4a80 tstl %d0 <== NOT EXECUTED 45e96: 6662 bnes 45efa <== NOT EXECUTED if (!rtems_chain_is_empty (&aio_request_queue.idle_req)) { 45e98: 203c 0006 0eb0 movel #396976,%d0 <== NOT EXECUTED 45e9e: b0b9 0006 0eac cmpl 60eac ,%d0 <== NOT EXECUTED 45ea4: 6742 beqs 45ee8 <== NOT EXECUTED r_chain = rtems_aio_search_fd (&aio_request_queue.idle_req, fildes, 0); 45ea6: 42a7 clrl %sp@- <== NOT EXECUTED 45ea8: 45f9 0004 6eb0 lea 46eb0 ,%a2 <== NOT EXECUTED 45eae: 2f03 movel %d3,%sp@- <== NOT EXECUTED 45eb0: 4879 0006 0eac pea 60eac <== NOT EXECUTED 45eb6: 4e95 jsr %a5@ <== NOT EXECUTED if (r_chain == NULL) { 45eb8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 45ebc: 4a80 tstl %d0 <== NOT EXECUTED 45ebe: 660a bnes 45eca <== NOT EXECUTED pthread_mutex_unlock (&aio_request_queue.mutex); 45ec0: 4879 0006 0e58 pea 60e58 <== NOT EXECUTED 45ec6: 4e92 jsr %a2@ <== NOT EXECUTED 45ec8: 609e bras 45e68 <== NOT EXECUTED rtems_set_errno_and_return_minus_one (EINVAL); } AIO_printf ("Request on [IQ]\n"); result = rtems_aio_remove_req (&r_chain->perfd, aiocbp); 45eca: 2f0b movel %a3,%sp@- <== NOT EXECUTED 45ecc: 2040 moveal %d0,%a0 <== NOT EXECUTED 45ece: 4868 0008 pea %a0@(8) <== NOT EXECUTED 45ed2: 4eb9 0004 6494 jsr 46494 <== NOT EXECUTED pthread_mutex_unlock (&aio_request_queue.mutex); 45ed8: 4879 0006 0e58 pea 60e58 <== NOT EXECUTED rtems_set_errno_and_return_minus_one (EINVAL); } AIO_printf ("Request on [IQ]\n"); result = rtems_aio_remove_req (&r_chain->perfd, aiocbp); 45ede: 2400 movel %d0,%d2 <== NOT EXECUTED pthread_mutex_unlock (&aio_request_queue.mutex); 45ee0: 4e92 jsr %a2@ <== NOT EXECUTED return result; 45ee2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 45ee6: 6042 bras 45f2a <== NOT EXECUTED } else { pthread_mutex_unlock (&aio_request_queue.mutex); 45ee8: 4879 0006 0e58 pea 60e58 <== NOT EXECUTED return AIO_ALLDONE; 45eee: 7402 moveq #2,%d2 <== NOT EXECUTED result = rtems_aio_remove_req (&r_chain->perfd, aiocbp); pthread_mutex_unlock (&aio_request_queue.mutex); return result; } else { pthread_mutex_unlock (&aio_request_queue.mutex); 45ef0: 4eb9 0004 6eb0 jsr 46eb0 <== NOT EXECUTED return AIO_ALLDONE; 45ef6: 588f addql #4,%sp <== NOT EXECUTED 45ef8: 6030 bras 45f2a <== NOT EXECUTED } } AIO_printf ("Request on [WQ]\n"); pthread_mutex_lock (&r_chain->mutex); 45efa: 2600 movel %d0,%d3 <== NOT EXECUTED 45efc: 0683 0000 001c addil #28,%d3 <== NOT EXECUTED 45f02: 2f03 movel %d3,%sp@- <== NOT EXECUTED 45f04: 4e94 jsr %a4@ <== NOT EXECUTED result = rtems_aio_remove_req (&r_chain->perfd, aiocbp); 45f06: 2f0b movel %a3,%sp@- <== NOT EXECUTED 45f08: 486a 0008 pea %a2@(8) <== NOT EXECUTED pthread_mutex_unlock (&r_chain->mutex); 45f0c: 45f9 0004 6eb0 lea 46eb0 ,%a2 <== NOT EXECUTED } } AIO_printf ("Request on [WQ]\n"); pthread_mutex_lock (&r_chain->mutex); result = rtems_aio_remove_req (&r_chain->perfd, aiocbp); 45f12: 4eb9 0004 6494 jsr 46494 <== NOT EXECUTED 45f18: 2400 movel %d0,%d2 <== NOT EXECUTED pthread_mutex_unlock (&r_chain->mutex); 45f1a: 2f03 movel %d3,%sp@- <== NOT EXECUTED 45f1c: 4e92 jsr %a2@ <== NOT EXECUTED pthread_mutex_unlock (&aio_request_queue.mutex); 45f1e: 4879 0006 0e58 pea 60e58 <== NOT EXECUTED 45f24: 4e92 jsr %a2@ <== NOT EXECUTED return result; 45f26: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED } return AIO_ALLDONE; } 45f2a: 2002 movel %d2,%d0 <== NOT EXECUTED 45f2c: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED 45f32: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00045f38 : */ int aio_error (const struct aiocb *aiocbp) { 45f38: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return aiocbp->error_code; } 45f3c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 45f40: 4e5e unlk %fp <== NOT EXECUTED 45f42: 2028 0030 movel %a0@(48),%d0 <== NOT EXECUTED =============================================================================== 00045f48 : ) { rtems_aio_request *req; int mode; if (op != O_SYNC) 45f48: 203c 0000 2000 movel #8192,%d0 <== NOT EXECUTED int aio_fsync( int op, struct aiocb *aiocbp ) { 45f4e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45f52: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45f54: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED rtems_aio_request *req; int mode; if (op != O_SYNC) 45f58: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED 45f5c: 671a beqs 45f78 <== NOT EXECUTED rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp); 45f5e: 7216 moveq #22,%d1 <== NOT EXECUTED 45f60: 70ff moveq #-1,%d0 <== NOT EXECUTED 45f62: 2541 0030 movel %d1,%a2@(48) <== NOT EXECUTED 45f66: 2540 0034 movel %d0,%a2@(52) <== NOT EXECUTED 45f6a: 4eb9 0004 efdc jsr 4efdc <__errno> <== NOT EXECUTED 45f70: 2040 moveal %d0,%a0 <== NOT EXECUTED 45f72: 7016 moveq #22,%d0 <== NOT EXECUTED 45f74: 2080 movel %d0,%a0@ <== NOT EXECUTED 45f76: 607e bras 45ff6 <== NOT EXECUTED mode = fcntl (aiocbp->aio_fildes, F_GETFL); 45f78: 4878 0003 pea 3 <== NOT EXECUTED 45f7c: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 45f7e: 4eb9 0004 c078 jsr 4c078 <== NOT EXECUTED if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR))) 45f84: 508f addql #8,%sp <== NOT EXECUTED 45f86: 7203 moveq #3,%d1 <== NOT EXECUTED 45f88: c081 andl %d1,%d0 <== NOT EXECUTED 45f8a: 123c 0001 moveb #1,%d1 <== NOT EXECUTED 45f8e: 5380 subql #1,%d0 <== NOT EXECUTED 45f90: b280 cmpl %d0,%d1 <== NOT EXECUTED 45f92: 641a bccs 45fae <== NOT EXECUTED rtems_aio_set_errno_return_minus_one (EBADF, aiocbp); 45f94: 72ff moveq #-1,%d1 <== NOT EXECUTED 45f96: 7009 moveq #9,%d0 <== NOT EXECUTED 45f98: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED 45f9c: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED 45fa0: 4eb9 0004 efdc jsr 4efdc <__errno> <== NOT EXECUTED 45fa6: 7209 moveq #9,%d1 <== NOT EXECUTED 45fa8: 2040 moveal %d0,%a0 <== NOT EXECUTED 45faa: 2081 movel %d1,%a0@ <== NOT EXECUTED 45fac: 6048 bras 45ff6 <== NOT EXECUTED req = malloc (sizeof (rtems_aio_request)); 45fae: 4878 0018 pea 18 <== NOT EXECUTED 45fb2: 4eb9 0004 3724 jsr 43724 <== NOT EXECUTED if (req == NULL) 45fb8: 588f addql #4,%sp <== NOT EXECUTED 45fba: 4a80 tstl %d0 <== NOT EXECUTED 45fbc: 661c bnes 45fda <== NOT EXECUTED rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp); 45fbe: 103c 000b moveb #11,%d0 <== NOT EXECUTED 45fc2: 72ff moveq #-1,%d1 <== NOT EXECUTED 45fc4: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED 45fc8: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED 45fcc: 4eb9 0004 efdc jsr 4efdc <__errno> <== NOT EXECUTED 45fd2: 2040 moveal %d0,%a0 <== NOT EXECUTED 45fd4: 700b moveq #11,%d0 <== NOT EXECUTED 45fd6: 2080 movel %d0,%a0@ <== NOT EXECUTED 45fd8: 601c bras 45ff6 <== NOT EXECUTED req->aiocbp = aiocbp; 45fda: 2040 moveal %d0,%a0 <== NOT EXECUTED req->aiocbp->aio_lio_opcode = LIO_SYNC; 45fdc: 7203 moveq #3,%d1 <== NOT EXECUTED req = malloc (sizeof (rtems_aio_request)); if (req == NULL) rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp); req->aiocbp = aiocbp; 45fde: 214a 0014 movel %a2,%a0@(20) <== NOT EXECUTED req->aiocbp->aio_lio_opcode = LIO_SYNC; 45fe2: 2541 002c movel %d1,%a2@(44) <== NOT EXECUTED return rtems_aio_enqueue (req); } 45fe6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp); req->aiocbp = aiocbp; req->aiocbp->aio_lio_opcode = LIO_SYNC; return rtems_aio_enqueue (req); 45fea: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED } 45fee: 4e5e unlk %fp <== NOT EXECUTED rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp); req->aiocbp = aiocbp; req->aiocbp->aio_lio_opcode = LIO_SYNC; return rtems_aio_enqueue (req); 45ff0: 4ef9 0004 64f0 jmp 464f0 <== NOT EXECUTED } 45ff6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 45ffa: 70ff moveq #-1,%d0 <== NOT EXECUTED 45ffc: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000466f0 : * 0 - otherwise */ int aio_read (struct aiocb *aiocbp) { 466f0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 466f4: 2f0a movel %a2,%sp@- <== NOT EXECUTED rtems_aio_request *req; int mode; mode = fcntl (aiocbp->aio_fildes, F_GETFL); 466f6: 4878 0003 pea 3 <== NOT EXECUTED * 0 - otherwise */ int aio_read (struct aiocb *aiocbp) { 466fa: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED rtems_aio_request *req; int mode; mode = fcntl (aiocbp->aio_fildes, F_GETFL); 466fe: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 46700: 4eb9 0004 c078 jsr 4c078 <== NOT EXECUTED if (!(((mode & O_ACCMODE) == O_RDONLY) || ((mode & O_ACCMODE) == O_RDWR))) 46706: 508f addql #8,%sp <== NOT EXECUTED 46708: 7203 moveq #3,%d1 <== NOT EXECUTED 4670a: c081 andl %d1,%d0 <== NOT EXECUTED 4670c: 6722 beqs 46730 <== NOT EXECUTED 4670e: 123c 0002 moveb #2,%d1 <== NOT EXECUTED 46712: b280 cmpl %d0,%d1 <== NOT EXECUTED 46714: 671a beqs 46730 <== NOT EXECUTED rtems_aio_set_errno_return_minus_one (EBADF, aiocbp); 46716: 7009 moveq #9,%d0 <== NOT EXECUTED 46718: 72ff moveq #-1,%d1 <== NOT EXECUTED 4671a: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED 4671e: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED 46722: 4eb9 0004 efdc jsr 4efdc <__errno> <== NOT EXECUTED 46728: 2040 moveal %d0,%a0 <== NOT EXECUTED 4672a: 7009 moveq #9,%d0 <== NOT EXECUTED 4672c: 2080 movel %d0,%a0@ <== NOT EXECUTED 4672e: 606e bras 4679e <== NOT EXECUTED if (aiocbp->aio_reqprio < 0 || aiocbp->aio_reqprio > AIO_PRIO_DELTA_MAX) 46730: 4aaa 0014 tstl %a2@(20) <== NOT EXECUTED 46734: 6606 bnes 4673c <== NOT EXECUTED rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp); if (aiocbp->aio_offset < 0) 46736: 4aaa 0004 tstl %a2@(4) <== NOT EXECUTED 4673a: 6a1a bpls 46756 <== NOT EXECUTED rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp); 4673c: 72ff moveq #-1,%d1 <== NOT EXECUTED 4673e: 7016 moveq #22,%d0 <== NOT EXECUTED 46740: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED 46744: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED 46748: 4eb9 0004 efdc jsr 4efdc <__errno> <== NOT EXECUTED 4674e: 7216 moveq #22,%d1 <== NOT EXECUTED 46750: 2040 moveal %d0,%a0 <== NOT EXECUTED 46752: 2081 movel %d1,%a0@ <== NOT EXECUTED 46754: 6048 bras 4679e <== NOT EXECUTED req = malloc (sizeof (rtems_aio_request)); 46756: 4878 0018 pea 18 <== NOT EXECUTED 4675a: 4eb9 0004 3724 jsr 43724 <== NOT EXECUTED if (req == NULL) 46760: 588f addql #4,%sp <== NOT EXECUTED 46762: 4a80 tstl %d0 <== NOT EXECUTED 46764: 661c bnes 46782 <== NOT EXECUTED rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp); 46766: 103c 000b moveb #11,%d0 <== NOT EXECUTED 4676a: 72ff moveq #-1,%d1 <== NOT EXECUTED 4676c: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED 46770: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED 46774: 4eb9 0004 efdc jsr 4efdc <__errno> <== NOT EXECUTED 4677a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4677c: 700b moveq #11,%d0 <== NOT EXECUTED 4677e: 2080 movel %d0,%a0@ <== NOT EXECUTED 46780: 601c bras 4679e <== NOT EXECUTED req->aiocbp = aiocbp; 46782: 2040 moveal %d0,%a0 <== NOT EXECUTED req->aiocbp->aio_lio_opcode = LIO_READ; 46784: 7201 moveq #1,%d1 <== NOT EXECUTED req = malloc (sizeof (rtems_aio_request)); if (req == NULL) rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp); req->aiocbp = aiocbp; 46786: 214a 0014 movel %a2,%a0@(20) <== NOT EXECUTED req->aiocbp->aio_lio_opcode = LIO_READ; 4678a: 2541 002c movel %d1,%a2@(44) <== NOT EXECUTED return rtems_aio_enqueue (req); } 4678e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp); req->aiocbp = aiocbp; req->aiocbp->aio_lio_opcode = LIO_READ; return rtems_aio_enqueue (req); 46792: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED } 46796: 4e5e unlk %fp <== NOT EXECUTED rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp); req->aiocbp = aiocbp; req->aiocbp->aio_lio_opcode = LIO_READ; return rtems_aio_enqueue (req); 46798: 4ef9 0004 64f0 jmp 464f0 <== NOT EXECUTED } 4679e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 467a2: 70ff moveq #-1,%d0 <== NOT EXECUTED 467a4: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000467a8 : * aiocbp->return_value */ ssize_t aio_return (const struct aiocb *aiocbp) { 467a8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return aiocbp->return_value; } 467ac: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 467b0: 4e5e unlk %fp <== NOT EXECUTED 467b2: 2028 0034 movel %a0@(52),%d0 <== NOT EXECUTED =============================================================================== 000453f0 : int aio_suspend( const struct aiocb * const list[] __attribute__((unused)), int nent __attribute__((unused)), const struct timespec *timeout __attribute__((unused)) ) { 453f0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 453f4: 4eb9 0004 d19c jsr 4d19c <__errno> <== NOT EXECUTED } 453fa: 4e5e unlk %fp <== NOT EXECUTED const struct aiocb * const list[] __attribute__((unused)), int nent __attribute__((unused)), const struct timespec *timeout __attribute__((unused)) ) { rtems_set_errno_and_return_minus_one( ENOSYS ); 453fc: 2040 moveal %d0,%a0 <== NOT EXECUTED 453fe: 7058 moveq #88,%d0 <== NOT EXECUTED 45400: 2080 movel %d0,%a0@ <== NOT EXECUTED } 45402: 70ff moveq #-1,%d0 <== NOT EXECUTED ... =============================================================================== 000467b8 : * 0 - otherwise */ int aio_write (struct aiocb *aiocbp) { 467b8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 467bc: 2f0a movel %a2,%sp@- <== NOT EXECUTED rtems_aio_request *req; int mode; mode = fcntl (aiocbp->aio_fildes, F_GETFL); 467be: 4878 0003 pea 3 <== NOT EXECUTED * 0 - otherwise */ int aio_write (struct aiocb *aiocbp) { 467c2: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED rtems_aio_request *req; int mode; mode = fcntl (aiocbp->aio_fildes, F_GETFL); 467c6: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 467c8: 4eb9 0004 c078 jsr 4c078 <== NOT EXECUTED if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR))) 467ce: 508f addql #8,%sp <== NOT EXECUTED 467d0: 7203 moveq #3,%d1 <== NOT EXECUTED 467d2: c081 andl %d1,%d0 <== NOT EXECUTED 467d4: 123c 0001 moveb #1,%d1 <== NOT EXECUTED 467d8: 5380 subql #1,%d0 <== NOT EXECUTED 467da: b280 cmpl %d0,%d1 <== NOT EXECUTED 467dc: 641a bccs 467f8 <== NOT EXECUTED rtems_aio_set_errno_return_minus_one (EBADF, aiocbp); 467de: 7009 moveq #9,%d0 <== NOT EXECUTED 467e0: 72ff moveq #-1,%d1 <== NOT EXECUTED 467e2: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED 467e6: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED 467ea: 4eb9 0004 efdc jsr 4efdc <__errno> <== NOT EXECUTED 467f0: 2040 moveal %d0,%a0 <== NOT EXECUTED 467f2: 7009 moveq #9,%d0 <== NOT EXECUTED 467f4: 2080 movel %d0,%a0@ <== NOT EXECUTED 467f6: 606e bras 46866 <== NOT EXECUTED if (aiocbp->aio_reqprio < 0 || aiocbp->aio_reqprio > AIO_PRIO_DELTA_MAX) 467f8: 4aaa 0014 tstl %a2@(20) <== NOT EXECUTED 467fc: 6606 bnes 46804 <== NOT EXECUTED rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp); if (aiocbp->aio_offset < 0) 467fe: 4aaa 0004 tstl %a2@(4) <== NOT EXECUTED 46802: 6a1a bpls 4681e <== NOT EXECUTED rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp); 46804: 72ff moveq #-1,%d1 <== NOT EXECUTED 46806: 7016 moveq #22,%d0 <== NOT EXECUTED 46808: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED 4680c: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED 46810: 4eb9 0004 efdc jsr 4efdc <__errno> <== NOT EXECUTED 46816: 7216 moveq #22,%d1 <== NOT EXECUTED 46818: 2040 moveal %d0,%a0 <== NOT EXECUTED 4681a: 2081 movel %d1,%a0@ <== NOT EXECUTED 4681c: 6048 bras 46866 <== NOT EXECUTED req = malloc (sizeof (rtems_aio_request)); 4681e: 4878 0018 pea 18 <== NOT EXECUTED 46822: 4eb9 0004 3724 jsr 43724 <== NOT EXECUTED if (req == NULL) 46828: 588f addql #4,%sp <== NOT EXECUTED 4682a: 4a80 tstl %d0 <== NOT EXECUTED 4682c: 661c bnes 4684a <== NOT EXECUTED rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp); 4682e: 103c 000b moveb #11,%d0 <== NOT EXECUTED 46832: 72ff moveq #-1,%d1 <== NOT EXECUTED 46834: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED 46838: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED 4683c: 4eb9 0004 efdc jsr 4efdc <__errno> <== NOT EXECUTED 46842: 2040 moveal %d0,%a0 <== NOT EXECUTED 46844: 700b moveq #11,%d0 <== NOT EXECUTED 46846: 2080 movel %d0,%a0@ <== NOT EXECUTED 46848: 601c bras 46866 <== NOT EXECUTED req->aiocbp = aiocbp; 4684a: 2040 moveal %d0,%a0 <== NOT EXECUTED req->aiocbp->aio_lio_opcode = LIO_WRITE; 4684c: 7202 moveq #2,%d1 <== NOT EXECUTED req = malloc (sizeof (rtems_aio_request)); if (req == NULL) rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp); req->aiocbp = aiocbp; 4684e: 214a 0014 movel %a2,%a0@(20) <== NOT EXECUTED req->aiocbp->aio_lio_opcode = LIO_WRITE; 46852: 2541 002c movel %d1,%a2@(44) <== NOT EXECUTED return rtems_aio_enqueue (req); } 46856: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp); req->aiocbp = aiocbp; req->aiocbp->aio_lio_opcode = LIO_WRITE; return rtems_aio_enqueue (req); 4685a: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED } 4685e: 4e5e unlk %fp <== NOT EXECUTED rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp); req->aiocbp = aiocbp; req->aiocbp->aio_lio_opcode = LIO_WRITE; return rtems_aio_enqueue (req); 46860: 4ef9 0004 64f0 jmp 464f0 <== NOT EXECUTED } 46866: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4686a: 70ff moveq #-1,%d0 <== NOT EXECUTED 4686c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046dc4 : } unsigned int alarm( unsigned int seconds ) { 46dc4: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 46dc8: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 46dcc: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED /* * Initialize the timer used to implement alarm(). */ if ( !the_timer->routine ) { 46dd0: 4ab9 0006 288c tstl 6288c <_POSIX_signals_Alarm_timer+0x1c><== NOT EXECUTED 46dd6: 6620 bnes 46df8 <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 46dd8: 42b9 0006 2878 clrl 62878 <_POSIX_signals_Alarm_timer+0x8> <== NOT EXECUTED the_watchdog->routine = routine; 46dde: 203c 0004 6da8 movel #290216,%d0 <== NOT EXECUTED the_watchdog->id = id; 46de4: 42b9 0006 2890 clrl 62890 <_POSIX_signals_Alarm_timer+0x20><== NOT EXECUTED Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 46dea: 23c0 0006 288c movel %d0,6288c <_POSIX_signals_Alarm_timer+0x1c><== NOT EXECUTED the_watchdog->id = id; the_watchdog->user_data = user_data; 46df0: 42b9 0006 2894 clrl 62894 <_POSIX_signals_Alarm_timer+0x24><== NOT EXECUTED 46df6: 6036 bras 46e2e <== NOT EXECUTED _Watchdog_Initialize( the_timer, _POSIX_signals_Alarm_TSR, 0, NULL ); } else { Watchdog_States state; state = _Watchdog_Remove( the_timer ); 46df8: 4879 0006 2870 pea 62870 <_POSIX_signals_Alarm_timer> <== NOT EXECUTED 46dfe: 4eb9 0004 b580 jsr 4b580 <_Watchdog_Remove> <== NOT EXECUTED if ( (state == WATCHDOG_ACTIVE) || (state == WATCHDOG_REMOVE_IT) ) { 46e04: 588f addql #4,%sp <== NOT EXECUTED 46e06: 7201 moveq #1,%d1 <== NOT EXECUTED 46e08: 5580 subql #2,%d0 <== NOT EXECUTED 46e0a: b280 cmpl %d0,%d1 <== NOT EXECUTED 46e0c: 6520 bcss 46e2e <== NOT EXECUTED * boot. Since alarm() is dealing in seconds, we must account for * this. */ remaining = the_timer->initial - ((the_timer->stop_time - the_timer->start_time) / TOD_TICKS_PER_SECOND); 46e0e: 2839 0006 2888 movel 62888 <_POSIX_signals_Alarm_timer+0x18>,%d4<== NOT EXECUTED 46e14: 98b9 0006 2884 subl 62884 <_POSIX_signals_Alarm_timer+0x14>,%d4<== NOT EXECUTED * The stop_time and start_time fields are snapshots of ticks since * boot. Since alarm() is dealing in seconds, we must account for * this. */ remaining = the_timer->initial - 46e1a: 2439 0006 287c movel 6287c <_POSIX_signals_Alarm_timer+0xc>,%d2<== NOT EXECUTED ((the_timer->stop_time - the_timer->start_time) / TOD_TICKS_PER_SECOND); 46e20: 4eb9 0004 92f4 jsr 492f4 <== NOT EXECUTED 46e26: 4c40 4004 remul %d0,%d4,%d4 <== NOT EXECUTED * The stop_time and start_time fields are snapshots of ticks since * boot. Since alarm() is dealing in seconds, we must account for * this. */ remaining = the_timer->initial - 46e2a: 9484 subl %d4,%d2 <== NOT EXECUTED 46e2c: 6002 bras 46e30 <== NOT EXECUTED unsigned int alarm( unsigned int seconds ) { unsigned int remaining = 0; 46e2e: 4282 clrl %d2 <== NOT EXECUTED remaining = the_timer->initial - ((the_timer->stop_time - the_timer->start_time) / TOD_TICKS_PER_SECOND); } } if ( seconds ) 46e30: 4a83 tstl %d3 <== NOT EXECUTED 46e32: 671a beqs 46e4e <== NOT EXECUTED ) { the_watchdog->initial = units; _Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog ); 46e34: 4879 0006 2870 pea 62870 <_POSIX_signals_Alarm_timer> <== NOT EXECUTED 46e3a: 4879 0006 2bd4 pea 62bd4 <_Watchdog_Seconds_chain> <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 46e40: 23c3 0006 287c movel %d3,6287c <_POSIX_signals_Alarm_timer+0xc><== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog ); 46e46: 4eb9 0004 b458 jsr 4b458 <_Watchdog_Insert> <== NOT EXECUTED 46e4c: 508f addql #8,%sp <== NOT EXECUTED _Watchdog_Insert_seconds( the_timer, seconds ); return remaining; } 46e4e: 2002 movel %d2,%d0 <== NOT EXECUTED 46e50: 4cee 001c fff4 moveml %fp@(-12),%d2-%d4 <== NOT EXECUTED 46e56: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00045408 : int clock_getcpuclockid( pid_t pid, clockid_t *clock_id ) { 45408: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 4540c: 4eb9 0004 d19c jsr 4d19c <__errno> <== NOT EXECUTED } 45412: 4e5e unlk %fp <== NOT EXECUTED int clock_getcpuclockid( pid_t pid, clockid_t *clock_id ) { rtems_set_errno_and_return_minus_one( ENOSYS ); 45414: 2040 moveal %d0,%a0 <== NOT EXECUTED 45416: 7058 moveq #88,%d0 <== NOT EXECUTED 45418: 2080 movel %d0,%a0@ <== NOT EXECUTED } 4541a: 70ff moveq #-1,%d0 <== NOT EXECUTED ... =============================================================================== 00045420 : int clock_getenable_attr( clockid_t clock_id, int *attr ) { 45420: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 45424: 4eb9 0004 d19c jsr 4d19c <__errno> <== NOT EXECUTED } 4542a: 4e5e unlk %fp <== NOT EXECUTED int clock_getenable_attr( clockid_t clock_id, int *attr ) { rtems_set_errno_and_return_minus_one( ENOSYS ); 4542c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4542e: 7058 moveq #88,%d0 <== NOT EXECUTED 45430: 2080 movel %d0,%a0@ <== NOT EXECUTED } 45432: 70ff moveq #-1,%d0 <== NOT EXECUTED ... =============================================================================== 0004591c : int clock_getres( clockid_t clock_id, struct timespec *res ) { 4591c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45920: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 45924: 2f03 movel %d3,%sp@- <== NOT EXECUTED 45926: 2f02 movel %d2,%sp@- <== NOT EXECUTED if ( !res ) 45928: 4a88 tstl %a0 <== NOT EXECUTED 4592a: 6732 beqs 4595e <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); switch ( clock_id ) { 4592c: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 45930: 7202 moveq #2,%d1 <== NOT EXECUTED 45932: 5380 subql #1,%d0 <== NOT EXECUTED 45934: b280 cmpl %d0,%d1 <== NOT EXECUTED 45936: 6526 bcss 4595e <== NOT EXECUTED case CLOCK_REALTIME: case CLOCK_PROCESS_CPUTIME: case CLOCK_THREAD_CPUTIME: if ( res ) { res->tv_sec = rtems_configuration_get_microseconds_per_tick() / 45938: 2039 0005 eb00 movel 5eb00 ,%d0 <== NOT EXECUTED 4593e: 2400 movel %d0,%d2 <== NOT EXECUTED 45940: 263c 000f 4240 movel #1000000,%d3 <== NOT EXECUTED 45946: 4c43 2002 remul %d3,%d2,%d2 <== NOT EXECUTED TOD_MICROSECONDS_PER_SECOND; res->tv_nsec = rtems_configuration_get_nanoseconds_per_tick(); 4594a: 223c 0000 03e8 movel #1000,%d1 <== NOT EXECUTED 45950: 4c00 1800 mulsl %d0,%d1 <== NOT EXECUTED default: rtems_set_errno_and_return_minus_one( EINVAL ); } return 0; 45954: 4280 clrl %d0 <== NOT EXECUTED case CLOCK_REALTIME: case CLOCK_PROCESS_CPUTIME: case CLOCK_THREAD_CPUTIME: if ( res ) { res->tv_sec = rtems_configuration_get_microseconds_per_tick() / 45956: 2082 movel %d2,%a0@ <== NOT EXECUTED TOD_MICROSECONDS_PER_SECOND; res->tv_nsec = rtems_configuration_get_nanoseconds_per_tick(); 45958: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED 4595c: 600e bras 4596c <== NOT EXECUTED } break; default: rtems_set_errno_and_return_minus_one( EINVAL ); 4595e: 4eb9 0004 d654 jsr 4d654 <__errno> <== NOT EXECUTED 45964: 2040 moveal %d0,%a0 <== NOT EXECUTED 45966: 7016 moveq #22,%d0 <== NOT EXECUTED 45968: 2080 movel %d0,%a0@ <== NOT EXECUTED 4596a: 70ff moveq #-1,%d0 <== NOT EXECUTED } return 0; } 4596c: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 45970: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 45974: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004546c : int clock_gettime( clockid_t clock_id, struct timespec *tp ) { 4546c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45470: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED 45474: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED 45478: 2f02 movel %d2,%sp@- <== NOT EXECUTED if ( !tp ) 4547a: 4a80 tstl %d0 <== NOT EXECUTED 4547c: 6608 bnes 45486 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 4547e: 4eb9 0004 d7dc jsr 4d7dc <__errno> <== NOT EXECUTED 45484: 6042 bras 454c8 <== NOT EXECUTED if ( clock_id == CLOCK_REALTIME ) { 45486: 7401 moveq #1,%d2 <== NOT EXECUTED 45488: b481 cmpl %d1,%d2 <== NOT EXECUTED 4548a: 660a bnes 45496 <== NOT EXECUTED _TOD_Get(tp); 4548c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4548e: 4eb9 0004 70f4 jsr 470f4 <_TOD_Get> <== NOT EXECUTED 45494: 6014 bras 454aa <== NOT EXECUTED return 0; } #ifdef CLOCK_MONOTONIC if ( clock_id == CLOCK_MONOTONIC ) { 45496: 7404 moveq #4,%d2 <== NOT EXECUTED 45498: b481 cmpl %d1,%d2 <== NOT EXECUTED 4549a: 6706 beqs 454a2 <== NOT EXECUTED return 0; } #endif #ifdef _POSIX_CPUTIME if ( clock_id == CLOCK_PROCESS_CPUTIME ) { 4549c: 7402 moveq #2,%d2 <== NOT EXECUTED 4549e: b481 cmpl %d1,%d2 <== NOT EXECUTED 454a0: 660e bnes 454b0 <== NOT EXECUTED _TOD_Get_uptime_as_timespec( tp ); 454a2: 2f00 movel %d0,%sp@- <== NOT EXECUTED 454a4: 4eb9 0004 7158 jsr 47158 <_TOD_Get_uptime_as_timespec> <== NOT EXECUTED return 0; 454aa: 588f addql #4,%sp <== NOT EXECUTED 454ac: 4280 clrl %d0 <== NOT EXECUTED 454ae: 6020 bras 454d0 <== NOT EXECUTED 454b0: 41f9 0004 d7dc lea 4d7dc <__errno>,%a0 <== NOT EXECUTED } #endif #ifdef _POSIX_THREAD_CPUTIME if ( clock_id == CLOCK_THREAD_CPUTIME ) 454b6: 7003 moveq #3,%d0 <== NOT EXECUTED 454b8: b081 cmpl %d1,%d0 <== NOT EXECUTED 454ba: 660a bnes 454c6 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 454bc: 4e90 jsr %a0@ <== NOT EXECUTED 454be: 7258 moveq #88,%d1 <== NOT EXECUTED 454c0: 2040 moveal %d0,%a0 <== NOT EXECUTED 454c2: 2081 movel %d1,%a0@ <== NOT EXECUTED 454c4: 6008 bras 454ce <== NOT EXECUTED #endif rtems_set_errno_and_return_minus_one( EINVAL ); 454c6: 4e90 jsr %a0@ <== NOT EXECUTED 454c8: 2040 moveal %d0,%a0 <== NOT EXECUTED 454ca: 7016 moveq #22,%d0 <== NOT EXECUTED 454cc: 2080 movel %d0,%a0@ <== NOT EXECUTED 454ce: 70ff moveq #-1,%d0 <== NOT EXECUTED return 0; } 454d0: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 454d4: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045438 : int clock_setenable_attr( clockid_t clock_id, int attr ) { 45438: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 4543c: 4eb9 0004 d19c jsr 4d19c <__errno> <== NOT EXECUTED } 45442: 4e5e unlk %fp <== NOT EXECUTED int clock_setenable_attr( clockid_t clock_id, int attr ) { rtems_set_errno_and_return_minus_one( ENOSYS ); 45444: 2040 moveal %d0,%a0 <== NOT EXECUTED 45446: 7058 moveq #88,%d0 <== NOT EXECUTED 45448: 2080 movel %d0,%a0@ <== NOT EXECUTED } 4544a: 70ff moveq #-1,%d0 <== NOT EXECUTED ... =============================================================================== 000454d8 : int clock_settime( clockid_t clock_id, const struct timespec *tp ) { 454d8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 454dc: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED 454e0: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED if ( !tp ) 454e4: 4a88 tstl %a0 <== NOT EXECUTED 454e6: 6710 beqs 454f8 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); if ( clock_id == CLOCK_REALTIME ) { 454e8: 7001 moveq #1,%d0 <== NOT EXECUTED 454ea: b081 cmpl %d1,%d0 <== NOT EXECUTED 454ec: 6634 bnes 45522 <== NOT EXECUTED if ( tp->tv_sec < TOD_SECONDS_1970_THROUGH_1988 ) 454ee: 203c 21da e4ff movel #567993599,%d0 <== NOT EXECUTED 454f4: b090 cmpl %a0@,%d0 <== NOT EXECUTED 454f6: 6508 bcss 45500 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 454f8: 4eb9 0004 d7dc jsr 4d7dc <__errno> <== NOT EXECUTED 454fe: 6048 bras 45548 <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 45500: 2039 0006 0138 movel 60138 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 45506: 5280 addql #1,%d0 <== NOT EXECUTED 45508: 23c0 0006 0138 movel %d0,60138 <_Thread_Dispatch_disable_level><== NOT EXECUTED _Thread_Disable_dispatch(); _TOD_Set( tp ); 4550e: 2f08 movel %a0,%sp@- <== NOT EXECUTED 45510: 4eb9 0004 71b0 jsr 471b0 <_TOD_Set> <== NOT EXECUTED _Thread_Enable_dispatch(); 45516: 4eb9 0004 8526 jsr 48526 <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); #endif else rtems_set_errno_and_return_minus_one( EINVAL ); return 0; 4551c: 588f addql #4,%sp <== NOT EXECUTED 4551e: 4280 clrl %d0 <== NOT EXECUTED 45520: 602e bras 45550 <== NOT EXECUTED _Thread_Disable_dispatch(); _TOD_Set( tp ); _Thread_Enable_dispatch(); } #ifdef _POSIX_CPUTIME else if ( clock_id == CLOCK_PROCESS_CPUTIME ) 45522: 7002 moveq #2,%d0 <== NOT EXECUTED 45524: b081 cmpl %d1,%d0 <== NOT EXECUTED 45526: 6608 bnes 45530 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 45528: 4eb9 0004 d7dc jsr 4d7dc <__errno> <== NOT EXECUTED 4552e: 600e bras 4553e <== NOT EXECUTED 45530: 41f9 0004 d7dc lea 4d7dc <__errno>,%a0 <== NOT EXECUTED #endif #ifdef _POSIX_THREAD_CPUTIME else if ( clock_id == CLOCK_THREAD_CPUTIME ) 45536: 7003 moveq #3,%d0 <== NOT EXECUTED 45538: b081 cmpl %d1,%d0 <== NOT EXECUTED 4553a: 660a bnes 45546 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 4553c: 4e90 jsr %a0@ <== NOT EXECUTED 4553e: 2040 moveal %d0,%a0 <== NOT EXECUTED 45540: 7258 moveq #88,%d1 <== NOT EXECUTED 45542: 2081 movel %d1,%a0@ <== NOT EXECUTED 45544: 6008 bras 4554e <== NOT EXECUTED #endif else rtems_set_errno_and_return_minus_one( EINVAL ); 45546: 4e90 jsr %a0@ <== NOT EXECUTED 45548: 2040 moveal %d0,%a0 <== NOT EXECUTED 4554a: 7016 moveq #22,%d0 <== NOT EXECUTED 4554c: 2080 movel %d0,%a0@ <== NOT EXECUTED 4554e: 70ff moveq #-1,%d0 <== NOT EXECUTED return 0; } 45550: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045450 : #include #include #include int fork( void ) { 45450: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 45454: 4eb9 0004 d19c jsr 4d19c <__errno> <== NOT EXECUTED } 4545a: 4e5e unlk %fp <== NOT EXECUTED #include #include int fork( void ) { rtems_set_errno_and_return_minus_one( ENOSYS ); 4545c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4545e: 7058 moveq #88,%d0 <== NOT EXECUTED 45460: 2080 movel %d0,%a0@ <== NOT EXECUTED } 45462: 70ff moveq #-1,%d0 <== NOT EXECUTED ... =============================================================================== 00045288 : int getitimer( int which, struct itimerval *value ) { 45288: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED if ( !value ) 4528c: 4aae 000c tstl %fp@(12) <== NOT EXECUTED 45290: 660e bnes 452a0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EFAULT ); 45292: 4eb9 0004 cf50 jsr 4cf50 <__errno> <== NOT EXECUTED 45298: 2040 moveal %d0,%a0 <== NOT EXECUTED 4529a: 700e moveq #14,%d0 <== NOT EXECUTED 4529c: 2080 movel %d0,%a0@ <== NOT EXECUTED 4529e: 6020 bras 452c0 <== NOT EXECUTED 452a0: 41f9 0004 cf50 lea 4cf50 <__errno>,%a0 <== NOT EXECUTED switch ( which ) { 452a6: 7002 moveq #2,%d0 <== NOT EXECUTED 452a8: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED 452ac: 650a bcss 452b8 <== NOT EXECUTED case ITIMER_REAL: case ITIMER_VIRTUAL: case ITIMER_PROF: rtems_set_errno_and_return_minus_one( ENOSYS ); 452ae: 4e90 jsr %a0@ <== NOT EXECUTED 452b0: 7258 moveq #88,%d1 <== NOT EXECUTED 452b2: 2040 moveal %d0,%a0 <== NOT EXECUTED 452b4: 2081 movel %d1,%a0@ <== NOT EXECUTED 452b6: 6008 bras 452c0 <== NOT EXECUTED default: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 452b8: 4e90 jsr %a0@ <== NOT EXECUTED 452ba: 2040 moveal %d0,%a0 <== NOT EXECUTED 452bc: 7016 moveq #22,%d0 <== NOT EXECUTED 452be: 2080 movel %d0,%a0@ <== NOT EXECUTED } 452c0: 70ff moveq #-1,%d0 <== NOT EXECUTED 452c2: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00045828 : int kill( pid_t pid, int sig ) { 45828: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return killinfo( pid, sig, NULL ); 4582c: 42a7 clrl %sp@- <== NOT EXECUTED 4582e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 45832: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 45836: 4eb9 0004 b138 jsr 4b138 <== NOT EXECUTED } 4583c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0005aa04 : int killinfo( pid_t pid, int sig, const union sigval *value ) { 5aa04: 4e56 ffd0 linkw %fp,#-48 <== NOT EXECUTED 5aa08: 48d7 1cfc moveml %d2-%d7/%a2-%a4,%sp@ <== NOT EXECUTED 5aa0c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 5aa10: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED POSIX_signals_Siginfo_node *psiginfo; /* * Only supported for the "calling process" (i.e. this node). */ if ( pid != getpid() ) 5aa14: 4eb9 0005 a628 jsr 5a628 <== NOT EXECUTED 5aa1a: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED 5aa1e: 6710 beqs 5aa30 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ESRCH ); 5aa20: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED 5aa26: 7403 moveq #3,%d2 <== NOT EXECUTED 5aa28: 2040 moveal %d0,%a0 <== NOT EXECUTED 5aa2a: 2082 movel %d2,%a0@ <== NOT EXECUTED 5aa2c: 6000 01ae braw 5abdc <== NOT EXECUTED /* * Validate the signal passed. */ if ( !sig ) 5aa30: 4a82 tstl %d2 <== NOT EXECUTED 5aa32: 670a beqs 5aa3e <== NOT EXECUTED static inline bool is_valid_signo( int signo ) { return ((signo) >= 1 && (signo) <= 32 ); 5aa34: 2202 movel %d2,%d1 <== NOT EXECUTED 5aa36: 5381 subql #1,%d1 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); if ( !is_valid_signo(sig) ) 5aa38: 701f moveq #31,%d0 <== NOT EXECUTED 5aa3a: b081 cmpl %d1,%d0 <== NOT EXECUTED 5aa3c: 6410 bccs 5aa4e <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 5aa3e: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED 5aa44: 7216 moveq #22,%d1 <== NOT EXECUTED 5aa46: 2040 moveal %d0,%a0 <== NOT EXECUTED 5aa48: 2081 movel %d1,%a0@ <== NOT EXECUTED 5aa4a: 6000 0190 braw 5abdc <== NOT EXECUTED /* * If the signal is being ignored, then we are out of here. */ if ( _POSIX_signals_Vectors[ sig ].sa_handler == SIG_IGN ) 5aa4e: 2602 movel %d2,%d3 <== NOT EXECUTED 5aa50: 2002 movel %d2,%d0 <== NOT EXECUTED 5aa52: e58b lsll #2,%d3 <== NOT EXECUTED 5aa54: e988 lsll #4,%d0 <== NOT EXECUTED 5aa56: 9083 subl %d3,%d0 <== NOT EXECUTED 5aa58: 0680 0005 e93c addil #387388,%d0 <== NOT EXECUTED 5aa5e: 7601 moveq #1,%d3 <== NOT EXECUTED 5aa60: 2040 moveal %d0,%a0 <== NOT EXECUTED 5aa62: b690 cmpl %a0@,%d3 <== NOT EXECUTED 5aa64: 6700 01a6 beqw 5ac0c <== 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 ) ) 5aa68: 7008 moveq #8,%d0 <== NOT EXECUTED 5aa6a: b082 cmpl %d2,%d0 <== NOT EXECUTED 5aa6c: 6710 beqs 5aa7e <== NOT EXECUTED 5aa6e: 163c 0004 moveb #4,%d3 <== NOT EXECUTED 5aa72: b682 cmpl %d2,%d3 <== NOT EXECUTED 5aa74: 6708 beqs 5aa7e <== NOT EXECUTED 5aa76: 103c 000b moveb #11,%d0 <== NOT EXECUTED 5aa7a: b082 cmpl %d2,%d0 <== NOT EXECUTED 5aa7c: 6616 bnes 5aa94 <== NOT EXECUTED return pthread_kill( pthread_self(), sig ); 5aa7e: 4eb9 0005 adec jsr 5adec <== NOT EXECUTED 5aa84: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5aa86: 2f00 movel %d0,%sp@- <== NOT EXECUTED 5aa88: 4eb9 0005 ad34 jsr 5ad34 <== NOT EXECUTED 5aa8e: 508f addql #8,%sp <== NOT EXECUTED 5aa90: 6000 017c braw 5ac0e <== NOT EXECUTED static inline sigset_t signo_to_mask( uint32_t sig ) { return 1u << (sig - 1); 5aa94: 7601 moveq #1,%d3 <== NOT EXECUTED /* * Build up a siginfo structure */ siginfo = &siginfo_struct; siginfo->si_signo = sig; siginfo->si_code = SI_USER; 5aa96: 7001 moveq #1,%d0 <== NOT EXECUTED 5aa98: e3ab lsll %d1,%d3 <== NOT EXECUTED /* * Build up a siginfo structure */ siginfo = &siginfo_struct; siginfo->si_signo = sig; 5aa9a: 2d42 fff4 movel %d2,%fp@(-12) <== NOT EXECUTED siginfo->si_code = SI_USER; 5aa9e: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED if ( !value ) { 5aaa2: 4a8a tstl %a2 <== NOT EXECUTED 5aaa4: 6606 bnes 5aaac <== NOT EXECUTED siginfo->si_value.sival_int = 0; 5aaa6: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED 5aaaa: 6004 bras 5aab0 <== NOT EXECUTED } else { siginfo->si_value = *value; 5aaac: 2d52 fffc movel %a2@,%fp@(-4) <== NOT EXECUTED 5aab0: 2039 0005 e478 movel 5e478 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 5aab6: 5280 addql #1,%d0 <== NOT EXECUTED 5aab8: 23c0 0005 e478 movel %d0,5e478 <_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; 5aabe: 2079 0005 e902 moveal 5e902 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED api = the_thread->API_Extensions[ THREAD_API_POSIX ]; if ( _POSIX_signals_Is_interested( api, mask ) ) { 5aac4: 2268 0102 moveal %a0@(258),%a1 <== NOT EXECUTED 5aac8: 2029 00d0 movel %a1@(208),%d0 <== NOT EXECUTED 5aacc: 4680 notl %d0 <== NOT EXECUTED 5aace: c083 andl %d3,%d0 <== NOT EXECUTED 5aad0: 6600 00ae bnew 5ab80 <== NOT EXECUTED } DEBUG_STEP("\n"); _Thread_Enable_dispatch(); return 0; } 5aad4: 2279 0005 eac0 moveal 5eac0 <_POSIX_signals_Wait_queue>,%a1<== NOT EXECUTED /* XXX violation of visibility -- need to define thread queue support */ the_chain = &_POSIX_signals_Wait_queue.Queues.Fifo; for ( the_node = _Chain_First( the_chain ); 5aada: 601e bras 5aafa <== NOT EXECUTED #endif /* * Is this thread is actually blocked waiting for the signal? */ if (the_thread->Wait.option & mask) 5aadc: 2003 movel %d3,%d0 <== NOT EXECUTED for ( the_node = _Chain_First( the_chain ); !_Chain_Is_tail( the_chain, the_node ) ; the_node = the_node->next ) { the_thread = (Thread_Control *)the_node; 5aade: 2049 moveal %a1,%a0 <== NOT EXECUTED #endif /* * Is this thread is actually blocked waiting for the signal? */ if (the_thread->Wait.option & mask) 5aae0: c0a9 0030 andl %a1@(48),%d0 <== NOT EXECUTED for ( the_node = _Chain_First( the_chain ); !_Chain_Is_tail( the_chain, the_node ) ; the_node = the_node->next ) { the_thread = (Thread_Control *)the_node; api = the_thread->API_Extensions[ THREAD_API_POSIX ]; 5aae4: 2469 0102 moveal %a1@(258),%a2 <== NOT EXECUTED #endif /* * Is this thread is actually blocked waiting for the signal? */ if (the_thread->Wait.option & mask) 5aae8: 6600 0096 bnew 5ab80 <== NOT EXECUTED /* * Is this thread is blocked waiting for another signal but has * not blocked this one? */ if (~api->signals_blocked & mask) 5aaec: 202a 00d0 movel %a2@(208),%d0 <== NOT EXECUTED 5aaf0: 4680 notl %d0 <== NOT EXECUTED 5aaf2: c083 andl %d3,%d0 <== NOT EXECUTED 5aaf4: 6600 008a bnew 5ab80 <== NOT EXECUTED the_chain = &_POSIX_signals_Wait_queue.Queues.Fifo; for ( the_node = _Chain_First( the_chain ); !_Chain_Is_tail( the_chain, the_node ) ; the_node = the_node->next ) { 5aaf8: 2251 moveal %a1@,%a1 <== NOT EXECUTED /* XXX violation of visibility -- need to define thread queue support */ the_chain = &_POSIX_signals_Wait_queue.Queues.Fifo; for ( the_node = _Chain_First( the_chain ); 5aafa: b3fc 0005 eac4 cmpal #387780,%a1 <== NOT EXECUTED 5ab00: 66da bnes 5aadc <== NOT EXECUTED * NOTES: * * + rtems internal threads do not receive signals. */ interested = NULL; interested_priority = PRIORITY_MAXIMUM + 1; 5ab02: 4280 clrl %d0 <== NOT EXECUTED 5ab04: 1039 0005 cb92 moveb 5cb92 ,%d0 <== NOT EXECUTED 5ab0a: 45f9 0005 e43c lea 5e43c <_Objects_Information_table+0x8>,%a2<== NOT EXECUTED 5ab10: 5280 addql #1,%d0 <== NOT EXECUTED * * NOTES: * * + rtems internal threads do not receive signals. */ interested = NULL; 5ab12: 91c8 subal %a0,%a0 <== NOT EXECUTED for (the_api = OBJECTS_CLASSIC_API; the_api <= OBJECTS_APIS_LAST; the_api++) { /* * This can occur when no one is interested and an API is not configured. */ if ( !_Objects_Information_table[ the_api ] ) 5ab14: 225a moveal %a2@+,%a1 <== NOT EXECUTED 5ab16: 4a89 tstl %a1 <== NOT EXECUTED 5ab18: 675a beqs 5ab74 <== NOT EXECUTED continue; the_info = _Objects_Information_table[ the_api ][ 1 ]; 5ab1a: 2269 0004 moveal %a1@(4),%a1 <== NOT EXECUTED */ if ( !the_info ) continue; #endif maximum = the_info->maximum; 5ab1e: 4287 clrl %d7 <== NOT EXECUTED object_table = the_info->local_table; for ( index = 1 ; index <= maximum ; index++ ) { 5ab20: 7801 moveq #1,%d4 <== NOT EXECUTED */ #define _POSIX_signals_Is_interested( _api, _mask ) \ ( ~(_api)->signals_blocked & (_mask) ) int killinfo( 5ab22: 2669 0018 moveal %a1@(24),%a3 <== NOT EXECUTED 5ab26: 588b addql #4,%a3 <== NOT EXECUTED */ if ( !the_info ) continue; #endif maximum = the_info->maximum; 5ab28: 3e29 000e movew %a1@(14),%d7 <== NOT EXECUTED object_table = the_info->local_table; for ( index = 1 ; index <= maximum ; index++ ) { 5ab2c: 6042 bras 5ab70 <== NOT EXECUTED the_thread = (Thread_Control *) object_table[ index ]; 5ab2e: 225b moveal %a3@+,%a1 <== NOT EXECUTED if ( !the_thread ) 5ab30: 4a89 tstl %a1 <== NOT EXECUTED 5ab32: 673a beqs 5ab6e <== 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 ) 5ab34: 2229 0014 movel %a1@(20),%d1 <== NOT EXECUTED 5ab38: b081 cmpl %d1,%d0 <== NOT EXECUTED 5ab3a: 6532 bcss 5ab6e <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( !api ) continue; #endif if ( !_POSIX_signals_Is_interested( api, mask ) ) 5ab3c: 2869 0102 moveal %a1@(258),%a4 <== NOT EXECUTED 5ab40: 2a2c 00d0 movel %a4@(208),%d5 <== NOT EXECUTED 5ab44: 4685 notl %d5 <== NOT EXECUTED 5ab46: ca83 andl %d3,%d5 <== NOT EXECUTED 5ab48: 6724 beqs 5ab6e <== NOT EXECUTED * * NOTE: We initialized interested_priority to PRIORITY_MAXIMUM + 1 * so we never have to worry about deferencing a NULL * interested thread. */ if ( the_thread->current_priority < interested_priority ) { 5ab4a: b081 cmpl %d1,%d0 <== NOT EXECUTED 5ab4c: 621c bhis 5ab6a <== NOT EXECUTED * and blocking interruptibutable by signal. * * If the interested thread is ready, don't think about changing. */ if ( interested && !_States_Is_ready( interested->current_state ) ) { 5ab4e: 4a88 tstl %a0 <== NOT EXECUTED 5ab50: 671c beqs 5ab6e <== NOT EXECUTED 5ab52: 2c28 0010 movel %a0@(16),%d6 <== NOT EXECUTED 5ab56: 6716 beqs 5ab6e <== NOT EXECUTED /* preferred ready over blocked */ DEBUG_STEP("5"); if ( _States_Is_ready( the_thread->current_state ) ) { 5ab58: 2a29 0010 movel %a1@(16),%d5 <== NOT EXECUTED 5ab5c: 670c beqs 5ab6a <== NOT EXECUTED continue; } DEBUG_STEP("6"); /* prefer blocked/interruptible over blocked/not interruptible */ if ( !_States_Is_interruptible_by_signal(interested->current_state) ) { 5ab5e: 0806 001c btst #28,%d6 <== NOT EXECUTED 5ab62: 660a bnes 5ab6e <== NOT EXECUTED DEBUG_STEP("7"); if ( _States_Is_interruptible_by_signal(the_thread->current_state) ) { 5ab64: 0805 001c btst #28,%d5 <== NOT EXECUTED 5ab68: 6704 beqs 5ab6e <== NOT EXECUTED */ if ( interested && !_States_Is_ready( interested->current_state ) ) { /* preferred ready over blocked */ DEBUG_STEP("5"); if ( _States_Is_ready( the_thread->current_state ) ) { 5ab6a: 2001 movel %d1,%d0 <== NOT EXECUTED 5ab6c: 2049 moveal %a1,%a0 <== NOT EXECUTED #endif maximum = the_info->maximum; object_table = the_info->local_table; for ( index = 1 ; index <= maximum ; index++ ) { 5ab6e: 5284 addql #1,%d4 <== NOT EXECUTED 5ab70: be84 cmpl %d4,%d7 <== NOT EXECUTED 5ab72: 64ba bccs 5ab2e <== NOT EXECUTED * + rtems internal threads do not receive signals. */ interested = NULL; interested_priority = PRIORITY_MAXIMUM + 1; for (the_api = OBJECTS_CLASSIC_API; the_api <= OBJECTS_APIS_LAST; the_api++) { 5ab74: b5fc 0005 e444 cmpal #386116,%a2 <== NOT EXECUTED 5ab7a: 6698 bnes 5ab14 <== NOT EXECUTED } } } } if ( interested ) { 5ab7c: 4a88 tstl %a0 <== NOT EXECUTED 5ab7e: 6716 beqs 5ab96 <== 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 ) ) { 5ab80: 486e fff4 pea %fp@(-12) <== NOT EXECUTED 5ab84: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5ab86: 2f08 movel %a0,%sp@- <== NOT EXECUTED 5ab88: 4eb9 0005 ac38 jsr 5ac38 <_POSIX_signals_Unblock_thread> <== NOT EXECUTED 5ab8e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 5ab92: 4a00 tstb %d0 <== NOT EXECUTED 5ab94: 6670 bnes 5ac06 <== 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 ); 5ab96: 2f03 movel %d3,%sp@- <== NOT EXECUTED if ( _POSIX_signals_Vectors[ sig ].sa_flags == SA_SIGINFO ) { 5ab98: 7602 moveq #2,%d3 <== 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 ); 5ab9a: 4eb9 0005 ac18 jsr 5ac18 <_POSIX_signals_Set_process_signals><== NOT EXECUTED if ( _POSIX_signals_Vectors[ sig ].sa_flags == SA_SIGINFO ) { 5aba0: 588f addql #4,%sp <== NOT EXECUTED 5aba2: 2002 movel %d2,%d0 <== NOT EXECUTED 5aba4: 41f9 0005 e934 lea 5e934 <_POSIX_signals_Vectors>,%a0 <== NOT EXECUTED 5abaa: e588 lsll #2,%d0 <== NOT EXECUTED 5abac: e98a lsll #4,%d2 <== NOT EXECUTED 5abae: 9480 subl %d0,%d2 <== NOT EXECUTED 5abb0: b6b0 2800 cmpl %a0@(00000000,%d2:l),%d3 <== NOT EXECUTED 5abb4: 6650 bnes 5ac06 <== NOT EXECUTED psiginfo = (POSIX_signals_Siginfo_node *) _Chain_Get( &_POSIX_signals_Inactive_siginfo ); 5abb6: 4879 0005 eab4 pea 5eab4 <_POSIX_signals_Inactive_siginfo> <== NOT EXECUTED 5abbc: 4eb9 0004 6014 jsr 46014 <_Chain_Get> <== NOT EXECUTED if ( !psiginfo ) { 5abc2: 588f addql #4,%sp <== NOT EXECUTED _POSIX_signals_Set_process_signals( mask ); if ( _POSIX_signals_Vectors[ sig ].sa_flags == SA_SIGINFO ) { psiginfo = (POSIX_signals_Siginfo_node *) _Chain_Get( &_POSIX_signals_Inactive_siginfo ); 5abc4: 2440 moveal %d0,%a2 <== NOT EXECUTED if ( !psiginfo ) { 5abc6: 4a80 tstl %d0 <== NOT EXECUTED 5abc8: 6616 bnes 5abe0 <== NOT EXECUTED _Thread_Enable_dispatch(); 5abca: 4eb9 0004 779a jsr 4779a <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EAGAIN ); 5abd0: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED 5abd6: 2040 moveal %d0,%a0 <== NOT EXECUTED 5abd8: 700b moveq #11,%d0 <== NOT EXECUTED 5abda: 2080 movel %d0,%a0@ <== NOT EXECUTED 5abdc: 70ff moveq #-1,%d0 <== NOT EXECUTED 5abde: 602e bras 5ac0e <== NOT EXECUTED } psiginfo->Info = *siginfo; 5abe0: 4878 000c pea c <== NOT EXECUTED _Chain_Append( &_POSIX_signals_Siginfo[ sig ], &psiginfo->Node ); 5abe4: 0682 0005 eb2c addil #387884,%d2 <== NOT EXECUTED if ( !psiginfo ) { _Thread_Enable_dispatch(); rtems_set_errno_and_return_minus_one( EAGAIN ); } psiginfo->Info = *siginfo; 5abea: 486e fff4 pea %fp@(-12) <== NOT EXECUTED 5abee: 486a 0008 pea %a2@(8) <== NOT EXECUTED 5abf2: 4eb9 0004 d1f8 jsr 4d1f8 <== NOT EXECUTED _Chain_Append( &_POSIX_signals_Siginfo[ sig ], &psiginfo->Node ); 5abf8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5abfa: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5abfc: 4eb9 0004 5fb4 jsr 45fb4 <_Chain_Append> <== NOT EXECUTED 5ac02: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED } DEBUG_STEP("\n"); _Thread_Enable_dispatch(); 5ac06: 4eb9 0004 779a jsr 4779a <_Thread_Enable_dispatch> <== NOT EXECUTED /* * If the signal is being ignored, then we are out of here. */ if ( _POSIX_signals_Vectors[ sig ].sa_handler == SIG_IGN ) return 0; 5ac0c: 4280 clrl %d0 <== NOT EXECUTED } DEBUG_STEP("\n"); _Thread_Enable_dispatch(); return 0; } 5ac0e: 4cee 1cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a4 <== NOT EXECUTED 5ac14: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045468 : int mode __attribute__((unused)), struct aiocb * const list[] __attribute__((unused)), int nent __attribute__((unused)), struct sigevent *sig __attribute__((unused)) ) { 45468: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 4546c: 4eb9 0004 d19c jsr 4d19c <__errno> <== NOT EXECUTED } 45472: 4e5e unlk %fp <== NOT EXECUTED struct aiocb * const list[] __attribute__((unused)), int nent __attribute__((unused)), struct sigevent *sig __attribute__((unused)) ) { rtems_set_errno_and_return_minus_one( ENOSYS ); 45474: 2040 moveal %d0,%a0 <== NOT EXECUTED 45476: 7058 moveq #88,%d0 <== NOT EXECUTED 45478: 2080 movel %d0,%a0@ <== NOT EXECUTED } 4547a: 70ff moveq #-1,%d0 <== NOT EXECUTED ... =============================================================================== 00045480 : const void *addr __attribute__((unused)), size_t len __attribute__((unused)), int prot __attribute__((unused)) ) { return 0; } 45480: 4280 clrl %d0 <== NOT EXECUTED int mprotect( const void *addr __attribute__((unused)), size_t len __attribute__((unused)), int prot __attribute__((unused)) ) { 45482: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return 0; } 45486: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000498ec : */ int mq_close( mqd_t mqdes ) { 498ec: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 498f0: 2f0a movel %a2,%sp@- <== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd *_POSIX_Message_queue_Get_fd ( mqd_t id, Objects_Locations *location ) { return (POSIX_Message_queue_Control_fd *) _Objects_Get( 498f2: 486e fffc pea %fp@(-4) <== NOT EXECUTED 498f6: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 498fa: 4879 0006 6acc pea 66acc <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 49900: 4eb9 0004 ca24 jsr 4ca24 <_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 ) { 49906: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4990a: 2440 moveal %d0,%a2 <== NOT EXECUTED 4990c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 49910: 663a bnes 4994c <== 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; 49912: 206a 0010 moveal %a2@(16),%a0 <== NOT EXECUTED the_mq->open_count -= 1; 49916: 53a8 0016 subql #1,%a0@(22) <== NOT EXECUTED _POSIX_Message_queue_Delete( the_mq ); 4991a: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4991c: 4eb9 0004 9964 jsr 49964 <_POSIX_Message_queue_Delete> <== NOT EXECUTED /* * Now close this file descriptor. */ _Objects_Close( 49922: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49924: 4879 0006 6acc pea 66acc <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 4992a: 4eb9 0004 c648 jsr 4c648 <_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 ); 49930: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49932: 4879 0006 6acc pea 66acc <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 49938: 4eb9 0004 c8c0 jsr 4c8c0 <_Objects_Free> <== NOT EXECUTED &_POSIX_Message_queue_Information_fds, &the_mq_fd->Object ); _POSIX_Message_queue_Free_fd( the_mq_fd ); _Thread_Enable_dispatch(); 4993e: 4eb9 0004 d50a jsr 4d50a <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 49944: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 49948: 4280 clrl %d0 <== NOT EXECUTED 4994a: 600e bras 4995a <== NOT EXECUTED /* * OBJECTS_REMOTE: * OBJECTS_ERROR: */ rtems_set_errno_and_return_minus_one( EBADF ); 4994c: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED 49952: 2040 moveal %d0,%a0 <== NOT EXECUTED 49954: 7009 moveq #9,%d0 <== NOT EXECUTED 49956: 2080 movel %d0,%a0@ <== NOT EXECUTED 49958: 70ff moveq #-1,%d0 <== NOT EXECUTED } 4995a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4995e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000499b4 : int mq_getattr( mqd_t mqdes, struct mq_attr *mqstat ) { 499b4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 499b8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 499ba: 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 ) 499be: 4a8a tstl %a2 <== NOT EXECUTED 499c0: 660e bnes 499d0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 499c2: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED 499c8: 7216 moveq #22,%d1 <== NOT EXECUTED 499ca: 2040 moveal %d0,%a0 <== NOT EXECUTED 499cc: 2081 movel %d1,%a0@ <== NOT EXECUTED 499ce: 6050 bras 49a20 <== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd *_POSIX_Message_queue_Get_fd ( mqd_t id, Objects_Locations *location ) { return (POSIX_Message_queue_Control_fd *) _Objects_Get( 499d0: 486e fffc pea %fp@(-4) <== NOT EXECUTED 499d4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 499d8: 4879 0006 6acc pea 66acc <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 499de: 4eb9 0004 ca24 jsr 4ca24 <_Objects_Get> <== NOT EXECUTED the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location ); switch ( location ) { 499e4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 499e8: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 499ec: 6626 bnes 49a14 <== NOT EXECUTED case OBJECTS_LOCAL: the_mq = the_mq_fd->Queue; 499ee: 2240 moveal %d0,%a1 <== NOT EXECUTED 499f0: 2069 0010 moveal %a1@(16),%a0 <== NOT EXECUTED * Return the old values. */ the_mq_attr = &the_mq->Message_queue.Attributes; mqstat->mq_flags = the_mq_fd->oflag; 499f4: 24a9 0014 movel %a1@(20),%a2@ <== NOT EXECUTED mqstat->mq_msgsize = the_mq->Message_queue.maximum_message_size; 499f8: 2568 0066 0008 movel %a0@(102),%a2@(8) <== NOT EXECUTED mqstat->mq_maxmsg = the_mq->Message_queue.maximum_pending_messages; 499fe: 2568 005e 0004 movel %a0@(94),%a2@(4) <== NOT EXECUTED mqstat->mq_curmsgs = the_mq->Message_queue.number_of_pending_messages; 49a04: 2568 0062 000c movel %a0@(98),%a2@(12) <== NOT EXECUTED _Thread_Enable_dispatch(); 49a0a: 4eb9 0004 d50a jsr 4d50a <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 49a10: 4280 clrl %d0 <== NOT EXECUTED 49a12: 600e bras 49a22 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); 49a14: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED 49a1a: 2040 moveal %d0,%a0 <== NOT EXECUTED 49a1c: 7009 moveq #9,%d0 <== NOT EXECUTED 49a1e: 2080 movel %d0,%a0@ <== NOT EXECUTED 49a20: 70ff moveq #-1,%d0 <== NOT EXECUTED } 49a22: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 49a26: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00049a62 : int mq_notify( mqd_t mqdes, const struct sigevent *notification ) { 49a62: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 49a66: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49a68: 2f02 movel %d2,%sp@- <== NOT EXECUTED 49a6a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 49a6e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 49a72: 4879 0006 6acc pea 66acc <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 49a78: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 49a7c: 4eb9 0004 ca24 jsr 4ca24 <_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 ) { 49a82: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 49a86: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 49a8a: 665e bnes 49aea <== NOT EXECUTED case OBJECTS_LOCAL: the_mq = the_mq_fd->Queue; 49a8c: 2040 moveal %d0,%a0 <== NOT EXECUTED 49a8e: 2468 0010 moveal %a0@(16),%a2 <== NOT EXECUTED if ( notification ) { 49a92: 4a82 tstl %d2 <== NOT EXECUTED 49a94: 6742 beqs 49ad8 <== NOT EXECUTED if ( _CORE_message_queue_Is_notify_enabled( &the_mq->Message_queue ) ) { 49a96: 4aaa 007a tstl %a2@(122) <== NOT EXECUTED 49a9a: 6714 beqs 49ab0 <== NOT EXECUTED _Thread_Enable_dispatch(); 49a9c: 4eb9 0004 d50a jsr 4d50a <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EBUSY ); 49aa2: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED 49aa8: 7210 moveq #16,%d1 <== NOT EXECUTED 49aaa: 2040 moveal %d0,%a0 <== NOT EXECUTED 49aac: 2081 movel %d1,%a0@ <== NOT EXECUTED 49aae: 6046 bras 49af6 <== NOT EXECUTED 49ab0: 42aa 007e clrl %a2@(126) <== NOT EXECUTED } _CORE_message_queue_Set_notify( &the_mq->Message_queue, NULL, NULL ); the_mq->notification = *notification; 49ab4: 4878 0014 pea 14 <== NOT EXECUTED 49ab8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 49aba: 486a 008e pea %a2@(142) <== NOT EXECUTED 49abe: 4eb9 0005 3694 jsr 53694 <== NOT EXECUTED 49ac4: 4fef 000c lea %sp@(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; 49ac8: 203c 0004 9a2c movel #301612,%d0 <== NOT EXECUTED the_message_queue->notify_argument = the_argument; 49ace: 254a 007e movel %a2,%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; 49ad2: 2540 007a movel %d0,%a2@(122) <== NOT EXECUTED 49ad6: 6008 bras 49ae0 <== NOT EXECUTED 49ad8: 42aa 007a clrl %a2@(122) <== NOT EXECUTED the_message_queue->notify_argument = the_argument; 49adc: 42aa 007e clrl %a2@(126) <== NOT EXECUTED _CORE_message_queue_Set_notify( &the_mq->Message_queue, NULL, NULL ); } _Thread_Enable_dispatch(); 49ae0: 4eb9 0004 d50a jsr 4d50a <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 49ae6: 4280 clrl %d0 <== NOT EXECUTED 49ae8: 600e bras 49af8 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); 49aea: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED 49af0: 2040 moveal %d0,%a0 <== NOT EXECUTED 49af2: 7009 moveq #9,%d0 <== NOT EXECUTED 49af4: 2080 movel %d0,%a0@ <== NOT EXECUTED 49af6: 70ff moveq #-1,%d0 <== NOT EXECUTED } 49af8: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 49afc: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 49b00: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00049b04 : int oflag, ... /* mode_t mode, */ /* struct mq_attr attr */ ) { 49b04: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 49b08: 2039 0006 66b4 movel 666b4 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 49b0e: 5280 addql #1,%d0 <== NOT EXECUTED 49b10: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED 49b14: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 49b18: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 49b1c: 23c0 0006 66b4 movel %d0,666b4 <_Thread_Dispatch_disable_level><== NOT EXECUTED POSIX_Message_queue_Control_fd *the_mq_fd; Objects_Locations location; _Thread_Disable_dispatch(); if ( oflag & O_CREAT ) { 49b22: 2a02 movel %d2,%d5 <== NOT EXECUTED 49b24: 0285 0000 0200 andil #512,%d5 <== NOT EXECUTED 49b2a: 6706 beqs 49b32 <== NOT EXECUTED va_start(arg, oflag); mode = (mode_t) va_arg( arg, unsigned int ); attr = (struct mq_attr *) va_arg( arg, struct mq_attr * ); 49b2c: 282e 0014 movel %fp@(20),%d4 <== NOT EXECUTED 49b30: 6002 bras 49b34 <== NOT EXECUTED /* struct mq_attr attr */ ) { va_list arg; mode_t mode; struct mq_attr *attr = NULL; 49b32: 4284 clrl %d4 <== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd * _POSIX_Message_queue_Allocate_fd( void ) { return (POSIX_Message_queue_Control_fd *) _Objects_Allocate( &_POSIX_Message_queue_Information_fds ); 49b34: 4879 0006 6acc pea 66acc <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 49b3a: 4eb9 0004 c5cc jsr 4c5cc <_Objects_Allocate> <== NOT EXECUTED attr = (struct mq_attr *) va_arg( arg, struct mq_attr * ); va_end(arg); } the_mq_fd = _POSIX_Message_queue_Allocate_fd(); if ( !the_mq_fd ) { 49b40: 588f addql #4,%sp <== NOT EXECUTED 49b42: 2440 moveal %d0,%a2 <== NOT EXECUTED 49b44: 4a80 tstl %d0 <== NOT EXECUTED 49b46: 6614 bnes 49b5c <== NOT EXECUTED _Thread_Enable_dispatch(); 49b48: 4eb9 0004 d50a jsr 4d50a <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENFILE ); 49b4e: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED 49b54: 7217 moveq #23,%d1 <== NOT EXECUTED 49b56: 2040 moveal %d0,%a0 <== NOT EXECUTED 49b58: 2081 movel %d1,%a0@ <== NOT EXECUTED 49b5a: 6044 bras 49ba0 <== NOT EXECUTED } the_mq_fd->oflag = oflag; 49b5c: 2542 0014 movel %d2,%a2@(20) <== NOT EXECUTED status = _POSIX_Message_queue_Name_to_id( name, &the_mq_id ); 49b60: 486e fffc pea %fp@(-4) <== NOT EXECUTED 49b64: 2f03 movel %d3,%sp@- <== NOT EXECUTED 49b66: 4eb9 0004 fe40 jsr 4fe40 <_POSIX_Message_queue_Name_to_id> <== NOT EXECUTED * If the name to id translation worked, then the message queue exists * and we can just return a pointer to the id. Otherwise we may * need to check to see if this is a "message queue does not exist" * or some other miscellaneous error on the name. */ if ( status ) { 49b6c: 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 ); 49b6e: 2640 moveal %d0,%a3 <== NOT EXECUTED * If the name to id translation worked, then the message queue exists * and we can just return a pointer to the id. Otherwise we may * need to check to see if this is a "message queue does not exist" * or some other miscellaneous error on the name. */ if ( status ) { 49b70: 4a80 tstl %d0 <== NOT EXECUTED 49b72: 6732 beqs 49ba6 <== 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) ) ) { 49b74: 7002 moveq #2,%d0 <== NOT EXECUTED 49b76: b08b cmpl %a3,%d0 <== NOT EXECUTED 49b78: 6606 bnes 49b80 <== NOT EXECUTED 49b7a: 4a85 tstl %d5 <== NOT EXECUTED 49b7c: 6600 009e bnew 49c1c <== 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 ); 49b80: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49b82: 4879 0006 6acc pea 66acc <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 49b88: 4eb9 0004 c8c0 jsr 4c8c0 <_Objects_Free> <== NOT EXECUTED _POSIX_Message_queue_Free_fd( the_mq_fd ); _Thread_Enable_dispatch(); 49b8e: 4eb9 0004 d50a jsr 4d50a <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one_cast( status, mqd_t ); 49b94: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED 49b9a: 2040 moveal %d0,%a0 <== NOT EXECUTED 49b9c: 208b movel %a3,%a0@ <== NOT EXECUTED 49b9e: 508f addql #8,%sp <== NOT EXECUTED 49ba0: 70ff moveq #-1,%d0 <== NOT EXECUTED 49ba2: 6000 00ce braw 49c72 <== NOT EXECUTED 49ba6: 47f9 0004 d50a lea 4d50a <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED } else { /* name -> ID translation succeeded */ /* * Check for existence with creation. */ if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) { 49bac: 0282 0000 0a00 andil #2560,%d2 <== NOT EXECUTED 49bb2: 0c82 0000 0a00 cmpil #2560,%d2 <== NOT EXECUTED 49bb8: 661e bnes 49bd8 <== NOT EXECUTED 49bba: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49bbc: 4879 0006 6acc pea 66acc <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 49bc2: 4eb9 0004 c8c0 jsr 4c8c0 <_Objects_Free> <== NOT EXECUTED _POSIX_Message_queue_Free_fd( the_mq_fd ); _Thread_Enable_dispatch(); 49bc8: 4e93 jsr %a3@ <== NOT EXECUTED rtems_set_errno_and_return_minus_one_cast( EEXIST, mqd_t ); 49bca: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED 49bd0: 2040 moveal %d0,%a0 <== NOT EXECUTED 49bd2: 7011 moveq #17,%d0 <== NOT EXECUTED 49bd4: 2080 movel %d0,%a0@ <== NOT EXECUTED 49bd6: 60c6 bras 49b9e <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (POSIX_Message_queue_Control *) _Objects_Get( &_POSIX_Message_queue_Information, id, location ); 49bd8: 486e fff4 pea %fp@(-12) <== NOT EXECUTED 49bdc: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 49be0: 4879 0006 695e pea 6695e <_POSIX_Message_queue_Information><== NOT EXECUTED 49be6: 4eb9 0004 ca24 jsr 4ca24 <_Objects_Get> <== 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; 49bec: 2040 moveal %d0,%a0 <== NOT EXECUTED 49bee: 52a8 0016 addql #1,%a0@(22) <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 49bf2: 2079 0006 6ae4 moveal 66ae4 <_POSIX_Message_queue_Information_fds+0x18>,%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 ); 49bf8: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED the_mq->open_count += 1; the_mq_fd->Queue = the_mq; 49bfc: 2540 0010 movel %d0,%a2@(16) <== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, const char *name ) { _Objects_Set_local_object( 49c00: 4280 clrl %d0 <== NOT EXECUTED 49c02: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 49c06: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) <== NOT EXECUTED the_object ); #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES) /* ASSERT: information->is_string */ the_object->name.name_p = name; 49c0a: 42aa 000c clrl %a2@(12) <== NOT EXECUTED _Objects_Open_string( &_POSIX_Message_queue_Information_fds, &the_mq_fd->Object, NULL ); _Thread_Enable_dispatch(); 49c0e: 4e93 jsr %a3@ <== NOT EXECUTED _Thread_Enable_dispatch(); 49c10: 4e93 jsr %a3@ <== NOT EXECUTED return (mqd_t)the_mq_fd->Object.id; 49c12: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED 49c16: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 49c1a: 6056 bras 49c72 <== 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( 49c1c: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 49c20: 47f9 0004 d50a lea 4d50a <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED 49c26: 2f04 movel %d4,%sp@- <== NOT EXECUTED 49c28: 4878 0001 pea 1 <== NOT EXECUTED 49c2c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 49c2e: 4eb9 0004 fcf0 jsr 4fcf0 <_POSIX_Message_queue_Create_support><== NOT EXECUTED ); /* * errno was set by Create_support, so don't set it again. */ if ( status == -1 ) { 49c34: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 49c38: 72ff moveq #-1,%d1 <== NOT EXECUTED 49c3a: b280 cmpl %d0,%d1 <== NOT EXECUTED 49c3c: 6614 bnes 49c52 <== 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 ); 49c3e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49c40: 4879 0006 6acc pea 66acc <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 49c46: 4eb9 0004 c8c0 jsr 4c8c0 <_Objects_Free> <== NOT EXECUTED _POSIX_Message_queue_Free_fd( the_mq_fd ); _Thread_Enable_dispatch(); 49c4c: 4e93 jsr %a3@ <== NOT EXECUTED 49c4e: 6000 ff4e braw 49b9e <== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, const char *name ) { _Objects_Set_local_object( 49c52: 4280 clrl %d0 <== NOT EXECUTED return (mqd_t) -1; } the_mq_fd->Queue = the_mq; 49c54: 256e fff8 0010 movel %fp@(-8),%a2@(16) <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 49c5a: 2079 0006 6ae4 moveal 66ae4 <_POSIX_Message_queue_Information_fds+0x18>,%a0<== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, const char *name ) { _Objects_Set_local_object( 49c60: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 49c64: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) <== NOT EXECUTED the_object ); #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES) /* ASSERT: information->is_string */ the_object->name.name_p = name; 49c68: 42aa 000c clrl %a2@(12) <== NOT EXECUTED &_POSIX_Message_queue_Information_fds, &the_mq_fd->Object, NULL ); _Thread_Enable_dispatch(); 49c6c: 4e93 jsr %a3@ <== NOT EXECUTED return (mqd_t) the_mq_fd->Object.id; 49c6e: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED } 49c72: 4cee 0c3c ffdc moveml %fp@(-36),%d2-%d5/%a2-%a3 <== NOT EXECUTED 49c78: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00049c7c : mqd_t mqdes, char *msg_ptr, size_t msg_len, unsigned int *msg_prio ) { 49c7c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _POSIX_Message_queue_Receive_support( 49c80: 42a7 clrl %sp@- <== NOT EXECUTED 49c82: 4878 0001 pea 1 <== NOT EXECUTED 49c86: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 49c8a: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 49c8e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 49c92: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 49c96: 4eb9 0004 9ca0 jsr 49ca0 <_POSIX_Message_queue_Receive_support><== NOT EXECUTED msg_len, msg_prio, true, THREAD_QUEUE_WAIT_FOREVER ); } 49c9c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00049da4 : mqd_t mqdes, const char *msg_ptr, size_t msg_len, unsigned int msg_prio ) { 49da4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _POSIX_Message_queue_Send_support( 49da8: 42a7 clrl %sp@- <== NOT EXECUTED 49daa: 4878 0001 pea 1 <== NOT EXECUTED 49dae: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 49db2: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 49db6: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 49dba: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 49dbe: 4eb9 0004 9dc8 jsr 49dc8 <_POSIX_Message_queue_Send_support><== NOT EXECUTED msg_len, msg_prio, true, THREAD_QUEUE_WAIT_FOREVER ); } 49dc4: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00049eb4 : int mq_setattr( mqd_t mqdes, const struct mq_attr *mqstat, struct mq_attr *omqstat ) { 49eb4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 49eb8: 2f0b movel %a3,%sp@- <== NOT EXECUTED 49eba: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED 49ebe: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49ec0: 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 ) 49ec4: 4a8b tstl %a3 <== NOT EXECUTED 49ec6: 660e bnes 49ed6 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 49ec8: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED 49ece: 7216 moveq #22,%d1 <== NOT EXECUTED 49ed0: 2040 moveal %d0,%a0 <== NOT EXECUTED 49ed2: 2081 movel %d1,%a0@ <== NOT EXECUTED 49ed4: 6058 bras 49f2e <== NOT EXECUTED 49ed6: 486e fffc pea %fp@(-4) <== NOT EXECUTED 49eda: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 49ede: 4879 0006 6acc pea 66acc <_POSIX_Message_queue_Information_fds><== NOT EXECUTED 49ee4: 4eb9 0004 ca24 jsr 4ca24 <_Objects_Get> <== NOT EXECUTED the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location ); switch ( location ) { 49eea: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 49eee: 2040 moveal %d0,%a0 <== NOT EXECUTED 49ef0: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 49ef4: 662c bnes 49f22 <== NOT EXECUTED case OBJECTS_LOCAL: the_core_mq = &the_mq_fd->Queue->Message_queue; 49ef6: 2268 0010 moveal %a0@(16),%a1 <== NOT EXECUTED /* * Return the old values. */ if ( omqstat ) { 49efa: 4a8a tstl %a2 <== NOT EXECUTED 49efc: 6716 beqs 49f14 <== NOT EXECUTED omqstat->mq_flags = the_mq_fd->oflag; 49efe: 24a8 0014 movel %a0@(20),%a2@ <== NOT EXECUTED omqstat->mq_msgsize = the_core_mq->maximum_message_size; 49f02: 2569 0066 0008 movel %a1@(102),%a2@(8) <== NOT EXECUTED omqstat->mq_maxmsg = the_core_mq->maximum_pending_messages; 49f08: 2569 005e 0004 movel %a1@(94),%a2@(4) <== NOT EXECUTED omqstat->mq_curmsgs = the_core_mq->number_of_pending_messages; 49f0e: 2569 0062 000c movel %a1@(98),%a2@(12) <== NOT EXECUTED } the_mq_fd->oflag = mqstat->mq_flags; 49f14: 2153 0014 movel %a3@,%a0@(20) <== NOT EXECUTED _Thread_Enable_dispatch(); 49f18: 4eb9 0004 d50a jsr 4d50a <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 49f1e: 4280 clrl %d0 <== NOT EXECUTED 49f20: 600e bras 49f30 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EBADF ); 49f22: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED 49f28: 2040 moveal %d0,%a0 <== NOT EXECUTED 49f2a: 7009 moveq #9,%d0 <== NOT EXECUTED 49f2c: 2080 movel %d0,%a0@ <== NOT EXECUTED 49f2e: 70ff moveq #-1,%d0 <== NOT EXECUTED } 49f30: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 49f34: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED 49f38: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00049f3c : char *msg_ptr, size_t msg_len, unsigned int *msg_prio, const struct timespec *abstime ) { 49f3c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED * * If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID, * POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW, * then we should not wait. */ status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks ); 49f40: 486e fffc pea %fp@(-4) <== NOT EXECUTED 49f44: 2f2e 0018 movel %fp@(24),%sp@- <== NOT EXECUTED 49f48: 4eb9 0004 a04c jsr 4a04c <_POSIX_Absolute_timeout_to_ticks><== NOT EXECUTED if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE ) do_wait = false; return _POSIX_Message_queue_Receive_support( 49f4e: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 49f52: 7203 moveq #3,%d1 <== NOT EXECUTED 49f54: b280 cmpl %d0,%d1 <== NOT EXECUTED 49f56: 57c0 seq %d0 <== NOT EXECUTED 49f58: 49c0 extbl %d0 <== NOT EXECUTED 49f5a: 4480 negl %d0 <== NOT EXECUTED 49f5c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 49f5e: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 49f62: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 49f66: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 49f6a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 49f6e: 4eb9 0004 9ca0 jsr 49ca0 <_POSIX_Message_queue_Receive_support><== NOT EXECUTED msg_len, msg_prio, do_wait, ticks ); } 49f74: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00049f78 : const char *msg_ptr, size_t msg_len, unsigned int msg_prio, const struct timespec *abstime ) { 49f78: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED * * If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID, * POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW, * then we should not wait. */ status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks ); 49f7c: 486e fffc pea %fp@(-4) <== NOT EXECUTED 49f80: 2f2e 0018 movel %fp@(24),%sp@- <== NOT EXECUTED 49f84: 4eb9 0004 a04c jsr 4a04c <_POSIX_Absolute_timeout_to_ticks><== NOT EXECUTED if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE ) do_wait = false; return _POSIX_Message_queue_Send_support( 49f8a: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 49f8e: 7203 moveq #3,%d1 <== NOT EXECUTED 49f90: b280 cmpl %d0,%d1 <== NOT EXECUTED 49f92: 57c0 seq %d0 <== NOT EXECUTED 49f94: 49c0 extbl %d0 <== NOT EXECUTED 49f96: 4480 negl %d0 <== NOT EXECUTED 49f98: 2f00 movel %d0,%sp@- <== NOT EXECUTED 49f9a: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 49f9e: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 49fa2: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 49fa6: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 49faa: 4eb9 0004 9dc8 jsr 49dc8 <_POSIX_Message_queue_Send_support><== NOT EXECUTED msg_len, msg_prio, do_wait, ticks ); } 49fb0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00049fcc : */ int mq_unlink( const char *name ) { 49fcc: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 49fd0: 2039 0006 66b4 movel 666b4 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 49fd6: 5280 addql #1,%d0 <== NOT EXECUTED 49fd8: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 49fdc: 23c0 0006 66b4 movel %d0,666b4 <_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 ); 49fe2: 486e fffc pea %fp@(-4) <== NOT EXECUTED 49fe6: 47f9 0004 d50a lea 4d50a <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED 49fec: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 49ff0: 4eb9 0004 fe40 jsr 4fe40 <_POSIX_Message_queue_Name_to_id> <== NOT EXECUTED if ( status != 0 ) { 49ff6: 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 ); 49ff8: 2400 movel %d0,%d2 <== NOT EXECUTED if ( status != 0 ) { 49ffa: 6710 beqs 4a00c <== NOT EXECUTED _Thread_Enable_dispatch(); 49ffc: 4e93 jsr %a3@ <== NOT EXECUTED rtems_set_errno_and_return_minus_one( status ); 49ffe: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED 4a004: 2040 moveal %d0,%a0 <== NOT EXECUTED 4a006: 70ff moveq #-1,%d0 <== NOT EXECUTED 4a008: 2082 movel %d2,%a0@ <== NOT EXECUTED 4a00a: 6034 bras 4a040 <== NOT EXECUTED */ #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return NULL; #endif return information->local_table[ index ]; 4a00c: 4280 clrl %d0 <== NOT EXECUTED 4a00e: 2079 0006 6976 moveal 66976 <_POSIX_Message_queue_Information+0x18>,%a0<== NOT EXECUTED 4a014: 302e fffe movew %fp@(-2),%d0 <== NOT EXECUTED } the_mq = (POSIX_Message_queue_Control *) _Objects_Get_local_object( 4a018: 2470 0c00 moveal %a0@(00000000,%d0:l:4),%a2 <== NOT EXECUTED &_POSIX_Message_queue_Information, _Objects_Get_index( the_mq_id ) ); the_mq->linked = false; 4a01c: 4200 clrb %d0 <== NOT EXECUTED 4a01e: 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( 4a022: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a024: 4879 0006 695e pea 6695e <_POSIX_Message_queue_Information><== NOT EXECUTED 4a02a: 4eb9 0004 cb80 jsr 4cb80 <_Objects_Namespace_remove> <== NOT EXECUTED _POSIX_Message_queue_Namespace_remove( the_mq ); _POSIX_Message_queue_Delete( the_mq ); 4a030: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a032: 4eb9 0004 9964 jsr 49964 <_POSIX_Message_queue_Delete> <== NOT EXECUTED _Thread_Enable_dispatch(); 4a038: 4e93 jsr %a3@ <== NOT EXECUTED return 0; 4a03a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4a03e: 4280 clrl %d0 <== NOT EXECUTED } 4a040: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED 4a046: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0005b3e6 : int nanosleep( const struct timespec *rqtp, struct timespec *rmtp ) { 5b3e6: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 5b3ea: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 5b3ee: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 5b3f2: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED * Return EINVAL if the delay interval is negative. * * NOTE: This behavior is beyond the POSIX specification. * FSU and GNU/Linux pthreads shares this behavior. */ if ( !_Timespec_Is_valid( rqtp ) ) 5b3f6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5b3f8: 4eb9 0005 b51c jsr 5b51c <_Timespec_Is_valid> <== NOT EXECUTED 5b3fe: 588f addql #4,%sp <== NOT EXECUTED 5b400: 4a00 tstb %d0 <== NOT EXECUTED 5b402: 6610 bnes 5b414 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 5b404: 4eb9 0004 cd88 jsr 4cd88 <__errno> <== NOT EXECUTED 5b40a: 7216 moveq #22,%d1 <== NOT EXECUTED 5b40c: 2040 moveal %d0,%a0 <== NOT EXECUTED 5b40e: 2081 movel %d1,%a0@ <== NOT EXECUTED 5b410: 6000 00bc braw 5b4ce <== NOT EXECUTED ticks = _Timespec_To_ticks( rqtp ); 5b414: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5b416: 47f9 0004 7b32 lea 47b32 <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED 5b41c: 4eb9 0004 b61c jsr 4b61c <_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 ) { 5b422: 588f addql #4,%sp <== NOT EXECUTED 5b424: 41fa ffaa lea %pc@(5b3d0 <_Thread_Disable_dispatch>),%a0<== NOT EXECUTED * FSU and GNU/Linux pthreads shares this behavior. */ if ( !_Timespec_Is_valid( rqtp ) ) rtems_set_errno_and_return_minus_one( EINVAL ); ticks = _Timespec_To_ticks( rqtp ); 5b428: 2400 movel %d0,%d2 <== NOT EXECUTED * A nanosleep for zero time is implemented as a yield. * This behavior is also beyond the POSIX specification but is * consistent with the RTEMS API and yields desirable behavior. */ if ( !ticks ) { 5b42a: 6624 bnes 5b450 <== NOT EXECUTED _Thread_Disable_dispatch(); 5b42c: 4e90 jsr %a0@ <== NOT EXECUTED * always operates on the scheduler that 'owns' the currently executing * thread. */ RTEMS_INLINE_ROUTINE void _Scheduler_Yield( void ) { _Scheduler.Operations.yield( &_Scheduler ); 5b42e: 4879 0005 f3d6 pea 5f3d6 <_Scheduler> <== NOT EXECUTED 5b434: 2079 0005 f3de moveal 5f3de <_Scheduler+0x8>,%a0 <== NOT EXECUTED 5b43a: 4e90 jsr %a0@ <== NOT EXECUTED _Scheduler_Yield(); _Thread_Enable_dispatch(); 5b43c: 4e93 jsr %a3@ <== NOT EXECUTED if ( rmtp ) { 5b43e: 588f addql #4,%sp <== NOT EXECUTED 5b440: 4a8a tstl %a2 <== NOT EXECUTED 5b442: 6700 008e beqw 5b4d2 <== NOT EXECUTED rmtp->tv_sec = 0; 5b446: 4292 clrl %a2@ <== NOT EXECUTED rmtp->tv_nsec = 0; 5b448: 42aa 0004 clrl %a2@(4) <== NOT EXECUTED 5b44c: 6000 0084 braw 5b4d2 <== NOT EXECUTED } /* * Block for the desired amount of time */ _Thread_Disable_dispatch(); 5b450: 4e90 jsr %a0@ <== NOT EXECUTED _Thread_Set_state( 5b452: 2f3c 1000 0008 movel #268435464,%sp@- <== NOT EXECUTED 5b458: 2f39 0005 f7da movel 5f7da <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED 5b45e: 4eb9 0004 8308 jsr 48308 <_Thread_Set_state> <== NOT EXECUTED STATES_DELAYING | STATES_INTERRUPTIBLE_BY_SIGNAL ); _Watchdog_Initialize( &_Thread_Executing->Timer, _Thread_Delay_ended, _Thread_Executing->Object.id, 5b464: 2079 0005 f7da moveal 5f7da <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 5b46a: 223c 0004 79b8 movel #293304,%d1 <== NOT EXECUTED _Thread_Disable_dispatch(); _Thread_Set_state( _Thread_Executing, STATES_DELAYING | STATES_INTERRUPTIBLE_BY_SIGNAL ); _Watchdog_Initialize( 5b470: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 5b474: 42a8 0050 clrl %a0@(80) <== NOT EXECUTED the_watchdog->routine = routine; 5b478: 2141 0064 movel %d1,%a0@(100) <== NOT EXECUTED the_watchdog->id = id; 5b47c: 2140 0068 movel %d0,%a0@(104) <== NOT EXECUTED the_watchdog->user_data = user_data; 5b480: 42a8 006c clrl %a0@(108) <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 5b484: 2142 0054 movel %d2,%a0@(84) <== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 5b488: 4868 0048 pea %a0@(72) <== NOT EXECUTED 5b48c: 4879 0005 f430 pea 5f430 <_Watchdog_Ticks_chain> <== NOT EXECUTED 5b492: 4eb9 0004 892c jsr 4892c <_Watchdog_Insert> <== NOT EXECUTED _Thread_Delay_ended, _Thread_Executing->Object.id, NULL ); _Watchdog_Insert_ticks( &_Thread_Executing->Timer, ticks ); _Thread_Enable_dispatch(); 5b498: 4e93 jsr %a3@ <== NOT EXECUTED /* calculate time remaining */ if ( rmtp ) { 5b49a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 5b49e: 4a8a tstl %a2 <== NOT EXECUTED 5b4a0: 6730 beqs 5b4d2 <== NOT EXECUTED ticks -= _Thread_Executing->Timer.stop_time - _Thread_Executing->Timer.start_time; 5b4a2: 2079 0005 f7da moveal 5f7da <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 5b4a8: 2028 005c movel %a0@(92),%d0 <== NOT EXECUTED 5b4ac: 90a8 0060 subl %a0@(96),%d0 <== NOT EXECUTED _Thread_Enable_dispatch(); /* calculate time remaining */ if ( rmtp ) { ticks -= 5b4b0: d480 addl %d0,%d2 <== NOT EXECUTED _Thread_Executing->Timer.stop_time - _Thread_Executing->Timer.start_time; _Timespec_From_ticks( ticks, rmtp ); 5b4b2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5b4b4: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5b4b6: 4eb9 0005 b4e0 jsr 5b4e0 <_Timespec_From_ticks> <== NOT EXECUTED */ #if defined(RTEMS_POSIX_API) /* * If there is time remaining, then we were interrupted by a signal. */ if ( ticks ) 5b4bc: 508f addql #8,%sp <== NOT EXECUTED 5b4be: 4a82 tstl %d2 <== NOT EXECUTED 5b4c0: 6710 beqs 5b4d2 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINTR ); 5b4c2: 4eb9 0004 cd88 jsr 4cd88 <__errno> <== NOT EXECUTED 5b4c8: 2040 moveal %d0,%a0 <== NOT EXECUTED 5b4ca: 7004 moveq #4,%d0 <== NOT EXECUTED 5b4cc: 2080 movel %d0,%a0@ <== NOT EXECUTED 5b4ce: 70ff moveq #-1,%d0 <== NOT EXECUTED 5b4d0: 6002 bras 5b4d4 <== NOT EXECUTED #endif } return 0; 5b4d2: 4280 clrl %d0 <== NOT EXECUTED } 5b4d4: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED 5b4da: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046ef0 : /* * 3.4.2 Suspend Process Execution, P1003.1b-1993, p. 81 */ int pause( void ) { 46ef0: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 46ef4: 2f02 movel %d2,%sp@- <== NOT EXECUTED sigset_t all_signals; int status; (void) sigfillset( &all_signals ); 46ef6: 240e movel %fp,%d2 <== NOT EXECUTED 46ef8: 5982 subql #4,%d2 <== NOT EXECUTED 46efa: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46efc: 4eb9 0004 7af4 jsr 47af4 <== NOT EXECUTED status = sigtimedwait( &all_signals, NULL, NULL ); 46f02: 42a7 clrl %sp@- <== NOT EXECUTED 46f04: 42a7 clrl %sp@- <== NOT EXECUTED 46f06: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46f08: 4eb9 0004 7c64 jsr 47c64 <== NOT EXECUTED return status; } 46f0e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 46f12: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004548c : int pthread_atfork( void (*prepare)(void) __attribute__((unused)), void (*parent)(void) __attribute__((unused)), void (*child)(void) __attribute__((unused)) ) { 4548c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 45490: 4eb9 0004 d19c jsr 4d19c <__errno> <== NOT EXECUTED } 45496: 4e5e unlk %fp <== NOT EXECUTED void (*prepare)(void) __attribute__((unused)), void (*parent)(void) __attribute__((unused)), void (*child)(void) __attribute__((unused)) ) { rtems_set_errno_and_return_minus_one( ENOSYS ); 45498: 2040 moveal %d0,%a0 <== NOT EXECUTED 4549a: 7058 moveq #88,%d0 <== NOT EXECUTED 4549c: 2080 movel %d0,%a0@ <== NOT EXECUTED } 4549e: 70ff moveq #-1,%d0 <== NOT EXECUTED ... =============================================================================== 0004a084 : #include int pthread_attr_destroy( pthread_attr_t *attr ) { 4a084: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a088: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !attr || !attr->is_initialized ) 4a08c: 4a88 tstl %a0 <== NOT EXECUTED 4a08e: 670a beqs 4a09a <== NOT EXECUTED 4a090: 4a90 tstl %a0@ <== NOT EXECUTED 4a092: 6706 beqs 4a09a <== NOT EXECUTED return EINVAL; attr->is_initialized = false; 4a094: 4290 clrl %a0@ <== NOT EXECUTED return 0; 4a096: 4280 clrl %d0 <== NOT EXECUTED 4a098: 6002 bras 4a09c <== NOT EXECUTED int pthread_attr_destroy( pthread_attr_t *attr ) { if ( !attr || !attr->is_initialized ) return EINVAL; 4a09a: 7016 moveq #22,%d0 <== NOT EXECUTED attr->is_initialized = false; return 0; } 4a09c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004a6a8 : int pthread_attr_getcputime( pthread_attr_t *attr, int *clock_allowed ) { 4a6a8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a6ac: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4a6b0: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED if ( !attr || !attr->is_initialized || !clock_allowed ) 4a6b4: 4a88 tstl %a0 <== NOT EXECUTED 4a6b6: 6710 beqs 4a6c8 <== NOT EXECUTED 4a6b8: 4a90 tstl %a0@ <== NOT EXECUTED 4a6ba: 670c beqs 4a6c8 <== NOT EXECUTED 4a6bc: 4a89 tstl %a1 <== NOT EXECUTED 4a6be: 6708 beqs 4a6c8 <== NOT EXECUTED return EINVAL; *clock_allowed = attr->cputime_clock_allowed; 4a6c0: 22a8 0038 movel %a0@(56),%a1@ <== NOT EXECUTED return 0; 4a6c4: 4280 clrl %d0 <== NOT EXECUTED 4a6c6: 6002 bras 4a6ca <== NOT EXECUTED pthread_attr_t *attr, int *clock_allowed ) { if ( !attr || !attr->is_initialized || !clock_allowed ) return EINVAL; 4a6c8: 7016 moveq #22,%d0 <== NOT EXECUTED *clock_allowed = attr->cputime_clock_allowed; return 0; } 4a6ca: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004a0a0 : int pthread_attr_getdetachstate( const pthread_attr_t *attr, int *detachstate ) { 4a0a0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a0a4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4a0a8: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED if ( !attr || !attr->is_initialized || !detachstate ) 4a0ac: 4a88 tstl %a0 <== NOT EXECUTED 4a0ae: 6710 beqs 4a0c0 <== NOT EXECUTED 4a0b0: 4a90 tstl %a0@ <== NOT EXECUTED 4a0b2: 670c beqs 4a0c0 <== NOT EXECUTED 4a0b4: 4a89 tstl %a1 <== NOT EXECUTED 4a0b6: 6708 beqs 4a0c0 <== NOT EXECUTED return EINVAL; *detachstate = attr->detachstate; 4a0b8: 22a8 003c movel %a0@(60),%a1@ <== NOT EXECUTED return 0; 4a0bc: 4280 clrl %d0 <== NOT EXECUTED 4a0be: 6002 bras 4a0c2 <== NOT EXECUTED const pthread_attr_t *attr, int *detachstate ) { if ( !attr || !attr->is_initialized || !detachstate ) return EINVAL; 4a0c0: 7016 moveq #22,%d0 <== NOT EXECUTED *detachstate = attr->detachstate; return 0; } 4a0c2: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004a0c8 : int pthread_attr_getguardsize( const pthread_attr_t *attr, size_t *guardsize ) { 4a0c8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a0cc: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4a0d0: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED if ( !attr || !attr->is_initialized || !guardsize ) 4a0d4: 4a88 tstl %a0 <== NOT EXECUTED 4a0d6: 6710 beqs 4a0e8 <== NOT EXECUTED 4a0d8: 4a90 tstl %a0@ <== NOT EXECUTED 4a0da: 670c beqs 4a0e8 <== NOT EXECUTED 4a0dc: 4a89 tstl %a1 <== NOT EXECUTED 4a0de: 6708 beqs 4a0e8 <== NOT EXECUTED return EINVAL; *guardsize = attr->guardsize; 4a0e0: 22a8 0034 movel %a0@(52),%a1@ <== NOT EXECUTED return 0; 4a0e4: 4280 clrl %d0 <== NOT EXECUTED 4a0e6: 6002 bras 4a0ea <== NOT EXECUTED const pthread_attr_t *attr, size_t *guardsize ) { if ( !attr || !attr->is_initialized || !guardsize ) return EINVAL; 4a0e8: 7016 moveq #22,%d0 <== NOT EXECUTED *guardsize = attr->guardsize; return 0; } 4a0ea: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004a0f0 : int pthread_attr_getinheritsched( const pthread_attr_t *attr, int *inheritsched ) { 4a0f0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a0f4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4a0f8: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED if ( !attr || !attr->is_initialized || !inheritsched ) 4a0fc: 4a88 tstl %a0 <== NOT EXECUTED 4a0fe: 6710 beqs 4a110 <== NOT EXECUTED 4a100: 4a90 tstl %a0@ <== NOT EXECUTED 4a102: 670c beqs 4a110 <== NOT EXECUTED 4a104: 4a89 tstl %a1 <== NOT EXECUTED 4a106: 6708 beqs 4a110 <== NOT EXECUTED return EINVAL; *inheritsched = attr->inheritsched; 4a108: 22a8 0010 movel %a0@(16),%a1@ <== NOT EXECUTED return 0; 4a10c: 4280 clrl %d0 <== NOT EXECUTED 4a10e: 6002 bras 4a112 <== NOT EXECUTED const pthread_attr_t *attr, int *inheritsched ) { if ( !attr || !attr->is_initialized || !inheritsched ) return EINVAL; 4a110: 7016 moveq #22,%d0 <== NOT EXECUTED *inheritsched = attr->inheritsched; return 0; } 4a112: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004a118 : int pthread_attr_getschedparam( const pthread_attr_t *attr, struct sched_param *param ) { 4a118: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a11c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4a120: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED if ( !attr || !attr->is_initialized || !param ) 4a124: 4a88 tstl %a0 <== NOT EXECUTED 4a126: 6720 beqs 4a148 <== NOT EXECUTED 4a128: 4a90 tstl %a0@ <== NOT EXECUTED 4a12a: 671c beqs 4a148 <== NOT EXECUTED 4a12c: 4a80 tstl %d0 <== NOT EXECUTED 4a12e: 6718 beqs 4a148 <== NOT EXECUTED return EINVAL; *param = attr->schedparam; 4a130: 4878 001c pea 1c <== NOT EXECUTED 4a134: 4868 0018 pea %a0@(24) <== NOT EXECUTED 4a138: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4a13a: 4eb9 0005 2c08 jsr 52c08 <== NOT EXECUTED return 0; 4a140: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4a144: 4280 clrl %d0 <== NOT EXECUTED 4a146: 6002 bras 4a14a <== NOT EXECUTED const pthread_attr_t *attr, struct sched_param *param ) { if ( !attr || !attr->is_initialized || !param ) return EINVAL; 4a148: 7016 moveq #22,%d0 <== NOT EXECUTED *param = attr->schedparam; return 0; } 4a14a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004a150 : int pthread_attr_getschedpolicy( const pthread_attr_t *attr, int *policy ) { 4a150: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a154: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4a158: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED if ( !attr || !attr->is_initialized || !policy ) 4a15c: 4a88 tstl %a0 <== NOT EXECUTED 4a15e: 6710 beqs 4a170 <== NOT EXECUTED 4a160: 4a90 tstl %a0@ <== NOT EXECUTED 4a162: 670c beqs 4a170 <== NOT EXECUTED 4a164: 4a89 tstl %a1 <== NOT EXECUTED 4a166: 6708 beqs 4a170 <== NOT EXECUTED return EINVAL; *policy = attr->schedpolicy; 4a168: 22a8 0014 movel %a0@(20),%a1@ <== NOT EXECUTED return 0; 4a16c: 4280 clrl %d0 <== NOT EXECUTED 4a16e: 6002 bras 4a172 <== NOT EXECUTED const pthread_attr_t *attr, int *policy ) { if ( !attr || !attr->is_initialized || !policy ) return EINVAL; 4a170: 7016 moveq #22,%d0 <== NOT EXECUTED *policy = attr->schedpolicy; return 0; } 4a172: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004a178 : int pthread_attr_getscope( const pthread_attr_t *attr, int *contentionscope ) { 4a178: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a17c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4a180: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED if ( !attr || !attr->is_initialized || !contentionscope ) 4a184: 4a88 tstl %a0 <== NOT EXECUTED 4a186: 6710 beqs 4a198 <== NOT EXECUTED 4a188: 4a90 tstl %a0@ <== NOT EXECUTED 4a18a: 670c beqs 4a198 <== NOT EXECUTED 4a18c: 4a89 tstl %a1 <== NOT EXECUTED 4a18e: 6708 beqs 4a198 <== NOT EXECUTED return EINVAL; *contentionscope = attr->contentionscope; 4a190: 22a8 000c movel %a0@(12),%a1@ <== NOT EXECUTED return 0; 4a194: 4280 clrl %d0 <== NOT EXECUTED 4a196: 6002 bras 4a19a <== NOT EXECUTED const pthread_attr_t *attr, int *contentionscope ) { if ( !attr || !attr->is_initialized || !contentionscope ) return EINVAL; 4a198: 7016 moveq #22,%d0 <== NOT EXECUTED *contentionscope = attr->contentionscope; return 0; } 4a19a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004a1c8 : int pthread_attr_getstack( const pthread_attr_t *attr, void **stackaddr, size_t *stacksize ) { 4a1c8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a1cc: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4a1d0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a1d2: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 4a1d6: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED if ( !attr || !attr->is_initialized || !stackaddr || !stacksize ) 4a1da: 4a88 tstl %a0 <== NOT EXECUTED 4a1dc: 6718 beqs 4a1f6 <== NOT EXECUTED 4a1de: 4a90 tstl %a0@ <== NOT EXECUTED 4a1e0: 6714 beqs 4a1f6 <== NOT EXECUTED 4a1e2: 4a8a tstl %a2 <== NOT EXECUTED 4a1e4: 6710 beqs 4a1f6 <== NOT EXECUTED 4a1e6: 4a89 tstl %a1 <== NOT EXECUTED 4a1e8: 670c beqs 4a1f6 <== NOT EXECUTED return EINVAL; *stackaddr = attr->stackaddr; 4a1ea: 24a8 0004 movel %a0@(4),%a2@ <== NOT EXECUTED *stacksize = attr->stacksize; return 0; 4a1ee: 4280 clrl %d0 <== NOT EXECUTED { if ( !attr || !attr->is_initialized || !stackaddr || !stacksize ) return EINVAL; *stackaddr = attr->stackaddr; *stacksize = attr->stacksize; 4a1f0: 22a8 0008 movel %a0@(8),%a1@ <== NOT EXECUTED return 0; 4a1f4: 6002 bras 4a1f8 <== NOT EXECUTED void **stackaddr, size_t *stacksize ) { if ( !attr || !attr->is_initialized || !stackaddr || !stacksize ) return EINVAL; 4a1f6: 7016 moveq #22,%d0 <== NOT EXECUTED *stackaddr = attr->stackaddr; *stacksize = attr->stacksize; return 0; } 4a1f8: 245f moveal %sp@+,%a2 <== NOT EXECUTED 4a1fa: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004a1a0 : int pthread_attr_getstackaddr( const pthread_attr_t *attr, void **stackaddr ) { 4a1a0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a1a4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4a1a8: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED if ( !attr || !attr->is_initialized || !stackaddr ) 4a1ac: 4a88 tstl %a0 <== NOT EXECUTED 4a1ae: 6710 beqs 4a1c0 <== NOT EXECUTED 4a1b0: 4a90 tstl %a0@ <== NOT EXECUTED 4a1b2: 670c beqs 4a1c0 <== NOT EXECUTED 4a1b4: 4a89 tstl %a1 <== NOT EXECUTED 4a1b6: 6708 beqs 4a1c0 <== NOT EXECUTED return EINVAL; *stackaddr = attr->stackaddr; 4a1b8: 22a8 0004 movel %a0@(4),%a1@ <== NOT EXECUTED return 0; 4a1bc: 4280 clrl %d0 <== NOT EXECUTED 4a1be: 6002 bras 4a1c2 <== NOT EXECUTED const pthread_attr_t *attr, void **stackaddr ) { if ( !attr || !attr->is_initialized || !stackaddr ) return EINVAL; 4a1c0: 7016 moveq #22,%d0 <== NOT EXECUTED *stackaddr = attr->stackaddr; return 0; } 4a1c2: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004a200 : int pthread_attr_getstacksize( const pthread_attr_t *attr, size_t *stacksize ) { 4a200: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a204: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4a208: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED if ( !attr || !attr->is_initialized || !stacksize ) 4a20c: 4a88 tstl %a0 <== NOT EXECUTED 4a20e: 6710 beqs 4a220 <== NOT EXECUTED 4a210: 4a90 tstl %a0@ <== NOT EXECUTED 4a212: 670c beqs 4a220 <== NOT EXECUTED 4a214: 4a89 tstl %a1 <== NOT EXECUTED 4a216: 6708 beqs 4a220 <== NOT EXECUTED return EINVAL; *stacksize = attr->stacksize; 4a218: 22a8 0008 movel %a0@(8),%a1@ <== NOT EXECUTED return 0; 4a21c: 4280 clrl %d0 <== NOT EXECUTED 4a21e: 6002 bras 4a222 <== NOT EXECUTED const pthread_attr_t *attr, size_t *stacksize ) { if ( !attr || !attr->is_initialized || !stacksize ) return EINVAL; 4a220: 7016 moveq #22,%d0 <== NOT EXECUTED *stacksize = attr->stacksize; return 0; } 4a222: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004b33c : #include int pthread_attr_init( pthread_attr_t *attr ) { 4b33c: 4e56 0000 linkw %fp,#0 4b340: 202e 0008 movel %fp@(8),%d0 if ( !attr ) 4b344: 671a beqs 4b360 <== NEVER TAKEN return EINVAL; *attr = _POSIX_Threads_Default_attributes; 4b346: 4878 0040 pea 40 4b34a: 4879 0005 cc8e pea 5cc8e <_POSIX_Threads_Default_attributes> 4b350: 2f00 movel %d0,%sp@- 4b352: 4eb9 0004 ddbc jsr 4ddbc return 0; 4b358: 4fef 000c lea %sp@(12),%sp 4b35c: 4280 clrl %d0 4b35e: 6002 bras 4b362 int pthread_attr_init( pthread_attr_t *attr ) { if ( !attr ) return EINVAL; 4b360: 7016 moveq #22,%d0 *attr = _POSIX_Threads_Default_attributes; return 0; } 4b362: 4e5e unlk %fp ... =============================================================================== 0004ab58 : int pthread_attr_setcputime( pthread_attr_t *attr, int clock_allowed ) { 4ab58: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4ab5c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4ab60: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED if ( !attr || !attr->is_initialized ) 4ab64: 4a88 tstl %a0 <== NOT EXECUTED 4ab66: 6712 beqs 4ab7a <== NOT EXECUTED 4ab68: 4a90 tstl %a0@ <== NOT EXECUTED 4ab6a: 670e beqs 4ab7a <== NOT EXECUTED return EINVAL; switch ( clock_allowed ) { 4ab6c: 7201 moveq #1,%d1 <== NOT EXECUTED 4ab6e: b280 cmpl %d0,%d1 <== NOT EXECUTED 4ab70: 6508 bcss 4ab7a <== NOT EXECUTED case CLOCK_ENABLED: case CLOCK_DISABLED: attr->cputime_clock_allowed = clock_allowed; 4ab72: 2140 0038 movel %d0,%a0@(56) <== NOT EXECUTED return 0; 4ab76: 4280 clrl %d0 <== NOT EXECUTED 4ab78: 6002 bras 4ab7c <== NOT EXECUTED default: return EINVAL; 4ab7a: 7016 moveq #22,%d0 <== NOT EXECUTED } } 4ab7c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004a254 : int pthread_attr_setdetachstate( pthread_attr_t *attr, int detachstate ) { 4a254: 4e56 0000 linkw %fp,#0 4a258: 206e 0008 moveal %fp@(8),%a0 4a25c: 202e 000c movel %fp@(12),%d0 if ( !attr || !attr->is_initialized ) 4a260: 4a88 tstl %a0 4a262: 6712 beqs 4a276 <== NEVER TAKEN 4a264: 4a90 tstl %a0@ 4a266: 670e beqs 4a276 <== NEVER TAKEN return EINVAL; switch ( detachstate ) { 4a268: 7201 moveq #1,%d1 4a26a: b280 cmpl %d0,%d1 4a26c: 6508 bcss 4a276 <== NEVER TAKEN case PTHREAD_CREATE_DETACHED: case PTHREAD_CREATE_JOINABLE: attr->detachstate = detachstate; 4a26e: 2140 003c movel %d0,%a0@(60) return 0; 4a272: 4280 clrl %d0 4a274: 6002 bras 4a278 default: return EINVAL; 4a276: 7016 moveq #22,%d0 <== NOT EXECUTED } } 4a278: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004a27c : int pthread_attr_setguardsize( pthread_attr_t *attr, size_t guardsize ) { 4a27c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a280: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !attr || !attr->is_initialized ) 4a284: 4a88 tstl %a0 <== NOT EXECUTED 4a286: 670e beqs 4a296 <== NOT EXECUTED 4a288: 4a90 tstl %a0@ <== NOT EXECUTED 4a28a: 670a beqs 4a296 <== NOT EXECUTED return EINVAL; attr->guardsize = guardsize; return 0; 4a28c: 4280 clrl %d0 <== NOT EXECUTED ) { if ( !attr || !attr->is_initialized ) return EINVAL; attr->guardsize = guardsize; 4a28e: 216e 000c 0034 movel %fp@(12),%a0@(52) <== NOT EXECUTED return 0; 4a294: 6002 bras 4a298 <== NOT EXECUTED pthread_attr_t *attr, size_t guardsize ) { if ( !attr || !attr->is_initialized ) return EINVAL; 4a296: 7016 moveq #22,%d0 <== NOT EXECUTED attr->guardsize = guardsize; return 0; } 4a298: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004b368 : int pthread_attr_setinheritsched( pthread_attr_t *attr, int inheritsched ) { 4b368: 4e56 0000 linkw %fp,#0 4b36c: 206e 0008 moveal %fp@(8),%a0 4b370: 222e 000c movel %fp@(12),%d1 4b374: 2f02 movel %d2,%sp@- if ( !attr || !attr->is_initialized ) 4b376: 4a88 tstl %a0 4b378: 671c beqs 4b396 <== NEVER TAKEN 4b37a: 4a90 tstl %a0@ 4b37c: 6718 beqs 4b396 <== NEVER TAKEN return EINVAL; switch ( inheritsched ) { 4b37e: 2241 moveal %d1,%a1 4b380: 5389 subql #1,%a1 case PTHREAD_EXPLICIT_SCHED: attr->inheritsched = inheritsched; return 0; default: return ENOTSUP; 4b382: 203c 0000 0086 movel #134,%d0 ) { if ( !attr || !attr->is_initialized ) return EINVAL; switch ( inheritsched ) { 4b388: 7401 moveq #1,%d2 4b38a: b489 cmpl %a1,%d2 4b38c: 650a bcss 4b398 <== NEVER TAKEN case PTHREAD_INHERIT_SCHED: case PTHREAD_EXPLICIT_SCHED: attr->inheritsched = inheritsched; 4b38e: 2141 0010 movel %d1,%a0@(16) return 0; 4b392: 4200 clrb %d0 4b394: 6002 bras 4b398 pthread_attr_t *attr, int inheritsched ) { if ( !attr || !attr->is_initialized ) return EINVAL; 4b396: 7016 moveq #22,%d0 <== NOT EXECUTED return 0; default: return ENOTSUP; } } 4b398: 241f movel %sp@+,%d2 4b39a: 4e5e unlk %fp ... =============================================================================== 0004a2d4 : int pthread_attr_setschedparam( pthread_attr_t *attr, const struct sched_param *param ) { 4a2d4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a2d8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4a2dc: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED if ( !attr || !attr->is_initialized || !param ) 4a2e0: 4a88 tstl %a0 <== NOT EXECUTED 4a2e2: 6720 beqs 4a304 <== NOT EXECUTED 4a2e4: 4a90 tstl %a0@ <== NOT EXECUTED 4a2e6: 671c beqs 4a304 <== NOT EXECUTED 4a2e8: 4a80 tstl %d0 <== NOT EXECUTED 4a2ea: 6718 beqs 4a304 <== NOT EXECUTED return EINVAL; attr->schedparam = *param; 4a2ec: 4878 001c pea 1c <== NOT EXECUTED 4a2f0: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4a2f2: 4868 0018 pea %a0@(24) <== NOT EXECUTED 4a2f6: 4eb9 0005 2c08 jsr 52c08 <== NOT EXECUTED return 0; 4a2fc: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4a300: 4280 clrl %d0 <== NOT EXECUTED 4a302: 6002 bras 4a306 <== NOT EXECUTED pthread_attr_t *attr, const struct sched_param *param ) { if ( !attr || !attr->is_initialized || !param ) return EINVAL; 4a304: 7016 moveq #22,%d0 <== NOT EXECUTED attr->schedparam = *param; return 0; } 4a306: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004a30c : int pthread_attr_setschedpolicy( pthread_attr_t *attr, int policy ) { 4a30c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a310: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4a314: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED 4a318: 2f02 movel %d2,%sp@- <== NOT EXECUTED if ( !attr || !attr->is_initialized ) 4a31a: 4a88 tstl %a0 <== NOT EXECUTED 4a31c: 671e beqs 4a33c <== NOT EXECUTED 4a31e: 4a90 tstl %a0@ <== NOT EXECUTED 4a320: 671a beqs 4a33c <== NOT EXECUTED return EINVAL; switch ( policy ) { 4a322: 7004 moveq #4,%d0 <== NOT EXECUTED 4a324: b081 cmpl %d1,%d0 <== NOT EXECUTED 4a326: 6518 bcss 4a340 <== NOT EXECUTED 4a328: 103c 0001 moveb #1,%d0 <== NOT EXECUTED 4a32c: 7417 moveq #23,%d2 <== NOT EXECUTED 4a32e: e3a8 lsll %d1,%d0 <== NOT EXECUTED 4a330: c082 andl %d2,%d0 <== NOT EXECUTED 4a332: 670c beqs 4a340 <== NOT EXECUTED case SCHED_OTHER: case SCHED_FIFO: case SCHED_RR: case SCHED_SPORADIC: attr->schedpolicy = policy; 4a334: 2141 0014 movel %d1,%a0@(20) <== NOT EXECUTED return 0; 4a338: 4280 clrl %d0 <== NOT EXECUTED 4a33a: 600a bras 4a346 <== NOT EXECUTED pthread_attr_t *attr, int policy ) { if ( !attr || !attr->is_initialized ) return EINVAL; 4a33c: 7016 moveq #22,%d0 <== NOT EXECUTED 4a33e: 6006 bras 4a346 <== NOT EXECUTED case SCHED_SPORADIC: attr->schedpolicy = policy; return 0; default: return ENOTSUP; 4a340: 203c 0000 0086 movel #134,%d0 <== NOT EXECUTED } } 4a346: 241f movel %sp@+,%d2 <== NOT EXECUTED 4a348: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004a34c : int pthread_attr_setscope( pthread_attr_t *attr, int contentionscope ) { 4a34c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a350: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4a354: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED 4a358: 2f02 movel %d2,%sp@- <== NOT EXECUTED if ( !attr || !attr->is_initialized ) 4a35a: 4a88 tstl %a0 <== NOT EXECUTED 4a35c: 671e beqs 4a37c <== NOT EXECUTED 4a35e: 4a90 tstl %a0@ <== NOT EXECUTED 4a360: 671a beqs 4a37c <== NOT EXECUTED return EINVAL; switch ( contentionscope ) { 4a362: 4a81 tstl %d1 <== NOT EXECUTED 4a364: 670e beqs 4a374 <== NOT EXECUTED case PTHREAD_SCOPE_PROCESS: attr->contentionscope = contentionscope; return 0; case PTHREAD_SCOPE_SYSTEM: return ENOTSUP; 4a366: 203c 0000 0086 movel #134,%d0 <== NOT EXECUTED ) { if ( !attr || !attr->is_initialized ) return EINVAL; switch ( contentionscope ) { 4a36c: 7401 moveq #1,%d2 <== NOT EXECUTED 4a36e: b481 cmpl %d1,%d2 <== NOT EXECUTED 4a370: 660a bnes 4a37c <== NOT EXECUTED 4a372: 600a bras 4a37e <== NOT EXECUTED case PTHREAD_SCOPE_PROCESS: attr->contentionscope = contentionscope; 4a374: 42a8 000c clrl %a0@(12) <== NOT EXECUTED return 0; 4a378: 4280 clrl %d0 <== NOT EXECUTED 4a37a: 6002 bras 4a37e <== NOT EXECUTED case PTHREAD_SCOPE_SYSTEM: return ENOTSUP; default: return EINVAL; 4a37c: 7016 moveq #22,%d0 <== NOT EXECUTED } } 4a37e: 241f movel %sp@+,%d2 <== NOT EXECUTED 4a380: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004a3a4 : int pthread_attr_setstack( pthread_attr_t *attr, void *stackaddr, size_t stacksize ) { 4a3a4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a3a8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4a3ac: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED if ( !attr || !attr->is_initialized ) 4a3b0: 4a88 tstl %a0 <== NOT EXECUTED 4a3b2: 6724 beqs 4a3d8 <== NOT EXECUTED 4a3b4: 4a90 tstl %a0@ <== NOT EXECUTED 4a3b6: 6720 beqs 4a3d8 <== NOT EXECUTED return EINVAL; if (stacksize < PTHREAD_MINIMUM_STACK_SIZE) 4a3b8: 2039 0006 55b2 movel 655b2 ,%d0 <== NOT EXECUTED 4a3be: d080 addl %d0,%d0 <== NOT EXECUTED 4a3c0: b081 cmpl %d1,%d0 <== NOT EXECUTED 4a3c2: 6306 blss 4a3ca <== NOT EXECUTED attr->stacksize = PTHREAD_MINIMUM_STACK_SIZE; 4a3c4: 2140 0008 movel %d0,%a0@(8) <== NOT EXECUTED 4a3c8: 6004 bras 4a3ce <== NOT EXECUTED else attr->stacksize = stacksize; 4a3ca: 2141 0008 movel %d1,%a0@(8) <== NOT EXECUTED attr->stackaddr = stackaddr; return 0; 4a3ce: 4280 clrl %d0 <== NOT EXECUTED if (stacksize < PTHREAD_MINIMUM_STACK_SIZE) attr->stacksize = PTHREAD_MINIMUM_STACK_SIZE; else attr->stacksize = stacksize; attr->stackaddr = stackaddr; 4a3d0: 216e 000c 0004 movel %fp@(12),%a0@(4) <== NOT EXECUTED return 0; 4a3d6: 6002 bras 4a3da <== NOT EXECUTED void *stackaddr, size_t stacksize ) { if ( !attr || !attr->is_initialized ) return EINVAL; 4a3d8: 7016 moveq #22,%d0 <== NOT EXECUTED else attr->stacksize = stacksize; attr->stackaddr = stackaddr; return 0; } 4a3da: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004a384 : int pthread_attr_setstackaddr( pthread_attr_t *attr, void *stackaddr ) { 4a384: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a388: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !attr || !attr->is_initialized ) 4a38c: 4a88 tstl %a0 <== NOT EXECUTED 4a38e: 670e beqs 4a39e <== NOT EXECUTED 4a390: 4a90 tstl %a0@ <== NOT EXECUTED 4a392: 670a beqs 4a39e <== NOT EXECUTED return EINVAL; attr->stackaddr = stackaddr; return 0; 4a394: 4280 clrl %d0 <== NOT EXECUTED ) { if ( !attr || !attr->is_initialized ) return EINVAL; attr->stackaddr = stackaddr; 4a396: 216e 000c 0004 movel %fp@(12),%a0@(4) <== NOT EXECUTED return 0; 4a39c: 6002 bras 4a3a0 <== NOT EXECUTED pthread_attr_t *attr, void *stackaddr ) { if ( !attr || !attr->is_initialized ) return EINVAL; 4a39e: 7016 moveq #22,%d0 <== NOT EXECUTED attr->stackaddr = stackaddr; return 0; } 4a3a0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004b3a0 : int pthread_attr_setstacksize( pthread_attr_t *attr, size_t stacksize ) { 4b3a0: 4e56 0000 linkw %fp,#0 4b3a4: 206e 0008 moveal %fp@(8),%a0 4b3a8: 222e 000c movel %fp@(12),%d1 if ( !attr || !attr->is_initialized ) 4b3ac: 4a88 tstl %a0 4b3ae: 671e beqs 4b3ce <== NEVER TAKEN 4b3b0: 4a90 tstl %a0@ 4b3b2: 671a beqs 4b3ce <== NEVER TAKEN return EINVAL; if (stacksize < PTHREAD_MINIMUM_STACK_SIZE) 4b3b4: 2039 0005 dbf2 movel 5dbf2 ,%d0 4b3ba: d080 addl %d0,%d0 4b3bc: b081 cmpl %d1,%d0 4b3be: 6306 blss 4b3c6 attr->stacksize = PTHREAD_MINIMUM_STACK_SIZE; 4b3c0: 2140 0008 movel %d0,%a0@(8) 4b3c4: 6004 bras 4b3ca else attr->stacksize = stacksize; 4b3c6: 2141 0008 movel %d1,%a0@(8) return 0; 4b3ca: 4280 clrl %d0 4b3cc: 6002 bras 4b3d0 pthread_attr_t *attr, size_t stacksize ) { if ( !attr || !attr->is_initialized ) return EINVAL; 4b3ce: 7016 moveq #22,%d0 <== NOT EXECUTED if (stacksize < PTHREAD_MINIMUM_STACK_SIZE) attr->stacksize = PTHREAD_MINIMUM_STACK_SIZE; else attr->stacksize = stacksize; return 0; } 4b3d0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045938 : */ int pthread_barrier_destroy( pthread_barrier_t *barrier ) { 45938: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4593c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 45940: 2f0b movel %a3,%sp@- <== NOT EXECUTED 45942: 2f0a movel %a2,%sp@- <== NOT EXECUTED POSIX_Barrier_Control *the_barrier = NULL; Objects_Locations location; if ( !barrier ) 45944: 4a88 tstl %a0 <== NOT EXECUTED 45946: 6756 beqs 4599e <== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_Barrier_Control *_POSIX_Barrier_Get ( pthread_barrier_t *barrier, Objects_Locations *location ) { return (POSIX_Barrier_Control *) _Objects_Get( 45948: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4594c: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4594e: 4879 0005 fd9a pea 5fd9a <_POSIX_Barrier_Information> <== NOT EXECUTED 45954: 4eb9 0004 7d24 jsr 47d24 <_Objects_Get> <== NOT EXECUTED return EINVAL; the_barrier = _POSIX_Barrier_Get( barrier, &location ); switch ( location ) { 4595a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4595e: 2440 moveal %d0,%a2 <== NOT EXECUTED 45960: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 45964: 6638 bnes 4599e <== NOT EXECUTED 45966: 47f9 0004 878a lea 4878a <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED case OBJECTS_LOCAL: if ( the_barrier->Barrier.number_of_waiting_threads != 0 ) { 4596c: 4aaa 0058 tstl %a2@(88) <== NOT EXECUTED 45970: 6706 beqs 45978 <== NOT EXECUTED _Thread_Enable_dispatch(); 45972: 4e93 jsr %a3@ <== NOT EXECUTED return EBUSY; 45974: 7010 moveq #16,%d0 <== NOT EXECUTED 45976: 6028 bras 459a0 <== NOT EXECUTED } _Objects_Close( &_POSIX_Barrier_Information, &the_barrier->Object ); 45978: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4597a: 4879 0005 fd9a pea 5fd9a <_POSIX_Barrier_Information> <== NOT EXECUTED 45980: 4eb9 0004 7948 jsr 47948 <_Objects_Close> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _POSIX_Barrier_Free ( POSIX_Barrier_Control *the_barrier ) { _Objects_Free( &_POSIX_Barrier_Information, &the_barrier->Object ); 45986: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45988: 4879 0005 fd9a pea 5fd9a <_POSIX_Barrier_Information> <== NOT EXECUTED 4598e: 4eb9 0004 7bc0 jsr 47bc0 <_Objects_Free> <== NOT EXECUTED _POSIX_Barrier_Free( the_barrier ); _Thread_Enable_dispatch(); 45994: 4e93 jsr %a3@ <== NOT EXECUTED return 0; 45996: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4599a: 4280 clrl %d0 <== NOT EXECUTED 4599c: 6002 bras 459a0 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 4599e: 7016 moveq #22,%d0 <== NOT EXECUTED } 459a0: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 459a4: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED 459a8: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000459ac : int pthread_barrier_init( pthread_barrier_t *barrier, const pthread_barrierattr_t *attr, unsigned int count ) { 459ac: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED 459b0: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 459b4: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED 459b8: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 459bc: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED const pthread_barrierattr_t *the_attr; /* * Error check parameters */ if ( !barrier ) 459c0: 4a8a tstl %a2 <== NOT EXECUTED 459c2: 6700 008e beqw 45a52 <== NOT EXECUTED return EINVAL; if ( count == 0 ) 459c6: 4a82 tstl %d2 <== NOT EXECUTED 459c8: 6700 0088 beqw 45a52 <== NOT EXECUTED return EINVAL; /* * If the user passed in NULL, use the default attributes */ if ( attr ) { 459cc: 4a88 tstl %a0 <== NOT EXECUTED 459ce: 6614 bnes 459e4 <== NOT EXECUTED the_attr = attr; } else { (void) pthread_barrierattr_init( &my_attr ); 459d0: 260e movel %fp,%d3 <== NOT EXECUTED 459d2: 0683 ffff fff0 addil #-16,%d3 <== NOT EXECUTED 459d8: 2f03 movel %d3,%sp@- <== NOT EXECUTED 459da: 4eb9 0004 58f0 jsr 458f0 <== NOT EXECUTED 459e0: 588f addql #4,%sp <== NOT EXECUTED the_attr = &my_attr; 459e2: 2043 moveal %d3,%a0 <== NOT EXECUTED } /* * Now start error checking the attributes that we are going to use */ if ( !the_attr->is_initialized ) 459e4: 4a90 tstl %a0@ <== NOT EXECUTED 459e6: 676a beqs 45a52 <== NOT EXECUTED return EINVAL; switch ( the_attr->process_shared ) { 459e8: 4aa8 0004 tstl %a0@(4) <== NOT EXECUTED 459ec: 6664 bnes 45a52 <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 459ee: 2039 0005 fa7c movel 5fa7c <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 459f4: 5280 addql #1,%d0 <== NOT EXECUTED } /* * Convert from POSIX attributes to Core Barrier attributes */ the_attributes.discipline = CORE_BARRIER_AUTOMATIC_RELEASE; 459f6: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED the_attributes.maximum_count = count; 459fa: 2d42 fffc movel %d2,%fp@(-4) <== NOT EXECUTED 459fe: 23c0 0005 fa7c movel %d0,5fa7c <_Thread_Dispatch_disable_level><== NOT EXECUTED * the inactive chain of free barrier control blocks. */ RTEMS_INLINE_ROUTINE POSIX_Barrier_Control *_POSIX_Barrier_Allocate( void ) { return (POSIX_Barrier_Control *) _Objects_Allocate( &_POSIX_Barrier_Information ); 45a04: 4879 0005 fd9a pea 5fd9a <_POSIX_Barrier_Information> <== NOT EXECUTED 45a0a: 49f9 0004 878a lea 4878a <_Thread_Enable_dispatch>,%a4 <== NOT EXECUTED 45a10: 4eb9 0004 78cc jsr 478cc <_Objects_Allocate> <== NOT EXECUTED */ _Thread_Disable_dispatch(); /* prevents deletion */ the_barrier = _POSIX_Barrier_Allocate(); if ( !the_barrier ) { 45a16: 588f addql #4,%sp <== NOT EXECUTED 45a18: 2640 moveal %d0,%a3 <== NOT EXECUTED 45a1a: 4a80 tstl %d0 <== NOT EXECUTED 45a1c: 6606 bnes 45a24 <== NOT EXECUTED _Thread_Enable_dispatch(); 45a1e: 4e94 jsr %a4@ <== NOT EXECUTED return EAGAIN; 45a20: 700b moveq #11,%d0 <== NOT EXECUTED 45a22: 6030 bras 45a54 <== NOT EXECUTED } _CORE_barrier_Initialize( &the_barrier->Barrier, &the_attributes ); 45a24: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 45a28: 486b 0010 pea %a3@(16) <== NOT EXECUTED 45a2c: 4eb9 0004 6fdc jsr 46fdc <_CORE_barrier_Initialize> <== NOT EXECUTED uint32_t name ) { _Objects_Set_local_object( information, _Objects_Get_index( the_object->id ), 45a32: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, uint32_t name ) { _Objects_Set_local_object( 45a36: 4281 clrl %d1 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 45a38: 2079 0005 fdb2 moveal 5fdb2 <_POSIX_Barrier_Information+0x18>,%a0<== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, uint32_t name ) { _Objects_Set_local_object( 45a3e: 3200 movew %d0,%d1 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 45a40: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4) <== NOT EXECUTED _Objects_Get_index( the_object->id ), the_object ); /* ASSERT: information->is_string == false */ the_object->name.name_u32 = name; 45a44: 42ab 000c clrl %a3@(12) <== NOT EXECUTED ); /* * Exit the critical section and return the user an operational barrier */ *barrier = the_barrier->Object.id; 45a48: 2480 movel %d0,%a2@ <== NOT EXECUTED _Thread_Enable_dispatch(); 45a4a: 4e94 jsr %a4@ <== NOT EXECUTED return 0; 45a4c: 508f addql #8,%sp <== NOT EXECUTED 45a4e: 4280 clrl %d0 <== NOT EXECUTED 45a50: 6002 bras 45a54 <== NOT EXECUTED switch ( the_attr->process_shared ) { case PTHREAD_PROCESS_PRIVATE: /* only supported values */ break; case PTHREAD_PROCESS_SHARED: default: return EINVAL; 45a52: 7016 moveq #22,%d0 <== NOT EXECUTED * Exit the critical section and return the user an operational barrier */ *barrier = the_barrier->Object.id; _Thread_Enable_dispatch(); return 0; } 45a54: 4cee 1c0c ffdc moveml %fp@(-36),%d2-%d3/%a2-%a4 <== NOT EXECUTED 45a5a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00045a60 : */ int pthread_barrier_wait( pthread_barrier_t *barrier ) { 45a60: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 45a64: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED POSIX_Barrier_Control *the_barrier = NULL; Objects_Locations location; if ( !barrier ) 45a68: 4a88 tstl %a0 <== NOT EXECUTED 45a6a: 6750 beqs 45abc <== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_Barrier_Control *_POSIX_Barrier_Get ( pthread_barrier_t *barrier, Objects_Locations *location ) { return (POSIX_Barrier_Control *) _Objects_Get( 45a6c: 486e fffc pea %fp@(-4) <== NOT EXECUTED 45a70: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 45a72: 4879 0005 fd9a pea 5fd9a <_POSIX_Barrier_Information> <== NOT EXECUTED 45a78: 4eb9 0004 7d24 jsr 47d24 <_Objects_Get> <== NOT EXECUTED return EINVAL; the_barrier = _POSIX_Barrier_Get( barrier, &location ); switch ( location ) { 45a7e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 45a82: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 45a86: 6634 bnes 45abc <== NOT EXECUTED case OBJECTS_LOCAL: _CORE_barrier_Wait( 45a88: 42a7 clrl %sp@- <== NOT EXECUTED 45a8a: 2040 moveal %d0,%a0 <== NOT EXECUTED 45a8c: 42a7 clrl %sp@- <== NOT EXECUTED 45a8e: 4878 0001 pea 1 <== NOT EXECUTED 45a92: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 45a96: 4868 0010 pea %a0@(16) <== NOT EXECUTED 45a9a: 4eb9 0004 7018 jsr 47018 <_CORE_barrier_Wait> <== NOT EXECUTED the_barrier->Object.id, true, 0, NULL ); _Thread_Enable_dispatch(); 45aa0: 4eb9 0004 878a jsr 4878a <_Thread_Enable_dispatch> <== NOT EXECUTED return _POSIX_Barrier_Translate_core_barrier_return_code( _Thread_Executing->Wait.return_code ); 45aa6: 2079 0005 ff06 moveal 5ff06 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED true, 0, NULL ); _Thread_Enable_dispatch(); return _POSIX_Barrier_Translate_core_barrier_return_code( 45aac: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 45ab0: 4eb9 0004 afe0 jsr 4afe0 <_POSIX_Barrier_Translate_core_barrier_return_code><== NOT EXECUTED 45ab6: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 45aba: 6002 bras 45abe <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 45abc: 7016 moveq #22,%d0 <== NOT EXECUTED } 45abe: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000458b0 : */ int pthread_barrierattr_destroy( pthread_barrierattr_t *attr ) { 458b0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 458b4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !attr || attr->is_initialized == false ) 458b8: 4a88 tstl %a0 <== NOT EXECUTED 458ba: 670a beqs 458c6 <== NOT EXECUTED 458bc: 4a90 tstl %a0@ <== NOT EXECUTED 458be: 6706 beqs 458c6 <== NOT EXECUTED return EINVAL; attr->is_initialized = false; 458c0: 4290 clrl %a0@ <== NOT EXECUTED return 0; 458c2: 4280 clrl %d0 <== NOT EXECUTED 458c4: 6002 bras 458c8 <== NOT EXECUTED int pthread_barrierattr_destroy( pthread_barrierattr_t *attr ) { if ( !attr || attr->is_initialized == false ) return EINVAL; 458c6: 7016 moveq #22,%d0 <== NOT EXECUTED attr->is_initialized = false; return 0; } 458c8: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000458cc : int pthread_barrierattr_getpshared( const pthread_barrierattr_t *attr, int *pshared ) { 458cc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 458d0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !attr ) 458d4: 4a88 tstl %a0 <== NOT EXECUTED 458d6: 6710 beqs 458e8 <== NOT EXECUTED return EINVAL; if ( !attr->is_initialized ) 458d8: 4a90 tstl %a0@ <== NOT EXECUTED 458da: 670c beqs 458e8 <== NOT EXECUTED return EINVAL; *pshared = attr->process_shared; 458dc: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED return 0; 458e0: 4280 clrl %d0 <== NOT EXECUTED return EINVAL; if ( !attr->is_initialized ) return EINVAL; *pshared = attr->process_shared; 458e2: 22a8 0004 movel %a0@(4),%a1@ <== NOT EXECUTED return 0; 458e6: 6002 bras 458ea <== NOT EXECUTED { if ( !attr ) return EINVAL; if ( !attr->is_initialized ) return EINVAL; 458e8: 7016 moveq #22,%d0 <== NOT EXECUTED *pshared = attr->process_shared; return 0; } 458ea: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000458f0 : */ int pthread_barrierattr_init( pthread_barrierattr_t *attr ) { 458f0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 458f4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !attr ) 458f8: 4a88 tstl %a0 <== NOT EXECUTED 458fa: 670c beqs 45908 <== NOT EXECUTED return EINVAL; attr->is_initialized = true; 458fc: 7001 moveq #1,%d0 <== NOT EXECUTED attr->process_shared = PTHREAD_PROCESS_PRIVATE; 458fe: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED ) { if ( !attr ) return EINVAL; attr->is_initialized = true; 45902: 2080 movel %d0,%a0@ <== NOT EXECUTED attr->process_shared = PTHREAD_PROCESS_PRIVATE; return 0; 45904: 4280 clrl %d0 <== NOT EXECUTED 45906: 6002 bras 4590a <== NOT EXECUTED int pthread_barrierattr_init( pthread_barrierattr_t *attr ) { if ( !attr ) return EINVAL; 45908: 7016 moveq #22,%d0 <== NOT EXECUTED attr->is_initialized = true; attr->process_shared = PTHREAD_PROCESS_PRIVATE; return 0; } 4590a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00045910 : int pthread_barrierattr_setpshared( pthread_barrierattr_t *attr, int pshared ) { 45910: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45914: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 45918: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED if ( !attr ) 4591c: 4a88 tstl %a0 <== NOT EXECUTED 4591e: 6712 beqs 45932 <== NOT EXECUTED return EINVAL; if ( !attr->is_initialized ) 45920: 4a90 tstl %a0@ <== NOT EXECUTED 45922: 670e beqs 45932 <== NOT EXECUTED return EINVAL; switch ( pshared ) { 45924: 7201 moveq #1,%d1 <== NOT EXECUTED 45926: b280 cmpl %d0,%d1 <== NOT EXECUTED 45928: 6508 bcss 45932 <== NOT EXECUTED case PTHREAD_PROCESS_SHARED: case PTHREAD_PROCESS_PRIVATE: attr->process_shared = pshared; 4592a: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED return 0; 4592e: 4280 clrl %d0 <== NOT EXECUTED 45930: 6002 bras 45934 <== NOT EXECUTED default: return EINVAL; 45932: 7016 moveq #22,%d0 <== NOT EXECUTED } } 45934: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045144 : */ int pthread_cancel( pthread_t thread ) { 45144: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED /* * Don't even think about deleting a resource from an ISR. */ if ( _ISR_Is_in_progress() ) 45148: 4ab9 0005 ef92 tstl 5ef92 <_Per_CPU_Information+0x8> <== NOT EXECUTED 4514e: 6638 bnes 45188 <== NOT EXECUTED pthread_t id, Objects_Locations *location ) { return (Thread_Control *) _Objects_Get( &_POSIX_Threads_Information, (Objects_Id)id, location ); 45150: 486e fffc pea %fp@(-4) <== NOT EXECUTED 45154: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 45158: 4879 0005 ecce pea 5ecce <_POSIX_Threads_Information> <== NOT EXECUTED 4515e: 4eb9 0004 7058 jsr 47058 <_Objects_Get> <== NOT EXECUTED return EPROTO; the_thread = _POSIX_Threads_Get( thread, &location ); switch ( location ) { 45164: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 45168: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4516c: 661e bnes 4518c <== NOT EXECUTED case OBJECTS_LOCAL: thread_support = the_thread->API_Extensions[ THREAD_API_POSIX ]; thread_support->cancelation_requested = 1; 4516e: 2240 moveal %d0,%a1 <== NOT EXECUTED 45170: 7201 moveq #1,%d1 <== NOT EXECUTED 45172: 2069 0102 moveal %a1@(258),%a0 <== NOT EXECUTED 45176: 2141 00e0 movel %d1,%a0@(224) <== NOT EXECUTED /* This enables dispatch implicitly */ _POSIX_Thread_Evaluate_cancellation_and_enable_dispatch( the_thread ); 4517a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4517c: 4eb9 0004 a040 jsr 4a040 <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch><== NOT EXECUTED return 0; 45182: 588f addql #4,%sp <== NOT EXECUTED 45184: 4280 clrl %d0 <== NOT EXECUTED 45186: 6006 bras 4518e <== NOT EXECUTED /* * Don't even think about deleting a resource from an ISR. */ if ( _ISR_Is_in_progress() ) return EPROTO; 45188: 7047 moveq #71,%d0 <== NOT EXECUTED 4518a: 6002 bras 4518e <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 4518c: 7016 moveq #22,%d0 <== NOT EXECUTED } 4518e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00044fc0 : */ void pthread_cleanup_pop( int execute ) { 44fc0: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 44fc4: 2039 0005 e760 movel 5e760 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 44fca: 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 ]; 44fcc: 2079 0005 ebea moveal 5ebea <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED */ void pthread_cleanup_pop( int execute ) { 44fd2: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED 44fd6: 282e 0008 movel %fp@(8),%d4 <== 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 ]; 44fda: 2068 0102 moveal %a0@(258),%a0 <== NOT EXECUTED 44fde: 23c0 0005 e760 movel %d0,5e760 <_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 ); 44fe4: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 44fea: 40c2 movew %sr,%d2 <== NOT EXECUTED 44fec: 8082 orl %d2,%d0 <== NOT EXECUTED 44fee: 46c0 movew %d0,%sr <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( const Chain_Control *the_chain ) { return _Chain_Immutable_first( the_chain ) == _Chain_Immutable_tail( the_chain ); 44ff0: 2008 movel %a0,%d0 <== NOT EXECUTED 44ff2: 0680 0000 00e8 addil #232,%d0 <== NOT EXECUTED 44ff8: 45f9 0004 77e6 lea 477e6 <_Thread_Enable_dispatch>,%a2 <== NOT EXECUTED if ( _Chain_Is_empty( handler_stack ) ) { 44ffe: b0a8 00e4 cmpl %a0@(228),%d0 <== NOT EXECUTED 45002: 6606 bnes 4500a <== NOT EXECUTED _Thread_Enable_dispatch(); 45004: 4e92 jsr %a2@ <== NOT EXECUTED _ISR_Enable( level ); 45006: 46c2 movew %d2,%sr <== NOT EXECUTED return; 45008: 603a bras 45044 <== NOT EXECUTED } handler = (POSIX_Cancel_Handler_control *) 4500a: 2068 00ec moveal %a0@(236),%a0 <== NOT EXECUTED ) { Chain_Node *next; Chain_Node *previous; next = the_node->next; 4500e: 2650 moveal %a0@,%a3 <== NOT EXECUTED previous = the_node->previous; 45010: 2268 0004 moveal %a0@(4),%a1 <== NOT EXECUTED next->previous = previous; 45014: 2749 0004 movel %a1,%a3@(4) <== NOT EXECUTED previous->next = next; 45018: 228b movel %a3,%a1@ <== NOT EXECUTED _Chain_Tail( handler_stack )->previous; _Chain_Extract_unprotected( &handler->Node ); _ISR_Enable( level ); 4501a: 46c2 movew %d2,%sr <== NOT EXECUTED 4501c: 2428 0008 movel %a0@(8),%d2 <== NOT EXECUTED 45020: 2628 000c movel %a0@(12),%d3 <== NOT EXECUTED tmp_handler = *handler; _Workspace_Free( handler ); 45024: 2f08 movel %a0,%sp@- <== NOT EXECUTED 45026: 4eb9 0004 87fc jsr 487fc <_Workspace_Free> <== NOT EXECUTED _Thread_Enable_dispatch(); 4502c: 4e92 jsr %a2@ <== NOT EXECUTED if ( execute ) 4502e: 588f addql #4,%sp <== NOT EXECUTED 45030: 4a84 tstl %d4 <== NOT EXECUTED 45032: 6710 beqs 45044 <== NOT EXECUTED (*tmp_handler.routine)( tmp_handler.arg ); 45034: 2242 moveal %d2,%a1 <== NOT EXECUTED 45036: 2d43 0008 movel %d3,%fp@(8) <== NOT EXECUTED } 4503a: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 45040: 4e5e unlk %fp <== NOT EXECUTED _Workspace_Free( handler ); _Thread_Enable_dispatch(); if ( execute ) (*tmp_handler.routine)( tmp_handler.arg ); 45042: 4ed1 jmp %a1@ <== NOT EXECUTED } 45044: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 4504a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000453d8 : void pthread_cleanup_push( void (*routine)( void * ), void *arg ) { 453d8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 453dc: 2f03 movel %d3,%sp@- <== NOT EXECUTED 453de: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 453e2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 453e4: 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 ) 453e8: 6754 beqs 4543e <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 453ea: 2039 0005 f3d2 movel 5f3d2 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 453f0: 5280 addql #1,%d0 <== NOT EXECUTED 453f2: 23c0 0005 f3d2 movel %d0,5f3d2 <_Thread_Dispatch_disable_level><== NOT EXECUTED return; _Thread_Disable_dispatch(); handler = _Workspace_Allocate( sizeof( POSIX_Cancel_Handler_control ) ); 453f8: 4878 0010 pea 10 <== NOT EXECUTED 453fc: 4eb9 0004 9284 jsr 49284 <_Workspace_Allocate> <== NOT EXECUTED if ( handler ) { 45402: 588f addql #4,%sp <== NOT EXECUTED 45404: 4a80 tstl %d0 <== NOT EXECUTED 45406: 6726 beqs 4542e <== NOT EXECUTED thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; 45408: 2079 0005 f85c moveal 5f85c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED handler_stack = &thread_support->Cancellation_Handlers; 4540e: 2228 0102 movel %a0@(258),%d1 <== NOT EXECUTED handler->routine = routine; 45412: 2040 moveal %d0,%a0 <== NOT EXECUTED handler = _Workspace_Allocate( sizeof( POSIX_Cancel_Handler_control ) ); if ( handler ) { thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; handler_stack = &thread_support->Cancellation_Handlers; 45414: 0681 0000 00e4 addil #228,%d1 <== NOT EXECUTED handler->routine = routine; 4541a: 2142 0008 movel %d2,%a0@(8) <== NOT EXECUTED handler->arg = arg; 4541e: 2143 000c movel %d3,%a0@(12) <== NOT EXECUTED _Chain_Append( handler_stack, &handler->Node ); 45422: 2f00 movel %d0,%sp@- <== NOT EXECUTED 45424: 2f01 movel %d1,%sp@- <== NOT EXECUTED 45426: 4eb9 0004 6a84 jsr 46a84 <_Chain_Append> <== NOT EXECUTED 4542c: 508f addql #8,%sp <== NOT EXECUTED } _Thread_Enable_dispatch(); } 4542e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 45432: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 45436: 4e5e unlk %fp <== NOT EXECUTED handler->routine = routine; handler->arg = arg; _Chain_Append( handler_stack, &handler->Node ); } _Thread_Enable_dispatch(); 45438: 4ef9 0004 81f6 jmp 481f6 <_Thread_Enable_dispatch> <== NOT EXECUTED } 4543e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 45442: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 45446: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046018 : */ int pthread_cond_broadcast( pthread_cond_t *cond ) { 46018: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _POSIX_Condition_variables_Signal_support( cond, true ); 4601c: 4878 0001 pea 1 <== NOT EXECUTED 46020: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 46024: 4eb9 0004 61ac jsr 461ac <_POSIX_Condition_variables_Signal_support><== NOT EXECUTED } 4602a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046030 : */ int pthread_cond_destroy( pthread_cond_t *cond ) { 46030: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 46034: 2f0b movel %a3,%sp@- <== NOT EXECUTED 46036: 2f0a movel %a2,%sp@- <== NOT EXECUTED POSIX_Condition_variables_Control *the_cond; Objects_Locations location; the_cond = _POSIX_Condition_variables_Get( cond, &location ); 46038: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4603c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 46040: 4eb9 0004 60a0 jsr 460a0 <_POSIX_Condition_variables_Get> <== NOT EXECUTED switch ( location ) { 46046: 508f addql #8,%sp <== NOT EXECUTED ) { POSIX_Condition_variables_Control *the_cond; Objects_Locations location; the_cond = _POSIX_Condition_variables_Get( cond, &location ); 46048: 2440 moveal %d0,%a2 <== NOT EXECUTED switch ( location ) { 4604a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4604e: 6642 bnes 46092 <== NOT EXECUTED case OBJECTS_LOCAL: if ( _Thread_queue_First( &the_cond->Wait_queue ) ) { 46050: 486a 0018 pea %a2@(24) <== NOT EXECUTED 46054: 47f9 0004 93d6 lea 493d6 <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED 4605a: 4eb9 0004 9a48 jsr 49a48 <_Thread_queue_First> <== NOT EXECUTED 46060: 588f addql #4,%sp <== NOT EXECUTED 46062: 4a80 tstl %d0 <== NOT EXECUTED 46064: 6706 beqs 4606c <== NOT EXECUTED _Thread_Enable_dispatch(); 46066: 4e93 jsr %a3@ <== NOT EXECUTED return EBUSY; 46068: 7010 moveq #16,%d0 <== NOT EXECUTED 4606a: 6028 bras 46094 <== NOT EXECUTED } _Objects_Close( 4606c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4606e: 4879 0006 0d52 pea 60d52 <_POSIX_Condition_variables_Information><== NOT EXECUTED 46074: 4eb9 0004 8594 jsr 48594 <_Objects_Close> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _POSIX_Condition_variables_Free ( POSIX_Condition_variables_Control *the_condition_variable ) { _Objects_Free( 4607a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4607c: 4879 0006 0d52 pea 60d52 <_POSIX_Condition_variables_Information><== NOT EXECUTED 46082: 4eb9 0004 880c jsr 4880c <_Objects_Free> <== NOT EXECUTED &_POSIX_Condition_variables_Information, &the_cond->Object ); _POSIX_Condition_variables_Free( the_cond ); _Thread_Enable_dispatch(); 46088: 4e93 jsr %a3@ <== NOT EXECUTED return 0; 4608a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4608e: 4280 clrl %d0 <== NOT EXECUTED 46090: 6002 bras 46094 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 46092: 7016 moveq #22,%d0 <== NOT EXECUTED } 46094: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 46098: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED 4609c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000460f4 : int pthread_cond_init( pthread_cond_t *cond, const pthread_condattr_t *attr ) { 460f4: 4e56 fff4 linkw %fp,#-12 460f8: 48d7 1c00 moveml %a2-%a4,%sp@ 460fc: 246e 000c moveal %fp@(12),%a2 POSIX_Condition_variables_Control *the_cond; const pthread_condattr_t *the_attr; if ( attr ) the_attr = attr; 46100: 4a8a tstl %a2 46102: 6606 bnes 4610a <== NEVER TAKEN else the_attr = &_POSIX_Condition_variables_Default_attributes; 46104: 45f9 0005 e14e lea 5e14e <_POSIX_Condition_variables_Default_attributes>,%a2 /* * Be careful about attributes when global!!! */ if ( the_attr->process_shared == PTHREAD_PROCESS_SHARED ) 4610a: 7001 moveq #1,%d0 4610c: b0aa 0004 cmpl %a2@(4),%d0 46110: 6778 beqs 4618a <== NEVER TAKEN return EINVAL; if ( !the_attr->is_initialized ) 46112: 4a92 tstl %a2@ 46114: 6774 beqs 4618a <== NEVER TAKEN rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 46116: 2039 0006 09a8 movel 609a8 <_Thread_Dispatch_disable_level>,%d0 4611c: 5280 addql #1,%d0 4611e: 23c0 0006 09a8 movel %d0,609a8 <_Thread_Dispatch_disable_level> RTEMS_INLINE_ROUTINE POSIX_Condition_variables_Control *_POSIX_Condition_variables_Allocate( void ) { return (POSIX_Condition_variables_Control *) _Objects_Allocate( &_POSIX_Condition_variables_Information ); 46124: 4879 0006 0d52 pea 60d52 <_POSIX_Condition_variables_Information> 4612a: 49f9 0004 93d6 lea 493d6 <_Thread_Enable_dispatch>,%a4 46130: 4eb9 0004 8518 jsr 48518 <_Objects_Allocate> _Thread_Disable_dispatch(); the_cond = _POSIX_Condition_variables_Allocate(); if ( !the_cond ) { 46136: 588f addql #4,%sp 46138: 2640 moveal %d0,%a3 4613a: 4a80 tstl %d0 4613c: 6606 bnes 46144 <== ALWAYS TAKEN _Thread_Enable_dispatch(); 4613e: 4e94 jsr %a4@ <== NOT EXECUTED return ENOMEM; 46140: 700c moveq #12,%d0 <== NOT EXECUTED 46142: 6048 bras 4618c <== NOT EXECUTED } the_cond->process_shared = the_attr->process_shared; 46144: 276a 0004 0010 movel %a2@(4),%a3@(16) the_cond->Mutex = POSIX_CONDITION_VARIABLES_NO_MUTEX; 4614a: 42ab 0014 clrl %a3@(20) _Thread_queue_Initialize( 4614e: 4878 0074 pea 74 46152: 2f3c 1000 0800 movel #268437504,%sp@- 46158: 42a7 clrl %sp@- 4615a: 486b 0018 pea %a3@(24) 4615e: 4eb9 0004 9adc jsr 49adc <_Thread_queue_Initialize> uint32_t name ) { _Objects_Set_local_object( information, _Objects_Get_index( the_object->id ), 46164: 202b 0008 movel %a3@(8),%d0 Objects_Information *information, Objects_Control *the_object, uint32_t name ) { _Objects_Set_local_object( 46168: 4281 clrl %d1 #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4616a: 2079 0006 0d6a moveal 60d6a <_POSIX_Condition_variables_Information+0x18>,%a0 Objects_Information *information, Objects_Control *the_object, uint32_t name ) { _Objects_Set_local_object( 46170: 3200 movew %d0,%d1 #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 46172: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4) &_POSIX_Condition_variables_Information, &the_cond->Object, 0 ); *cond = the_cond->Object.id; 46176: 206e 0008 moveal %fp@(8),%a0 _Objects_Get_index( the_object->id ), the_object ); /* ASSERT: information->is_string == false */ the_object->name.name_u32 = name; 4617a: 42ab 000c clrl %a3@(12) 4617e: 2080 movel %d0,%a0@ _Thread_Enable_dispatch(); 46180: 4e94 jsr %a4@ return 0; 46182: 4fef 0010 lea %sp@(16),%sp 46186: 4280 clrl %d0 46188: 6002 bras 4618c */ if ( the_attr->process_shared == PTHREAD_PROCESS_SHARED ) return EINVAL; if ( !the_attr->is_initialized ) return EINVAL; 4618a: 7016 moveq #22,%d0 <== NOT EXECUTED *cond = the_cond->Object.id; _Thread_Enable_dispatch(); return 0; } 4618c: 4cee 1c00 fff4 moveml %fp@(-12),%a2-%a4 46192: 4e5e unlk %fp ... =============================================================================== 00046198 : */ int pthread_cond_signal( pthread_cond_t *cond ) { 46198: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _POSIX_Condition_variables_Signal_support( cond, false ); 4619c: 42a7 clrl %sp@- <== NOT EXECUTED 4619e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 461a2: 4eb9 0004 61ac jsr 461ac <_POSIX_Condition_variables_Signal_support><== NOT EXECUTED } 461a8: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004620c : int pthread_cond_timedwait( pthread_cond_t *cond, pthread_mutex_t *mutex, const struct timespec *abstime ) { 4620c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED * is valid or not. If it isn't correct and in the future, * then we do a polling operation and convert the UNSATISFIED * status into the appropriate error. */ already_timedout = false; status = _POSIX_Absolute_timeout_to_ticks(abstime, &ticks); 46210: 486e fffc pea %fp@(-4) <== NOT EXECUTED 46214: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 46218: 4eb9 0004 6670 jsr 46670 <_POSIX_Absolute_timeout_to_ticks><== NOT EXECUTED if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID ) 4621e: 508f addql #8,%sp <== NOT EXECUTED 46220: 4a80 tstl %d0 <== NOT EXECUTED 46222: 6726 beqs 4624a <== NOT EXECUTED if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST || status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW ) already_timedout = true; return _POSIX_Condition_variables_Wait_support( 46224: 7201 moveq #1,%d1 <== NOT EXECUTED already_timedout = false; status = _POSIX_Absolute_timeout_to_ticks(abstime, &ticks); if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID ) return EINVAL; if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST || 46226: 5380 subql #1,%d0 <== NOT EXECUTED status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW ) already_timedout = true; return _POSIX_Condition_variables_Wait_support( 46228: b280 cmpl %d0,%d1 <== NOT EXECUTED 4622a: 54c0 scc %d0 <== NOT EXECUTED 4622c: 49c0 extbl %d0 <== NOT EXECUTED 4622e: 4480 negl %d0 <== NOT EXECUTED 46230: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46232: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 46236: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4623a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4623e: 4eb9 0004 626c jsr 4626c <_POSIX_Condition_variables_Wait_support><== NOT EXECUTED 46244: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 46248: 6002 bras 4624c <== NOT EXECUTED * status into the appropriate error. */ already_timedout = false; status = _POSIX_Absolute_timeout_to_ticks(abstime, &ticks); if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID ) return EINVAL; 4624a: 7016 moveq #22,%d0 <== NOT EXECUTED cond, mutex, ticks, already_timedout ); } 4624c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046250 : int pthread_cond_wait( pthread_cond_t *cond, pthread_mutex_t *mutex ) { 46250: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _POSIX_Condition_variables_Wait_support( 46254: 42a7 clrl %sp@- <== NOT EXECUTED 46256: 42a7 clrl %sp@- <== NOT EXECUTED 46258: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4625c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 46260: 4eb9 0004 626c jsr 4626c <_POSIX_Condition_variables_Wait_support><== NOT EXECUTED cond, mutex, THREAD_QUEUE_WAIT_FOREVER, false ); } 46266: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00045f90 : */ int pthread_condattr_destroy( pthread_condattr_t *attr ) { 45f90: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45f94: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !attr || attr->is_initialized == false ) 45f98: 4a88 tstl %a0 <== NOT EXECUTED 45f9a: 670a beqs 45fa6 <== NOT EXECUTED 45f9c: 4a90 tstl %a0@ <== NOT EXECUTED 45f9e: 6706 beqs 45fa6 <== NOT EXECUTED return EINVAL; attr->is_initialized = false; 45fa0: 4290 clrl %a0@ <== NOT EXECUTED return 0; 45fa2: 4280 clrl %d0 <== NOT EXECUTED 45fa4: 6002 bras 45fa8 <== NOT EXECUTED int pthread_condattr_destroy( pthread_condattr_t *attr ) { if ( !attr || attr->is_initialized == false ) return EINVAL; 45fa6: 7016 moveq #22,%d0 <== NOT EXECUTED attr->is_initialized = false; return 0; } 45fa8: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045fac : int pthread_condattr_getpshared( const pthread_condattr_t *attr, int *pshared ) { 45fac: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45fb0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !attr ) 45fb4: 4a88 tstl %a0 <== NOT EXECUTED 45fb6: 670c beqs 45fc4 <== NOT EXECUTED return EINVAL; *pshared = attr->process_shared; 45fb8: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED return 0; 45fbc: 4280 clrl %d0 <== NOT EXECUTED ) { if ( !attr ) return EINVAL; *pshared = attr->process_shared; 45fbe: 22a8 0004 movel %a0@(4),%a1@ <== NOT EXECUTED return 0; 45fc2: 6002 bras 45fc6 <== NOT EXECUTED const pthread_condattr_t *attr, int *pshared ) { if ( !attr ) return EINVAL; 45fc4: 7016 moveq #22,%d0 <== NOT EXECUTED *pshared = attr->process_shared; return 0; } 45fc6: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00045fcc : */ int pthread_condattr_init( pthread_condattr_t *attr ) { 45fcc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45fd0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !attr ) 45fd4: 4a88 tstl %a0 <== NOT EXECUTED 45fd6: 6716 beqs 45fee <== NOT EXECUTED return EINVAL; *attr = _POSIX_Condition_variables_Default_attributes; 45fd8: 2039 0005 e14e movel 5e14e <_POSIX_Condition_variables_Default_attributes>,%d0<== NOT EXECUTED 45fde: 2239 0005 e152 movel 5e152 <_POSIX_Condition_variables_Default_attributes+0x4>,%d1<== NOT EXECUTED 45fe4: 2080 movel %d0,%a0@ <== NOT EXECUTED 45fe6: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED return 0; 45fea: 4280 clrl %d0 <== NOT EXECUTED 45fec: 6002 bras 45ff0 <== NOT EXECUTED int pthread_condattr_init( pthread_condattr_t *attr ) { if ( !attr ) return EINVAL; 45fee: 7016 moveq #22,%d0 <== NOT EXECUTED *attr = _POSIX_Condition_variables_Default_attributes; return 0; } 45ff0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045ff4 : int pthread_condattr_setpshared( pthread_condattr_t *attr, int pshared ) { 45ff4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45ff8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 45ffc: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED if ( !attr ) 46000: 4a88 tstl %a0 <== NOT EXECUTED 46002: 670e beqs 46012 <== NOT EXECUTED return EINVAL; switch ( pshared ) { 46004: 7201 moveq #1,%d1 <== NOT EXECUTED 46006: b280 cmpl %d0,%d1 <== NOT EXECUTED 46008: 6508 bcss 46012 <== NOT EXECUTED case PTHREAD_PROCESS_SHARED: case PTHREAD_PROCESS_PRIVATE: attr->process_shared = pshared; 4600a: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED return 0; 4600e: 4280 clrl %d0 <== NOT EXECUTED 46010: 6002 bras 46014 <== NOT EXECUTED default: return EINVAL; 46012: 7016 moveq #22,%d0 <== NOT EXECUTED } } 46014: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045700 : pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)( void * ), void *arg ) { 45700: 4e56 ffbc linkw %fp,#-68 45704: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@ 45708: 246e 000c moveal %fp@(12),%a2 4570c: 282e 0010 movel %fp@(16),%d4 int schedpolicy = SCHED_RR; struct sched_param schedparam; Objects_Name name; int rc; if ( !start_routine ) 45710: 6700 01e4 beqw 458f6 return EFAULT; the_attr = (attr) ? attr : &_POSIX_Threads_Default_attributes; 45714: 4a8a tstl %a2 45716: 6606 bnes 4571e <== ALWAYS TAKEN 45718: 45f9 0005 cc8e lea 5cc8e <_POSIX_Threads_Default_attributes>,%a2<== NOT EXECUTED if ( !the_attr->is_initialized ) 4571e: 4a92 tstl %a2@ 45720: 6700 01d8 beqw 458fa * 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) ) 45724: 4aaa 0004 tstl %a2@(4) 45728: 670e beqs 45738 <== ALWAYS TAKEN 4572a: 2039 0005 dbf2 movel 5dbf2 ,%d0 <== NOT EXECUTED 45730: b0aa 0008 cmpl %a2@(8),%d0 <== NOT EXECUTED 45734: 6200 01c4 bhiw 458fa <== NOT EXECUTED * If inheritsched is set to PTHREAD_INHERIT_SCHED, then this thread * inherits scheduling attributes from the creating thread. If it is * PTHREAD_EXPLICIT_SCHED, then scheduling parameters come from the * attributes structure. */ switch ( the_attr->inheritsched ) { 45738: 202a 0010 movel %a2@(16),%d0 4573c: 7201 moveq #1,%d1 4573e: b280 cmpl %d0,%d1 45740: 670c beqs 4574e <== NEVER TAKEN 45742: 123c 0002 moveb #2,%d1 45746: b280 cmpl %d0,%d1 45748: 6600 01b0 bnew 458fa 4574c: 6018 bras 45766 case PTHREAD_INHERIT_SCHED: api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; 4574e: 2079 0005 f942 moveal 5f942 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 45754: 2068 0102 moveal %a0@(258),%a0 <== NOT EXECUTED schedpolicy = api->schedpolicy; 45758: 2628 0084 movel %a0@(132),%d3 <== NOT EXECUTED schedparam = api->schedparam; 4575c: 4878 001c pea 1c <== NOT EXECUTED 45760: 4868 0088 pea %a0@(136) <== NOT EXECUTED 45764: 600c bras 45772 <== NOT EXECUTED break; case PTHREAD_EXPLICIT_SCHED: schedpolicy = the_attr->schedpolicy; 45766: 262a 0014 movel %a2@(20),%d3 schedparam = the_attr->schedparam; 4576a: 4878 001c pea 1c 4576e: 486a 0018 pea %a2@(24) 45772: 486e ffdc pea %fp@(-36) /* * Check the contentionscope since rtems only supports PROCESS wide * contention (i.e. no system wide contention). */ if ( the_attr->contentionscope != PTHREAD_SCOPE_PROCESS ) return ENOTSUP; 45776: 243c 0000 0086 movel #134,%d2 schedparam = api->schedparam; break; case PTHREAD_EXPLICIT_SCHED: schedpolicy = the_attr->schedpolicy; schedparam = the_attr->schedparam; 4577c: 4eb9 0004 ddbc jsr 4ddbc break; 45782: 4fef 000c lea %sp@(12),%sp /* * Check the contentionscope since rtems only supports PROCESS wide * contention (i.e. no system wide contention). */ if ( the_attr->contentionscope != PTHREAD_SCOPE_PROCESS ) 45786: 4aaa 000c tstl %a2@(12) 4578a: 6600 0170 bnew 458fc return ENOTSUP; /* * Interpret the scheduling parameters. */ if ( !_POSIX_Priority_Is_valid( schedparam.sched_priority ) ) 4578e: 2f2e ffdc movel %fp@(-36),%sp@- 45792: 4eb9 0004 b26c jsr 4b26c <_POSIX_Priority_Is_valid> 45798: 588f addql #4,%sp 4579a: 4a00 tstb %d0 4579c: 6700 015c beqw 458fa core_priority = _POSIX_Priority_To_core( schedparam.sched_priority ); /* * Set the core scheduling policy information. */ rc = _POSIX_Thread_Translate_sched_param( 457a0: 486e fff8 pea %fp@(-8) 457a4: 486e fffc pea %fp@(-4) 457a8: 486e ffdc pea %fp@(-36) * Interpret the scheduling parameters. */ if ( !_POSIX_Priority_Is_valid( schedparam.sched_priority ) ) return EINVAL; core_priority = _POSIX_Priority_To_core( schedparam.sched_priority ); 457ac: 266e ffdc moveal %fp@(-36),%a3 /* * Set the core scheduling policy information. */ rc = _POSIX_Thread_Translate_sched_param( 457b0: 2f03 movel %d3,%sp@- RTEMS_INLINE_ROUTINE Priority_Control _POSIX_Priority_To_core( int priority ) { return (Priority_Control) (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1); 457b2: 1a39 0005 dbf6 moveb 5dbf6 ,%d5 457b8: 4eb9 0004 b290 jsr 4b290 <_POSIX_Thread_Translate_sched_param> schedpolicy, &schedparam, &budget_algorithm, &budget_callout ); if ( rc ) 457be: 4fef 0010 lea %sp@(16),%sp core_priority = _POSIX_Priority_To_core( schedparam.sched_priority ); /* * Set the core scheduling policy information. */ rc = _POSIX_Thread_Translate_sched_param( 457c2: 2400 movel %d0,%d2 schedpolicy, &schedparam, &budget_algorithm, &budget_callout ); if ( rc ) 457c4: 6600 0136 bnew 458fc #endif /* * Lock the allocator mutex for protection */ _RTEMS_Lock_allocator(); 457c8: 2f39 0005 f578 movel 5f578 <_RTEMS_Allocator_Mutex>,%sp@- 457ce: 4eb9 0004 6e40 jsr 46e40 <_API_Mutex_Lock> * _POSIX_Threads_Allocate */ RTEMS_INLINE_ROUTINE Thread_Control *_POSIX_Threads_Allocate( void ) { return (Thread_Control *) _Objects_Allocate( &_POSIX_Threads_Information ); 457d4: 4879 0005 f67a pea 5f67a <_POSIX_Threads_Information> 457da: 4eb9 0004 7788 jsr 47788 <_Objects_Allocate> * Allocate the thread control block. * * NOTE: Global threads are not currently supported. */ the_thread = _POSIX_Threads_Allocate(); if ( !the_thread ) { 457e0: 508f addql #8,%sp 457e2: 2840 moveal %d0,%a4 457e4: 4a80 tstl %d0 457e6: 6616 bnes 457fe <== ALWAYS TAKEN _RTEMS_Unlock_allocator(); 457e8: 2f39 0005 f578 movel 5f578 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED return EAGAIN; 457ee: 143c 000b moveb #11,%d2 <== NOT EXECUTED * * NOTE: Global threads are not currently supported. */ the_thread = _POSIX_Threads_Allocate(); if ( !the_thread ) { _RTEMS_Unlock_allocator(); 457f2: 4eb9 0004 6ea0 jsr 46ea0 <_API_Mutex_Unlock> <== NOT EXECUTED return EAGAIN; 457f8: 588f addql #4,%sp <== NOT EXECUTED 457fa: 6000 0100 braw 458fc <== NOT EXECUTED static inline size_t _POSIX_Threads_Ensure_minimum_stack ( size_t size ) { if ( size >= PTHREAD_MINIMUM_STACK_SIZE ) 457fe: 2039 0005 dbf2 movel 5dbf2 ,%d0 45804: d080 addl %d0,%d0 /* * Initialize the core thread for this task. */ name.name_p = NULL; /* posix threads don't have a name by default */ status = _Thread_Initialize( 45806: 226e fff8 moveal %fp@(-8),%a1 4580a: 206e fffc moveal %fp@(-4),%a0 4580e: 222a 0008 movel %a2@(8),%d1 45812: b280 cmpl %d0,%d1 45814: 6302 blss 45818 45816: 2001 movel %d1,%d0 45818: 42a7 clrl %sp@- 4581a: 0285 0000 00ff andil #255,%d5 45820: 42a7 clrl %sp@- 45822: 9a8b subl %a3,%d5 45824: 2f09 movel %a1,%sp@- 45826: 2f08 movel %a0,%sp@- 45828: 4878 0001 pea 1 4582c: 2f05 movel %d5,%sp@- 4582e: 4878 0001 pea 1 45832: 2f00 movel %d0,%sp@- 45834: 2f2a 0004 movel %a2@(4),%sp@- 45838: 2f0c movel %a4,%sp@- 4583a: 4879 0005 f67a pea 5f67a <_POSIX_Threads_Information> 45840: 4eb9 0004 86f4 jsr 486f4 <_Thread_Initialize> budget_callout, 0, /* isr level */ name /* posix threads don't have a name */ ); if ( !status ) { 45846: 4fef 002c lea %sp@(44),%sp 4584a: 4a00 tstb %d0 4584c: 6624 bnes 45872 RTEMS_INLINE_ROUTINE void _POSIX_Threads_Free ( Thread_Control *the_pthread ) { _Objects_Free( &_POSIX_Threads_Information, &the_pthread->Object ); 4584e: 2f0c movel %a4,%sp@- 45850: 4879 0005 f67a pea 5f67a <_POSIX_Threads_Information> _POSIX_Threads_Free( the_thread ); _RTEMS_Unlock_allocator(); return EAGAIN; 45856: 740b moveq #11,%d2 45858: 4eb9 0004 7a7c jsr 47a7c <_Objects_Free> name /* posix threads don't have a name */ ); if ( !status ) { _POSIX_Threads_Free( the_thread ); _RTEMS_Unlock_allocator(); 4585e: 2f39 0005 f578 movel 5f578 <_RTEMS_Allocator_Mutex>,%sp@- 45864: 4eb9 0004 6ea0 jsr 46ea0 <_API_Mutex_Unlock> return EAGAIN; 4586a: 4fef 000c lea %sp@(12),%sp 4586e: 6000 008c braw 458fc } /* * finish initializing the per API structure */ api = the_thread->API_Extensions[ THREAD_API_POSIX ]; 45872: 266c 0102 moveal %a4@(258),%a3 api->Attributes = *the_attr; 45876: 4878 0040 pea 40 4587a: 4bf9 0004 ddbc lea 4ddbc ,%a5 45880: 2f0a movel %a2,%sp@- 45882: 2f0b movel %a3,%sp@- 45884: 4e95 jsr %a5@ api->detachstate = the_attr->detachstate; 45886: 276a 003c 0040 movel %a2@(60),%a3@(64) api->schedpolicy = schedpolicy; 4588c: 2743 0084 movel %d3,%a3@(132) api->schedparam = schedparam; 45890: 4878 001c pea 1c 45894: 486e ffdc pea %fp@(-36) 45898: 486b 0088 pea %a3@(136) 4589c: 4e95 jsr %a5@ /* * POSIX threads are allocated and started in one operation. */ status = _Thread_Start( 4589e: 42a7 clrl %sp@- 458a0: 2f2e 0014 movel %fp@(20),%sp@- 458a4: 2f04 movel %d4,%sp@- 458a6: 4878 0001 pea 1 458aa: 2f0c movel %a4,%sp@- 458ac: 4eb9 0004 8fbc jsr 48fbc <_Thread_Start> _RTEMS_Unlock_allocator(); return EINVAL; } #endif if ( schedpolicy == SCHED_SPORADIC ) { 458b2: 4fef 002c lea %sp@(44),%sp 458b6: 7004 moveq #4,%d0 458b8: b083 cmpl %d3,%d0 458ba: 6622 bnes 458de <== ALWAYS TAKEN _Watchdog_Insert_ticks( 458bc: 486b 0090 pea %a3@(144) <== NOT EXECUTED 458c0: 4eb9 0004 918c jsr 4918c <_Timespec_To_ticks> <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 458c6: 2740 00b4 movel %d0,%a3@(180) <== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 458ca: 486b 00a8 pea %a3@(168) <== NOT EXECUTED 458ce: 4879 0005 f598 pea 5f598 <_Watchdog_Ticks_chain> <== NOT EXECUTED 458d4: 4eb9 0004 9490 jsr 49490 <_Watchdog_Insert> <== NOT EXECUTED 458da: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED } /* * Return the id and indicate we successfully created the thread */ *thread = the_thread->Object.id; 458de: 206e 0008 moveal %fp@(8),%a0 458e2: 20ac 0008 movel %a4@(8),%a0@ _RTEMS_Unlock_allocator(); 458e6: 2f39 0005 f578 movel 5f578 <_RTEMS_Allocator_Mutex>,%sp@- 458ec: 4eb9 0004 6ea0 jsr 46ea0 <_API_Mutex_Unlock> return 0; 458f2: 588f addql #4,%sp 458f4: 6006 bras 458fc struct sched_param schedparam; Objects_Name name; int rc; if ( !start_routine ) return EFAULT; 458f6: 740e moveq #14,%d2 458f8: 6002 bras 458fc /* * Interpret the scheduling parameters. */ if ( !_POSIX_Priority_Is_valid( schedparam.sched_priority ) ) return EINVAL; 458fa: 7416 moveq #22,%d2 <== NOT EXECUTED */ *thread = the_thread->Object.id; _RTEMS_Unlock_allocator(); return 0; } 458fc: 2002 movel %d2,%d0 458fe: 4cee 3c3c ffbc moveml %fp@(-68),%d2-%d5/%a2-%a5 45904: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004579c : #include int pthread_detach( pthread_t thread ) { 4579c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED pthread_t id, Objects_Locations *location ) { return (Thread_Control *) _Objects_Get( &_POSIX_Threads_Information, (Objects_Id)id, location ); 457a0: 486e fffc pea %fp@(-4) <== NOT EXECUTED 457a4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 457a8: 4879 0006 029a pea 6029a <_POSIX_Threads_Information> <== NOT EXECUTED 457ae: 4eb9 0004 7908 jsr 47908 <_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 ) { 457b4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 457b8: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 457bc: 6614 bnes 457d2 <== NOT EXECUTED case OBJECTS_LOCAL: api = the_thread->API_Extensions[ THREAD_API_POSIX ]; api->detachstate = PTHREAD_CREATE_DETACHED; 457be: 2240 moveal %d0,%a1 <== NOT EXECUTED 457c0: 2069 0102 moveal %a1@(258),%a0 <== NOT EXECUTED 457c4: 42a8 0040 clrl %a0@(64) <== NOT EXECUTED _Thread_Enable_dispatch(); 457c8: 4eb9 0004 836e jsr 4836e <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 457ce: 4280 clrl %d0 <== NOT EXECUTED 457d0: 6002 bras 457d4 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return ESRCH; 457d2: 7003 moveq #3,%d0 <== NOT EXECUTED } 457d4: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045908 : int pthread_equal( pthread_t t1, pthread_t t2 ) { 45908: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED * can to insure that both ids are valid. Otherwise, we will do the * cheapest possible thing to determine if they are equal. */ #ifndef RTEMS_DEBUG return _Objects_Are_ids_equal( t1, t2 ); 4590c: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED 45910: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED 45914: 57c0 seq %d0 <== NOT EXECUTED break; } return status; #endif } 45916: 4e5e unlk %fp <== NOT EXECUTED * can to insure that both ids are valid. Otherwise, we will do the * cheapest possible thing to determine if they are equal. */ #ifndef RTEMS_DEBUG return _Objects_Are_ids_equal( t1, t2 ); 45918: 49c0 extbl %d0 <== NOT EXECUTED break; } return status; #endif } 4591a: 4480 negl %d0 <== NOT EXECUTED ... =============================================================================== 0004c4b0 : } void pthread_exit( void *value_ptr ) { 4c4b0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED _POSIX_Thread_Exit( _Thread_Executing, value_ptr ); 4c4b4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4c4b8: 2f39 0005 e902 movel 5e902 <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED 4c4be: 4eb9 0004 c440 jsr 4c440 <_POSIX_Thread_Exit> <== NOT EXECUTED 4c4c4: 508f addql #8,%sp <== NOT EXECUTED } 4c4c6: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000454a4 : int pthread_getcpuclockid( pthread_t pid, clockid_t *clock_id ) { 454a4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 454a8: 4eb9 0004 d19c jsr 4d19c <__errno> <== NOT EXECUTED } 454ae: 4e5e unlk %fp <== NOT EXECUTED int pthread_getcpuclockid( pthread_t pid, clockid_t *clock_id ) { rtems_set_errno_and_return_minus_one( ENOSYS ); 454b0: 2040 moveal %d0,%a0 <== NOT EXECUTED 454b2: 7058 moveq #88,%d0 <== NOT EXECUTED 454b4: 2080 movel %d0,%a0@ <== NOT EXECUTED } 454b6: 70ff moveq #-1,%d0 <== NOT EXECUTED ... =============================================================================== 00047780 : int pthread_getschedparam( pthread_t thread, int *policy, struct sched_param *param ) { 47780: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 47784: 48d7 1c00 moveml %a2-%a4,%sp@ <== NOT EXECUTED 47788: 286e 000c moveal %fp@(12),%a4 <== NOT EXECUTED 4778c: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED Objects_Locations location; POSIX_API_Control *api; register Thread_Control *the_thread; if ( !policy || !param ) 47790: 4a8c tstl %a4 <== NOT EXECUTED 47792: 6758 beqs 477ec <== NOT EXECUTED 47794: 4a8a tstl %a2 <== NOT EXECUTED 47796: 6754 beqs 477ec <== NOT EXECUTED pthread_t id, Objects_Locations *location ) { return (Thread_Control *) _Objects_Get( &_POSIX_Threads_Information, (Objects_Id)id, location ); 47798: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4779c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 477a0: 4879 0006 31ba pea 631ba <_POSIX_Threads_Information> <== NOT EXECUTED 477a6: 4eb9 0004 9944 jsr 49944 <_Objects_Get> <== NOT EXECUTED return EINVAL; the_thread = _POSIX_Threads_Get( thread, &location ); switch ( location ) { 477ac: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 477b0: 2640 moveal %d0,%a3 <== NOT EXECUTED 477b2: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 477b6: 6638 bnes 477f0 <== NOT EXECUTED case OBJECTS_LOCAL: api = the_thread->API_Extensions[ THREAD_API_POSIX ]; 477b8: 206b 0102 moveal %a3@(258),%a0 <== NOT EXECUTED if ( policy ) *policy = api->schedpolicy; 477bc: 28a8 0084 movel %a0@(132),%a4@ <== NOT EXECUTED if ( param ) { *param = api->schedparam; 477c0: 4878 001c pea 1c <== NOT EXECUTED 477c4: 4868 0088 pea %a0@(136) <== NOT EXECUTED 477c8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 477ca: 4eb9 0004 fcc4 jsr 4fcc4 <== NOT EXECUTED RTEMS_INLINE_ROUTINE int _POSIX_Priority_From_core( Priority_Control priority ) { return (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1); 477d0: 4280 clrl %d0 <== NOT EXECUTED 477d2: 1039 0006 16d6 moveb 616d6 ,%d0 <== NOT EXECUTED 477d8: 90ab 0014 subl %a3@(20),%d0 <== NOT EXECUTED 477dc: 2480 movel %d0,%a2@ <== NOT EXECUTED param->sched_priority = _POSIX_Priority_From_core( the_thread->current_priority ); } _Thread_Enable_dispatch(); 477de: 4eb9 0004 a3aa jsr 4a3aa <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 477e4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 477e8: 4280 clrl %d0 <== NOT EXECUTED 477ea: 6006 bras 477f2 <== NOT EXECUTED Objects_Locations location; POSIX_API_Control *api; register Thread_Control *the_thread; if ( !policy || !param ) return EINVAL; 477ec: 7016 moveq #22,%d0 <== NOT EXECUTED 477ee: 6002 bras 477f2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return ESRCH; 477f0: 7003 moveq #3,%d0 <== NOT EXECUTED } 477f2: 4cee 1c00 fff0 moveml %fp@(-16),%a2-%a4 <== NOT EXECUTED 477f8: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000456f4 : */ void *pthread_getspecific( pthread_key_t key ) { 456f4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 456f8: 2f03 movel %d3,%sp@- <== NOT EXECUTED 456fa: 2f02 movel %d2,%sp@- <== NOT EXECUTED pthread_key_t id, Objects_Locations *location ) { return (POSIX_Keys_Control *) _Objects_Get( &_POSIX_Keys_Information, (Objects_Id) id, location ); 456fc: 486e fffc pea %fp@(-4) <== NOT EXECUTED 45700: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 45704: 4879 0006 0518 pea 60518 <_POSIX_Keys_Information> <== NOT EXECUTED 4570a: 4eb9 0004 7a60 jsr 47a60 <_Objects_Get> <== NOT EXECUTED uint32_t index; Objects_Locations location; void *key_data; the_key = _POSIX_Keys_Get( key, &location ); switch ( location ) { 45710: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 45714: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 45718: 662e bnes 45748 <== NOT EXECUTED case OBJECTS_LOCAL: api = _Objects_Get_API( _Thread_Executing->Object.id ); 4571a: 2079 0006 0632 moveal 60632 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE Objects_APIs _Objects_Get_API( Objects_Id id ) { return (Objects_APIs) ((id >> OBJECTS_API_START_BIT) & OBJECTS_API_VALID_BITS); 45720: 7618 moveq #24,%d3 <== NOT EXECUTED index = _Objects_Get_index( _Thread_Executing->Object.id ); key_data = (void *) the_key->Values[ api ][ index ]; 45722: 2240 moveal %d0,%a1 <== NOT EXECUTED the_key = _POSIX_Keys_Get( key, &location ); switch ( location ) { case OBJECTS_LOCAL: api = _Objects_Get_API( _Thread_Executing->Object.id ); 45724: 2428 0008 movel %a0@(8),%d2 <== NOT EXECUTED 45728: 2202 movel %d2,%d1 <== NOT EXECUTED 4572a: e6a9 lsrl %d3,%d1 <== NOT EXECUTED 4572c: 163c 0007 moveb #7,%d3 <== NOT EXECUTED 45730: c283 andl %d3,%d1 <== NOT EXECUTED index = _Objects_Get_index( _Thread_Executing->Object.id ); 45732: 0282 0000 ffff andil #65535,%d2 <== NOT EXECUTED key_data = (void *) the_key->Values[ api ][ index ]; 45738: 2071 1c14 moveal %a1@(00000014,%d1:l:4),%a0 <== NOT EXECUTED 4573c: 2430 2c00 movel %a0@(00000000,%d2:l:4),%d2 <== NOT EXECUTED _Thread_Enable_dispatch(); 45740: 4eb9 0004 84c6 jsr 484c6 <_Thread_Enable_dispatch> <== NOT EXECUTED return key_data; 45746: 6002 bras 4574a <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return NULL; 45748: 4282 clrl %d2 <== NOT EXECUTED } 4574a: 2002 movel %d2,%d0 <== NOT EXECUTED 4574c: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 45750: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 45754: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004a7d8 : int pthread_join( pthread_t thread, void **value_ptr ) { 4a7d8: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 4a7dc: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4a7de: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a7e0: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4a7e4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4a7e8: 4879 0006 7086 pea 67086 <_POSIX_Threads_Information> <== NOT EXECUTED 4a7ee: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 4a7f2: 4eb9 0004 c954 jsr 4c954 <_Objects_Get> <== NOT EXECUTED POSIX_API_Control *api; Objects_Locations location; void *return_pointer; the_thread = _POSIX_Threads_Get( thread, &location ); switch ( location ) { 4a7f8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4a7fc: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4a800: 665c bnes 4a85e <== NOT EXECUTED case OBJECTS_LOCAL: api = the_thread->API_Extensions[ THREAD_API_POSIX ]; 4a802: 2240 moveal %d0,%a1 <== NOT EXECUTED 4a804: 2069 0102 moveal %a1@(258),%a0 <== NOT EXECUTED if ( api->detachstate == PTHREAD_CREATE_DETACHED ) { 4a808: 4aa8 0040 tstl %a0@(64) <== NOT EXECUTED 4a80c: 660a bnes 4a818 <== NOT EXECUTED _Thread_Enable_dispatch(); 4a80e: 4eb9 0004 d3ba jsr 4d3ba <_Thread_Enable_dispatch> <== NOT EXECUTED return EINVAL; 4a814: 7016 moveq #22,%d0 <== NOT EXECUTED 4a816: 604c bras 4a864 <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Thread_Is_executing ( const Thread_Control *the_thread ) { return ( the_thread == _Thread_Executing ); 4a818: 2279 0006 734e moveal 6734e <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED 4a81e: 47f9 0004 d3ba lea 4d3ba <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED } if ( _Thread_Is_executing( the_thread ) ) { 4a824: b3c0 cmpal %d0,%a1 <== NOT EXECUTED 4a826: 6606 bnes 4a82e <== NOT EXECUTED _Thread_Enable_dispatch(); 4a828: 4e93 jsr %a3@ <== NOT EXECUTED return EDEADLK; 4a82a: 702d moveq #45,%d0 <== NOT EXECUTED 4a82c: 6036 bras 4a864 <== NOT EXECUTED /* * Put ourself on the threads join list */ _Thread_Executing->Wait.return_argument = &return_pointer; 4a82e: 200e movel %fp,%d0 <== NOT EXECUTED 4a830: 5180 subql #8,%d0 <== NOT EXECUTED 4a832: 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; 4a836: 7001 moveq #1,%d0 <== NOT EXECUTED 4a838: 2140 0074 movel %d0,%a0@(116) <== NOT EXECUTED _Thread_queue_Enter_critical_section( &api->Join_List ); _Thread_queue_Enqueue( &api->Join_List, WATCHDOG_NO_TIMEOUT ); 4a83c: 4879 0004 db30 pea 4db30 <_Thread_queue_Timeout> <== NOT EXECUTED 4a842: 42a7 clrl %sp@- <== NOT EXECUTED 4a844: 4868 0044 pea %a0@(68) <== NOT EXECUTED 4a848: 4eb9 0004 d81c jsr 4d81c <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED _Thread_Enable_dispatch(); 4a84e: 4e93 jsr %a3@ <== NOT EXECUTED if ( value_ptr ) 4a850: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4a854: 4a8a tstl %a2 <== NOT EXECUTED 4a856: 670a beqs 4a862 <== NOT EXECUTED *value_ptr = return_pointer; 4a858: 24ae fff8 movel %fp@(-8),%a2@ <== NOT EXECUTED 4a85c: 6004 bras 4a862 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return ESRCH; 4a85e: 7003 moveq #3,%d0 <== NOT EXECUTED 4a860: 6002 bras 4a864 <== NOT EXECUTED _Thread_Enable_dispatch(); if ( value_ptr ) *value_ptr = return_pointer; return 0; 4a862: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return ESRCH; } 4a864: 246e fff0 moveal %fp@(-16),%a2 <== NOT EXECUTED 4a868: 266e fff4 moveal %fp@(-12),%a3 <== NOT EXECUTED 4a86c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045588 : int pthread_key_create( pthread_key_t *key, void (*destructor)( void * ) ) { 45588: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4558c: 2039 0006 01a8 movel 601a8 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 45592: 5280 addql #1,%d0 <== NOT EXECUTED 45594: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ <== NOT EXECUTED 45598: 23c0 0006 01a8 movel %d0,601a8 <_Thread_Dispatch_disable_level><== NOT EXECUTED * the inactive chain of free keys control blocks. */ RTEMS_INLINE_ROUTINE POSIX_Keys_Control *_POSIX_Keys_Allocate( void ) { return (POSIX_Keys_Control *) _Objects_Allocate( &_POSIX_Keys_Information ); 4559e: 4879 0006 0518 pea 60518 <_POSIX_Keys_Information> <== NOT EXECUTED 455a4: 4eb9 0004 7608 jsr 47608 <_Objects_Allocate> <== NOT EXECUTED _Thread_Disable_dispatch(); the_key = _POSIX_Keys_Allocate(); if ( !the_key ) { 455aa: 588f addql #4,%sp <== NOT EXECUTED 455ac: 2440 moveal %d0,%a2 <== NOT EXECUTED 455ae: 4a80 tstl %d0 <== NOT EXECUTED 455b0: 660c bnes 455be <== NOT EXECUTED _Thread_Enable_dispatch(); 455b2: 4eb9 0004 84c6 jsr 484c6 <_Thread_Enable_dispatch> <== NOT EXECUTED return EAGAIN; 455b8: 700b moveq #11,%d0 <== NOT EXECUTED 455ba: 6000 009a braw 45656 <== NOT EXECUTED } the_key->destructor = destructor; 455be: 49f9 0006 0168 lea 60168 <_Objects_Information_table+0x4>,%a4<== NOT EXECUTED int _EXFUN(pthread_once, (pthread_once_t *__once_control, void (*__init_routine)(void))); /* Thread-Specific Data Key Create, P1003.1c/Draft 10, p. 163 */ int _EXFUN(pthread_key_create, 455c4: 47ea 0018 lea %a2@(24),%a3 <== NOT EXECUTED _Thread_Enable_dispatch(); return ENOMEM; } the_key->Values[ the_api ] = table; memset( table, '\0', bytes_to_allocate ); 455c8: 4bf9 0004 de1c lea 4de1c ,%a5 <== NOT EXECUTED if ( !the_key ) { _Thread_Enable_dispatch(); return EAGAIN; } the_key->destructor = destructor; 455ce: 256e 000c 0010 movel %fp@(12),%a2@(16) <== NOT EXECUTED ); #endif bytes_to_allocate = sizeof( void * ) * (_Objects_Information_table[ the_api ][ 1 ]->maximum + 1); table = _Workspace_Allocate( bytes_to_allocate ); 455d4: 263c 0004 95d4 movel #300500,%d3 <== NOT EXECUTED INTERNAL_ERROR_IMPLEMENTATION_KEY_CREATE_INCONSISTENCY ); #endif bytes_to_allocate = sizeof( void * ) * (_Objects_Information_table[ the_api ][ 1 ]->maximum + 1); 455da: 205c moveal %a4@+,%a0 <== NOT EXECUTED 455dc: 4282 clrl %d2 <== NOT EXECUTED 455de: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED 455e2: 3428 000e movew %a0@(14),%d2 <== NOT EXECUTED * APIs are optional. * * NOTE: Currently RTEMS Classic API tasks are always enabled. */ for ( the_api = 1; the_api <= OBJECTS_APIS_LAST; the_api++ ) { the_key->Values[ the_api ] = NULL; 455e6: 4293 clrl %a3@ <== NOT EXECUTED ); #endif bytes_to_allocate = sizeof( void * ) * (_Objects_Information_table[ the_api ][ 1 ]->maximum + 1); table = _Workspace_Allocate( bytes_to_allocate ); 455e8: 2043 moveal %d3,%a0 <== NOT EXECUTED INTERNAL_ERROR_IMPLEMENTATION_KEY_CREATE_INCONSISTENCY ); #endif bytes_to_allocate = sizeof( void * ) * (_Objects_Information_table[ the_api ][ 1 ]->maximum + 1); 455ea: 5282 addql #1,%d2 <== NOT EXECUTED true, INTERNAL_ERROR_IMPLEMENTATION_KEY_CREATE_INCONSISTENCY ); #endif bytes_to_allocate = sizeof( void * ) * 455ec: e58a lsll #2,%d2 <== NOT EXECUTED (_Objects_Information_table[ the_api ][ 1 ]->maximum + 1); table = _Workspace_Allocate( bytes_to_allocate ); 455ee: 2f02 movel %d2,%sp@- <== NOT EXECUTED 455f0: 4e90 jsr %a0@ <== NOT EXECUTED if ( !table ) { 455f2: 588f addql #4,%sp <== NOT EXECUTED 455f4: 4a80 tstl %d0 <== NOT EXECUTED 455f6: 6624 bnes 4561c <== NOT EXECUTED _POSIX_Keys_Free_memory( the_key ); 455f8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 455fa: 4eb9 0004 56c4 jsr 456c4 <_POSIX_Keys_Free_memory> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _POSIX_Keys_Free ( POSIX_Keys_Control *the_key ) { _Objects_Free( &_POSIX_Keys_Information, &the_key->Object ); 45600: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45602: 4879 0006 0518 pea 60518 <_POSIX_Keys_Information> <== NOT EXECUTED 45608: 4eb9 0004 78fc jsr 478fc <_Objects_Free> <== NOT EXECUTED _POSIX_Keys_Free( the_key ); _Thread_Enable_dispatch(); 4560e: 4eb9 0004 84c6 jsr 484c6 <_Thread_Enable_dispatch> <== NOT EXECUTED return ENOMEM; 45614: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 45618: 700c moveq #12,%d0 <== NOT EXECUTED 4561a: 603a bras 45656 <== NOT EXECUTED } the_key->Values[ the_api ] = table; 4561c: 26c0 movel %d0,%a3@+ <== NOT EXECUTED memset( table, '\0', bytes_to_allocate ); 4561e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45620: 42a7 clrl %sp@- <== NOT EXECUTED 45622: 2f00 movel %d0,%sp@- <== NOT EXECUTED 45624: 4e95 jsr %a5@ <== NOT EXECUTED * This is a bit more complex than one might initially expect because * APIs are optional. * * NOTE: Currently RTEMS Classic API tasks are always enabled. */ for ( the_api = 1; the_api <= OBJECTS_APIS_LAST; the_api++ ) { 45626: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4562a: b9fc 0006 0174 cmpal #393588,%a4 <== NOT EXECUTED 45630: 66a8 bnes 455da <== NOT EXECUTED uint32_t name ) { _Objects_Set_local_object( information, _Objects_Get_index( the_object->id ), 45632: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, uint32_t name ) { _Objects_Set_local_object( 45636: 4281 clrl %d1 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 45638: 2079 0006 0530 moveal 60530 <_POSIX_Keys_Information+0x18>,%a0<== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, uint32_t name ) { _Objects_Set_local_object( 4563e: 3200 movew %d0,%d1 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 45640: 218a 1c00 movel %a2,%a0@(00000000,%d1:l:4) <== NOT EXECUTED the_key->Values[ the_api ] = table; memset( table, '\0', bytes_to_allocate ); } _Objects_Open_u32( &_POSIX_Keys_Information, &the_key->Object, 0 ); *key = the_key->Object.id; 45644: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED _Objects_Get_index( the_object->id ), the_object ); /* ASSERT: information->is_string == false */ the_object->name.name_u32 = name; 45648: 42aa 000c clrl %a2@(12) <== NOT EXECUTED 4564c: 2080 movel %d0,%a0@ <== NOT EXECUTED _Thread_Enable_dispatch(); 4564e: 4eb9 0004 84c6 jsr 484c6 <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 45654: 4280 clrl %d0 <== NOT EXECUTED } 45656: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED 4565c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045660 : * 17.1.3 Thread-Specific Data Key Deletion, P1003.1c/Draft 10, p. 167 */ int pthread_key_delete( pthread_key_t key ) { 45660: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 45664: 2f02 movel %d2,%sp@- <== NOT EXECUTED pthread_key_t id, Objects_Locations *location ) { return (POSIX_Keys_Control *) _Objects_Get( &_POSIX_Keys_Information, (Objects_Id) id, location ); 45666: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4566a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4566e: 4879 0006 0518 pea 60518 <_POSIX_Keys_Information> <== NOT EXECUTED 45674: 4eb9 0004 7a60 jsr 47a60 <_Objects_Get> <== NOT EXECUTED POSIX_Keys_Control *the_key; Objects_Locations location; the_key = _POSIX_Keys_Get( key, &location ); switch ( location ) { 4567a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4567e: 2400 movel %d0,%d2 <== NOT EXECUTED 45680: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 45684: 6632 bnes 456b8 <== NOT EXECUTED case OBJECTS_LOCAL: _Objects_Close( &_POSIX_Keys_Information, &the_key->Object ); 45686: 2f00 movel %d0,%sp@- <== NOT EXECUTED 45688: 4879 0006 0518 pea 60518 <_POSIX_Keys_Information> <== NOT EXECUTED 4568e: 4eb9 0004 7684 jsr 47684 <_Objects_Close> <== NOT EXECUTED _POSIX_Keys_Free_memory( the_key ); 45694: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45696: 4eb9 0004 56c4 jsr 456c4 <_POSIX_Keys_Free_memory> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _POSIX_Keys_Free ( POSIX_Keys_Control *the_key ) { _Objects_Free( &_POSIX_Keys_Information, &the_key->Object ); 4569c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4569e: 4879 0006 0518 pea 60518 <_POSIX_Keys_Information> <== NOT EXECUTED 456a4: 4eb9 0004 78fc jsr 478fc <_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(); 456aa: 4eb9 0004 84c6 jsr 484c6 <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 456b0: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 456b4: 4280 clrl %d0 <== NOT EXECUTED 456b6: 6002 bras 456ba <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 456b8: 7016 moveq #22,%d0 <== NOT EXECUTED } 456ba: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 456be: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0005ad34 : int pthread_kill( pthread_t thread, int sig ) { 5ad34: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 5ad38: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 5ad3c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED POSIX_API_Control *api; Thread_Control *the_thread; Objects_Locations location; if ( !sig ) 5ad40: 670a beqs 5ad4c <== NOT EXECUTED static inline bool is_valid_signo( int signo ) { return ((signo) >= 1 && (signo) <= 32 ); 5ad42: 2602 movel %d2,%d3 <== NOT EXECUTED 5ad44: 5383 subql #1,%d3 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); if ( !is_valid_signo(sig) ) 5ad46: 701f moveq #31,%d0 <== NOT EXECUTED 5ad48: b083 cmpl %d3,%d0 <== NOT EXECUTED 5ad4a: 6410 bccs 5ad5c <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 5ad4c: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED 5ad52: 7216 moveq #22,%d1 <== NOT EXECUTED 5ad54: 2040 moveal %d0,%a0 <== NOT EXECUTED 5ad56: 2081 movel %d1,%a0@ <== NOT EXECUTED 5ad58: 6000 0084 braw 5adde <== NOT EXECUTED pthread_t id, Objects_Locations *location ) { return (Thread_Control *) _Objects_Get( &_POSIX_Threads_Information, (Objects_Id)id, location ); 5ad5c: 486e fffc pea %fp@(-4) <== NOT EXECUTED 5ad60: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 5ad64: 4879 0005 e63a pea 5e63a <_POSIX_Threads_Information> <== NOT EXECUTED 5ad6a: 4eb9 0004 6cc0 jsr 46cc0 <_Objects_Get> <== NOT EXECUTED the_thread = _POSIX_Threads_Get( thread, &location ); switch ( location ) { 5ad70: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 5ad74: 2440 moveal %d0,%a2 <== NOT EXECUTED 5ad76: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 5ad7a: 6656 bnes 5add2 <== NOT EXECUTED api = the_thread->API_Extensions[ THREAD_API_POSIX ]; if ( sig ) { if ( _POSIX_signals_Vectors[ sig ].sa_handler == SIG_IGN ) { 5ad7c: 2202 movel %d2,%d1 <== NOT EXECUTED 5ad7e: 2002 movel %d2,%d0 <== NOT EXECUTED 5ad80: e589 lsll #2,%d1 <== NOT EXECUTED 5ad82: e988 lsll #4,%d0 <== NOT EXECUTED case OBJECTS_LOCAL: /* * If sig == 0 then just validate arguments */ api = the_thread->API_Extensions[ THREAD_API_POSIX ]; 5ad84: 206a 0102 moveal %a2@(258),%a0 <== NOT EXECUTED if ( sig ) { if ( _POSIX_signals_Vectors[ sig ].sa_handler == SIG_IGN ) { 5ad88: 9081 subl %d1,%d0 <== NOT EXECUTED 5ad8a: 0680 0005 e93c addil #387388,%d0 <== NOT EXECUTED 5ad90: 7201 moveq #1,%d1 <== NOT EXECUTED 5ad92: 2240 moveal %d0,%a1 <== NOT EXECUTED 5ad94: b291 cmpl %a1@,%d1 <== NOT EXECUTED 5ad96: 6730 beqs 5adc8 <== NOT EXECUTED static inline sigset_t signo_to_mask( uint32_t sig ) { return 1u << (sig - 1); 5ad98: 7001 moveq #1,%d0 <== NOT EXECUTED 5ad9a: e7a8 lsll %d3,%d0 <== NOT EXECUTED return 0; } /* XXX critical section */ api->signals_pending |= signo_to_mask( sig ); 5ad9c: 81a8 00d4 orl %d0,%a0@(212) <== NOT EXECUTED (void) _POSIX_signals_Unblock_thread( the_thread, sig, NULL ); 5ada0: 42a7 clrl %sp@- <== NOT EXECUTED 5ada2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5ada4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5ada6: 4eb9 0005 ac38 jsr 5ac38 <_POSIX_signals_Unblock_thread> <== NOT EXECUTED if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) ) 5adac: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 5adb0: 4ab9 0005 e8fe tstl 5e8fe <_Per_CPU_Information+0x8> <== NOT EXECUTED 5adb6: 6710 beqs 5adc8 <== NOT EXECUTED 5adb8: b5f9 0005 e902 cmpal 5e902 <_Per_CPU_Information+0xc>,%a2 <== NOT EXECUTED 5adbe: 6608 bnes 5adc8 <== NOT EXECUTED _Thread_Dispatch_necessary = true; 5adc0: 7001 moveq #1,%d0 <== NOT EXECUTED 5adc2: 13c0 0005 e90e moveb %d0,5e90e <_Per_CPU_Information+0x18> <== NOT EXECUTED } _Thread_Enable_dispatch(); 5adc8: 4eb9 0004 779a jsr 4779a <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 5adce: 4280 clrl %d0 <== NOT EXECUTED 5add0: 600e bras 5ade0 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( ESRCH ); 5add2: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED 5add8: 2040 moveal %d0,%a0 <== NOT EXECUTED 5adda: 7003 moveq #3,%d0 <== NOT EXECUTED 5addc: 2080 movel %d0,%a0@ <== NOT EXECUTED 5adde: 70ff moveq #-1,%d0 <== NOT EXECUTED } 5ade0: 4cee 040c fff0 moveml %fp@(-16),%d2-%d3/%a2 <== NOT EXECUTED 5ade6: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046fd4 : */ int pthread_mutex_destroy( pthread_mutex_t *mutex ) { 46fd4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 46fd8: 2f0b movel %a3,%sp@- <== NOT EXECUTED 46fda: 2f0a movel %a2,%sp@- <== NOT EXECUTED register POSIX_Mutex_Control *the_mutex; Objects_Locations location; the_mutex = _POSIX_Mutex_Get( mutex, &location ); 46fdc: 486e fffc pea %fp@(-4) <== NOT EXECUTED 46fe0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 46fe4: 4eb9 0004 704c jsr 4704c <_POSIX_Mutex_Get> <== NOT EXECUTED switch ( location ) { 46fea: 508f addql #8,%sp <== NOT EXECUTED ) { register POSIX_Mutex_Control *the_mutex; Objects_Locations location; the_mutex = _POSIX_Mutex_Get( mutex, &location ); 46fec: 2440 moveal %d0,%a2 <== NOT EXECUTED switch ( location ) { 46fee: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 46ff2: 6648 bnes 4703c <== NOT EXECUTED 46ff4: 47f9 0004 a3aa lea 4a3aa <_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 ) ) { 46ffa: 4aaa 0062 tstl %a2@(98) <== NOT EXECUTED 46ffe: 6606 bnes 47006 <== NOT EXECUTED _Thread_Enable_dispatch(); 47000: 4e93 jsr %a3@ <== NOT EXECUTED return EBUSY; 47002: 7010 moveq #16,%d0 <== NOT EXECUTED 47004: 6038 bras 4703e <== NOT EXECUTED } _Objects_Close( &_POSIX_Mutex_Information, &the_mutex->Object ); 47006: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47008: 4879 0006 32dc pea 632dc <_POSIX_Mutex_Information> <== NOT EXECUTED 4700e: 4eb9 0004 9568 jsr 49568 <_Objects_Close> <== NOT EXECUTED _CORE_mutex_Flush( &the_mutex->Mutex, NULL, EINVAL ); 47014: 4878 0016 pea 16 <== NOT EXECUTED 47018: 42a7 clrl %sp@- <== NOT EXECUTED 4701a: 486a 0014 pea %a2@(20) <== NOT EXECUTED 4701e: 4eb9 0004 8c64 jsr 48c64 <_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 ); 47024: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47026: 4879 0006 32dc pea 632dc <_POSIX_Mutex_Information> <== NOT EXECUTED 4702c: 4eb9 0004 97e0 jsr 497e0 <_Objects_Free> <== NOT EXECUTED _POSIX_Mutex_Free( the_mutex ); _Thread_Enable_dispatch(); 47032: 4e93 jsr %a3@ <== NOT EXECUTED return 0; 47034: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 47038: 4280 clrl %d0 <== NOT EXECUTED 4703a: 6002 bras 4703e <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 4703c: 7016 moveq #22,%d0 <== NOT EXECUTED } 4703e: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 47042: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED 47046: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000470f4 : int pthread_mutex_getprioceiling( pthread_mutex_t *mutex, int *prioceiling ) { 470f4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 470f8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 470fa: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED register POSIX_Mutex_Control *the_mutex; Objects_Locations location; if ( !prioceiling ) 470fe: 4a8a tstl %a2 <== NOT EXECUTED 47100: 6730 beqs 47132 <== NOT EXECUTED return EINVAL; the_mutex = _POSIX_Mutex_Get( mutex, &location ); 47102: 486e fffc pea %fp@(-4) <== NOT EXECUTED 47106: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4710a: 4eb9 0004 704c jsr 4704c <_POSIX_Mutex_Get> <== NOT EXECUTED switch ( location ) { 47110: 508f addql #8,%sp <== NOT EXECUTED 47112: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 47116: 661a bnes 47132 <== NOT EXECUTED RTEMS_INLINE_ROUTINE int _POSIX_Priority_From_core( Priority_Control priority ) { return (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1); 47118: 4281 clrl %d1 <== NOT EXECUTED 4711a: 1239 0006 16d6 moveb 616d6 ,%d1 <== NOT EXECUTED 47120: 2040 moveal %d0,%a0 <== NOT EXECUTED 47122: 92a8 005e subl %a0@(94),%d1 <== NOT EXECUTED 47126: 2481 movel %d1,%a2@ <== NOT EXECUTED case OBJECTS_LOCAL: *prioceiling = _POSIX_Priority_From_core( the_mutex->Mutex.Attributes.priority_ceiling ); _Thread_Enable_dispatch(); 47128: 4eb9 0004 a3aa jsr 4a3aa <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 4712e: 4280 clrl %d0 <== NOT EXECUTED 47130: 6002 bras 47134 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 47132: 7016 moveq #22,%d0 <== NOT EXECUTED } 47134: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 47138: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004713c : int pthread_mutex_init( pthread_mutex_t *mutex, const pthread_mutexattr_t *attr ) { 4713c: 4e56 fff0 linkw %fp,#-16 47140: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ 47144: 286e 0008 moveal %fp@(8),%a4 47148: 266e 000c moveal %fp@(12),%a3 POSIX_Mutex_Control *the_mutex; CORE_mutex_Attributes *the_mutex_attr; const pthread_mutexattr_t *the_attr; CORE_mutex_Disciplines the_discipline; if ( attr ) the_attr = attr; 4714c: 4a8b tstl %a3 4714e: 6606 bnes 47156 <== NEVER TAKEN else the_attr = &_POSIX_Mutex_Default_attributes; 47150: 47f9 0006 3350 lea 63350 <_POSIX_Mutex_Default_attributes>,%a3 /* Check for NULL mutex */ if ( !mutex ) 47156: 4a8c tstl %a4 47158: 6700 00ec beqw 47246 } } } #endif if ( !the_attr->is_initialized ) 4715c: 4a93 tstl %a3@ 4715e: 6700 00e6 beqw 47246 return EINVAL; /* * We only support process private mutexes. */ if ( the_attr->process_shared == PTHREAD_PROCESS_SHARED ) 47162: 202b 0004 movel %a3@(4),%d0 47166: 7201 moveq #1,%d1 47168: b280 cmpl %d0,%d1 4716a: 6700 00d6 beqw 47242 return ENOSYS; if ( the_attr->process_shared != PTHREAD_PROCESS_PRIVATE ) 4716e: 4a80 tstl %d0 47170: 6600 00d4 bnew 47246 return EINVAL; /* * Determine the discipline of the mutex */ switch ( the_attr->protocol ) { 47174: 202b 000c movel %a3@(12),%d0 47178: b280 cmpl %d0,%d1 4717a: 6716 beqs 47192 <== NEVER TAKEN 4717c: 123c 0002 moveb #2,%d1 47180: b280 cmpl %d0,%d1 47182: 670a beqs 4718e <== NEVER TAKEN 47184: 4a80 tstl %d0 47186: 6600 00be bnew 47246 case PTHREAD_PRIO_NONE: the_discipline = CORE_MUTEX_DISCIPLINES_FIFO; 4718a: 4282 clrl %d2 4718c: 6006 bras 47194 break; case PTHREAD_PRIO_INHERIT: the_discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT; break; case PTHREAD_PRIO_PROTECT: the_discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING; 4718e: 7403 moveq #3,%d2 <== NOT EXECUTED break; 47190: 6002 bras 47194 <== NOT EXECUTED switch ( the_attr->protocol ) { case PTHREAD_PRIO_NONE: the_discipline = CORE_MUTEX_DISCIPLINES_FIFO; break; case PTHREAD_PRIO_INHERIT: the_discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT; 47192: 7402 moveq #2,%d2 <== NOT EXECUTED } /* * Validate the priority ceiling field -- should always be valid. */ if ( !_POSIX_Priority_Is_valid( the_attr->prio_ceiling ) ) 47194: 2f2b 0008 movel %a3@(8),%sp@- 47198: 4eb9 0004 74c8 jsr 474c8 <_POSIX_Priority_Is_valid> 4719e: 588f addql #4,%sp 471a0: 4a00 tstb %d0 471a2: 6700 00a2 beqw 47246 #if defined(_UNIX98_THREAD_MUTEX_ATTRIBUTES) /* * Validate the mutex type and set appropriate SuperCore mutex * attributes. */ switch ( the_attr->type ) { 471a6: 7003 moveq #3,%d0 471a8: b0ab 0010 cmpl %a3@(16),%d0 471ac: 6500 0098 bcsw 47246 471b0: 2039 0006 2ff8 movel 62ff8 <_Thread_Dispatch_disable_level>,%d0 471b6: 5280 addql #1,%d0 471b8: 23c0 0006 2ff8 movel %d0,62ff8 <_Thread_Dispatch_disable_level> * _POSIX_Mutex_Allocate */ RTEMS_INLINE_ROUTINE POSIX_Mutex_Control *_POSIX_Mutex_Allocate( void ) { return (POSIX_Mutex_Control *) _Objects_Allocate( &_POSIX_Mutex_Information ); 471be: 4879 0006 32dc pea 632dc <_POSIX_Mutex_Information> 471c4: 4eb9 0004 94ec jsr 494ec <_Objects_Allocate> */ _Thread_Disable_dispatch(); the_mutex = _POSIX_Mutex_Allocate(); if ( !the_mutex ) { 471ca: 588f addql #4,%sp 471cc: 2440 moveal %d0,%a2 471ce: 4a80 tstl %d0 471d0: 660a bnes 471dc <== ALWAYS TAKEN _Thread_Enable_dispatch(); 471d2: 4eb9 0004 a3aa jsr 4a3aa <_Thread_Enable_dispatch> <== NOT EXECUTED return EAGAIN; 471d8: 700b moveq #11,%d0 <== NOT EXECUTED 471da: 606c bras 47248 <== NOT EXECUTED the_mutex->process_shared = the_attr->process_shared; the_mutex_attr = &the_mutex->Mutex.Attributes; if ( the_attr->recursive ) the_mutex_attr->lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES; 471dc: 4aab 0014 tstl %a3@(20) 471e0: 57c0 seq %d0 if ( !the_mutex ) { _Thread_Enable_dispatch(); return EAGAIN; } the_mutex->process_shared = the_attr->process_shared; 471e2: 256b 0004 0010 movel %a3@(4),%a2@(16) the_mutex_attr = &the_mutex->Mutex.Attributes; if ( the_attr->recursive ) the_mutex_attr->lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES; 471e8: 49c0 extbl %d0 471ea: 4480 negl %d0 else the_mutex_attr->lock_nesting_behavior = CORE_MUTEX_NESTING_IS_ERROR; the_mutex_attr->only_owner_release = true; 471ec: 7201 moveq #1,%d1 the_mutex->process_shared = the_attr->process_shared; the_mutex_attr = &the_mutex->Mutex.Attributes; if ( the_attr->recursive ) the_mutex_attr->lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES; 471ee: 2540 0054 movel %d0,%a2@(84) RTEMS_INLINE_ROUTINE Priority_Control _POSIX_Priority_To_core( int priority ) { return (Priority_Control) (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1); 471f2: 4280 clrl %d0 else the_mutex_attr->lock_nesting_behavior = CORE_MUTEX_NESTING_IS_ERROR; the_mutex_attr->only_owner_release = true; 471f4: 1541 0058 moveb %d1,%a2@(88) 471f8: 1039 0006 16d6 moveb 616d6 ,%d0 471fe: 90ab 0008 subl %a3@(8),%d0 the_mutex_attr->priority_ceiling = _POSIX_Priority_To_core( the_attr->prio_ceiling ); the_mutex_attr->discipline = the_discipline; 47202: 2542 005a movel %d2,%a2@(90) 47206: 2540 005e movel %d0,%a2@(94) /* * Must be initialized to unlocked. */ _CORE_mutex_Initialize( 4720a: 4878 0001 pea 1 4720e: 486a 0054 pea %a2@(84) 47212: 486a 0014 pea %a2@(20) 47216: 4eb9 0004 8c70 jsr 48c70 <_CORE_mutex_Initialize> uint32_t name ) { _Objects_Set_local_object( information, _Objects_Get_index( the_object->id ), 4721c: 202a 0008 movel %a2@(8),%d0 Objects_Information *information, Objects_Control *the_object, uint32_t name ) { _Objects_Set_local_object( 47220: 4281 clrl %d1 #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 47222: 2079 0006 32f4 moveal 632f4 <_POSIX_Mutex_Information+0x18>,%a0 Objects_Information *information, Objects_Control *the_object, uint32_t name ) { _Objects_Set_local_object( 47228: 3200 movew %d0,%d1 #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4722a: 218a 1c00 movel %a2,%a0@(00000000,%d1:l:4) _Objects_Get_index( the_object->id ), the_object ); /* ASSERT: information->is_string == false */ the_object->name.name_u32 = name; 4722e: 42aa 000c clrl %a2@(12) CORE_MUTEX_UNLOCKED ); _Objects_Open_u32( &_POSIX_Mutex_Information, &the_mutex->Object, 0 ); *mutex = the_mutex->Object.id; 47232: 2880 movel %d0,%a4@ _Thread_Enable_dispatch(); 47234: 4eb9 0004 a3aa jsr 4a3aa <_Thread_Enable_dispatch> return 0; 4723a: 4fef 000c lea %sp@(12),%sp 4723e: 4280 clrl %d0 47240: 6006 bras 47248 /* * We only support process private mutexes. */ if ( the_attr->process_shared == PTHREAD_PROCESS_SHARED ) return ENOSYS; 47242: 7058 moveq #88,%d0 <== NOT EXECUTED 47244: 6002 bras 47248 <== NOT EXECUTED case PTHREAD_MUTEX_ERRORCHECK: case PTHREAD_MUTEX_DEFAULT: break; default: return EINVAL; 47246: 7016 moveq #22,%d0 <== NOT EXECUTED *mutex = the_mutex->Object.id; _Thread_Enable_dispatch(); return 0; } 47248: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 4724e: 4e5e unlk %fp ... =============================================================================== 00047254 : */ int pthread_mutex_lock( pthread_mutex_t *mutex ) { 47254: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _POSIX_Mutex_Lock_support( mutex, true, THREAD_QUEUE_WAIT_FOREVER ); 47258: 42a7 clrl %sp@- <== NOT EXECUTED 4725a: 4878 0001 pea 1 <== NOT EXECUTED 4725e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47262: 4eb9 0004 726c jsr 4726c <_POSIX_Mutex_Lock_support> <== NOT EXECUTED } 47268: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000472d4 : int pthread_mutex_setprioceiling( pthread_mutex_t *mutex, int prioceiling, int *old_ceiling ) { 472d4: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 472d8: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED 472dc: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 472e0: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 472e4: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED register POSIX_Mutex_Control *the_mutex; Objects_Locations location; Priority_Control the_priority; if ( !old_ceiling ) 472e8: 4a8a tstl %a2 <== NOT EXECUTED 472ea: 676c beqs 47358 <== NOT EXECUTED return EINVAL; if ( !_POSIX_Priority_Is_valid( prioceiling ) ) 472ec: 2f02 movel %d2,%sp@- <== NOT EXECUTED 472ee: 4eb9 0004 74c8 jsr 474c8 <_POSIX_Priority_Is_valid> <== NOT EXECUTED 472f4: 588f addql #4,%sp <== NOT EXECUTED 472f6: 4a00 tstb %d0 <== NOT EXECUTED 472f8: 675e beqs 47358 <== NOT EXECUTED /* * Must acquire the mutex before we can change it's ceiling. * POSIX says block until we acquire it. */ (void) pthread_mutex_lock( mutex ); 472fa: 2f03 movel %d3,%sp@- <== NOT EXECUTED 472fc: 1839 0006 16d6 moveb 616d6 ,%d4 <== NOT EXECUTED 47302: 4eb9 0004 7254 jsr 47254 <== NOT EXECUTED * operations. * * NOTE: This makes it easier to get 100% binary coverage since the * bad Id case is handled by the switch. */ the_mutex = _POSIX_Mutex_Get( mutex, &location ); 47308: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4730c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4730e: 4eb9 0004 704c jsr 4704c <_POSIX_Mutex_Get> <== NOT EXECUTED switch ( location ) { 47314: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED * operations. * * NOTE: This makes it easier to get 100% binary coverage since the * bad Id case is handled by the switch. */ the_mutex = _POSIX_Mutex_Get( mutex, &location ); 47318: 2040 moveal %d0,%a0 <== NOT EXECUTED switch ( location ) { 4731a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4731e: 6638 bnes 47358 <== NOT EXECUTED RTEMS_INLINE_ROUTINE int _POSIX_Priority_From_core( Priority_Control priority ) { return (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1); 47320: 4280 clrl %d0 <== NOT EXECUTED 47322: 1039 0006 16d6 moveb 616d6 ,%d0 <== NOT EXECUTED 47328: 90a8 005e subl %a0@(94),%d0 <== NOT EXECUTED RTEMS_INLINE_ROUTINE Priority_Control _POSIX_Priority_To_core( int priority ) { return (Priority_Control) (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1); 4732c: 0284 0000 00ff andil #255,%d4 <== NOT EXECUTED RTEMS_INLINE_ROUTINE int _POSIX_Priority_From_core( Priority_Control priority ) { return (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1); 47332: 2480 movel %d0,%a2@ <== NOT EXECUTED RTEMS_INLINE_ROUTINE Priority_Control _POSIX_Priority_To_core( int priority ) { return (Priority_Control) (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1); 47334: 9882 subl %d2,%d4 <== NOT EXECUTED 47336: 2144 005e movel %d4,%a0@(94) <== NOT EXECUTED ); the_mutex->Mutex.Attributes.priority_ceiling = the_priority; /* * We are required to unlock the mutex before we return. */ _CORE_mutex_Surrender( 4733a: 42a7 clrl %sp@- <== NOT EXECUTED 4733c: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 47340: 4868 0014 pea %a0@(20) <== NOT EXECUTED 47344: 4eb9 0004 8e20 jsr 48e20 <_CORE_mutex_Surrender> <== NOT EXECUTED &the_mutex->Mutex, the_mutex->Object.id, NULL ); _Thread_Enable_dispatch(); 4734a: 4eb9 0004 a3aa jsr 4a3aa <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 47350: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 47354: 4280 clrl %d0 <== NOT EXECUTED 47356: 6002 bras 4735a <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 47358: 7016 moveq #22,%d0 <== NOT EXECUTED } 4735a: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED 47360: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00047364 : int pthread_mutex_timedlock( pthread_mutex_t *mutex, const struct timespec *abstime ) { 47364: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 47368: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4736a: 2f02 movel %d2,%sp@- <== NOT EXECUTED * * If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID, * POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW, * then we should not wait. */ status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks ); 4736c: 486e fffc pea %fp@(-4) <== NOT EXECUTED 47370: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 47374: 4eb9 0004 744c jsr 4744c <_POSIX_Absolute_timeout_to_ticks><== NOT EXECUTED int _EXFUN(pthread_mutex_trylock, (pthread_mutex_t *__mutex)); int _EXFUN(pthread_mutex_unlock, (pthread_mutex_t *__mutex)); #if defined(_POSIX_TIMEOUTS) int _EXFUN(pthread_mutex_timedlock, 4737a: 508f addql #8,%sp <== NOT EXECUTED 4737c: 2400 movel %d0,%d2 <== NOT EXECUTED 4737e: 7003 moveq #3,%d0 <== NOT EXECUTED 47380: b082 cmpl %d2,%d0 <== NOT EXECUTED 47382: 57c3 seq %d3 <== NOT EXECUTED if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE ) do_wait = false; lock_status = _POSIX_Mutex_Lock_support( mutex, do_wait, ticks ); 47384: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 47388: 4483 negl %d3 <== NOT EXECUTED 4738a: 4280 clrl %d0 <== NOT EXECUTED 4738c: 1003 moveb %d3,%d0 <== NOT EXECUTED 4738e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47390: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47394: 4eb9 0004 726c jsr 4726c <_POSIX_Mutex_Lock_support> <== NOT EXECUTED * This service only gives us the option to block. We used a polling * attempt to lock if the abstime was not in the future. If we did * not obtain the mutex, then not look at the status immediately, * make sure the right reason is returned. */ if ( !do_wait && (lock_status == EBUSY) ) { 4739a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4739e: 4a03 tstb %d3 <== NOT EXECUTED 473a0: 661c bnes 473be <== NOT EXECUTED 473a2: 7210 moveq #16,%d1 <== NOT EXECUTED 473a4: b280 cmpl %d0,%d1 <== NOT EXECUTED 473a6: 6616 bnes 473be <== NOT EXECUTED if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID ) 473a8: 4a82 tstl %d2 <== NOT EXECUTED 473aa: 670c beqs 473b8 <== NOT EXECUTED return EINVAL; if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST || 473ac: 5382 subql #1,%d2 <== NOT EXECUTED 473ae: 123c 0001 moveb #1,%d1 <== NOT EXECUTED 473b2: b282 cmpl %d2,%d1 <== NOT EXECUTED 473b4: 6508 bcss 473be <== NOT EXECUTED 473b6: 6004 bras 473bc <== NOT EXECUTED * not obtain the mutex, then not look at the status immediately, * make sure the right reason is returned. */ if ( !do_wait && (lock_status == EBUSY) ) { if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID ) return EINVAL; 473b8: 7016 moveq #22,%d0 <== NOT EXECUTED 473ba: 6002 bras 473be <== NOT EXECUTED if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST || status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW ) return ETIMEDOUT; 473bc: 7074 moveq #116,%d0 <== NOT EXECUTED } return lock_status; } 473be: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 473c2: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 473c6: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000473e4 : */ int pthread_mutex_trylock( pthread_mutex_t *mutex ) { 473e4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _POSIX_Mutex_Lock_support( mutex, false, THREAD_QUEUE_WAIT_FOREVER ); 473e8: 42a7 clrl %sp@- <== NOT EXECUTED 473ea: 42a7 clrl %sp@- <== NOT EXECUTED 473ec: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 473f0: 4eb9 0004 726c jsr 4726c <_POSIX_Mutex_Lock_support> <== NOT EXECUTED } 473f6: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000473fc : */ int pthread_mutex_unlock( pthread_mutex_t *mutex ) { 473fc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 47400: 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 ); 47402: 486e fffc pea %fp@(-4) <== NOT EXECUTED 47406: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4740a: 4eb9 0004 704c jsr 4704c <_POSIX_Mutex_Get> <== NOT EXECUTED switch ( location ) { 47410: 508f addql #8,%sp <== NOT EXECUTED 47412: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 47416: 6628 bnes 47440 <== NOT EXECUTED case OBJECTS_LOCAL: status = _CORE_mutex_Surrender( 47418: 2040 moveal %d0,%a0 <== NOT EXECUTED 4741a: 42a7 clrl %sp@- <== NOT EXECUTED 4741c: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 47420: 4868 0014 pea %a0@(20) <== NOT EXECUTED 47424: 4eb9 0004 8e20 jsr 48e20 <_CORE_mutex_Surrender> <== NOT EXECUTED 4742a: 2400 movel %d0,%d2 <== NOT EXECUTED &the_mutex->Mutex, the_mutex->Object.id, NULL ); _Thread_Enable_dispatch(); 4742c: 4eb9 0004 a3aa jsr 4a3aa <_Thread_Enable_dispatch> <== NOT EXECUTED return _POSIX_Mutex_Translate_core_mutex_return_code( status ); 47432: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47434: 4eb9 0004 73cc jsr 473cc <_POSIX_Mutex_Translate_core_mutex_return_code><== NOT EXECUTED 4743a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4743e: 6002 bras 47442 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 47440: 7016 moveq #22,%d0 <== NOT EXECUTED } 47442: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 47446: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046e88 : */ int pthread_mutexattr_destroy( pthread_mutexattr_t *attr ) { 46e88: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46e8c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !attr || !attr->is_initialized ) 46e90: 4a88 tstl %a0 <== NOT EXECUTED 46e92: 670a beqs 46e9e <== NOT EXECUTED 46e94: 4a90 tstl %a0@ <== NOT EXECUTED 46e96: 6706 beqs 46e9e <== NOT EXECUTED return EINVAL; attr->is_initialized = false; 46e98: 4290 clrl %a0@ <== NOT EXECUTED return 0; 46e9a: 4280 clrl %d0 <== NOT EXECUTED 46e9c: 6002 bras 46ea0 <== NOT EXECUTED int pthread_mutexattr_destroy( pthread_mutexattr_t *attr ) { if ( !attr || !attr->is_initialized ) return EINVAL; 46e9e: 7016 moveq #22,%d0 <== NOT EXECUTED attr->is_initialized = false; return 0; } 46ea0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046ea4 : int pthread_mutexattr_getprioceiling( const pthread_mutexattr_t *attr, int *prioceiling ) { 46ea4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46ea8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 46eac: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED if ( !attr || !attr->is_initialized || !prioceiling ) 46eb0: 4a88 tstl %a0 <== NOT EXECUTED 46eb2: 6710 beqs 46ec4 <== NOT EXECUTED 46eb4: 4a90 tstl %a0@ <== NOT EXECUTED 46eb6: 670c beqs 46ec4 <== NOT EXECUTED 46eb8: 4a89 tstl %a1 <== NOT EXECUTED 46eba: 6708 beqs 46ec4 <== NOT EXECUTED return EINVAL; *prioceiling = attr->prio_ceiling; 46ebc: 22a8 0008 movel %a0@(8),%a1@ <== NOT EXECUTED return 0; 46ec0: 4280 clrl %d0 <== NOT EXECUTED 46ec2: 6002 bras 46ec6 <== NOT EXECUTED const pthread_mutexattr_t *attr, int *prioceiling ) { if ( !attr || !attr->is_initialized || !prioceiling ) return EINVAL; 46ec4: 7016 moveq #22,%d0 <== NOT EXECUTED *prioceiling = attr->prio_ceiling; return 0; } 46ec6: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046ecc : int pthread_mutexattr_getprotocol( const pthread_mutexattr_t *attr, int *protocol ) { 46ecc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46ed0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 46ed4: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED if ( !attr || !attr->is_initialized || !protocol ) 46ed8: 4a88 tstl %a0 <== NOT EXECUTED 46eda: 6710 beqs 46eec <== NOT EXECUTED 46edc: 4a90 tstl %a0@ <== NOT EXECUTED 46ede: 670c beqs 46eec <== NOT EXECUTED 46ee0: 4a89 tstl %a1 <== NOT EXECUTED 46ee2: 6708 beqs 46eec <== NOT EXECUTED return EINVAL; *protocol = attr->protocol; 46ee4: 22a8 000c movel %a0@(12),%a1@ <== NOT EXECUTED return 0; 46ee8: 4280 clrl %d0 <== NOT EXECUTED 46eea: 6002 bras 46eee <== NOT EXECUTED const pthread_mutexattr_t *attr, int *protocol ) { if ( !attr || !attr->is_initialized || !protocol ) return EINVAL; 46eec: 7016 moveq #22,%d0 <== NOT EXECUTED *protocol = attr->protocol; return 0; } 46eee: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046ef4 : int pthread_mutexattr_getpshared( const pthread_mutexattr_t *attr, int *pshared ) { 46ef4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46ef8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 46efc: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED if ( !attr || !attr->is_initialized || !pshared ) 46f00: 4a88 tstl %a0 <== NOT EXECUTED 46f02: 6710 beqs 46f14 <== NOT EXECUTED 46f04: 4a90 tstl %a0@ <== NOT EXECUTED 46f06: 670c beqs 46f14 <== NOT EXECUTED 46f08: 4a89 tstl %a1 <== NOT EXECUTED 46f0a: 6708 beqs 46f14 <== NOT EXECUTED return EINVAL; *pshared = attr->process_shared; 46f0c: 22a8 0004 movel %a0@(4),%a1@ <== NOT EXECUTED return 0; 46f10: 4280 clrl %d0 <== NOT EXECUTED 46f12: 6002 bras 46f16 <== NOT EXECUTED const pthread_mutexattr_t *attr, int *pshared ) { if ( !attr || !attr->is_initialized || !pshared ) return EINVAL; 46f14: 7016 moveq #22,%d0 <== NOT EXECUTED *pshared = attr->process_shared; return 0; } 46f16: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004521c : #if defined(_UNIX98_THREAD_MUTEX_ATTRIBUTES) int pthread_mutexattr_gettype( const pthread_mutexattr_t *attr, int *type ) { 4521c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45220: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 45224: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED if ( !attr ) 45228: 4a88 tstl %a0 <== NOT EXECUTED 4522a: 6710 beqs 4523c <== NOT EXECUTED return EINVAL; if ( !attr->is_initialized ) 4522c: 4a90 tstl %a0@ <== NOT EXECUTED 4522e: 670c beqs 4523c <== NOT EXECUTED return EINVAL; if ( !type ) 45230: 4a89 tstl %a1 <== NOT EXECUTED 45232: 6708 beqs 4523c <== NOT EXECUTED return EINVAL; *type = attr->type; 45234: 22a8 0010 movel %a0@(16),%a1@ <== NOT EXECUTED return 0; 45238: 4280 clrl %d0 <== NOT EXECUTED 4523a: 6002 bras 4523e <== NOT EXECUTED if ( !attr->is_initialized ) return EINVAL; if ( !type ) return EINVAL; 4523c: 7016 moveq #22,%d0 <== NOT EXECUTED *type = attr->type; return 0; } 4523e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046f1c : */ int pthread_mutexattr_init( pthread_mutexattr_t *attr ) { 46f1c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46f20: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED if ( !attr ) 46f24: 671a beqs 46f40 <== NOT EXECUTED return EINVAL; *attr = _POSIX_Mutex_Default_attributes; 46f26: 4878 0018 pea 18 <== NOT EXECUTED 46f2a: 4879 0006 3350 pea 63350 <_POSIX_Mutex_Default_attributes> <== NOT EXECUTED 46f30: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46f32: 4eb9 0004 fcc4 jsr 4fcc4 <== NOT EXECUTED return 0; 46f38: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 46f3c: 4280 clrl %d0 <== NOT EXECUTED 46f3e: 6002 bras 46f42 <== NOT EXECUTED int pthread_mutexattr_init( pthread_mutexattr_t *attr ) { if ( !attr ) return EINVAL; 46f40: 7016 moveq #22,%d0 <== NOT EXECUTED *attr = _POSIX_Mutex_Default_attributes; return 0; } 46f42: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046f48 : int pthread_mutexattr_setprioceiling( pthread_mutexattr_t *attr, int prioceiling ) { 46f48: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46f4c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46f4e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 46f52: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46f54: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED if ( !attr || !attr->is_initialized ) 46f58: 4a8a tstl %a2 <== NOT EXECUTED 46f5a: 671a beqs 46f76 <== NOT EXECUTED 46f5c: 4a92 tstl %a2@ <== NOT EXECUTED 46f5e: 6716 beqs 46f76 <== NOT EXECUTED return EINVAL; if ( !_POSIX_Priority_Is_valid( prioceiling ) ) 46f60: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46f62: 4eb9 0004 74c8 jsr 474c8 <_POSIX_Priority_Is_valid> <== NOT EXECUTED 46f68: 588f addql #4,%sp <== NOT EXECUTED 46f6a: 4a00 tstb %d0 <== NOT EXECUTED 46f6c: 6708 beqs 46f76 <== NOT EXECUTED return EINVAL; attr->prio_ceiling = prioceiling; 46f6e: 2542 0008 movel %d2,%a2@(8) <== NOT EXECUTED return 0; 46f72: 4280 clrl %d0 <== NOT EXECUTED 46f74: 6002 bras 46f78 <== NOT EXECUTED { if ( !attr || !attr->is_initialized ) return EINVAL; if ( !_POSIX_Priority_Is_valid( prioceiling ) ) return EINVAL; 46f76: 7016 moveq #22,%d0 <== NOT EXECUTED attr->prio_ceiling = prioceiling; return 0; } 46f78: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 46f7c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 46f80: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046f84 : int pthread_mutexattr_setprotocol( pthread_mutexattr_t *attr, int protocol ) { 46f84: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46f88: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 46f8c: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED if ( !attr || !attr->is_initialized ) 46f90: 4a88 tstl %a0 <== NOT EXECUTED 46f92: 6712 beqs 46fa6 <== NOT EXECUTED 46f94: 4a90 tstl %a0@ <== NOT EXECUTED 46f96: 670e beqs 46fa6 <== NOT EXECUTED return EINVAL; switch ( protocol ) { 46f98: 7202 moveq #2,%d1 <== NOT EXECUTED 46f9a: b280 cmpl %d0,%d1 <== NOT EXECUTED 46f9c: 6508 bcss 46fa6 <== NOT EXECUTED case PTHREAD_PRIO_NONE: case PTHREAD_PRIO_INHERIT: case PTHREAD_PRIO_PROTECT: attr->protocol = protocol; 46f9e: 2140 000c movel %d0,%a0@(12) <== NOT EXECUTED return 0; 46fa2: 4280 clrl %d0 <== NOT EXECUTED 46fa4: 6002 bras 46fa8 <== NOT EXECUTED default: return EINVAL; 46fa6: 7016 moveq #22,%d0 <== NOT EXECUTED } } 46fa8: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046fac : int pthread_mutexattr_setpshared( pthread_mutexattr_t *attr, int pshared ) { 46fac: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46fb0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 46fb4: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED if ( !attr || !attr->is_initialized ) 46fb8: 4a88 tstl %a0 <== NOT EXECUTED 46fba: 6712 beqs 46fce <== NOT EXECUTED 46fbc: 4a90 tstl %a0@ <== NOT EXECUTED 46fbe: 670e beqs 46fce <== NOT EXECUTED return EINVAL; switch ( pshared ) { 46fc0: 7201 moveq #1,%d1 <== NOT EXECUTED 46fc2: b280 cmpl %d0,%d1 <== NOT EXECUTED 46fc4: 6508 bcss 46fce <== NOT EXECUTED case PTHREAD_PROCESS_SHARED: case PTHREAD_PROCESS_PRIVATE: attr->process_shared = pshared; 46fc6: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED return 0; 46fca: 4280 clrl %d0 <== NOT EXECUTED 46fcc: 6002 bras 46fd0 <== NOT EXECUTED default: return EINVAL; 46fce: 7016 moveq #22,%d0 <== NOT EXECUTED } } 46fd0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045270 : #if defined(_UNIX98_THREAD_MUTEX_ATTRIBUTES) int pthread_mutexattr_settype( pthread_mutexattr_t *attr, int type ) { 45270: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45274: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 45278: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED if ( !attr || !attr->is_initialized ) 4527c: 4a88 tstl %a0 <== NOT EXECUTED 4527e: 6712 beqs 45292 <== NOT EXECUTED 45280: 4a90 tstl %a0@ <== NOT EXECUTED 45282: 670e beqs 45292 <== NOT EXECUTED return EINVAL; switch ( type ) { 45284: 7203 moveq #3,%d1 <== NOT EXECUTED 45286: b280 cmpl %d0,%d1 <== NOT EXECUTED 45288: 6508 bcss 45292 <== NOT EXECUTED case PTHREAD_MUTEX_NORMAL: case PTHREAD_MUTEX_RECURSIVE: case PTHREAD_MUTEX_ERRORCHECK: case PTHREAD_MUTEX_DEFAULT: attr->type = type; 4528a: 2140 0010 movel %d0,%a0@(16) <== NOT EXECUTED return 0; 4528e: 4280 clrl %d0 <== NOT EXECUTED 45290: 6002 bras 45294 <== NOT EXECUTED default: return EINVAL; 45292: 7016 moveq #22,%d0 <== NOT EXECUTED } } 45294: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045d0c : int pthread_once( pthread_once_t *once_control, void (*init_routine)(void) ) { 45d0c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 45d10: 2f0b movel %a3,%sp@- <== NOT EXECUTED 45d12: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED 45d16: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45d18: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED if ( !once_control || !init_routine ) 45d1c: 4a8a tstl %a2 <== NOT EXECUTED 45d1e: 674a beqs 45d6a <== NOT EXECUTED 45d20: 4a8b tstl %a3 <== NOT EXECUTED 45d22: 6746 beqs 45d6a <== NOT EXECUTED return EINVAL; if ( !once_control->init_executed ) { 45d24: 4aaa 0004 tstl %a2@(4) <== NOT EXECUTED 45d28: 6644 bnes 45d6e <== NOT EXECUTED rtems_mode saveMode; rtems_task_mode(RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &saveMode); 45d2a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 45d2e: 4878 0100 pea 100 <== NOT EXECUTED 45d32: 4878 0100 pea 100 <== NOT EXECUTED 45d36: 4eb9 0004 681c jsr 4681c <== NOT EXECUTED if ( !once_control->init_executed ) { 45d3c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 45d40: 4aaa 0004 tstl %a2@(4) <== NOT EXECUTED 45d44: 660c bnes 45d52 <== NOT EXECUTED once_control->is_initialized = true; 45d46: 7001 moveq #1,%d0 <== NOT EXECUTED 45d48: 2480 movel %d0,%a2@ <== NOT EXECUTED once_control->init_executed = true; 45d4a: 7001 moveq #1,%d0 <== NOT EXECUTED 45d4c: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED (*init_routine)(); 45d50: 4e93 jsr %a3@ <== NOT EXECUTED } rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode); 45d52: 486e fffc pea %fp@(-4) <== NOT EXECUTED 45d56: 4878 0100 pea 100 <== NOT EXECUTED 45d5a: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 45d5e: 4eb9 0004 681c jsr 4681c <== NOT EXECUTED 45d64: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 45d68: 6004 bras 45d6e <== NOT EXECUTED pthread_once_t *once_control, void (*init_routine)(void) ) { if ( !once_control || !init_routine ) return EINVAL; 45d6a: 7016 moveq #22,%d0 <== NOT EXECUTED 45d6c: 6002 bras 45d70 <== NOT EXECUTED once_control->init_executed = true; (*init_routine)(); } rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode); } return 0; 45d6e: 4280 clrl %d0 <== NOT EXECUTED } 45d70: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 45d74: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED 45d78: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046468 : */ int pthread_rwlock_destroy( pthread_rwlock_t *rwlock ) { 46468: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4646c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 46470: 2f0b movel %a3,%sp@- <== NOT EXECUTED 46472: 2f0a movel %a2,%sp@- <== NOT EXECUTED POSIX_RWLock_Control *the_rwlock = NULL; Objects_Locations location; if ( !rwlock ) 46474: 4a88 tstl %a0 <== NOT EXECUTED 46476: 6760 beqs 464d8 <== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_RWLock_Control *_POSIX_RWLock_Get ( pthread_rwlock_t *RWLock, Objects_Locations *location ) { return (POSIX_RWLock_Control *) _Objects_Get( 46478: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4647c: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4647e: 4879 0006 1264 pea 61264 <_POSIX_RWLock_Information> <== NOT EXECUTED 46484: 4eb9 0004 8d84 jsr 48d84 <_Objects_Get> <== NOT EXECUTED return EINVAL; the_rwlock = _POSIX_RWLock_Get( rwlock, &location ); switch ( location ) { 4648a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4648e: 2440 moveal %d0,%a2 <== NOT EXECUTED 46490: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 46494: 6642 bnes 464d8 <== 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 ) { 46496: 486a 0010 pea %a2@(16) <== NOT EXECUTED 4649a: 47f9 0004 97ea lea 497ea <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED 464a0: 4eb9 0004 9f60 jsr 49f60 <_Thread_queue_First> <== NOT EXECUTED 464a6: 588f addql #4,%sp <== NOT EXECUTED 464a8: 4a80 tstl %d0 <== NOT EXECUTED 464aa: 6706 beqs 464b2 <== NOT EXECUTED _Thread_Enable_dispatch(); 464ac: 4e93 jsr %a3@ <== NOT EXECUTED return EBUSY; 464ae: 7010 moveq #16,%d0 <== NOT EXECUTED 464b0: 6028 bras 464da <== NOT EXECUTED /* * POSIX doesn't require behavior when it is locked. */ _Objects_Close( &_POSIX_RWLock_Information, &the_rwlock->Object ); 464b2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 464b4: 4879 0006 1264 pea 61264 <_POSIX_RWLock_Information> <== NOT EXECUTED 464ba: 4eb9 0004 89a8 jsr 489a8 <_Objects_Close> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _POSIX_RWLock_Free ( POSIX_RWLock_Control *the_RWLock ) { _Objects_Free( &_POSIX_RWLock_Information, &the_RWLock->Object ); 464c0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 464c2: 4879 0006 1264 pea 61264 <_POSIX_RWLock_Information> <== NOT EXECUTED 464c8: 4eb9 0004 8c20 jsr 48c20 <_Objects_Free> <== NOT EXECUTED _POSIX_RWLock_Free( the_rwlock ); _Thread_Enable_dispatch(); 464ce: 4e93 jsr %a3@ <== NOT EXECUTED return 0; 464d0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 464d4: 4280 clrl %d0 <== NOT EXECUTED 464d6: 6002 bras 464da <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 464d8: 7016 moveq #22,%d0 <== NOT EXECUTED } 464da: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 464de: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED 464e2: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000464e8 : int pthread_rwlock_init( pthread_rwlock_t *rwlock, const pthread_rwlockattr_t *attr ) { 464e8: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 464ec: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 464f0: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED 464f4: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED const pthread_rwlockattr_t *the_attr; /* * Error check parameters */ if ( !rwlock ) 464f8: 4a8a tstl %a2 <== NOT EXECUTED 464fa: 6700 0084 beqw 46580 <== NOT EXECUTED return EINVAL; /* * If the user passed in NULL, use the default attributes */ if ( attr ) { 464fe: 4a88 tstl %a0 <== NOT EXECUTED 46500: 6614 bnes 46516 <== NOT EXECUTED the_attr = attr; } else { (void) pthread_rwlockattr_init( &default_attr ); 46502: 240e movel %fp,%d2 <== NOT EXECUTED 46504: 0682 ffff fff4 addil #-12,%d2 <== NOT EXECUTED 4650a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4650c: 4eb9 0004 6e04 jsr 46e04 <== NOT EXECUTED 46512: 588f addql #4,%sp <== NOT EXECUTED the_attr = &default_attr; 46514: 2042 moveal %d2,%a0 <== NOT EXECUTED } /* * Now start error checking the attributes that we are going to use */ if ( !the_attr->is_initialized ) 46516: 4a90 tstl %a0@ <== NOT EXECUTED 46518: 6766 beqs 46580 <== NOT EXECUTED return EINVAL; switch ( the_attr->process_shared ) { 4651a: 4aa8 0004 tstl %a0@(4) <== NOT EXECUTED 4651e: 6660 bnes 46580 <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 46520: 2039 0006 10dc movel 610dc <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 46526: 5280 addql #1,%d0 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _CORE_RWLock_Initialize_attributes( CORE_RWLock_Attributes *the_attributes ) { the_attributes->XXX = 0; 46528: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED 4652c: 23c0 0006 10dc movel %d0,610dc <_Thread_Dispatch_disable_level><== NOT EXECUTED * the inactive chain of free RWLock control blocks. */ RTEMS_INLINE_ROUTINE POSIX_RWLock_Control *_POSIX_RWLock_Allocate( void ) { return (POSIX_RWLock_Control *) _Objects_Allocate( &_POSIX_RWLock_Information ); 46532: 4879 0006 1264 pea 61264 <_POSIX_RWLock_Information> <== NOT EXECUTED 46538: 49f9 0004 97ea lea 497ea <_Thread_Enable_dispatch>,%a4 <== NOT EXECUTED 4653e: 4eb9 0004 892c jsr 4892c <_Objects_Allocate> <== NOT EXECUTED */ _Thread_Disable_dispatch(); /* prevents deletion */ the_rwlock = _POSIX_RWLock_Allocate(); if ( !the_rwlock ) { 46544: 588f addql #4,%sp <== NOT EXECUTED 46546: 2640 moveal %d0,%a3 <== NOT EXECUTED 46548: 4a80 tstl %d0 <== NOT EXECUTED 4654a: 6606 bnes 46552 <== NOT EXECUTED _Thread_Enable_dispatch(); 4654c: 4e94 jsr %a4@ <== NOT EXECUTED return EAGAIN; 4654e: 700b moveq #11,%d0 <== NOT EXECUTED 46550: 6030 bras 46582 <== NOT EXECUTED } _CORE_RWLock_Initialize( &the_rwlock->RWLock, &the_attributes ); 46552: 486e fffc pea %fp@(-4) <== NOT EXECUTED 46556: 486b 0010 pea %a3@(16) <== NOT EXECUTED 4655a: 4eb9 0004 8128 jsr 48128 <_CORE_RWLock_Initialize> <== NOT EXECUTED uint32_t name ) { _Objects_Set_local_object( information, _Objects_Get_index( the_object->id ), 46560: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, uint32_t name ) { _Objects_Set_local_object( 46564: 4281 clrl %d1 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 46566: 2079 0006 127c moveal 6127c <_POSIX_RWLock_Information+0x18>,%a0<== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, uint32_t name ) { _Objects_Set_local_object( 4656c: 3200 movew %d0,%d1 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4656e: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4) <== NOT EXECUTED _Objects_Get_index( the_object->id ), the_object ); /* ASSERT: information->is_string == false */ the_object->name.name_u32 = name; 46572: 42ab 000c clrl %a3@(12) <== NOT EXECUTED &_POSIX_RWLock_Information, &the_rwlock->Object, 0 ); *rwlock = the_rwlock->Object.id; 46576: 2480 movel %d0,%a2@ <== NOT EXECUTED _Thread_Enable_dispatch(); 46578: 4e94 jsr %a4@ <== NOT EXECUTED return 0; 4657a: 508f addql #8,%sp <== NOT EXECUTED 4657c: 4280 clrl %d0 <== NOT EXECUTED 4657e: 6002 bras 46582 <== NOT EXECUTED switch ( the_attr->process_shared ) { case PTHREAD_PROCESS_PRIVATE: /* only supported values */ break; case PTHREAD_PROCESS_SHARED: default: return EINVAL; 46580: 7016 moveq #22,%d0 <== NOT EXECUTED *rwlock = the_rwlock->Object.id; _Thread_Enable_dispatch(); return 0; } 46582: 4cee 1c04 ffe4 moveml %fp@(-28),%d2/%a2-%a4 <== NOT EXECUTED 46588: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004658c : */ int pthread_rwlock_rdlock( pthread_rwlock_t *rwlock ) { 4658c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 46590: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46592: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED POSIX_RWLock_Control *the_rwlock; Objects_Locations location; if ( !rwlock ) 46596: 4a8a tstl %a2 <== NOT EXECUTED 46598: 674e beqs 465e8 <== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_RWLock_Control *_POSIX_RWLock_Get ( pthread_rwlock_t *RWLock, Objects_Locations *location ) { return (POSIX_RWLock_Control *) _Objects_Get( 4659a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4659e: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 465a0: 4879 0006 1264 pea 61264 <_POSIX_RWLock_Information> <== NOT EXECUTED 465a6: 4eb9 0004 8d84 jsr 48d84 <_Objects_Get> <== NOT EXECUTED return EINVAL; the_rwlock = _POSIX_RWLock_Get( rwlock, &location ); switch ( location ) { 465ac: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 465b0: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 465b4: 6632 bnes 465e8 <== NOT EXECUTED case OBJECTS_LOCAL: _CORE_RWLock_Obtain_for_reading( 465b6: 42a7 clrl %sp@- <== NOT EXECUTED 465b8: 2040 moveal %d0,%a0 <== NOT EXECUTED 465ba: 42a7 clrl %sp@- <== NOT EXECUTED 465bc: 4878 0001 pea 1 <== NOT EXECUTED 465c0: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 465c2: 4868 0010 pea %a0@(16) <== NOT EXECUTED 465c6: 4eb9 0004 815c jsr 4815c <_CORE_RWLock_Obtain_for_reading> <== NOT EXECUTED true, /* we are willing to wait forever */ 0, NULL ); _Thread_Enable_dispatch(); 465cc: 4eb9 0004 97ea jsr 497ea <_Thread_Enable_dispatch> <== NOT EXECUTED return _POSIX_RWLock_Translate_core_RWLock_return_code( (CORE_RWLock_Status) _Thread_Executing->Wait.return_code 465d2: 2079 0006 1566 moveal 61566 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 0, NULL ); _Thread_Enable_dispatch(); return _POSIX_RWLock_Translate_core_RWLock_return_code( 465d8: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 465dc: 4eb9 0004 674c jsr 4674c <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED 465e2: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 465e6: 6002 bras 465ea <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 465e8: 7016 moveq #22,%d0 <== NOT EXECUTED } 465ea: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 465ee: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000465f4 : int pthread_rwlock_timedrdlock( pthread_rwlock_t *rwlock, const struct timespec *abstime ) { 465f4: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 465f8: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 465fc: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED Objects_Locations location; Watchdog_Interval ticks; bool do_wait = true; POSIX_Absolute_timeout_conversion_results_t status; if ( !rwlock ) 46600: 4a8a tstl %a2 <== NOT EXECUTED 46602: 6700 008c beqw 46690 <== NOT EXECUTED * * If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID, * POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW, * then we should not wait. */ status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks ); 46606: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4660a: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4660e: 4eb9 0004 c1e8 jsr 4c1e8 <_POSIX_Absolute_timeout_to_ticks><== NOT EXECUTED 46614: 486e fffc pea %fp@(-4) <== NOT EXECUTED 46618: 2400 movel %d0,%d2 <== NOT EXECUTED 4661a: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 4661c: 4879 0006 1264 pea 61264 <_POSIX_RWLock_Information> <== NOT EXECUTED 46622: 4eb9 0004 8d84 jsr 48d84 <_Objects_Get> <== NOT EXECUTED if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE ) do_wait = false; the_rwlock = _POSIX_RWLock_Get( rwlock, &location ); switch ( location ) { 46628: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4662c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 46630: 665e bnes 46690 <== NOT EXECUTED int _EXFUN(pthread_rwlock_init, (pthread_rwlock_t *__rwlock, _CONST pthread_rwlockattr_t *__attr)); int _EXFUN(pthread_rwlock_destroy, (pthread_rwlock_t *__rwlock)); int _EXFUN(pthread_rwlock_rdlock,(pthread_rwlock_t *__rwlock)); int _EXFUN(pthread_rwlock_tryrdlock,(pthread_rwlock_t *__rwlock)); int _EXFUN(pthread_rwlock_timedrdlock, 46632: 7203 moveq #3,%d1 <== NOT EXECUTED 46634: b282 cmpl %d2,%d1 <== NOT EXECUTED 46636: 57c3 seq %d3 <== NOT EXECUTED case OBJECTS_LOCAL: _CORE_RWLock_Obtain_for_reading( 46638: 42a7 clrl %sp@- <== NOT EXECUTED 4663a: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED 4663e: 4483 negl %d3 <== NOT EXECUTED 46640: 4281 clrl %d1 <== NOT EXECUTED 46642: 1203 moveb %d3,%d1 <== NOT EXECUTED 46644: 2040 moveal %d0,%a0 <== NOT EXECUTED 46646: 2f01 movel %d1,%sp@- <== NOT EXECUTED 46648: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 4664a: 4868 0010 pea %a0@(16) <== NOT EXECUTED 4664e: 4eb9 0004 815c jsr 4815c <_CORE_RWLock_Obtain_for_reading> <== NOT EXECUTED do_wait, ticks, NULL ); _Thread_Enable_dispatch(); 46654: 4eb9 0004 97ea jsr 497ea <_Thread_Enable_dispatch> <== NOT EXECUTED if ( !do_wait ) { 4665a: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4665e: 4a03 tstb %d3 <== NOT EXECUTED 46660: 661a bnes 4667c <== NOT EXECUTED if ( _Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE ) { 46662: 2079 0006 1566 moveal 61566 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 46668: 7002 moveq #2,%d0 <== NOT EXECUTED 4666a: b0a8 0034 cmpl %a0@(52),%d0 <== NOT EXECUTED 4666e: 660c bnes 4667c <== NOT EXECUTED if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID ) 46670: 4a82 tstl %d2 <== NOT EXECUTED 46672: 671c beqs 46690 <== NOT EXECUTED return EINVAL; if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST || 46674: 5382 subql #1,%d2 <== NOT EXECUTED 46676: 7201 moveq #1,%d1 <== NOT EXECUTED 46678: b282 cmpl %d2,%d1 <== NOT EXECUTED 4667a: 6418 bccs 46694 <== NOT EXECUTED return ETIMEDOUT; } } return _POSIX_RWLock_Translate_core_RWLock_return_code( (CORE_RWLock_Status) _Thread_Executing->Wait.return_code 4667c: 2079 0006 1566 moveal 61566 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW ) return ETIMEDOUT; } } return _POSIX_RWLock_Translate_core_RWLock_return_code( 46682: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 46686: 4eb9 0004 674c jsr 4674c <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED 4668c: 588f addql #4,%sp <== NOT EXECUTED 4668e: 6006 bras 46696 <== NOT EXECUTED _Thread_Enable_dispatch(); if ( !do_wait ) { if ( _Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE ) { if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID ) return EINVAL; 46690: 7016 moveq #22,%d0 <== NOT EXECUTED 46692: 6002 bras 46696 <== NOT EXECUTED if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST || status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW ) return ETIMEDOUT; 46694: 7074 moveq #116,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 46696: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED 4669c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000466a0 : int pthread_rwlock_timedwrlock( pthread_rwlock_t *rwlock, const struct timespec *abstime ) { 466a0: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 466a4: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED 466a8: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED Objects_Locations location; Watchdog_Interval ticks; bool do_wait = true; POSIX_Absolute_timeout_conversion_results_t status; if ( !rwlock ) 466ac: 4a8a tstl %a2 <== NOT EXECUTED 466ae: 6700 008c beqw 4673c <== NOT EXECUTED * * If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID, * POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW, * then we should not wait. */ status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks ); 466b2: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 466b6: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 466ba: 4eb9 0004 c1e8 jsr 4c1e8 <_POSIX_Absolute_timeout_to_ticks><== NOT EXECUTED 466c0: 486e fffc pea %fp@(-4) <== NOT EXECUTED 466c4: 2400 movel %d0,%d2 <== NOT EXECUTED 466c6: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 466c8: 4879 0006 1264 pea 61264 <_POSIX_RWLock_Information> <== NOT EXECUTED 466ce: 4eb9 0004 8d84 jsr 48d84 <_Objects_Get> <== NOT EXECUTED if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE ) do_wait = false; the_rwlock = _POSIX_RWLock_Get( rwlock, &location ); switch ( location ) { 466d4: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 466d8: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 466dc: 665e bnes 4673c <== NOT EXECUTED (pthread_rwlock_t *__rwlock, _CONST struct timespec *__abstime)); int _EXFUN(pthread_rwlock_unlock,(pthread_rwlock_t *__rwlock)); int _EXFUN(pthread_rwlock_wrlock,(pthread_rwlock_t *__rwlock)); int _EXFUN(pthread_rwlock_trywrlock,(pthread_rwlock_t *__rwlock)); int _EXFUN(pthread_rwlock_timedwrlock, 466de: 7203 moveq #3,%d1 <== NOT EXECUTED 466e0: b282 cmpl %d2,%d1 <== NOT EXECUTED 466e2: 57c3 seq %d3 <== NOT EXECUTED case OBJECTS_LOCAL: _CORE_RWLock_Obtain_for_writing( 466e4: 42a7 clrl %sp@- <== NOT EXECUTED 466e6: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED 466ea: 4483 negl %d3 <== NOT EXECUTED 466ec: 4281 clrl %d1 <== NOT EXECUTED 466ee: 1203 moveb %d3,%d1 <== NOT EXECUTED 466f0: 2040 moveal %d0,%a0 <== NOT EXECUTED 466f2: 2f01 movel %d1,%sp@- <== NOT EXECUTED 466f4: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 466f6: 4868 0010 pea %a0@(16) <== NOT EXECUTED 466fa: 4eb9 0004 820c jsr 4820c <_CORE_RWLock_Obtain_for_writing> <== NOT EXECUTED do_wait, ticks, NULL ); _Thread_Enable_dispatch(); 46700: 4eb9 0004 97ea jsr 497ea <_Thread_Enable_dispatch> <== NOT EXECUTED if ( !do_wait && 46706: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4670a: 4a03 tstb %d3 <== NOT EXECUTED 4670c: 661a bnes 46728 <== NOT EXECUTED (_Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE) ) { 4670e: 2079 0006 1566 moveal 61566 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED ticks, NULL ); _Thread_Enable_dispatch(); if ( !do_wait && 46714: 7002 moveq #2,%d0 <== NOT EXECUTED 46716: b0a8 0034 cmpl %a0@(52),%d0 <== NOT EXECUTED 4671a: 660c bnes 46728 <== NOT EXECUTED (_Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE) ) { if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID ) 4671c: 4a82 tstl %d2 <== NOT EXECUTED 4671e: 671c beqs 4673c <== NOT EXECUTED return EINVAL; if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST || 46720: 5382 subql #1,%d2 <== NOT EXECUTED 46722: 7201 moveq #1,%d1 <== NOT EXECUTED 46724: b282 cmpl %d2,%d1 <== NOT EXECUTED 46726: 6418 bccs 46740 <== NOT EXECUTED status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW ) return ETIMEDOUT; } return _POSIX_RWLock_Translate_core_RWLock_return_code( (CORE_RWLock_Status) _Thread_Executing->Wait.return_code 46728: 2079 0006 1566 moveal 61566 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST || status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW ) return ETIMEDOUT; } return _POSIX_RWLock_Translate_core_RWLock_return_code( 4672e: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 46732: 4eb9 0004 674c jsr 4674c <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED 46738: 588f addql #4,%sp <== NOT EXECUTED 4673a: 6006 bras 46742 <== NOT EXECUTED _Thread_Enable_dispatch(); if ( !do_wait && (_Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE) ) { if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID ) return EINVAL; 4673c: 7016 moveq #22,%d0 <== NOT EXECUTED 4673e: 6002 bras 46742 <== NOT EXECUTED if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST || status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW ) return ETIMEDOUT; 46740: 7074 moveq #116,%d0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return EINVAL; } 46742: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED 46748: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046764 : */ int pthread_rwlock_tryrdlock( pthread_rwlock_t *rwlock ) { 46764: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 46768: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4676a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED POSIX_RWLock_Control *the_rwlock; Objects_Locations location; if ( !rwlock ) 4676e: 4a8a tstl %a2 <== NOT EXECUTED 46770: 674c beqs 467be <== NOT EXECUTED 46772: 486e fffc pea %fp@(-4) <== NOT EXECUTED 46776: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 46778: 4879 0006 1264 pea 61264 <_POSIX_RWLock_Information> <== NOT EXECUTED 4677e: 4eb9 0004 8d84 jsr 48d84 <_Objects_Get> <== NOT EXECUTED return EINVAL; the_rwlock = _POSIX_RWLock_Get( rwlock, &location ); switch ( location ) { 46784: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 46788: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4678c: 6630 bnes 467be <== NOT EXECUTED case OBJECTS_LOCAL: _CORE_RWLock_Obtain_for_reading( 4678e: 42a7 clrl %sp@- <== NOT EXECUTED 46790: 2040 moveal %d0,%a0 <== NOT EXECUTED 46792: 42a7 clrl %sp@- <== NOT EXECUTED 46794: 42a7 clrl %sp@- <== NOT EXECUTED 46796: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 46798: 4868 0010 pea %a0@(16) <== NOT EXECUTED 4679c: 4eb9 0004 815c jsr 4815c <_CORE_RWLock_Obtain_for_reading> <== NOT EXECUTED 0, NULL ); _Thread_Enable_dispatch(); 467a2: 4eb9 0004 97ea jsr 497ea <_Thread_Enable_dispatch> <== NOT EXECUTED return _POSIX_RWLock_Translate_core_RWLock_return_code( (CORE_RWLock_Status) _Thread_Executing->Wait.return_code 467a8: 2079 0006 1566 moveal 61566 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED NULL ); _Thread_Enable_dispatch(); return _POSIX_RWLock_Translate_core_RWLock_return_code( 467ae: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 467b2: 4eb9 0004 674c jsr 4674c <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED 467b8: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 467bc: 6002 bras 467c0 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 467be: 7016 moveq #22,%d0 <== NOT EXECUTED } 467c0: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 467c4: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000467c8 : */ int pthread_rwlock_trywrlock( pthread_rwlock_t *rwlock ) { 467c8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 467cc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 467ce: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED POSIX_RWLock_Control *the_rwlock; Objects_Locations location; if ( !rwlock ) 467d2: 4a8a tstl %a2 <== NOT EXECUTED 467d4: 674c beqs 46822 <== NOT EXECUTED 467d6: 486e fffc pea %fp@(-4) <== NOT EXECUTED 467da: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 467dc: 4879 0006 1264 pea 61264 <_POSIX_RWLock_Information> <== NOT EXECUTED 467e2: 4eb9 0004 8d84 jsr 48d84 <_Objects_Get> <== NOT EXECUTED return EINVAL; the_rwlock = _POSIX_RWLock_Get( rwlock, &location ); switch ( location ) { 467e8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 467ec: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 467f0: 6630 bnes 46822 <== NOT EXECUTED case OBJECTS_LOCAL: _CORE_RWLock_Obtain_for_writing( 467f2: 42a7 clrl %sp@- <== NOT EXECUTED 467f4: 2040 moveal %d0,%a0 <== NOT EXECUTED 467f6: 42a7 clrl %sp@- <== NOT EXECUTED 467f8: 42a7 clrl %sp@- <== NOT EXECUTED 467fa: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 467fc: 4868 0010 pea %a0@(16) <== NOT EXECUTED 46800: 4eb9 0004 820c jsr 4820c <_CORE_RWLock_Obtain_for_writing> <== NOT EXECUTED false, /* we are not willing to wait */ 0, NULL ); _Thread_Enable_dispatch(); 46806: 4eb9 0004 97ea jsr 497ea <_Thread_Enable_dispatch> <== NOT EXECUTED return _POSIX_RWLock_Translate_core_RWLock_return_code( (CORE_RWLock_Status) _Thread_Executing->Wait.return_code 4680c: 2079 0006 1566 moveal 61566 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 0, NULL ); _Thread_Enable_dispatch(); return _POSIX_RWLock_Translate_core_RWLock_return_code( 46812: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 46816: 4eb9 0004 674c jsr 4674c <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED 4681c: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 46820: 6002 bras 46824 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 46822: 7016 moveq #22,%d0 <== NOT EXECUTED } 46824: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 46828: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004682c : */ int pthread_rwlock_unlock( pthread_rwlock_t *rwlock ) { 4682c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 46830: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 46834: 2f02 movel %d2,%sp@- <== NOT EXECUTED POSIX_RWLock_Control *the_rwlock; Objects_Locations location; CORE_RWLock_Status status; if ( !rwlock ) 46836: 4a88 tstl %a0 <== NOT EXECUTED 46838: 673c beqs 46876 <== NOT EXECUTED 4683a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4683e: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 46840: 4879 0006 1264 pea 61264 <_POSIX_RWLock_Information> <== NOT EXECUTED 46846: 4eb9 0004 8d84 jsr 48d84 <_Objects_Get> <== NOT EXECUTED return EINVAL; the_rwlock = _POSIX_RWLock_Get( rwlock, &location ); switch ( location ) { 4684c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 46850: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 46854: 6620 bnes 46876 <== NOT EXECUTED case OBJECTS_LOCAL: status = _CORE_RWLock_Release( &the_rwlock->RWLock ); 46856: 2040 moveal %d0,%a0 <== NOT EXECUTED 46858: 4868 0010 pea %a0@(16) <== NOT EXECUTED 4685c: 4eb9 0004 8298 jsr 48298 <_CORE_RWLock_Release> <== NOT EXECUTED 46862: 2400 movel %d0,%d2 <== NOT EXECUTED _Thread_Enable_dispatch(); 46864: 4eb9 0004 97ea jsr 497ea <_Thread_Enable_dispatch> <== NOT EXECUTED return _POSIX_RWLock_Translate_core_RWLock_return_code( status ); 4686a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4686c: 4eb9 0004 674c jsr 4674c <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED 46872: 508f addql #8,%sp <== NOT EXECUTED 46874: 6002 bras 46878 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 46876: 7016 moveq #22,%d0 <== NOT EXECUTED } 46878: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4687c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046880 : */ int pthread_rwlock_wrlock( pthread_rwlock_t *rwlock ) { 46880: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 46884: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46886: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED POSIX_RWLock_Control *the_rwlock; Objects_Locations location; if ( !rwlock ) 4688a: 4a8a tstl %a2 <== NOT EXECUTED 4688c: 674e beqs 468dc <== NOT EXECUTED 4688e: 486e fffc pea %fp@(-4) <== NOT EXECUTED 46892: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 46894: 4879 0006 1264 pea 61264 <_POSIX_RWLock_Information> <== NOT EXECUTED 4689a: 4eb9 0004 8d84 jsr 48d84 <_Objects_Get> <== NOT EXECUTED return EINVAL; the_rwlock = _POSIX_RWLock_Get( rwlock, &location ); switch ( location ) { 468a0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 468a4: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 468a8: 6632 bnes 468dc <== NOT EXECUTED case OBJECTS_LOCAL: _CORE_RWLock_Obtain_for_writing( 468aa: 42a7 clrl %sp@- <== NOT EXECUTED 468ac: 2040 moveal %d0,%a0 <== NOT EXECUTED 468ae: 42a7 clrl %sp@- <== NOT EXECUTED 468b0: 4878 0001 pea 1 <== NOT EXECUTED 468b4: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 468b6: 4868 0010 pea %a0@(16) <== NOT EXECUTED 468ba: 4eb9 0004 820c jsr 4820c <_CORE_RWLock_Obtain_for_writing> <== NOT EXECUTED true, /* do not timeout -- wait forever */ 0, NULL ); _Thread_Enable_dispatch(); 468c0: 4eb9 0004 97ea jsr 497ea <_Thread_Enable_dispatch> <== NOT EXECUTED return _POSIX_RWLock_Translate_core_RWLock_return_code( (CORE_RWLock_Status) _Thread_Executing->Wait.return_code 468c6: 2079 0006 1566 moveal 61566 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 0, NULL ); _Thread_Enable_dispatch(); return _POSIX_RWLock_Translate_core_RWLock_return_code( 468cc: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 468d0: 4eb9 0004 674c jsr 4674c <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED 468d6: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 468da: 6002 bras 468de <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 468dc: 7016 moveq #22,%d0 <== NOT EXECUTED } 468de: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 468e2: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046dc4 : */ int pthread_rwlockattr_destroy( pthread_rwlockattr_t *attr ) { 46dc4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46dc8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !attr || attr->is_initialized == false ) 46dcc: 4a88 tstl %a0 <== NOT EXECUTED 46dce: 670a beqs 46dda <== NOT EXECUTED 46dd0: 4a90 tstl %a0@ <== NOT EXECUTED 46dd2: 6706 beqs 46dda <== NOT EXECUTED return EINVAL; attr->is_initialized = false; 46dd4: 4290 clrl %a0@ <== NOT EXECUTED return 0; 46dd6: 4280 clrl %d0 <== NOT EXECUTED 46dd8: 6002 bras 46ddc <== NOT EXECUTED int pthread_rwlockattr_destroy( pthread_rwlockattr_t *attr ) { if ( !attr || attr->is_initialized == false ) return EINVAL; 46dda: 7016 moveq #22,%d0 <== NOT EXECUTED attr->is_initialized = false; return 0; } 46ddc: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046de0 : int pthread_rwlockattr_getpshared( const pthread_rwlockattr_t *attr, int *pshared ) { 46de0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46de4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !attr ) 46de8: 4a88 tstl %a0 <== NOT EXECUTED 46dea: 6710 beqs 46dfc <== NOT EXECUTED return EINVAL; if ( !attr->is_initialized ) 46dec: 4a90 tstl %a0@ <== NOT EXECUTED 46dee: 670c beqs 46dfc <== NOT EXECUTED return EINVAL; *pshared = attr->process_shared; 46df0: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED return 0; 46df4: 4280 clrl %d0 <== NOT EXECUTED return EINVAL; if ( !attr->is_initialized ) return EINVAL; *pshared = attr->process_shared; 46df6: 22a8 0004 movel %a0@(4),%a1@ <== NOT EXECUTED return 0; 46dfa: 6002 bras 46dfe <== NOT EXECUTED { if ( !attr ) return EINVAL; if ( !attr->is_initialized ) return EINVAL; 46dfc: 7016 moveq #22,%d0 <== NOT EXECUTED *pshared = attr->process_shared; return 0; } 46dfe: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046e04 : */ int pthread_rwlockattr_init( pthread_rwlockattr_t *attr ) { 46e04: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46e08: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !attr ) 46e0c: 4a88 tstl %a0 <== NOT EXECUTED 46e0e: 670c beqs 46e1c <== NOT EXECUTED return EINVAL; attr->is_initialized = true; 46e10: 7001 moveq #1,%d0 <== NOT EXECUTED attr->process_shared = PTHREAD_PROCESS_PRIVATE; 46e12: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED ) { if ( !attr ) return EINVAL; attr->is_initialized = true; 46e16: 2080 movel %d0,%a0@ <== NOT EXECUTED attr->process_shared = PTHREAD_PROCESS_PRIVATE; return 0; 46e18: 4280 clrl %d0 <== NOT EXECUTED 46e1a: 6002 bras 46e1e <== NOT EXECUTED int pthread_rwlockattr_init( pthread_rwlockattr_t *attr ) { if ( !attr ) return EINVAL; 46e1c: 7016 moveq #22,%d0 <== NOT EXECUTED attr->is_initialized = true; attr->process_shared = PTHREAD_PROCESS_PRIVATE; return 0; } 46e1e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046e24 : int pthread_rwlockattr_setpshared( pthread_rwlockattr_t *attr, int pshared ) { 46e24: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46e28: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 46e2c: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED if ( !attr ) 46e30: 4a88 tstl %a0 <== NOT EXECUTED 46e32: 6712 beqs 46e46 <== NOT EXECUTED return EINVAL; if ( !attr->is_initialized ) 46e34: 4a90 tstl %a0@ <== NOT EXECUTED 46e36: 670e beqs 46e46 <== NOT EXECUTED return EINVAL; switch ( pshared ) { 46e38: 7201 moveq #1,%d1 <== NOT EXECUTED 46e3a: b280 cmpl %d0,%d1 <== NOT EXECUTED 46e3c: 6508 bcss 46e46 <== NOT EXECUTED case PTHREAD_PROCESS_SHARED: case PTHREAD_PROCESS_PRIVATE: attr->process_shared = pshared; 46e3e: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED return 0; 46e42: 4280 clrl %d0 <== NOT EXECUTED 46e44: 6002 bras 46e48 <== NOT EXECUTED default: return EINVAL; 46e46: 7016 moveq #22,%d0 <== NOT EXECUTED } } 46e48: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045234 : int pthread_setcancelstate( int state, int *oldstate ) { 45234: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45238: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4523c: 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() ) 45240: 4ab9 0005 ef92 tstl 5ef92 <_Per_CPU_Information+0x8> <== NOT EXECUTED 45246: 663c bnes 45284 <== NOT EXECUTED return EPROTO; if ( !oldstate ) 45248: 4a89 tstl %a1 <== NOT EXECUTED 4524a: 673c beqs 45288 <== NOT EXECUTED return EINVAL; if ( state != PTHREAD_CANCEL_ENABLE && state != PTHREAD_CANCEL_DISABLE ) 4524c: 7201 moveq #1,%d1 <== NOT EXECUTED 4524e: b280 cmpl %d0,%d1 <== NOT EXECUTED 45250: 6536 bcss 45288 <== NOT EXECUTED return EINVAL; thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; 45252: 2079 0005 ef96 moveal 5ef96 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 45258: 2239 0005 eb0c movel 5eb0c <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED 4525e: 5281 addql #1,%d1 <== NOT EXECUTED 45260: 2068 0102 moveal %a0@(258),%a0 <== NOT EXECUTED 45264: 23c1 0005 eb0c movel %d1,5eb0c <_Thread_Dispatch_disable_level><== NOT EXECUTED _Thread_Disable_dispatch(); *oldstate = thread_support->cancelability_state; 4526a: 22a8 00d8 movel %a0@(216),%a1@ <== NOT EXECUTED thread_support->cancelability_state = state; 4526e: 2140 00d8 movel %d0,%a0@(216) <== NOT EXECUTED _POSIX_Thread_Evaluate_cancellation_and_enable_dispatch(_Thread_Executing); 45272: 2f39 0005 ef96 movel 5ef96 <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED 45278: 4eb9 0004 a040 jsr 4a040 <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch><== NOT EXECUTED /* * _Thread_Enable_dispatch is invoked by above call. */ return 0; 4527e: 588f addql #4,%sp <== NOT EXECUTED 45280: 4280 clrl %d0 <== NOT EXECUTED 45282: 6006 bras 4528a <== NOT EXECUTED * Besides this request is supposed to be for _Thread_Executing * and the ISR context is not a thread. */ if ( _ISR_Is_in_progress() ) return EPROTO; 45284: 7047 moveq #71,%d0 <== NOT EXECUTED 45286: 6002 bras 4528a <== NOT EXECUTED if ( !oldstate ) return EINVAL; if ( state != PTHREAD_CANCEL_ENABLE && state != PTHREAD_CANCEL_DISABLE ) return EINVAL; 45288: 7016 moveq #22,%d0 <== NOT EXECUTED /* * _Thread_Enable_dispatch is invoked by above call. */ return 0; } 4528a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00045290 : int pthread_setcanceltype( int type, int *oldtype ) { 45290: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45294: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 45298: 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() ) 4529c: 4ab9 0005 ef92 tstl 5ef92 <_Per_CPU_Information+0x8> <== NOT EXECUTED 452a2: 663c bnes 452e0 <== NOT EXECUTED return EPROTO; if ( !oldtype ) 452a4: 4a89 tstl %a1 <== NOT EXECUTED 452a6: 673c beqs 452e4 <== NOT EXECUTED return EINVAL; if ( type != PTHREAD_CANCEL_DEFERRED && type != PTHREAD_CANCEL_ASYNCHRONOUS ) 452a8: 7201 moveq #1,%d1 <== NOT EXECUTED 452aa: b280 cmpl %d0,%d1 <== NOT EXECUTED 452ac: 6536 bcss 452e4 <== NOT EXECUTED return EINVAL; thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; 452ae: 2079 0005 ef96 moveal 5ef96 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 452b4: 2239 0005 eb0c movel 5eb0c <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED 452ba: 5281 addql #1,%d1 <== NOT EXECUTED 452bc: 2068 0102 moveal %a0@(258),%a0 <== NOT EXECUTED 452c0: 23c1 0005 eb0c movel %d1,5eb0c <_Thread_Dispatch_disable_level><== NOT EXECUTED _Thread_Disable_dispatch(); *oldtype = thread_support->cancelability_type; 452c6: 22a8 00dc movel %a0@(220),%a1@ <== NOT EXECUTED thread_support->cancelability_type = type; 452ca: 2140 00dc movel %d0,%a0@(220) <== NOT EXECUTED _POSIX_Thread_Evaluate_cancellation_and_enable_dispatch(_Thread_Executing); 452ce: 2f39 0005 ef96 movel 5ef96 <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED 452d4: 4eb9 0004 a040 jsr 4a040 <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch><== NOT EXECUTED /* * _Thread_Enable_dispatch is invoked by above call. */ return 0; 452da: 588f addql #4,%sp <== NOT EXECUTED 452dc: 4280 clrl %d0 <== NOT EXECUTED 452de: 6006 bras 452e6 <== NOT EXECUTED * Besides this request is supposed to be for _Thread_Executing * and the ISR context is not a thread. */ if ( _ISR_Is_in_progress() ) return EPROTO; 452e0: 7047 moveq #71,%d0 <== NOT EXECUTED 452e2: 6002 bras 452e6 <== NOT EXECUTED if ( !oldtype ) return EINVAL; if ( type != PTHREAD_CANCEL_DEFERRED && type != PTHREAD_CANCEL_ASYNCHRONOUS ) return EINVAL; 452e4: 7016 moveq #22,%d0 <== NOT EXECUTED /* * _Thread_Enable_dispatch is invoked by above call. */ return 0; } 452e6: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00047b70 : int pthread_setschedparam( pthread_t thread, int policy, struct sched_param *param ) { 47b70: 4e56 ffe0 linkw %fp,#-32 47b74: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ 47b78: 242e 000c movel %fp@(12),%d2 47b7c: 282e 0010 movel %fp@(16),%d4 int rc; /* * Check all the parameters */ if ( !param ) 47b80: 6700 00e0 beqw 47c62 return EINVAL; rc = _POSIX_Thread_Translate_sched_param( 47b84: 486e fff8 pea %fp@(-8) 47b88: 486e fffc pea %fp@(-4) 47b8c: 2f04 movel %d4,%sp@- 47b8e: 2f02 movel %d2,%sp@- 47b90: 4eb9 0004 d06c jsr 4d06c <_POSIX_Thread_Translate_sched_param> policy, param, &budget_algorithm, &budget_callout ); if ( rc ) 47b96: 4fef 0010 lea %sp@(16),%sp * Check all the parameters */ if ( !param ) return EINVAL; rc = _POSIX_Thread_Translate_sched_param( 47b9a: 2600 movel %d0,%d3 policy, param, &budget_algorithm, &budget_callout ); if ( rc ) 47b9c: 6600 00ca bnew 47c68 47ba0: 486e fff4 pea %fp@(-12) 47ba4: 2f2e 0008 movel %fp@(8),%sp@- 47ba8: 4879 0006 31ba pea 631ba <_POSIX_Threads_Information> 47bae: 4eb9 0004 9944 jsr 49944 <_Objects_Get> /* * Actually change the scheduling policy and parameters */ the_thread = _POSIX_Threads_Get( thread, &location ); switch ( location ) { 47bb4: 4fef 000c lea %sp@(12),%sp 47bb8: 2640 moveal %d0,%a3 47bba: 4aae fff4 tstl %fp@(-12) 47bbe: 6600 00a6 bnew 47c66 case OBJECTS_LOCAL: api = the_thread->API_Extensions[ THREAD_API_POSIX ]; 47bc2: 246b 0102 moveal %a3@(258),%a2 if ( api->schedpolicy == SCHED_SPORADIC ) 47bc6: 7004 moveq #4,%d0 47bc8: b0aa 0084 cmpl %a2@(132),%d0 47bcc: 660c bnes 47bda <== ALWAYS TAKEN (void) _Watchdog_Remove( &api->Sporadic_timer ); 47bce: 486a 00a8 pea %a2@(168) <== NOT EXECUTED 47bd2: 4eb9 0004 b3b8 jsr 4b3b8 <_Watchdog_Remove> <== NOT EXECUTED 47bd8: 588f addql #4,%sp <== NOT EXECUTED api->schedpolicy = policy; 47bda: 2542 0084 movel %d2,%a2@(132) api->schedparam = *param; 47bde: 4878 001c pea 1c 47be2: 2f04 movel %d4,%sp@- 47be4: 486a 0088 pea %a2@(136) 47be8: 4eb9 0004 fcc4 jsr 4fcc4 the_thread->budget_algorithm = budget_algorithm; 47bee: 276e fffc 007a movel %fp@(-4),%a3@(122) the_thread->budget_callout = budget_callout; switch ( api->schedpolicy ) { 47bf4: 4fef 000c lea %sp@(12),%sp (void) _Watchdog_Remove( &api->Sporadic_timer ); api->schedpolicy = policy; api->schedparam = *param; the_thread->budget_algorithm = budget_algorithm; the_thread->budget_callout = budget_callout; 47bf8: 276e fff8 007e movel %fp@(-8),%a3@(126) switch ( api->schedpolicy ) { 47bfe: 4a82 tstl %d2 47c00: 6d58 blts 47c5a <== NEVER TAKEN 47c02: 7002 moveq #2,%d0 47c04: b082 cmpl %d2,%d0 47c06: 6c0a bges 47c12 <== ALWAYS TAKEN 47c08: 103c 0004 moveb #4,%d0 <== NOT EXECUTED 47c0c: b082 cmpl %d2,%d0 <== NOT EXECUTED 47c0e: 664a bnes 47c5a <== NOT EXECUTED 47c10: 602a bras 47c3c <== NOT EXECUTED 47c12: 4280 clrl %d0 47c14: 1039 0006 16d6 moveb 616d6 ,%d0 case SCHED_OTHER: case SCHED_FIFO: case SCHED_RR: the_thread->cpu_time_budget = _Thread_Ticks_per_timeslice; 47c1a: 41f9 0006 2fb0 lea 62fb0 <_Thread_Ticks_per_timeslice>,%a0 47c20: 90aa 0088 subl %a2@(136),%d0 47c24: 2750 0076 movel %a0@,%a3@(118) the_thread->real_priority = 47c28: 2740 0018 movel %d0,%a3@(24) _POSIX_Priority_To_core( api->schedparam.sched_priority ); _Thread_Change_priority( 47c2c: 4878 0001 pea 1 47c30: 2f00 movel %d0,%sp@- 47c32: 2f0b movel %a3,%sp@- 47c34: 4eb9 0004 9f10 jsr 49f10 <_Thread_Change_priority> 47c3a: 601a bras 47c56 true ); break; case SCHED_SPORADIC: api->ss_high_priority = api->schedparam.sched_priority; 47c3c: 256a 0088 00a4 movel %a2@(136),%a2@(164) <== NOT EXECUTED _Watchdog_Remove( &api->Sporadic_timer ); 47c42: 486a 00a8 pea %a2@(168) <== NOT EXECUTED 47c46: 4eb9 0004 b3b8 jsr 4b3b8 <_Watchdog_Remove> <== NOT EXECUTED _POSIX_Threads_Sporadic_budget_TSR( 0, the_thread ); 47c4c: 2f0b movel %a3,%sp@- <== NOT EXECUTED 47c4e: 42a7 clrl %sp@- <== NOT EXECUTED 47c50: 4eb9 0004 7a4c jsr 47a4c <_POSIX_Threads_Sporadic_budget_TSR><== NOT EXECUTED break; 47c56: 4fef 000c lea %sp@(12),%sp } _Thread_Enable_dispatch(); 47c5a: 4eb9 0004 a3aa jsr 4a3aa <_Thread_Enable_dispatch> return 0; 47c60: 6006 bras 47c68 /* * Check all the parameters */ if ( !param ) return EINVAL; 47c62: 7616 moveq #22,%d3 <== NOT EXECUTED 47c64: 6002 bras 47c68 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return ESRCH; 47c66: 7603 moveq #3,%d3 <== NOT EXECUTED } 47c68: 2003 movel %d3,%d0 47c6a: 4cee 0c1c ffe0 moveml %fp@(-32),%d2-%d4/%a2-%a3 47c70: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045758 : int pthread_setspecific( pthread_key_t key, const void *value ) { 45758: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4575c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4575e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45760: 486e fffc pea %fp@(-4) <== NOT EXECUTED 45764: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 45768: 4879 0006 0518 pea 60518 <_POSIX_Keys_Information> <== NOT EXECUTED 4576e: 4eb9 0004 7a60 jsr 47a60 <_Objects_Get> <== NOT EXECUTED uint32_t api; uint32_t index; Objects_Locations location; the_key = _POSIX_Keys_Get( key, &location ); switch ( location ) { 45774: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 45778: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4577c: 6634 bnes 457b2 <== NOT EXECUTED case OBJECTS_LOCAL: api = _Objects_Get_API( _Thread_Executing->Object.id ); 4577e: 2079 0006 0632 moveal 60632 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 45784: 7618 moveq #24,%d3 <== NOT EXECUTED index = _Objects_Get_index( _Thread_Executing->Object.id ); the_key->Values[ api ][ index ] = (void *) value; 45786: 2240 moveal %d0,%a1 <== NOT EXECUTED the_key = _POSIX_Keys_Get( key, &location ); switch ( location ) { case OBJECTS_LOCAL: api = _Objects_Get_API( _Thread_Executing->Object.id ); 45788: 2428 0008 movel %a0@(8),%d2 <== NOT EXECUTED 4578c: 2202 movel %d2,%d1 <== NOT EXECUTED 4578e: e6a9 lsrl %d3,%d1 <== NOT EXECUTED 45790: 163c 0007 moveb #7,%d3 <== NOT EXECUTED 45794: c283 andl %d3,%d1 <== NOT EXECUTED index = _Objects_Get_index( _Thread_Executing->Object.id ); 45796: 0282 0000 ffff andil #65535,%d2 <== NOT EXECUTED the_key->Values[ api ][ index ] = (void *) value; 4579c: 2071 1c14 moveal %a1@(00000014,%d1:l:4),%a0 <== NOT EXECUTED 457a0: 43ee 000c lea %fp@(12),%a1 <== NOT EXECUTED 457a4: 2191 2c00 movel %a1@,%a0@(00000000,%d2:l:4) <== NOT EXECUTED _Thread_Enable_dispatch(); 457a8: 4eb9 0004 84c6 jsr 484c6 <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 457ae: 4280 clrl %d0 <== NOT EXECUTED 457b0: 6002 bras 457b4 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 457b2: 7016 moveq #22,%d0 <== NOT EXECUTED } 457b4: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 457b8: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 457bc: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004b540 : int pthread_sigmask( int how, const sigset_t *set, sigset_t *oset ) { 4b540: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b544: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4b548: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b54a: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED 4b54e: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED POSIX_API_Control *api; if ( !set && !oset ) 4b552: 4a89 tstl %a1 <== NOT EXECUTED 4b554: 6604 bnes 4b55a <== NOT EXECUTED 4b556: 4a8a tstl %a2 <== NOT EXECUTED 4b558: 6742 beqs 4b59c <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; 4b55a: 2079 0006 05c2 moveal 605c2 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 4b560: 2068 0102 moveal %a0@(258),%a0 <== NOT EXECUTED if ( oset ) 4b564: 4a8a tstl %a2 <== NOT EXECUTED 4b566: 6704 beqs 4b56c <== NOT EXECUTED *oset = api->signals_blocked; 4b568: 24a8 00d0 movel %a0@(208),%a2@ <== NOT EXECUTED if ( !set ) 4b56c: 4a89 tstl %a1 <== NOT EXECUTED 4b56e: 6756 beqs 4b5c6 <== NOT EXECUTED return 0; switch ( how ) { 4b570: 7201 moveq #1,%d1 <== NOT EXECUTED 4b572: b280 cmpl %d0,%d1 <== NOT EXECUTED 4b574: 670e beqs 4b584 <== NOT EXECUTED 4b576: 123c 0002 moveb #2,%d1 <== NOT EXECUTED 4b57a: b280 cmpl %d0,%d1 <== NOT EXECUTED 4b57c: 670e beqs 4b58c <== NOT EXECUTED 4b57e: 4a80 tstl %d0 <== NOT EXECUTED 4b580: 6714 beqs 4b596 <== NOT EXECUTED 4b582: 6018 bras 4b59c <== NOT EXECUTED case SIG_BLOCK: api->signals_blocked |= *set; 4b584: 2011 movel %a1@,%d0 <== NOT EXECUTED 4b586: 81a8 00d0 orl %d0,%a0@(208) <== NOT EXECUTED break; 4b58a: 6020 bras 4b5ac <== NOT EXECUTED case SIG_UNBLOCK: api->signals_blocked &= ~*set; 4b58c: 2011 movel %a1@,%d0 <== NOT EXECUTED 4b58e: 4680 notl %d0 <== NOT EXECUTED 4b590: c1a8 00d0 andl %d0,%a0@(208) <== NOT EXECUTED break; 4b594: 6016 bras 4b5ac <== NOT EXECUTED case SIG_SETMASK: api->signals_blocked = *set; 4b596: 2151 00d0 movel %a1@,%a0@(208) <== NOT EXECUTED break; 4b59a: 6010 bras 4b5ac <== NOT EXECUTED default: rtems_set_errno_and_return_minus_one( EINVAL ); 4b59c: 4eb9 0004 d7dc jsr 4d7dc <__errno> <== NOT EXECUTED 4b5a2: 2040 moveal %d0,%a0 <== NOT EXECUTED 4b5a4: 7016 moveq #22,%d0 <== NOT EXECUTED 4b5a6: 2080 movel %d0,%a0@ <== NOT EXECUTED 4b5a8: 70ff moveq #-1,%d0 <== NOT EXECUTED 4b5aa: 601c bras 4b5c8 <== NOT EXECUTED /* XXX are there critical section problems here? */ /* XXX evaluate the new set */ if ( ~api->signals_blocked & (api->signals_pending | _POSIX_signals_Pending) ) { 4b5ac: 2039 0006 07e8 movel 607e8 <_POSIX_signals_Pending>,%d0 <== NOT EXECUTED /* XXX are there critical section problems here? */ /* XXX evaluate the new set */ if ( ~api->signals_blocked & 4b5b2: 2228 00d0 movel %a0@(208),%d1 <== NOT EXECUTED 4b5b6: 4681 notl %d1 <== NOT EXECUTED (api->signals_pending | _POSIX_signals_Pending) ) { 4b5b8: 80a8 00d4 orl %a0@(212),%d0 <== NOT EXECUTED /* XXX are there critical section problems here? */ /* XXX evaluate the new set */ if ( ~api->signals_blocked & 4b5bc: c081 andl %d1,%d0 <== NOT EXECUTED 4b5be: 6706 beqs 4b5c6 <== NOT EXECUTED (api->signals_pending | _POSIX_signals_Pending) ) { _Thread_Dispatch(); 4b5c0: 4eb9 0004 83e8 jsr 483e8 <_Thread_Dispatch> <== NOT EXECUTED } return 0; 4b5c6: 4280 clrl %d0 <== NOT EXECUTED } 4b5c8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4b5cc: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000456f0 : */ int pthread_spin_destroy( pthread_spinlock_t *spinlock ) { 456f0: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 456f4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 456f8: 2f0b movel %a3,%sp@- <== NOT EXECUTED 456fa: 2f0a movel %a2,%sp@- <== NOT EXECUTED POSIX_Spinlock_Control *the_spinlock = NULL; Objects_Locations location; if ( !spinlock ) 456fc: 4a88 tstl %a0 <== NOT EXECUTED 456fe: 6756 beqs 45756 <== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_Spinlock_Control *_POSIX_Spinlock_Get ( pthread_spinlock_t *spinlock, Objects_Locations *location ) { return (POSIX_Spinlock_Control *) _Objects_Get( 45700: 486e fffc pea %fp@(-4) <== NOT EXECUTED 45704: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 45706: 4879 0005 f664 pea 5f664 <_POSIX_Spinlock_Information> <== NOT EXECUTED 4570c: 4eb9 0004 76dc jsr 476dc <_Objects_Get> <== NOT EXECUTED return EINVAL; the_spinlock = _POSIX_Spinlock_Get( spinlock, &location ); switch ( location ) { 45712: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 45716: 2440 moveal %d0,%a2 <== NOT EXECUTED 45718: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4571c: 6638 bnes 45756 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _CORE_spinlock_Is_busy( CORE_spinlock_Control *the_spinlock ) { return (the_spinlock->users != 0); 4571e: 202a 0018 movel %a2@(24),%d0 <== NOT EXECUTED 45722: 47f9 0004 8142 lea 48142 <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED case OBJECTS_LOCAL: if ( _CORE_spinlock_Is_busy( &the_spinlock->Spinlock ) ) { 45728: 6706 beqs 45730 <== NOT EXECUTED _Thread_Enable_dispatch(); 4572a: 4e93 jsr %a3@ <== NOT EXECUTED return EBUSY; 4572c: 7010 moveq #16,%d0 <== NOT EXECUTED 4572e: 6028 bras 45758 <== NOT EXECUTED } _Objects_Close( &_POSIX_Spinlock_Information, &the_spinlock->Object ); 45730: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45732: 4879 0005 f664 pea 5f664 <_POSIX_Spinlock_Information> <== NOT EXECUTED 45738: 4eb9 0004 7300 jsr 47300 <_Objects_Close> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _POSIX_Spinlock_Free ( POSIX_Spinlock_Control *the_spinlock ) { _Objects_Free( &_POSIX_Spinlock_Information, &the_spinlock->Object ); 4573e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45740: 4879 0005 f664 pea 5f664 <_POSIX_Spinlock_Information> <== NOT EXECUTED 45746: 4eb9 0004 7578 jsr 47578 <_Objects_Free> <== NOT EXECUTED _POSIX_Spinlock_Free( the_spinlock ); _Thread_Enable_dispatch(); 4574c: 4e93 jsr %a3@ <== NOT EXECUTED return 0; 4574e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 45752: 4280 clrl %d0 <== NOT EXECUTED 45754: 6002 bras 45758 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 45756: 7016 moveq #22,%d0 <== NOT EXECUTED } 45758: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 4575c: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED 45760: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045764 : int pthread_spin_init( pthread_spinlock_t *spinlock, int pshared ) { 45764: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 45768: 48d7 1c00 moveml %a2-%a4,%sp@ <== NOT EXECUTED 4576c: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED POSIX_Spinlock_Control *the_spinlock; CORE_spinlock_Attributes attributes; if ( !spinlock ) 45770: 4a8a tstl %a2 <== NOT EXECUTED 45772: 6764 beqs 457d8 <== NOT EXECUTED return EINVAL; switch ( pshared ) { 45774: 4aae 000c tstl %fp@(12) <== NOT EXECUTED 45778: 665e bnes 457d8 <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 4577a: 2039 0005 f468 movel 5f468 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 45780: 5280 addql #1,%d0 <== NOT EXECUTED 45782: 23c0 0005 f468 movel %d0,5f468 <_Thread_Dispatch_disable_level><== NOT EXECUTED * the inactive chain of free spinlock control blocks. */ RTEMS_INLINE_ROUTINE POSIX_Spinlock_Control *_POSIX_Spinlock_Allocate( void ) { return (POSIX_Spinlock_Control *) _Objects_Allocate( &_POSIX_Spinlock_Information ); 45788: 4879 0005 f664 pea 5f664 <_POSIX_Spinlock_Information> <== NOT EXECUTED 4578e: 49f9 0004 8142 lea 48142 <_Thread_Enable_dispatch>,%a4 <== NOT EXECUTED 45794: 4eb9 0004 7284 jsr 47284 <_Objects_Allocate> <== NOT EXECUTED _Thread_Disable_dispatch(); /* prevents deletion */ the_spinlock = _POSIX_Spinlock_Allocate(); if ( !the_spinlock ) { 4579a: 588f addql #4,%sp <== NOT EXECUTED 4579c: 2640 moveal %d0,%a3 <== NOT EXECUTED 4579e: 4a80 tstl %d0 <== NOT EXECUTED 457a0: 6606 bnes 457a8 <== NOT EXECUTED _Thread_Enable_dispatch(); 457a2: 4e94 jsr %a4@ <== NOT EXECUTED return EAGAIN; 457a4: 700b moveq #11,%d0 <== NOT EXECUTED 457a6: 6032 bras 457da <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _CORE_spinlock_Initialize_attributes( CORE_spinlock_Attributes *the_attributes ) { the_attributes->XXX = 0; 457a8: 204e moveal %fp,%a0 <== NOT EXECUTED 457aa: 42a0 clrl %a0@- <== NOT EXECUTED } _CORE_spinlock_Initialize_attributes( &attributes ); _CORE_spinlock_Initialize( &the_spinlock->Spinlock, &attributes ); 457ac: 2f08 movel %a0,%sp@- <== NOT EXECUTED 457ae: 486b 0010 pea %a3@(16) <== NOT EXECUTED 457b2: 4eb9 0004 6c80 jsr 46c80 <_CORE_spinlock_Initialize> <== NOT EXECUTED uint32_t name ) { _Objects_Set_local_object( information, _Objects_Get_index( the_object->id ), 457b8: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, uint32_t name ) { _Objects_Set_local_object( 457bc: 4281 clrl %d1 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 457be: 2079 0005 f67c moveal 5f67c <_POSIX_Spinlock_Information+0x18>,%a0<== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, uint32_t name ) { _Objects_Set_local_object( 457c4: 3200 movew %d0,%d1 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 457c6: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4) <== NOT EXECUTED _Objects_Get_index( the_object->id ), the_object ); /* ASSERT: information->is_string == false */ the_object->name.name_u32 = name; 457ca: 42ab 000c clrl %a3@(12) <== NOT EXECUTED _Objects_Open_u32( &_POSIX_Spinlock_Information, &the_spinlock->Object, 0 ); *spinlock = the_spinlock->Object.id; 457ce: 2480 movel %d0,%a2@ <== NOT EXECUTED _Thread_Enable_dispatch(); 457d0: 4e94 jsr %a4@ <== NOT EXECUTED return 0; 457d2: 508f addql #8,%sp <== NOT EXECUTED 457d4: 4280 clrl %d0 <== NOT EXECUTED 457d6: 6002 bras 457da <== NOT EXECUTED switch ( pshared ) { case PTHREAD_PROCESS_PRIVATE: /* only supported values */ break; case PTHREAD_PROCESS_SHARED: default: return EINVAL; 457d8: 7016 moveq #22,%d0 <== NOT EXECUTED *spinlock = the_spinlock->Object.id; _Thread_Enable_dispatch(); return 0; } 457da: 4cee 1c00 fff0 moveml %fp@(-16),%a2-%a4 <== NOT EXECUTED 457e0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000457e4 : */ int pthread_spin_lock( pthread_spinlock_t *spinlock ) { 457e4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 457e8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 457ec: 2f02 movel %d2,%sp@- <== NOT EXECUTED POSIX_Spinlock_Control *the_spinlock = NULL; Objects_Locations location; CORE_spinlock_Status status; if ( !spinlock ) 457ee: 4a88 tstl %a0 <== NOT EXECUTED 457f0: 6744 beqs 45836 <== NOT EXECUTED RTEMS_INLINE_ROUTINE POSIX_Spinlock_Control *_POSIX_Spinlock_Get ( pthread_spinlock_t *spinlock, Objects_Locations *location ) { return (POSIX_Spinlock_Control *) _Objects_Get( 457f2: 486e fffc pea %fp@(-4) <== NOT EXECUTED 457f6: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 457f8: 4879 0005 f664 pea 5f664 <_POSIX_Spinlock_Information> <== NOT EXECUTED 457fe: 4eb9 0004 76dc jsr 476dc <_Objects_Get> <== NOT EXECUTED return EINVAL; the_spinlock = _POSIX_Spinlock_Get( spinlock, &location ); switch ( location ) { 45804: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 45808: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4580c: 6628 bnes 45836 <== NOT EXECUTED case OBJECTS_LOCAL: status = _CORE_spinlock_Wait( &the_spinlock->Spinlock, true, 0 ); 4580e: 42a7 clrl %sp@- <== NOT EXECUTED 45810: 4878 0001 pea 1 <== NOT EXECUTED 45814: 2040 moveal %d0,%a0 <== NOT EXECUTED 45816: 4868 0010 pea %a0@(16) <== NOT EXECUTED 4581a: 4eb9 0004 6cf0 jsr 46cf0 <_CORE_spinlock_Wait> <== NOT EXECUTED 45820: 2400 movel %d0,%d2 <== NOT EXECUTED _Thread_Enable_dispatch(); 45822: 4eb9 0004 8142 jsr 48142 <_Thread_Enable_dispatch> <== NOT EXECUTED return _POSIX_Spinlock_Translate_core_spinlock_return_code( status ); 45828: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4582a: 4eb9 0004 5840 jsr 45840 <_POSIX_Spinlock_Translate_core_spinlock_return_code><== NOT EXECUTED 45830: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 45834: 6002 bras 45838 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 45836: 7016 moveq #22,%d0 <== NOT EXECUTED } 45838: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4583c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045858 : */ int pthread_spin_trylock( pthread_spinlock_t *spinlock ) { 45858: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4585c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 45860: 2f02 movel %d2,%sp@- <== NOT EXECUTED POSIX_Spinlock_Control *the_spinlock = NULL; Objects_Locations location; CORE_spinlock_Status status; if ( !spinlock ) 45862: 4a88 tstl %a0 <== NOT EXECUTED 45864: 6742 beqs 458a8 <== NOT EXECUTED 45866: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4586a: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4586c: 4879 0005 f664 pea 5f664 <_POSIX_Spinlock_Information> <== NOT EXECUTED 45872: 4eb9 0004 76dc jsr 476dc <_Objects_Get> <== NOT EXECUTED return EINVAL; the_spinlock = _POSIX_Spinlock_Get( spinlock, &location ); switch ( location ) { 45878: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4587c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 45880: 6626 bnes 458a8 <== NOT EXECUTED case OBJECTS_LOCAL: status = _CORE_spinlock_Wait( &the_spinlock->Spinlock, false, 0 ); 45882: 42a7 clrl %sp@- <== NOT EXECUTED 45884: 2040 moveal %d0,%a0 <== NOT EXECUTED 45886: 42a7 clrl %sp@- <== NOT EXECUTED 45888: 4868 0010 pea %a0@(16) <== NOT EXECUTED 4588c: 4eb9 0004 6cf0 jsr 46cf0 <_CORE_spinlock_Wait> <== NOT EXECUTED 45892: 2400 movel %d0,%d2 <== NOT EXECUTED _Thread_Enable_dispatch(); 45894: 4eb9 0004 8142 jsr 48142 <_Thread_Enable_dispatch> <== NOT EXECUTED return _POSIX_Spinlock_Translate_core_spinlock_return_code( status ); 4589a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4589c: 4eb9 0004 5840 jsr 45840 <_POSIX_Spinlock_Translate_core_spinlock_return_code><== NOT EXECUTED 458a2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 458a6: 6002 bras 458aa <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 458a8: 7016 moveq #22,%d0 <== NOT EXECUTED } 458aa: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 458ae: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000458b4 : */ int pthread_spin_unlock( pthread_spinlock_t *spinlock ) { 458b4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 458b8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 458bc: 2f02 movel %d2,%sp@- <== NOT EXECUTED POSIX_Spinlock_Control *the_spinlock = NULL; Objects_Locations location; CORE_spinlock_Status status; if ( !spinlock ) 458be: 4a88 tstl %a0 <== NOT EXECUTED 458c0: 673c beqs 458fe <== NOT EXECUTED 458c2: 486e fffc pea %fp@(-4) <== NOT EXECUTED 458c6: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 458c8: 4879 0005 f664 pea 5f664 <_POSIX_Spinlock_Information> <== NOT EXECUTED 458ce: 4eb9 0004 76dc jsr 476dc <_Objects_Get> <== NOT EXECUTED return EINVAL; the_spinlock = _POSIX_Spinlock_Get( spinlock, &location ); switch ( location ) { 458d4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 458d8: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 458dc: 6620 bnes 458fe <== NOT EXECUTED case OBJECTS_LOCAL: status = _CORE_spinlock_Release( &the_spinlock->Spinlock ); 458de: 2040 moveal %d0,%a0 <== NOT EXECUTED 458e0: 4868 0010 pea %a0@(16) <== NOT EXECUTED 458e4: 4eb9 0004 6ca0 jsr 46ca0 <_CORE_spinlock_Release> <== NOT EXECUTED 458ea: 2400 movel %d0,%d2 <== NOT EXECUTED _Thread_Enable_dispatch(); 458ec: 4eb9 0004 8142 jsr 48142 <_Thread_Enable_dispatch> <== NOT EXECUTED return _POSIX_Spinlock_Translate_core_spinlock_return_code( status ); 458f2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 458f4: 4eb9 0004 5840 jsr 45840 <_POSIX_Spinlock_Translate_core_spinlock_return_code><== NOT EXECUTED 458fa: 508f addql #8,%sp <== NOT EXECUTED 458fc: 6002 bras 45900 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return EINVAL; 458fe: 7016 moveq #22,%d0 <== NOT EXECUTED } 45900: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 45904: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045b04 : * * 18.2.2 Setting Cancelability State, P1003.1c/Draft 10, p. 183 */ void pthread_testcancel( void ) { 45b04: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45b08: 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() ) 45b0a: 4ab9 0005 f858 tstl 5f858 <_Per_CPU_Information+0x8> <== NOT EXECUTED 45b10: 6646 bnes 45b58 <== NOT EXECUTED return; thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; 45b12: 2079 0005 f85c moveal 5f85c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 45b18: 2039 0005 f3d2 movel 5f3d2 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 45b1e: 5280 addql #1,%d0 <== NOT EXECUTED 45b20: 2068 0102 moveal %a0@(258),%a0 <== NOT EXECUTED 45b24: 23c0 0005 f3d2 movel %d0,5f3d2 <_Thread_Dispatch_disable_level><== NOT EXECUTED _Thread_Disable_dispatch(); if ( thread_support->cancelability_state == PTHREAD_CANCEL_ENABLE && 45b2a: 4aa8 00d8 tstl %a0@(216) <== NOT EXECUTED 45b2e: 660a bnes 45b3a <== NOT EXECUTED /* Setting Cancelability State, P1003.1c/Draft 10, p. 183 */ int _EXFUN(pthread_setcancelstate, (int __state, int *__oldstate)); int _EXFUN(pthread_setcanceltype, (int __type, int *__oldtype)); void _EXFUN(pthread_testcancel, (void)); 45b30: 4aa8 00e0 tstl %a0@(224) <== NOT EXECUTED 45b34: 56c2 sne %d2 <== NOT EXECUTED 45b36: 4482 negl %d2 <== NOT EXECUTED 45b38: 6002 bras 45b3c <== NOT EXECUTED */ void pthread_testcancel( void ) { POSIX_API_Control *thread_support; bool cancel = false; 45b3a: 4202 clrb %d2 <== NOT EXECUTED _Thread_Disable_dispatch(); if ( thread_support->cancelability_state == PTHREAD_CANCEL_ENABLE && thread_support->cancelation_requested ) cancel = true; _Thread_Enable_dispatch(); 45b3c: 4eb9 0004 81f6 jsr 481f6 <_Thread_Enable_dispatch> <== NOT EXECUTED if ( cancel ) 45b42: 4a02 tstb %d2 <== NOT EXECUTED 45b44: 6712 beqs 45b58 <== NOT EXECUTED _POSIX_Thread_Exit( _Thread_Executing, PTHREAD_CANCELED ); 45b46: 4878 ffff pea ffffffff <== NOT EXECUTED 45b4a: 2f39 0005 f85c movel 5f85c <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED 45b50: 4eb9 0004 af90 jsr 4af90 <_POSIX_Thread_Exit> <== NOT EXECUTED 45b56: 508f addql #8,%sp <== NOT EXECUTED } 45b58: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 45b5c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000464f0 : * errno - otherwise */ int rtems_aio_enqueue (rtems_aio_request *req) { 464f0: 4e56 ffc0 linkw %fp,#-64 <== NOT EXECUTED 464f4: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@ <== NOT EXECUTED struct sched_param param; /* The queue should be initialized */ AIO_assert (aio_request_queue.initialized == AIO_QUEUE_INITIALIZED); result = pthread_mutex_lock (&aio_request_queue.mutex); 464f8: 4879 0006 0e58 pea 60e58 <== NOT EXECUTED 464fe: 4bf9 0004 6e18 lea 46e18 ,%a5 <== NOT EXECUTED * errno - otherwise */ int rtems_aio_enqueue (rtems_aio_request *req) { 46504: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED struct sched_param param; /* The queue should be initialized */ AIO_assert (aio_request_queue.initialized == AIO_QUEUE_INITIALIZED); result = pthread_mutex_lock (&aio_request_queue.mutex); 46508: 4e95 jsr %a5@ <== NOT EXECUTED if (result != 0) { 4650a: 588f addql #4,%sp <== NOT EXECUTED struct sched_param param; /* The queue should be initialized */ AIO_assert (aio_request_queue.initialized == AIO_QUEUE_INITIALIZED); result = pthread_mutex_lock (&aio_request_queue.mutex); 4650c: 2400 movel %d0,%d2 <== NOT EXECUTED if (result != 0) { 4650e: 670c beqs 4651c <== NOT EXECUTED free (req); 46510: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46512: 4eb9 0004 31fc jsr 431fc <== NOT EXECUTED 46518: 6000 01c6 braw 466e0 <== NOT EXECUTED return result; } /* _POSIX_PRIORITIZED_IO and _POSIX_PRIORITY_SCHEDULING are defined, we can use aio_reqprio to lower the priority of the request */ pthread_getschedparam (pthread_self(), &policy, ¶m); 4651c: 47f9 0004 75f4 lea 475f4 ,%a3 <== NOT EXECUTED 46522: 4e93 jsr %a3@ <== NOT EXECUTED 46524: 486e ffdc pea %fp@(-36) <== NOT EXECUTED 46528: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4652c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4652e: 4eb9 0004 7218 jsr 47218 <== NOT EXECUTED req->caller_thread = pthread_self (); 46534: 4e93 jsr %a3@ <== NOT EXECUTED req->priority = param.sched_priority - req->aiocbp->aio_reqprio; 46536: 206a 0014 moveal %a2@(20),%a0 <== NOT EXECUTED req->policy = policy; req->aiocbp->error_code = EINPROGRESS; 4653a: 7277 moveq #119,%d1 <== NOT EXECUTED req->aiocbp->return_value = 0; if ((aio_request_queue.idle_threads == 0) && 4653c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED /* _POSIX_PRIORITIZED_IO and _POSIX_PRIORITY_SCHEDULING are defined, we can use aio_reqprio to lower the priority of the request */ pthread_getschedparam (pthread_self(), &policy, ¶m); req->caller_thread = pthread_self (); 46540: 2540 0010 movel %d0,%a2@(16) <== NOT EXECUTED req->priority = param.sched_priority - req->aiocbp->aio_reqprio; 46544: 202e ffdc movel %fp@(-36),%d0 <== NOT EXECUTED 46548: 90a8 0014 subl %a0@(20),%d0 <== NOT EXECUTED req->policy = policy; 4654c: 256e fff8 0008 movel %fp@(-8),%a2@(8) <== NOT EXECUTED /* _POSIX_PRIORITIZED_IO and _POSIX_PRIORITY_SCHEDULING are defined, we can use aio_reqprio to lower the priority of the request */ pthread_getschedparam (pthread_self(), &policy, ¶m); req->caller_thread = pthread_self (); req->priority = param.sched_priority - req->aiocbp->aio_reqprio; 46552: 2540 000c movel %d0,%a2@(12) <== NOT EXECUTED req->policy = policy; req->aiocbp->error_code = EINPROGRESS; 46556: 2141 0030 movel %d1,%a0@(48) <== NOT EXECUTED req->aiocbp->return_value = 0; 4655a: 42a8 0034 clrl %a0@(52) <== NOT EXECUTED if ((aio_request_queue.idle_threads == 0) && 4655e: 4ab9 0006 0ec0 tstl 60ec0 <== NOT EXECUTED 46564: 6600 00ae bnew 46614 <== NOT EXECUTED 46568: 7004 moveq #4,%d0 <== NOT EXECUTED 4656a: b0b9 0006 0ebc cmpl 60ebc ,%d0 <== NOT EXECUTED 46570: 6d00 00a2 bltw 46614 <== NOT EXECUTED aio_request_queue.active_threads < AIO_MAX_THREADS) /* we still have empty places on the active_threads chain */ { chain = &aio_request_queue.work_req; r_chain = rtems_aio_search_fd (chain, req->aiocbp->aio_fildes, 1); 46574: 4878 0001 pea 1 <== NOT EXECUTED 46578: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4657a: 4879 0006 0ea0 pea 60ea0 <== NOT EXECUTED 46580: 4eb9 0004 60ea jsr 460ea <== NOT EXECUTED if (r_chain->new_fd == 1) { 46586: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4658a: 7201 moveq #1,%d1 <== NOT EXECUTED if ((aio_request_queue.idle_threads == 0) && aio_request_queue.active_threads < AIO_MAX_THREADS) /* we still have empty places on the active_threads chain */ { chain = &aio_request_queue.work_req; r_chain = rtems_aio_search_fd (chain, req->aiocbp->aio_fildes, 1); 4658c: 2640 moveal %d0,%a3 <== NOT EXECUTED 4658e: 2800 movel %d0,%d4 <== NOT EXECUTED 46590: 2600 movel %d0,%d3 <== NOT EXECUTED 46592: 5084 addql #8,%d4 <== NOT EXECUTED 46594: 0683 0000 001c addil #28,%d3 <== NOT EXECUTED 4659a: 49eb 0020 lea %a3@(32),%a4 <== NOT EXECUTED if (r_chain->new_fd == 1) { 4659e: b2ab 0018 cmpl %a3@(24),%d1 <== NOT EXECUTED 465a2: 665e bnes 46602 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Chain_Prepend( Chain_Control *the_chain, Chain_Node *the_node ) { _Chain_Insert(_Chain_Head(the_chain), the_node); 465a4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 465a6: 2f04 movel %d4,%sp@- <== NOT EXECUTED 465a8: 4eb9 0004 86d0 jsr 486d0 <_Chain_Insert> <== NOT EXECUTED rtems_chain_prepend (&r_chain->perfd, &req->next_prio); r_chain->new_fd = 0; 465ae: 42ab 0018 clrl %a3@(24) <== NOT EXECUTED pthread_mutex_init (&r_chain->mutex, NULL); 465b2: 42a7 clrl %sp@- <== NOT EXECUTED 465b4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 465b6: 4eb9 0004 6d00 jsr 46d00 <== NOT EXECUTED pthread_cond_init (&r_chain->cond, NULL); 465bc: 42a7 clrl %sp@- <== NOT EXECUTED 465be: 2f0c movel %a4,%sp@- <== NOT EXECUTED 465c0: 4eb9 0004 69a0 jsr 469a0 <== NOT EXECUTED AIO_printf ("New thread \n"); result = pthread_create (&thid, &aio_request_queue.attr, 465c6: 2f0b movel %a3,%sp@- <== NOT EXECUTED 465c8: 487a fbe8 pea %pc@(461b2 ) <== NOT EXECUTED 465cc: 4879 0006 0e60 pea 60e60 <== NOT EXECUTED 465d2: 486e fffc pea %fp@(-4) <== NOT EXECUTED 465d6: 4eb9 0004 7010 jsr 47010 <== NOT EXECUTED rtems_aio_handle, (void *) r_chain); if (result != 0) { 465dc: 4fef 0028 lea %sp@(40),%sp <== NOT EXECUTED r_chain->new_fd = 0; pthread_mutex_init (&r_chain->mutex, NULL); pthread_cond_init (&r_chain->cond, NULL); AIO_printf ("New thread \n"); result = pthread_create (&thid, &aio_request_queue.attr, 465e0: 2600 movel %d0,%d3 <== NOT EXECUTED rtems_aio_handle, (void *) r_chain); if (result != 0) { 465e2: 6714 beqs 465f8 <== NOT EXECUTED pthread_mutex_unlock (&aio_request_queue.mutex); 465e4: 4879 0006 0e58 pea 60e58 <== NOT EXECUTED return result; 465ea: 2403 movel %d3,%d2 <== NOT EXECUTED AIO_printf ("New thread \n"); result = pthread_create (&thid, &aio_request_queue.attr, rtems_aio_handle, (void *) r_chain); if (result != 0) { pthread_mutex_unlock (&aio_request_queue.mutex); 465ec: 4eb9 0004 6eb0 jsr 46eb0 <== NOT EXECUTED return result; 465f2: 588f addql #4,%sp <== NOT EXECUTED 465f4: 6000 00ec braw 466e2 <== NOT EXECUTED } ++aio_request_queue.active_threads; 465f8: 52b9 0006 0ebc addql #1,60ebc <== NOT EXECUTED 465fe: 6000 00d4 braw 466d4 <== NOT EXECUTED } else { /* put request in the fd chain it belongs to */ pthread_mutex_lock (&r_chain->mutex); 46602: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46604: 4e95 jsr %a5@ <== NOT EXECUTED rtems_aio_insert_prio (&r_chain->perfd, req); 46606: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46608: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4660a: 4eb9 0004 63ec jsr 463ec <== NOT EXECUTED pthread_cond_signal (&r_chain->cond); 46610: 2f0c movel %a4,%sp@- <== NOT EXECUTED 46612: 603c bras 46650 <== NOT EXECUTED else { /* the maximum number of threads has been already created even though some of them might be idle. The request belongs to one of the active fd chain */ r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, 46614: 42a7 clrl %sp@- <== NOT EXECUTED 46616: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 46618: 49f9 0004 60ea lea 460ea ,%a4 <== NOT EXECUTED 4661e: 4879 0006 0ea0 pea 60ea0 <== NOT EXECUTED 46624: 4e94 jsr %a4@ <== NOT EXECUTED req->aiocbp->aio_fildes, 0); if (r_chain != NULL) 46626: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED else { /* the maximum number of threads has been already created even though some of them might be idle. The request belongs to one of the active fd chain */ r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, 4662a: 2640 moveal %d0,%a3 <== NOT EXECUTED req->aiocbp->aio_fildes, 0); if (r_chain != NULL) 4662c: 4a80 tstl %d0 <== NOT EXECUTED 4662e: 6734 beqs 46664 <== NOT EXECUTED { pthread_mutex_lock (&r_chain->mutex); 46630: 2600 movel %d0,%d3 <== NOT EXECUTED 46632: 0683 0000 001c addil #28,%d3 <== NOT EXECUTED 46638: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4663a: 4eb9 0004 6e18 jsr 46e18 <== NOT EXECUTED rtems_aio_insert_prio (&r_chain->perfd, req); 46640: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46642: 486b 0008 pea %a3@(8) <== NOT EXECUTED 46646: 4eb9 0004 63ec jsr 463ec <== NOT EXECUTED pthread_cond_signal (&r_chain->cond); 4664c: 486b 0020 pea %a3@(32) <== NOT EXECUTED 46650: 4eb9 0004 6a44 jsr 46a44 <== NOT EXECUTED pthread_mutex_unlock (&r_chain->mutex); 46656: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46658: 4eb9 0004 6eb0 jsr 46eb0 <== NOT EXECUTED 4665e: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 46662: 6070 bras 466d4 <== NOT EXECUTED } else { /* or to the idle chain */ chain = &aio_request_queue.idle_req; r_chain = rtems_aio_search_fd (chain, req->aiocbp->aio_fildes, 1); 46664: 4878 0001 pea 1 <== NOT EXECUTED 46668: 206a 0014 moveal %a2@(20),%a0 <== NOT EXECUTED 4666c: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4666e: 4879 0006 0eac pea 60eac <== NOT EXECUTED 46674: 4e94 jsr %a4@ <== NOT EXECUTED if (r_chain->new_fd == 1) { 46676: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4667a: 7201 moveq #1,%d1 <== NOT EXECUTED } else { /* or to the idle chain */ chain = &aio_request_queue.idle_req; r_chain = rtems_aio_search_fd (chain, req->aiocbp->aio_fildes, 1); 4667c: 2640 moveal %d0,%a3 <== NOT EXECUTED 4667e: 5080 addql #8,%d0 <== NOT EXECUTED if (r_chain->new_fd == 1) { 46680: b2ab 0018 cmpl %a3@(24),%d1 <== NOT EXECUTED 46684: 662c bnes 466b2 <== NOT EXECUTED 46686: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46688: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4668a: 4eb9 0004 86d0 jsr 486d0 <_Chain_Insert> <== NOT EXECUTED /* If this is a new fd chain we signal the idle threads that might be waiting for requests */ AIO_printf (" New chain on waiting queue \n "); rtems_chain_prepend (&r_chain->perfd, &req->next_prio); r_chain->new_fd = 0; 46690: 42ab 0018 clrl %a3@(24) <== NOT EXECUTED pthread_mutex_init (&r_chain->mutex, NULL); 46694: 42a7 clrl %sp@- <== NOT EXECUTED 46696: 486b 001c pea %a3@(28) <== NOT EXECUTED 4669a: 4eb9 0004 6d00 jsr 46d00 <== NOT EXECUTED pthread_cond_init (&r_chain->cond, NULL); 466a0: 42a7 clrl %sp@- <== NOT EXECUTED 466a2: 486b 0020 pea %a3@(32) <== NOT EXECUTED 466a6: 4eb9 0004 69a0 jsr 469a0 <== NOT EXECUTED 466ac: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 466b0: 600c bras 466be <== NOT EXECUTED } else /* just insert the request in the existing fd chain */ rtems_aio_insert_prio (&r_chain->perfd, req); 466b2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 466b4: 2f00 movel %d0,%sp@- <== NOT EXECUTED 466b6: 4eb9 0004 63ec jsr 463ec <== NOT EXECUTED 466bc: 508f addql #8,%sp <== NOT EXECUTED if (aio_request_queue.idle_threads > 0) 466be: 4ab9 0006 0ec0 tstl 60ec0 <== NOT EXECUTED 466c4: 6f0e bles 466d4 <== NOT EXECUTED pthread_cond_signal (&aio_request_queue.new_req); 466c6: 4879 0006 0e5c pea 60e5c <== NOT EXECUTED 466cc: 4eb9 0004 6a44 jsr 46a44 <== NOT EXECUTED 466d2: 588f addql #4,%sp <== NOT EXECUTED } } pthread_mutex_unlock (&aio_request_queue.mutex); 466d4: 4879 0006 0e58 pea 60e58 <== NOT EXECUTED 466da: 4eb9 0004 6eb0 jsr 46eb0 <== NOT EXECUTED return 0; 466e0: 588f addql #4,%sp <== NOT EXECUTED } 466e2: 2002 movel %d2,%d0 <== NOT EXECUTED 466e4: 4cee 3c1c ffc0 moveml %fp@(-64),%d2-%d4/%a2-%a5 <== NOT EXECUTED 466ea: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000461b2 : * NULL - if error */ static void * rtems_aio_handle (void *arg) { 461b2: 4e56 ffa8 linkw %fp,#-88 <== NOT EXECUTED 461b6: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED pthread_mutex_unlock (&r_chain->mutex); pthread_mutex_lock (&aio_request_queue.mutex); if (rtems_chain_is_empty (chain)) { clock_gettime (CLOCK_REALTIME, &timeout); 461ba: 240e movel %fp,%d2 <== NOT EXECUTED node = rtems_chain_first (chain); req = (rtems_aio_request *) node; /* See _POSIX_PRIORITIZE_IO and _POSIX_PRIORITY_SCHEDULING discussion in rtems_aio_enqueue () */ pthread_getschedparam (pthread_self(), &policy, ¶m); 461bc: 280e movel %fp,%d4 <== NOT EXECUTED /* acquire the mutex of the current fd chain. we don't need to lock the queue mutex since we can add requests to idle fd chains or even active ones if the working request has been extracted from the chain */ result = pthread_mutex_lock (&r_chain->mutex); 461be: 2e3c 0004 6e18 movel #290328,%d7 <== NOT EXECUTED 461c4: 4bf9 0004 6eb0 lea 46eb0 ,%a5 <== NOT EXECUTED pthread_mutex_unlock (&r_chain->mutex); pthread_mutex_lock (&aio_request_queue.mutex); if (rtems_chain_is_empty (chain)) { clock_gettime (CLOCK_REALTIME, &timeout); 461ca: 0682 ffff fff4 addil #-12,%d2 <== NOT EXECUTED 461d0: 2c3c 0004 6870 movel #288880,%d6 <== NOT EXECUTED timeout.tv_sec += 3; timeout.tv_nsec = 0; result = pthread_cond_timedwait (&r_chain->cond, 461d6: 2a3c 0004 6ab8 movel #289464,%d5 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void rtems_chain_extract( rtems_chain_node *the_node ) { _Chain_Extract( the_node ); 461dc: 49f9 0004 8674 lea 48674 <_Chain_Extract>,%a4 <== NOT EXECUTED node = rtems_chain_first (chain); req = (rtems_aio_request *) node; /* See _POSIX_PRIORITIZE_IO and _POSIX_PRIORITY_SCHEDULING discussion in rtems_aio_enqueue () */ pthread_getschedparam (pthread_self(), &policy, ¶m); 461e2: 0684 ffff ffd8 addil #-40,%d4 <== NOT EXECUTED static void * rtems_aio_handle (void *arg) { rtems_aio_request_chain *r_chain = arg; 461e8: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED /* acquire the mutex of the current fd chain. we don't need to lock the queue mutex since we can add requests to idle fd chains or even active ones if the working request has been extracted from the chain */ result = pthread_mutex_lock (&r_chain->mutex); 461ec: 260a movel %a2,%d3 <== NOT EXECUTED 461ee: 0683 0000 001c addil #28,%d3 <== NOT EXECUTED 461f4: 2047 moveal %d7,%a0 <== NOT EXECUTED 461f6: 2f03 movel %d3,%sp@- <== NOT EXECUTED 461f8: 4e90 jsr %a0@ <== NOT EXECUTED if (result != 0) 461fa: 588f addql #4,%sp <== NOT EXECUTED 461fc: 4a80 tstl %d0 <== NOT EXECUTED 461fe: 6600 01e0 bnew 463e0 <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( const Chain_Control *the_chain ) { return _Chain_Immutable_first( the_chain ) == _Chain_Immutable_tail( the_chain ); 46202: 200a movel %a2,%d0 <== NOT EXECUTED 46204: 0680 0000 000c addil #12,%d0 <== NOT EXECUTED } } AIO_printf ("Thread finished\n"); return NULL; } 4620a: 266a 0008 moveal %a2@(8),%a3 <== NOT EXECUTED /* If the locked chain is not empty, take the first request extract it, unlock the chain and process the request, in this way the user can supply more requests to this fd chain */ if (!rtems_chain_is_empty (chain)) { 4620e: b08b cmpl %a3,%d0 <== NOT EXECUTED 46210: 6700 00da beqw 462ec <== NOT EXECUTED node = rtems_chain_first (chain); req = (rtems_aio_request *) node; /* See _POSIX_PRIORITIZE_IO and _POSIX_PRIORITY_SCHEDULING discussion in rtems_aio_enqueue () */ pthread_getschedparam (pthread_self(), &policy, ¶m); 46214: 41f9 0004 75f4 lea 475f4 ,%a0 <== NOT EXECUTED 4621a: 2d48 ffd0 movel %a0,%fp@(-48) <== NOT EXECUTED 4621e: 4e90 jsr %a0@ <== NOT EXECUTED 46220: 2f04 movel %d4,%sp@- <== NOT EXECUTED 46222: 486e fffc pea %fp@(-4) <== NOT EXECUTED 46226: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46228: 4eb9 0004 7218 jsr 47218 <== NOT EXECUTED param.sched_priority = req->priority; pthread_setschedparam (pthread_self(), req->policy, ¶m); 4622e: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED req = (rtems_aio_request *) node; /* See _POSIX_PRIORITIZE_IO and _POSIX_PRIORITY_SCHEDULING discussion in rtems_aio_enqueue () */ pthread_getschedparam (pthread_self(), &policy, ¶m); param.sched_priority = req->priority; 46232: 2d6b 000c ffd8 movel %a3@(12),%fp@(-40) <== NOT EXECUTED pthread_setschedparam (pthread_self(), req->policy, ¶m); 46238: 206e ffd0 moveal %fp@(-48),%a0 <== NOT EXECUTED 4623c: 2d40 ffd4 movel %d0,%fp@(-44) <== NOT EXECUTED 46240: 4e90 jsr %a0@ <== NOT EXECUTED 46242: 2f04 movel %d4,%sp@- <== NOT EXECUTED 46244: 2f2e ffd4 movel %fp@(-44),%sp@- <== NOT EXECUTED 46248: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4624a: 4eb9 0004 7608 jsr 47608 <== NOT EXECUTED 46250: 2f0b movel %a3,%sp@- <== NOT EXECUTED 46252: 4e94 jsr %a4@ <== NOT EXECUTED rtems_chain_extract (node); pthread_mutex_unlock (&r_chain->mutex); 46254: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46256: 4e95 jsr %a5@ <== NOT EXECUTED switch (req->aiocbp->aio_lio_opcode) { 46258: 206b 0014 moveal %a3@(20),%a0 <== NOT EXECUTED 4625c: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED 46260: 7202 moveq #2,%d1 <== NOT EXECUTED 46262: 2028 002c movel %a0@(44),%d0 <== NOT EXECUTED 46266: b280 cmpl %d0,%d1 <== NOT EXECUTED 46268: 672a beqs 46294 <== NOT EXECUTED 4626a: 123c 0003 moveb #3,%d1 <== NOT EXECUTED 4626e: b280 cmpl %d0,%d1 <== NOT EXECUTED 46270: 6740 beqs 462b2 <== NOT EXECUTED 46272: 123c 0001 moveb #1,%d1 <== NOT EXECUTED 46276: b280 cmpl %d0,%d1 <== NOT EXECUTED 46278: 6648 bnes 462c2 <== NOT EXECUTED case LIO_READ: AIO_printf ("read\n"); result = pread (req->aiocbp->aio_fildes, 4627a: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 4627e: 2f28 0004 movel %a0@(4),%sp@- <== NOT EXECUTED 46282: 2f28 0010 movel %a0@(16),%sp@- <== NOT EXECUTED 46286: 2f28 000c movel %a0@(12),%sp@- <== NOT EXECUTED 4628a: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4628c: 4eb9 0004 fa82 jsr 4fa82 <== NOT EXECUTED 46292: 6018 bras 462ac <== NOT EXECUTED req->aiocbp->aio_nbytes, req->aiocbp->aio_offset); break; case LIO_WRITE: AIO_printf ("write\n"); result = pwrite (req->aiocbp->aio_fildes, 46294: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 46298: 2f28 0004 movel %a0@(4),%sp@- <== NOT EXECUTED 4629c: 2f28 0010 movel %a0@(16),%sp@- <== NOT EXECUTED 462a0: 2f28 000c movel %a0@(12),%sp@- <== NOT EXECUTED 462a4: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 462a6: 4eb9 0004 fb4a jsr 4fb4a <== NOT EXECUTED (void *) req->aiocbp->aio_buf, req->aiocbp->aio_nbytes, req->aiocbp->aio_offset); break; 462ac: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 462b0: 600a bras 462bc <== NOT EXECUTED case LIO_SYNC: AIO_printf ("sync\n"); result = fsync (req->aiocbp->aio_fildes); 462b2: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 462b4: 4eb9 0004 c200 jsr 4c200 <== NOT EXECUTED break; 462ba: 588f addql #4,%sp <== NOT EXECUTED default: result = -1; } if (result == -1) { 462bc: 72ff moveq #-1,%d1 <== NOT EXECUTED 462be: b280 cmpl %d0,%d1 <== NOT EXECUTED 462c0: 661a bnes 462dc <== NOT EXECUTED req->aiocbp->return_value = -1; 462c2: 266b 0014 moveal %a3@(20),%a3 <== NOT EXECUTED 462c6: 70ff moveq #-1,%d0 <== NOT EXECUTED 462c8: 2740 0034 movel %d0,%a3@(52) <== NOT EXECUTED req->aiocbp->error_code = errno; 462cc: 4eb9 0004 efdc jsr 4efdc <__errno> <== NOT EXECUTED 462d2: 2040 moveal %d0,%a0 <== NOT EXECUTED 462d4: 2750 0030 movel %a0@,%a3@(48) <== NOT EXECUTED 462d8: 6000 ff12 braw 461ec <== NOT EXECUTED } else { req->aiocbp->return_value = result; 462dc: 206b 0014 moveal %a3@(20),%a0 <== NOT EXECUTED 462e0: 2140 0034 movel %d0,%a0@(52) <== NOT EXECUTED req->aiocbp->error_code = 0; 462e4: 42a8 0030 clrl %a0@(48) <== NOT EXECUTED 462e8: 6000 ff02 braw 461ec <== NOT EXECUTED struct timespec timeout; AIO_printf ("Chain is empty [WQ], wait for work\n"); pthread_mutex_unlock (&r_chain->mutex); 462ec: 2f03 movel %d3,%sp@- <== NOT EXECUTED 462ee: 4e95 jsr %a5@ <== NOT EXECUTED pthread_mutex_lock (&aio_request_queue.mutex); 462f0: 4879 0006 0e58 pea 60e58 <== NOT EXECUTED 462f6: 2047 moveal %d7,%a0 <== NOT EXECUTED 462f8: 4e90 jsr %a0@ <== NOT EXECUTED if (rtems_chain_is_empty (chain)) 462fa: 508f addql #8,%sp <== NOT EXECUTED 462fc: b7ea 0008 cmpal %a2@(8),%a3 <== NOT EXECUTED 46300: 6600 00d0 bnew 463d2 <== NOT EXECUTED { clock_gettime (CLOCK_REALTIME, &timeout); 46304: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46306: 4878 0001 pea 1 <== NOT EXECUTED 4630a: 2046 moveal %d6,%a0 <== NOT EXECUTED timeout.tv_sec += 3; timeout.tv_nsec = 0; result = pthread_cond_timedwait (&r_chain->cond, 4630c: 47ea 0020 lea %a2@(32),%a3 <== NOT EXECUTED pthread_mutex_unlock (&r_chain->mutex); pthread_mutex_lock (&aio_request_queue.mutex); if (rtems_chain_is_empty (chain)) { clock_gettime (CLOCK_REALTIME, &timeout); 46310: 4e90 jsr %a0@ <== NOT EXECUTED timeout.tv_sec += 3; 46312: 56ae fff4 addql #3,%fp@(-12) <== NOT EXECUTED timeout.tv_nsec = 0; result = pthread_cond_timedwait (&r_chain->cond, 46316: 2045 moveal %d5,%a0 <== NOT EXECUTED 46318: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4631a: 4879 0006 0e58 pea 60e58 <== NOT EXECUTED if (rtems_chain_is_empty (chain)) { clock_gettime (CLOCK_REALTIME, &timeout); timeout.tv_sec += 3; timeout.tv_nsec = 0; 46320: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED result = pthread_cond_timedwait (&r_chain->cond, 46324: 2f0b movel %a3,%sp@- <== NOT EXECUTED 46326: 4e90 jsr %a0@ <== NOT EXECUTED &aio_request_queue.mutex, &timeout); /* If no requests were added to the chain we delete the fd chain from the queue and start working with idle fd chains */ if (result == ETIMEDOUT) { 46328: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4632c: 7274 moveq #116,%d1 <== NOT EXECUTED 4632e: b280 cmpl %d0,%d1 <== NOT EXECUTED 46330: 6600 00a0 bnew 463d2 <== NOT EXECUTED 46334: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46336: 4e94 jsr %a4@ <== NOT EXECUTED rtems_chain_extract (&r_chain->next_fd); pthread_mutex_destroy (&r_chain->mutex); 46338: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4633a: 4eb9 0004 6be0 jsr 46be0 <== NOT EXECUTED pthread_cond_destroy (&r_chain->cond); 46340: 2f0b movel %a3,%sp@- <== NOT EXECUTED 46342: 4eb9 0004 68dc jsr 468dc <== NOT EXECUTED free (r_chain); 46348: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4634a: 4eb9 0004 31fc jsr 431fc <== NOT EXECUTED /* If the idle chain is empty sleep for 3 seconds and wait for a signal. The thread now becomes idle. */ if (rtems_chain_is_empty (&aio_request_queue.idle_req)) { 46350: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 46354: 41f9 0006 0eb0 lea 60eb0 ,%a0 <== NOT EXECUTED 4635a: b1f9 0006 0eac cmpal 60eac ,%a0 <== NOT EXECUTED 46360: 6650 bnes 463b2 <== NOT EXECUTED AIO_printf ("Chain is empty [IQ], wait for work\n"); ++aio_request_queue.idle_threads; --aio_request_queue.active_threads; clock_gettime (CLOCK_REALTIME, &timeout); 46362: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46364: 4878 0001 pea 1 <== NOT EXECUTED /* If the idle chain is empty sleep for 3 seconds and wait for a signal. The thread now becomes idle. */ if (rtems_chain_is_empty (&aio_request_queue.idle_req)) { AIO_printf ("Chain is empty [IQ], wait for work\n"); ++aio_request_queue.idle_threads; 46368: 52b9 0006 0ec0 addql #1,60ec0 <== NOT EXECUTED --aio_request_queue.active_threads; clock_gettime (CLOCK_REALTIME, &timeout); 4636e: 2046 moveal %d6,%a0 <== NOT EXECUTED signal. The thread now becomes idle. */ if (rtems_chain_is_empty (&aio_request_queue.idle_req)) { AIO_printf ("Chain is empty [IQ], wait for work\n"); ++aio_request_queue.idle_threads; --aio_request_queue.active_threads; 46370: 53b9 0006 0ebc subql #1,60ebc <== NOT EXECUTED clock_gettime (CLOCK_REALTIME, &timeout); 46376: 4e90 jsr %a0@ <== NOT EXECUTED timeout.tv_sec += 3; 46378: 56ae fff4 addql #3,%fp@(-12) <== NOT EXECUTED timeout.tv_nsec = 0; result = pthread_cond_timedwait (&aio_request_queue.new_req, 4637c: 2045 moveal %d5,%a0 <== NOT EXECUTED 4637e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46380: 4879 0006 0e58 pea 60e58 <== NOT EXECUTED 46386: 4879 0006 0e5c pea 60e5c <== NOT EXECUTED ++aio_request_queue.idle_threads; --aio_request_queue.active_threads; clock_gettime (CLOCK_REALTIME, &timeout); timeout.tv_sec += 3; timeout.tv_nsec = 0; 4638c: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED result = pthread_cond_timedwait (&aio_request_queue.new_req, 46390: 4e90 jsr %a0@ <== NOT EXECUTED &aio_request_queue.mutex, &timeout); /* If no new fd chain was added in the idle requests then this thread is finished */ if (result == ETIMEDOUT) { 46392: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 46396: 7274 moveq #116,%d1 <== NOT EXECUTED 46398: b280 cmpl %d0,%d1 <== NOT EXECUTED 4639a: 6616 bnes 463b2 <== NOT EXECUTED AIO_printf ("Etimeout\n"); --aio_request_queue.idle_threads; pthread_mutex_unlock (&aio_request_queue.mutex); 4639c: 4879 0006 0e58 pea 60e58 <== NOT EXECUTED /* If no new fd chain was added in the idle requests then this thread is finished */ if (result == ETIMEDOUT) { AIO_printf ("Etimeout\n"); --aio_request_queue.idle_threads; 463a2: 53b9 0006 0ec0 subql #1,60ec0 <== NOT EXECUTED pthread_mutex_unlock (&aio_request_queue.mutex); 463a8: 4eb9 0004 6eb0 jsr 46eb0 <== NOT EXECUTED return NULL; 463ae: 588f addql #4,%sp <== NOT EXECUTED 463b0: 602e bras 463e0 <== NOT EXECUTED } } AIO_printf ("Thread finished\n"); return NULL; } 463b2: 2479 0006 0eac moveal 60eac ,%a2 <== NOT EXECUTED } } /* Otherwise move this chain to the working chain and start the loop all over again */ AIO_printf ("Work on idle\n"); --aio_request_queue.idle_threads; 463b8: 53b9 0006 0ec0 subql #1,60ec0 <== NOT EXECUTED ++aio_request_queue.active_threads; 463be: 52b9 0006 0ebc addql #1,60ebc <== NOT EXECUTED 463c4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 463c6: 4e94 jsr %a4@ <== NOT EXECUTED node = rtems_chain_first (&aio_request_queue.idle_req); rtems_chain_extract (node); r_chain = (rtems_aio_request_chain *) node; rtems_aio_move_to_work (r_chain); 463c8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 463ca: 4eb9 0004 617c jsr 4617c <== NOT EXECUTED 463d0: 508f addql #8,%sp <== NOT EXECUTED } } /* If there was a request added in the initial fd chain then release the mutex and process it */ pthread_mutex_unlock (&aio_request_queue.mutex); 463d2: 4879 0006 0e58 pea 60e58 <== NOT EXECUTED 463d8: 4e95 jsr %a5@ <== NOT EXECUTED 463da: 588f addql #4,%sp <== NOT EXECUTED 463dc: 6000 fe0e braw 461ec <== NOT EXECUTED } } AIO_printf ("Thread finished\n"); return NULL; } 463e0: 4280 clrl %d0 <== NOT EXECUTED 463e2: 4cee 3cfc ffa8 moveml %fp@(-88),%d2-%d7/%a2-%a5 <== NOT EXECUTED 463e8: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046000 : * 0 - if initialization succeeded */ int rtems_aio_init (void) { 46000: 4e56 0000 linkw %fp,#0 46004: 2f02 movel %d2,%sp@- int result = 0; result = pthread_attr_init (&aio_request_queue.attr); 46006: 4879 0006 0e60 pea 60e60 4600c: 4eb9 0004 6fbc jsr 46fbc if (result != 0) 46012: 588f addql #4,%sp int rtems_aio_init (void) { int result = 0; result = pthread_attr_init (&aio_request_queue.attr); 46014: 2400 movel %d0,%d2 if (result != 0) 46016: 6600 00c8 bnew 460e0 return result; result = 4601a: 42a7 clrl %sp@- 4601c: 4879 0006 0e60 pea 60e60 46022: 4eb9 0004 6fe8 jsr 46fe8 pthread_attr_setdetachstate (&aio_request_queue.attr, PTHREAD_CREATE_DETACHED); if (result != 0) 46028: 508f addql #8,%sp 4602a: 4a80 tstl %d0 4602c: 670e beqs 4603c <== ALWAYS TAKEN pthread_attr_destroy (&aio_request_queue.attr); 4602e: 4879 0006 0e60 pea 60e60 <== NOT EXECUTED 46034: 4eb9 0004 6fa0 jsr 46fa0 <== NOT EXECUTED 4603a: 588f addql #4,%sp <== NOT EXECUTED result = pthread_mutex_init (&aio_request_queue.mutex, NULL); 4603c: 42a7 clrl %sp@- 4603e: 4879 0006 0e58 pea 60e58 46044: 4eb9 0004 6d00 jsr 46d00 if (result != 0) 4604a: 508f addql #8,%sp 4604c: 4a80 tstl %d0 4604e: 670e beqs 4605e <== ALWAYS TAKEN pthread_attr_destroy (&aio_request_queue.attr); 46050: 4879 0006 0e60 pea 60e60 <== NOT EXECUTED 46056: 4eb9 0004 6fa0 jsr 46fa0 <== NOT EXECUTED 4605c: 588f addql #4,%sp <== NOT EXECUTED result = pthread_cond_init (&aio_request_queue.new_req, NULL); 4605e: 42a7 clrl %sp@- 46060: 4879 0006 0e5c pea 60e5c 46066: 4eb9 0004 69a0 jsr 469a0 if (result != 0) { 4606c: 508f addql #8,%sp result = pthread_mutex_init (&aio_request_queue.mutex, NULL); if (result != 0) pthread_attr_destroy (&aio_request_queue.attr); result = pthread_cond_init (&aio_request_queue.new_req, NULL); 4606e: 2400 movel %d0,%d2 if (result != 0) { 46070: 671a beqs 4608c <== ALWAYS TAKEN pthread_mutex_destroy (&aio_request_queue.mutex); 46072: 4879 0006 0e58 pea 60e58 <== NOT EXECUTED 46078: 4eb9 0004 6be0 jsr 46be0 <== NOT EXECUTED pthread_attr_destroy (&aio_request_queue.attr); 4607e: 4879 0006 0e60 pea 60e60 <== NOT EXECUTED 46084: 4eb9 0004 6fa0 jsr 46fa0 <== NOT EXECUTED 4608a: 508f addql #8,%sp <== NOT EXECUTED { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; head->previous = NULL; 4608c: 42b9 0006 0ea4 clrl 60ea4 ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; 46092: 203c 0006 0ea4 movel #396964,%d0 46098: 23c0 0006 0ea0 movel %d0,60ea0 head->previous = NULL; tail->previous = head; 4609e: 203c 0006 0ea0 movel #396960,%d0 460a4: 23c0 0006 0ea8 movel %d0,60ea8 ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; 460aa: 203c 0006 0eb0 movel #396976,%d0 460b0: 23c0 0006 0eac movel %d0,60eac head->previous = NULL; tail->previous = head; 460b6: 203c 0006 0eac movel #396972,%d0 460bc: 23c0 0006 0eb4 movel %d0,60eb4 rtems_chain_initialize_empty (&aio_request_queue.work_req); rtems_chain_initialize_empty (&aio_request_queue.idle_req); aio_request_queue.active_threads = 0; aio_request_queue.idle_threads = 0; aio_request_queue.initialized = AIO_QUEUE_INITIALIZED; 460c2: 203c 0000 b00b movel #45067,%d0 { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; head->previous = NULL; 460c8: 42b9 0006 0eb0 clrl 60eb0 } rtems_chain_initialize_empty (&aio_request_queue.work_req); rtems_chain_initialize_empty (&aio_request_queue.idle_req); aio_request_queue.active_threads = 0; 460ce: 42b9 0006 0ebc clrl 60ebc aio_request_queue.idle_threads = 0; 460d4: 42b9 0006 0ec0 clrl 60ec0 aio_request_queue.initialized = AIO_QUEUE_INITIALIZED; 460da: 23c0 0006 0eb8 movel %d0,60eb8 return result; } 460e0: 2002 movel %d2,%d0 460e2: 242e fffc movel %fp@(-4),%d2 460e6: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000463ec : * NONE */ void rtems_aio_insert_prio (rtems_chain_control *chain, rtems_aio_request *req) { 463ec: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 463f0: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED } } AIO_printf ("Thread finished\n"); return NULL; } 463f4: 2240 moveal %d0,%a1 <== NOT EXECUTED * NONE */ void rtems_aio_insert_prio (rtems_chain_control *chain, rtems_aio_request *req) { 463f6: 2f0b movel %a3,%sp@- <== NOT EXECUTED 463f8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 463fa: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED } } AIO_printf ("Thread finished\n"); return NULL; } 463fe: 2059 moveal %a1@+,%a0 <== NOT EXECUTED rtems_chain_node *node; AIO_printf ("FD exists \n"); node = rtems_chain_first (chain); if (rtems_chain_is_empty (chain)) { 46400: b3c8 cmpal %a0,%a1 <== NOT EXECUTED 46402: 672e beqs 46432 <== NOT EXECUTED AIO_printf ("First in chain \n"); rtems_chain_prepend (chain, &req->next_prio); } else { AIO_printf ("Add by priority \n"); int prio = ((rtems_aio_request *) node)->aiocbp->aio_reqprio; 46404: 2668 0014 moveal %a0@(20),%a3 <== NOT EXECUTED 46408: 202b 0014 movel %a3@(20),%d0 <== NOT EXECUTED while (req->aiocbp->aio_reqprio > prio && 4640c: 266a 0014 moveal %a2@(20),%a3 <== NOT EXECUTED 46410: 222b 0014 movel %a3@(20),%d1 <== NOT EXECUTED 46414: 600a bras 46420 <== NOT EXECUTED } } AIO_printf ("Thread finished\n"); return NULL; } 46416: 2050 moveal %a0@,%a0 <== NOT EXECUTED int prio = ((rtems_aio_request *) node)->aiocbp->aio_reqprio; while (req->aiocbp->aio_reqprio > prio && !rtems_chain_is_tail (chain, node)) { node = rtems_chain_next (node); prio = ((rtems_aio_request *) node)->aiocbp->aio_reqprio; 46418: 2668 0014 moveal %a0@(20),%a3 <== NOT EXECUTED 4641c: 202b 0014 movel %a3@(20),%d0 <== NOT EXECUTED rtems_chain_prepend (chain, &req->next_prio); } else { AIO_printf ("Add by priority \n"); int prio = ((rtems_aio_request *) node)->aiocbp->aio_reqprio; while (req->aiocbp->aio_reqprio > prio && 46420: b081 cmpl %d1,%d0 <== NOT EXECUTED 46422: 6c04 bges 46428 <== NOT EXECUTED 46424: b3c8 cmpal %a0,%a1 <== NOT EXECUTED 46426: 66ee bnes 46416 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void rtems_chain_insert( rtems_chain_node *after_node, rtems_chain_node *the_node ) { _Chain_Insert( after_node, the_node ); 46428: 2d4a 000c movel %a2,%fp@(12) <== NOT EXECUTED 4642c: 2d68 0004 0008 movel %a0@(4),%fp@(8) <== NOT EXECUTED } rtems_chain_insert (node->previous, &req->next_prio); } } 46432: 245f moveal %sp@+,%a2 <== NOT EXECUTED 46434: 265f moveal %sp@+,%a3 <== NOT EXECUTED 46436: 4e5e unlk %fp <== NOT EXECUTED 46438: 4ef9 0004 86d0 jmp 486d0 <_Chain_Insert> <== NOT EXECUTED =============================================================================== 0004617c : * NONE */ void rtems_aio_move_to_work (rtems_aio_request_chain *r_chain) { 4617c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46180: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED } } AIO_printf ("Thread finished\n"); return NULL; } 46184: 2079 0006 0ea0 moveal 60ea0 ,%a0 <== NOT EXECUTED rtems_chain_node *node; node = rtems_chain_first (&aio_request_queue.work_req); temp = (rtems_aio_request_chain *) node; while (temp->fildes < r_chain->fildes && 4618a: 2029 0014 movel %a1@(20),%d0 <== NOT EXECUTED 4618e: 6002 bras 46192 <== NOT EXECUTED } } AIO_printf ("Thread finished\n"); return NULL; } 46190: 2050 moveal %a0@,%a0 <== NOT EXECUTED rtems_chain_node *node; node = rtems_chain_first (&aio_request_queue.work_req); temp = (rtems_aio_request_chain *) node; while (temp->fildes < r_chain->fildes && 46192: b0a8 0014 cmpl %a0@(20),%d0 <== NOT EXECUTED 46196: 6f08 bles 461a0 <== NOT EXECUTED 46198: b1fc 0006 0ea4 cmpal #396964,%a0 <== NOT EXECUTED 4619e: 66f0 bnes 46190 <== NOT EXECUTED 461a0: 2f09 movel %a1,%sp@- <== NOT EXECUTED 461a2: 2f28 0004 movel %a0@(4),%sp@- <== NOT EXECUTED 461a6: 4eb9 0004 86d0 jsr 486d0 <_Chain_Insert> <== NOT EXECUTED 461ac: 508f addql #8,%sp <== NOT EXECUTED node = rtems_chain_next (node); temp = (rtems_aio_request_chain *) node; } rtems_chain_insert (rtems_chain_previous (node), &r_chain->next_fd); } 461ae: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004643e : * Output parameters: * NONE */ void rtems_aio_remove_fd (rtems_aio_request_chain *r_chain) { 4643e: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 46442: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 46446: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Chain_Is_tail( Chain_Control *the_chain, const Chain_Node *the_node ) { return (the_node == _Chain_Tail(the_chain)); 4644a: 2408 movel %a0,%d2 <== NOT EXECUTED 4644c: 0682 0000 000c addil #12,%d2 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void rtems_chain_extract( rtems_chain_node *the_node ) { _Chain_Extract( the_node ); 46452: 49f9 0004 8674 lea 48674 <_Chain_Extract>,%a4 <== NOT EXECUTED rtems_chain_extract (node); rtems_aio_request *req = (rtems_aio_request *) node; node = rtems_chain_next (node); req->aiocbp->error_code = ECANCELED; req->aiocbp->return_value = -1; free (req); 46458: 47f9 0004 31fc lea 431fc ,%a3 <== NOT EXECUTED } } AIO_printf ("Thread finished\n"); return NULL; } 4645e: 2468 0008 moveal %a0@(8),%a2 <== NOT EXECUTED rtems_chain_control *chain; rtems_chain_node *node; chain = &r_chain->perfd; node = rtems_chain_first (chain); while (!rtems_chain_is_tail (chain, node)) 46462: 6022 bras 46486 <== NOT EXECUTED 46464: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46466: 4e94 jsr %a4@ <== NOT EXECUTED } } AIO_printf ("Thread finished\n"); return NULL; } 46468: 2612 movel %a2@,%d3 <== NOT EXECUTED while (!rtems_chain_is_tail (chain, node)) { rtems_chain_extract (node); rtems_aio_request *req = (rtems_aio_request *) node; node = rtems_chain_next (node); req->aiocbp->error_code = ECANCELED; 4646a: 203c 0000 008c movel #140,%d0 <== NOT EXECUTED 46470: 226a 0014 moveal %a2@(20),%a1 <== NOT EXECUTED 46474: 2340 0030 movel %d0,%a1@(48) <== NOT EXECUTED req->aiocbp->return_value = -1; 46478: 70ff moveq #-1,%d0 <== NOT EXECUTED 4647a: 2340 0034 movel %d0,%a1@(52) <== NOT EXECUTED free (req); 4647e: 2f0a movel %a2,%sp@- <== NOT EXECUTED while (!rtems_chain_is_tail (chain, node)) { rtems_chain_extract (node); rtems_aio_request *req = (rtems_aio_request *) node; node = rtems_chain_next (node); 46480: 2443 moveal %d3,%a2 <== NOT EXECUTED req->aiocbp->error_code = ECANCELED; req->aiocbp->return_value = -1; free (req); 46482: 4e93 jsr %a3@ <== NOT EXECUTED while (!rtems_chain_is_tail (chain, node)) { rtems_chain_extract (node); rtems_aio_request *req = (rtems_aio_request *) node; node = rtems_chain_next (node); 46484: 508f addql #8,%sp <== NOT EXECUTED rtems_chain_control *chain; rtems_chain_node *node; chain = &r_chain->perfd; node = rtems_chain_first (chain); while (!rtems_chain_is_tail (chain, node)) 46486: b48a cmpl %a2,%d2 <== NOT EXECUTED 46488: 66da bnes 46464 <== NOT EXECUTED node = rtems_chain_next (node); req->aiocbp->error_code = ECANCELED; req->aiocbp->return_value = -1; free (req); } } 4648a: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 <== NOT EXECUTED 46490: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046494 : * AIO_NOTCANCELED - if request was not canceled * AIO_CANCELED - if request was canceled */ int rtems_aio_remove_req (rtems_chain_control *chain, struct aiocb *aiocbp) { 46494: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED } } AIO_printf ("Thread finished\n"); return NULL; } 46498: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED * AIO_NOTCANCELED - if request was not canceled * AIO_CANCELED - if request was canceled */ int rtems_aio_remove_req (rtems_chain_control *chain, struct aiocb *aiocbp) { 4649c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4649e: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED } } AIO_printf ("Thread finished\n"); return NULL; } 464a2: 2458 moveal %a0@+,%a2 <== NOT EXECUTED * AIO_CANCELED - if request was canceled */ int rtems_aio_remove_req (rtems_chain_control *chain, struct aiocb *aiocbp) { if (rtems_chain_is_empty (chain)) 464a4: b1ca cmpal %a2,%a0 <== NOT EXECUTED 464a6: 6608 bnes 464b0 <== NOT EXECUTED 464a8: 6038 bras 464e2 <== NOT EXECUTED } } AIO_printf ("Thread finished\n"); return NULL; } 464aa: 2451 moveal %a1@,%a2 <== NOT EXECUTED rtems_chain_node *node = rtems_chain_first (chain); rtems_aio_request *current; current = (rtems_aio_request *) node; while (!rtems_chain_is_tail (chain, node) && current->aiocbp != aiocbp) { 464ac: b1ca cmpal %a2,%a0 <== NOT EXECUTED 464ae: 6736 beqs 464e6 <== NOT EXECUTED node = rtems_chain_next (node); current = (rtems_aio_request *) node; 464b0: 224a moveal %a2,%a1 <== NOT EXECUTED rtems_chain_node *node = rtems_chain_first (chain); rtems_aio_request *current; current = (rtems_aio_request *) node; while (!rtems_chain_is_tail (chain, node) && current->aiocbp != aiocbp) { 464b2: b0aa 0014 cmpl %a2@(20),%d0 <== NOT EXECUTED 464b6: 66f2 bnes 464aa <== NOT EXECUTED 464b8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 464ba: 4eb9 0004 8674 jsr 48674 <_Chain_Extract> <== NOT EXECUTED if (rtems_chain_is_tail (chain, node)) return AIO_NOTCANCELED; else { rtems_chain_extract (node); current->aiocbp->error_code = ECANCELED; 464c0: 206a 0014 moveal %a2@(20),%a0 <== NOT EXECUTED 464c4: 203c 0000 008c movel #140,%d0 <== NOT EXECUTED 464ca: 2140 0030 movel %d0,%a0@(48) <== NOT EXECUTED current->aiocbp->return_value = -1; 464ce: 70ff moveq #-1,%d0 <== NOT EXECUTED 464d0: 2140 0034 movel %d0,%a0@(52) <== NOT EXECUTED free (current); 464d4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 464d6: 4eb9 0004 31fc jsr 431fc <== NOT EXECUTED } return AIO_CANCELED; 464dc: 508f addql #8,%sp <== NOT EXECUTED 464de: 4280 clrl %d0 <== NOT EXECUTED 464e0: 6006 bras 464e8 <== NOT EXECUTED */ int rtems_aio_remove_req (rtems_chain_control *chain, struct aiocb *aiocbp) { if (rtems_chain_is_empty (chain)) return AIO_ALLDONE; 464e2: 7002 moveq #2,%d0 <== NOT EXECUTED 464e4: 6002 bras 464e8 <== NOT EXECUTED node = rtems_chain_next (node); current = (rtems_aio_request *) node; } if (rtems_chain_is_tail (chain, node)) return AIO_NOTCANCELED; 464e6: 7001 moveq #1,%d0 <== NOT EXECUTED current->aiocbp->return_value = -1; free (current); } return AIO_CANCELED; } 464e8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 464ec: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000460ea : * */ rtems_aio_request_chain * rtems_aio_search_fd (rtems_chain_control *chain, int fildes, int create) { 460ea: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 460ee: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ <== NOT EXECUTED 460f2: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED } } AIO_printf ("Thread finished\n"); return NULL; } 460f6: 204a moveal %a2,%a0 <== NOT EXECUTED * */ rtems_aio_request_chain * rtems_aio_search_fd (rtems_chain_control *chain, int fildes, int create) { 460f8: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED } } AIO_printf ("Thread finished\n"); return NULL; } 460fc: 2858 moveal %a0@+,%a4 <== NOT EXECUTED 460fe: 6002 bras 46102 <== NOT EXECUTED 46100: 2854 moveal %a4@,%a4 <== NOT EXECUTED rtems_chain_node *node; node = rtems_chain_first (chain); r_chain = (rtems_aio_request_chain *) node; while (r_chain->fildes < fildes && !rtems_chain_is_tail (chain, node)) { 46102: 202c 0014 movel %a4@(20),%d0 <== NOT EXECUTED node = rtems_chain_next (node); 46106: 264c moveal %a4,%a3 <== NOT EXECUTED rtems_chain_node *node; node = rtems_chain_first (chain); r_chain = (rtems_aio_request_chain *) node; while (r_chain->fildes < fildes && !rtems_chain_is_tail (chain, node)) { 46108: b480 cmpl %d0,%d2 <== NOT EXECUTED 4610a: 6e04 bgts 46110 <== NOT EXECUTED node = rtems_chain_next (node); r_chain = (rtems_aio_request_chain *) node; } if (r_chain->fildes == fildes) 4610c: 6708 beqs 46116 <== NOT EXECUTED 4610e: 600c bras 4611c <== NOT EXECUTED rtems_chain_node *node; node = rtems_chain_first (chain); r_chain = (rtems_aio_request_chain *) node; while (r_chain->fildes < fildes && !rtems_chain_is_tail (chain, node)) { 46110: b1cc cmpal %a4,%a0 <== NOT EXECUTED 46112: 66ec bnes 46100 <== NOT EXECUTED 46114: 6006 bras 4611c <== NOT EXECUTED node = rtems_chain_next (node); r_chain = (rtems_aio_request_chain *) node; } if (r_chain->fildes == fildes) r_chain->new_fd = 0; 46116: 42ac 0018 clrl %a4@(24) <== NOT EXECUTED 4611a: 6054 bras 46170 <== NOT EXECUTED else { if (create == 0) 4611c: 4aae 0010 tstl %fp@(16) <== NOT EXECUTED 46120: 674c beqs 4616e <== NOT EXECUTED r_chain = NULL; else { r_chain = malloc (sizeof (rtems_aio_request_chain)); 46122: 4878 0024 pea 24 <== NOT EXECUTED 46126: 4eb9 0004 3724 jsr 43724 <== NOT EXECUTED rtems_chain_initialize_empty (&r_chain->perfd); if (rtems_chain_is_empty (chain)) 4612c: 588f addql #4,%sp <== NOT EXECUTED r_chain->new_fd = 0; else { if (create == 0) r_chain = NULL; else { r_chain = malloc (sizeof (rtems_aio_request_chain)); 4612e: 2a40 moveal %d0,%a5 <== NOT EXECUTED 46130: 2840 moveal %d0,%a4 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); 46132: 5080 addql #8,%d0 <== NOT EXECUTED Chain_Node *tail = _Chain_Tail( the_chain ); 46134: 41ed 000c lea %a5@(12),%a0 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); 46138: 2b40 0010 movel %d0,%a5@(16) <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( const Chain_Control *the_chain ) { return _Chain_Immutable_first( the_chain ) == _Chain_Immutable_tail( the_chain ); 4613c: 200a movel %a2,%d0 <== NOT EXECUTED 4613e: 5880 addql #4,%d0 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); 46140: 2b48 0008 movel %a0,%a5@(8) <== NOT EXECUTED 46144: 41f9 0004 86d0 lea 486d0 <_Chain_Insert>,%a0 <== NOT EXECUTED head->next = tail; head->previous = NULL; 4614a: 42ad 000c clrl %a5@(12) <== NOT EXECUTED rtems_chain_initialize_empty (&r_chain->perfd); if (rtems_chain_is_empty (chain)) 4614e: b092 cmpl %a2@,%d0 <== NOT EXECUTED 46150: 6606 bnes 46158 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Chain_Prepend( Chain_Control *the_chain, Chain_Node *the_node ) { _Chain_Insert(_Chain_Head(the_chain), the_node); 46152: 2f0d movel %a5,%sp@- <== NOT EXECUTED 46154: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46156: 6006 bras 4615e <== NOT EXECUTED RTEMS_INLINE_ROUTINE void rtems_chain_insert( rtems_chain_node *after_node, rtems_chain_node *the_node ) { _Chain_Insert( after_node, the_node ); 46158: 2f0d movel %a5,%sp@- <== NOT EXECUTED 4615a: 2f2b 0004 movel %a3@(4),%sp@- <== NOT EXECUTED 4615e: 4e90 jsr %a0@ <== NOT EXECUTED 46160: 508f addql #8,%sp <== NOT EXECUTED rtems_chain_prepend (chain, &r_chain->next_fd); else rtems_chain_insert (rtems_chain_previous (node), &r_chain->next_fd); r_chain->new_fd = 1; 46162: 7001 moveq #1,%d0 <== NOT EXECUTED r_chain->fildes = fildes; 46164: 2b42 0014 movel %d2,%a5@(20) <== NOT EXECUTED if (rtems_chain_is_empty (chain)) rtems_chain_prepend (chain, &r_chain->next_fd); else rtems_chain_insert (rtems_chain_previous (node), &r_chain->next_fd); r_chain->new_fd = 1; 46168: 2b40 0018 movel %d0,%a5@(24) <== NOT EXECUTED 4616c: 6002 bras 46170 <== NOT EXECUTED if (r_chain->fildes == fildes) r_chain->new_fd = 0; else { if (create == 0) r_chain = NULL; 4616e: 99cc subal %a4,%a4 <== NOT EXECUTED r_chain->new_fd = 1; r_chain->fildes = fildes; } } return r_chain; } 46170: 200c movel %a4,%d0 <== NOT EXECUTED 46172: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED 46178: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004cc68 : rtems_name name, rtems_attribute attribute_set, uint32_t maximum_waiters, rtems_id *id ) { 4cc68: 4e56 ffe4 linkw %fp,#-28 4cc6c: 202e 0010 movel %fp@(16),%d0 4cc70: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ 4cc74: 242e 0008 movel %fp@(8),%d2 4cc78: 262e 000c movel %fp@(12),%d3 4cc7c: 246e 0014 moveal %fp@(20),%a2 Barrier_Control *the_barrier; CORE_barrier_Attributes the_attributes; if ( !rtems_is_name_valid( name ) ) 4cc80: 4a82 tstl %d2 4cc82: 677e beqs 4cd02 <== NEVER TAKEN return RTEMS_INVALID_NAME; if ( !id ) 4cc84: 4a8a tstl %a2 4cc86: 677e beqs 4cd06 <== NEVER TAKEN return RTEMS_INVALID_ADDRESS; /* Initialize core barrier attributes */ if ( _Attributes_Is_barrier_automatic( attribute_set ) ) { 4cc88: 0803 0004 btst #4,%d3 4cc8c: 670a beqs 4cc98 <== NEVER TAKEN the_attributes.discipline = CORE_BARRIER_AUTOMATIC_RELEASE; 4cc8e: 42ae fff8 clrl %fp@(-8) if ( maximum_waiters == 0 ) 4cc92: 4a80 tstl %d0 4cc94: 6608 bnes 4cc9e <== ALWAYS TAKEN 4cc96: 6072 bras 4cd0a <== NOT EXECUTED return RTEMS_INVALID_NUMBER; } else the_attributes.discipline = CORE_BARRIER_MANUAL_RELEASE; 4cc98: 7201 moveq #1,%d1 <== NOT EXECUTED 4cc9a: 2d41 fff8 movel %d1,%fp@(-8) <== NOT EXECUTED the_attributes.maximum_count = maximum_waiters; 4cc9e: 2d40 fffc movel %d0,%fp@(-4) 4cca2: 2039 0006 083c movel 6083c <_Thread_Dispatch_disable_level>,%d0 4cca8: 5280 addql #1,%d0 4ccaa: 23c0 0006 083c movel %d0,6083c <_Thread_Dispatch_disable_level> * This function allocates a barrier control block from * the inactive chain of free barrier control blocks. */ RTEMS_INLINE_ROUTINE Barrier_Control *_Barrier_Allocate( void ) { return (Barrier_Control *) _Objects_Allocate( &_Barrier_Information ); 4ccb0: 4879 0006 1098 pea 61098 <_Barrier_Information> 4ccb6: 49f9 0004 9452 lea 49452 <_Thread_Enable_dispatch>,%a4 4ccbc: 4eb9 0004 8564 jsr 48564 <_Objects_Allocate> _Thread_Disable_dispatch(); /* prevents deletion */ the_barrier = _Barrier_Allocate(); if ( !the_barrier ) { 4ccc2: 588f addql #4,%sp 4ccc4: 2640 moveal %d0,%a3 4ccc6: 4a80 tstl %d0 4ccc8: 6606 bnes 4ccd0 <== ALWAYS TAKEN _Thread_Enable_dispatch(); 4ccca: 4e94 jsr %a4@ <== NOT EXECUTED return RTEMS_TOO_MANY; 4cccc: 7005 moveq #5,%d0 <== NOT EXECUTED 4ccce: 603c bras 4cd0c <== NOT EXECUTED } the_barrier->attribute_set = attribute_set; 4ccd0: 2743 0010 movel %d3,%a3@(16) _CORE_barrier_Initialize( &the_barrier->Barrier, &the_attributes ); 4ccd4: 486e fff8 pea %fp@(-8) 4ccd8: 486b 0014 pea %a3@(20) 4ccdc: 4eb9 0004 d43c jsr 4d43c <_CORE_barrier_Initialize> Objects_Name name ) { _Objects_Set_local_object( information, _Objects_Get_index( the_object->id ), 4cce2: 202b 0008 movel %a3@(8),%d0 Objects_Information *information, Objects_Control *the_object, Objects_Name name ) { _Objects_Set_local_object( 4cce6: 4281 clrl %d1 #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4cce8: 2079 0006 10b0 moveal 610b0 <_Barrier_Information+0x18>,%a0 Objects_Information *information, Objects_Control *the_object, Objects_Name name ) { _Objects_Set_local_object( 4ccee: 3200 movew %d0,%d1 #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4ccf0: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4) information, _Objects_Get_index( the_object->id ), the_object ); the_object->name = name; 4ccf4: 2742 000c movel %d2,%a3@(12) &_Barrier_Information, &the_barrier->Object, (Objects_Name) name ); *id = the_barrier->Object.id; 4ccf8: 2480 movel %d0,%a2@ _Thread_Enable_dispatch(); 4ccfa: 4e94 jsr %a4@ return RTEMS_SUCCESSFUL; 4ccfc: 508f addql #8,%sp 4ccfe: 4280 clrl %d0 4cd00: 600a bras 4cd0c { Barrier_Control *the_barrier; CORE_barrier_Attributes the_attributes; if ( !rtems_is_name_valid( name ) ) return RTEMS_INVALID_NAME; 4cd02: 7003 moveq #3,%d0 <== NOT EXECUTED 4cd04: 6006 bras 4cd0c <== NOT EXECUTED if ( !id ) return RTEMS_INVALID_ADDRESS; 4cd06: 7009 moveq #9,%d0 <== NOT EXECUTED 4cd08: 6002 bras 4cd0c <== NOT EXECUTED /* Initialize core barrier attributes */ if ( _Attributes_Is_barrier_automatic( attribute_set ) ) { the_attributes.discipline = CORE_BARRIER_AUTOMATIC_RELEASE; if ( maximum_waiters == 0 ) return RTEMS_INVALID_NUMBER; 4cd0a: 700a moveq #10,%d0 <== NOT EXECUTED *id = the_barrier->Object.id; _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 4cd0c: 4cee 1c0c ffe4 moveml %fp@(-28),%d2-%d3/%a2-%a4 4cd12: 4e5e unlk %fp ... =============================================================================== 0004cd18 : */ rtems_status_code rtems_barrier_delete( rtems_id id ) { 4cd18: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4cd1c: 2f0a movel %a2,%sp@- <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (Barrier_Control *) _Objects_Get( &_Barrier_Information, id, location ); 4cd1e: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4cd22: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4cd26: 4879 0006 1098 pea 61098 <_Barrier_Information> <== NOT EXECUTED 4cd2c: 4eb9 0004 89bc jsr 489bc <_Objects_Get> <== NOT EXECUTED Barrier_Control *the_barrier; Objects_Locations location; the_barrier = _Barrier_Get( id, &location ); switch ( location ) { 4cd32: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4cd36: 2440 moveal %d0,%a2 <== NOT EXECUTED 4cd38: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4cd3c: 663a bnes 4cd78 <== NOT EXECUTED case OBJECTS_LOCAL: _CORE_barrier_Flush( 4cd3e: 4878 0002 pea 2 <== NOT EXECUTED 4cd42: 42a7 clrl %sp@- <== NOT EXECUTED 4cd44: 486a 0014 pea %a2@(20) <== NOT EXECUTED 4cd48: 4eb9 0004 9ac4 jsr 49ac4 <_Thread_queue_Flush> <== NOT EXECUTED &the_barrier->Barrier, NULL, CORE_BARRIER_WAS_DELETED ); _Objects_Close( &_Barrier_Information, &the_barrier->Object ); 4cd4e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4cd50: 4879 0006 1098 pea 61098 <_Barrier_Information> <== NOT EXECUTED 4cd56: 4eb9 0004 85e0 jsr 485e0 <_Objects_Close> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Barrier_Free ( Barrier_Control *the_barrier ) { _Objects_Free( &_Barrier_Information, &the_barrier->Object ); 4cd5c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4cd5e: 4879 0006 1098 pea 61098 <_Barrier_Information> <== NOT EXECUTED 4cd64: 4eb9 0004 8858 jsr 48858 <_Objects_Free> <== NOT EXECUTED _Barrier_Free( the_barrier ); _Thread_Enable_dispatch(); 4cd6a: 4eb9 0004 9452 jsr 49452 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 4cd70: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 4cd74: 4280 clrl %d0 <== NOT EXECUTED 4cd76: 6002 bras 4cd7a <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 4cd78: 7004 moveq #4,%d0 <== NOT EXECUTED } 4cd7a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4cd7e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00045dac : rtems_status_code rtems_barrier_ident( rtems_name name, rtems_id *id ) { 45dac: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED Objects_Name_or_id_lookup_errors status; status = _Objects_Name_to_id_u32( 45db0: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 45db4: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED 45dba: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 45dbe: 4879 0005 f938 pea 5f938 <_Barrier_Information> <== NOT EXECUTED 45dc4: 4eb9 0004 7de4 jsr 47de4 <_Objects_Name_to_id_u32> <== NOT EXECUTED OBJECTS_SEARCH_LOCAL_NODE, id ); return _Status_Object_name_errors_to_status[ status ]; } 45dca: 41f9 0005 d22e lea 5d22e <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED 45dd0: 4e5e unlk %fp <== NOT EXECUTED 45dd2: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED =============================================================================== 0004cdb4 : rtems_status_code rtems_barrier_release( rtems_id id, uint32_t *released ) { 4cdb4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4cdb8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4cdba: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 4cdbe: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4cdc0: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED Barrier_Control *the_barrier; Objects_Locations location; if ( !released ) 4cdc4: 4a8a tstl %a2 <== NOT EXECUTED 4cdc6: 673c beqs 4ce04 <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (Barrier_Control *) _Objects_Get( &_Barrier_Information, id, location ); 4cdc8: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4cdcc: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4cdce: 4879 0006 1098 pea 61098 <_Barrier_Information> <== NOT EXECUTED 4cdd4: 4eb9 0004 89bc jsr 489bc <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_barrier = _Barrier_Get( id, &location ); switch ( location ) { 4cdda: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4cdde: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4cde2: 6624 bnes 4ce08 <== NOT EXECUTED case OBJECTS_LOCAL: *released = _CORE_barrier_Release( &the_barrier->Barrier, id, NULL ); 4cde4: 42a7 clrl %sp@- <== NOT EXECUTED 4cde6: 2040 moveal %d0,%a0 <== NOT EXECUTED 4cde8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4cdea: 4868 0014 pea %a0@(20) <== NOT EXECUTED 4cdee: 4eb9 0004 d478 jsr 4d478 <_CORE_barrier_Release> <== NOT EXECUTED 4cdf4: 2480 movel %d0,%a2@ <== NOT EXECUTED _Thread_Enable_dispatch(); 4cdf6: 4eb9 0004 9452 jsr 49452 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 4cdfc: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4ce00: 4280 clrl %d0 <== NOT EXECUTED 4ce02: 6006 bras 4ce0a <== NOT EXECUTED { Barrier_Control *the_barrier; Objects_Locations location; if ( !released ) return RTEMS_INVALID_ADDRESS; 4ce04: 7009 moveq #9,%d0 <== NOT EXECUTED 4ce06: 6002 bras 4ce0a <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 4ce08: 7004 moveq #4,%d0 <== NOT EXECUTED } 4ce0a: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 4ce0e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4ce12: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004ce18 : rtems_status_code rtems_barrier_wait( rtems_id id, rtems_interval timeout ) { 4ce18: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4ce1c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4ce1e: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4ce22: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4ce26: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4ce28: 4879 0006 1098 pea 61098 <_Barrier_Information> <== NOT EXECUTED 4ce2e: 4eb9 0004 89bc jsr 489bc <_Objects_Get> <== NOT EXECUTED Barrier_Control *the_barrier; Objects_Locations location; the_barrier = _Barrier_Get( id, &location ); switch ( location ) { 4ce34: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4ce38: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4ce3c: 6634 bnes 4ce72 <== NOT EXECUTED case OBJECTS_LOCAL: _CORE_barrier_Wait( 4ce3e: 42a7 clrl %sp@- <== NOT EXECUTED 4ce40: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4ce44: 2040 moveal %d0,%a0 <== NOT EXECUTED 4ce46: 4878 0001 pea 1 <== NOT EXECUTED 4ce4a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4ce4c: 4868 0014 pea %a0@(20) <== NOT EXECUTED 4ce50: 4eb9 0004 d4ac jsr 4d4ac <_CORE_barrier_Wait> <== NOT EXECUTED id, true, timeout, NULL ); _Thread_Enable_dispatch(); 4ce56: 4eb9 0004 9452 jsr 49452 <_Thread_Enable_dispatch> <== NOT EXECUTED return _Barrier_Translate_core_barrier_return_code( _Thread_Executing->Wait.return_code ); 4ce5c: 2079 0006 0cc6 moveal 60cc6 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED true, timeout, NULL ); _Thread_Enable_dispatch(); return _Barrier_Translate_core_barrier_return_code( 4ce62: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 4ce66: 4eb9 0004 e5b4 jsr 4e5b4 <_Barrier_Translate_core_barrier_return_code><== NOT EXECUTED 4ce6c: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 4ce70: 6002 bras 4ce74 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 4ce72: 7004 moveq #4,%d0 <== NOT EXECUTED } 4ce74: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4ce78: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046b5c : uint32_t api, uint32_t class, uint32_t node, uint32_t index ) { 46b5c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46b60: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED 46b64: 2f03 movel %d3,%sp@- <== NOT EXECUTED uint32_t node, uint32_t index ) { return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) | (( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) | 46b66: 761b moveq #27,%d3 <== NOT EXECUTED 46b68: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46b6a: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 46b6e: e7a8 lsll %d3,%d0 <== NOT EXECUTED uint32_t the_class, uint32_t node, uint32_t index ) { return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) | 46b70: 163c 0018 moveb #24,%d3 <== NOT EXECUTED 46b74: e7aa lsll %d3,%d2 <== NOT EXECUTED 46b76: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED 46b7a: 8082 orl %d2,%d0 <== NOT EXECUTED return _Objects_Build_id( api, class, node, index ); } 46b7c: 241f movel %sp@+,%d2 <== NOT EXECUTED (( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) | 46b7e: 80ae 0014 orl %fp@(20),%d0 <== NOT EXECUTED #if !defined(RTEMS_USE_16_BIT_OBJECT) (( (Objects_Id) node ) << OBJECTS_NODE_START_BIT) | 46b82: 4841 swap %d1 <== NOT EXECUTED 46b84: 4241 clrw %d1 <== NOT EXECUTED 46b86: 261f movel %sp@+,%d3 <== NOT EXECUTED 46b88: 4e5e unlk %fp <== NOT EXECUTED 46b8a: 8081 orl %d1,%d0 <== NOT EXECUTED ... =============================================================================== 00046b90 : char C1, char C2, char C3, char C4 ) { 46b90: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _Objects_Build_name( C1, C2, C3, C4 ); 46b94: 102e 000f moveb %fp@(15),%d0 <== NOT EXECUTED 46b98: 122e 000b moveb %fp@(11),%d1 <== NOT EXECUTED char C1, char C2, char C3, char C4 ) { 46b9c: 2f02 movel %d2,%sp@- <== NOT EXECUTED return _Objects_Build_name( C1, C2, C3, C4 ); 46b9e: 7418 moveq #24,%d2 <== NOT EXECUTED 46ba0: 49c0 extbl %d0 <== NOT EXECUTED 46ba2: 49c1 extbl %d1 <== NOT EXECUTED 46ba4: 4840 swap %d0 <== NOT EXECUTED 46ba6: 4240 clrw %d0 <== NOT EXECUTED 46ba8: e5a9 lsll %d2,%d1 <== NOT EXECUTED } 46baa: 241f movel %sp@+,%d2 <== NOT EXECUTED char C2, char C3, char C4 ) { return _Objects_Build_name( C1, C2, C3, C4 ); 46bac: 8081 orl %d1,%d0 <== NOT EXECUTED 46bae: 122e 0013 moveb %fp@(19),%d1 <== NOT EXECUTED 46bb2: 49c1 extbl %d1 <== NOT EXECUTED 46bb4: e189 lsll #8,%d1 <== NOT EXECUTED 46bb6: 8081 orl %d1,%d0 <== NOT EXECUTED 46bb8: 122e 0017 moveb %fp@(23),%d1 <== NOT EXECUTED } 46bbc: 4e5e unlk %fp <== NOT EXECUTED char C2, char C3, char C4 ) { return _Objects_Build_name( C1, C2, C3, C4 ); 46bbe: 49c1 extbl %d1 <== NOT EXECUTED } 46bc0: 8081 orl %d1,%d0 <== NOT EXECUTED =============================================================================== 000460dc : rtems_chain_control *chain, rtems_chain_node *node, rtems_id task, rtems_event_set events ) { 460dc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 460e0: 2f03 movel %d3,%sp@- <== NOT EXECUTED 460e2: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED 460e6: 2f02 movel %d2,%sp@- <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool rtems_chain_append_with_empty_check( rtems_chain_control *chain, rtems_chain_node *node ) { return _Chain_Append_with_empty_check( chain, node ); 460e8: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 460ec: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 460f0: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED 460f4: 4eb9 0004 6670 jsr 46670 <_Chain_Append_with_empty_check> <== NOT EXECUTED rtems_status_code sc = RTEMS_SUCCESSFUL; bool was_empty = rtems_chain_append_with_empty_check( chain, node ); if ( was_empty ) { 460fa: 508f addql #8,%sp <== NOT EXECUTED 460fc: 4a00 tstb %d0 <== NOT EXECUTED 460fe: 6718 beqs 46118 <== NOT EXECUTED sc = rtems_event_send( task, events ); 46100: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED } return sc; } 46104: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED { rtems_status_code sc = RTEMS_SUCCESSFUL; bool was_empty = rtems_chain_append_with_empty_check( chain, node ); if ( was_empty ) { sc = rtems_event_send( task, events ); 46108: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED } return sc; } 4610c: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 46110: 4e5e unlk %fp <== NOT EXECUTED { rtems_status_code sc = RTEMS_SUCCESSFUL; bool was_empty = rtems_chain_append_with_empty_check( chain, node ); if ( was_empty ) { sc = rtems_event_send( task, events ); 46112: 4ef9 0004 5760 jmp 45760 <== NOT EXECUTED } return sc; } 46118: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4611c: 4280 clrl %d0 <== NOT EXECUTED 4611e: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 46122: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046128 : rtems_chain_control *chain, rtems_id task, rtems_event_set events, rtems_chain_node **node ) { 46128: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4612c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4612e: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED 46132: 2f02 movel %d2,%sp@- <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool rtems_chain_get_with_empty_check( rtems_chain_control *chain, rtems_chain_node **node ) { return _Chain_Get_with_empty_check( chain, node ); 46134: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 46138: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4613c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 46140: 4eb9 0004 6710 jsr 46710 <_Chain_Get_with_empty_check> <== NOT EXECUTED rtems_status_code sc = RTEMS_SUCCESSFUL; bool is_empty = rtems_chain_get_with_empty_check( chain, node ); if ( is_empty ) { 46146: 508f addql #8,%sp <== NOT EXECUTED 46148: 4a00 tstb %d0 <== NOT EXECUTED 4614a: 6718 beqs 46164 <== NOT EXECUTED sc = rtems_event_send( task, events ); 4614c: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED } return sc; } 46150: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED { rtems_status_code sc = RTEMS_SUCCESSFUL; bool is_empty = rtems_chain_get_with_empty_check( chain, node ); if ( is_empty ) { sc = rtems_event_send( task, events ); 46154: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED } return sc; } 46158: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4615c: 4e5e unlk %fp <== NOT EXECUTED { rtems_status_code sc = RTEMS_SUCCESSFUL; bool is_empty = rtems_chain_get_with_empty_check( chain, node ); if ( is_empty ) { sc = rtems_event_send( task, events ); 4615e: 4ef9 0004 5760 jmp 45760 <== NOT EXECUTED } return sc; } 46164: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 46168: 4280 clrl %d0 <== NOT EXECUTED 4616a: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 4616e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046174 : rtems_chain_control *chain, rtems_event_set events, rtems_interval timeout, rtems_chain_node **node_ptr ) { 46174: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 46178: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@ <== NOT EXECUTED while ( sc == RTEMS_SUCCESSFUL && (node = rtems_chain_get( chain )) == NULL ) { rtems_event_set out; sc = rtems_event_receive( 4617c: 260e movel %fp,%d3 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_get( rtems_chain_control *the_chain ) { return _Chain_Get( the_chain ); 4617e: 47f9 0004 6758 lea 46758 <_Chain_Get>,%a3 <== NOT EXECUTED 46184: 5983 subql #4,%d3 <== NOT EXECUTED 46186: 45f9 0004 55fc lea 455fc ,%a2 <== NOT EXECUTED rtems_chain_control *chain, rtems_event_set events, rtems_interval timeout, rtems_chain_node **node_ptr ) { 4618c: 2c2e 0008 movel %fp@(8),%d6 <== NOT EXECUTED 46190: 2a2e 000c movel %fp@(12),%d5 <== NOT EXECUTED 46194: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED 46198: 6012 bras 461ac <== NOT EXECUTED while ( sc == RTEMS_SUCCESSFUL && (node = rtems_chain_get( chain )) == NULL ) { rtems_event_set out; sc = rtems_event_receive( 4619a: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4619c: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4619e: 42a7 clrl %sp@- <== NOT EXECUTED 461a0: 2f05 movel %d5,%sp@- <== NOT EXECUTED 461a2: 4e92 jsr %a2@ <== NOT EXECUTED ) { rtems_status_code sc = RTEMS_SUCCESSFUL; rtems_chain_node *node = NULL; while ( 461a4: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 461a8: 4a80 tstl %d0 <== NOT EXECUTED 461aa: 660c bnes 461b8 <== NOT EXECUTED 461ac: 2f06 movel %d6,%sp@- <== NOT EXECUTED 461ae: 4e93 jsr %a3@ <== NOT EXECUTED sc == RTEMS_SUCCESSFUL && (node = rtems_chain_get( chain )) == NULL 461b0: 588f addql #4,%sp <== NOT EXECUTED 461b2: 2400 movel %d0,%d2 <== NOT EXECUTED 461b4: 67e4 beqs 4619a <== NOT EXECUTED 461b6: 4280 clrl %d0 <== NOT EXECUTED timeout, &out ); } *node_ptr = node; 461b8: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED 461bc: 2082 movel %d2,%a0@ <== NOT EXECUTED return sc; } 461be: 4cee 0c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a3 <== NOT EXECUTED 461c4: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000461c8 : rtems_chain_control *chain, rtems_chain_node *node, rtems_id task, rtems_event_set events ) { 461c8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 461cc: 2f03 movel %d3,%sp@- <== NOT EXECUTED 461ce: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED 461d2: 2f02 movel %d2,%sp@- <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool rtems_chain_prepend_with_empty_check( rtems_chain_control *chain, rtems_chain_node *node ) { return _Chain_Prepend_with_empty_check( chain, node ); 461d4: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 461d8: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 461dc: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED 461e0: 4eb9 0004 67bc jsr 467bc <_Chain_Prepend_with_empty_check> <== NOT EXECUTED rtems_status_code sc = RTEMS_SUCCESSFUL; bool was_empty = rtems_chain_prepend_with_empty_check( chain, node ); if (was_empty) { 461e6: 508f addql #8,%sp <== NOT EXECUTED 461e8: 4a00 tstb %d0 <== NOT EXECUTED 461ea: 6718 beqs 46204 <== NOT EXECUTED sc = rtems_event_send( task, events ); 461ec: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED } return sc; } 461f0: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED { rtems_status_code sc = RTEMS_SUCCESSFUL; bool was_empty = rtems_chain_prepend_with_empty_check( chain, node ); if (was_empty) { sc = rtems_event_send( task, events ); 461f4: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED } return sc; } 461f8: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 461fc: 4e5e unlk %fp <== NOT EXECUTED { rtems_status_code sc = RTEMS_SUCCESSFUL; bool was_empty = rtems_chain_prepend_with_empty_check( chain, node ); if (was_empty) { sc = rtems_event_send( task, events ); 461fe: 4ef9 0004 5760 jmp 45760 <== NOT EXECUTED } return sc; } 46204: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 46208: 4280 clrl %d0 <== NOT EXECUTED 4620a: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 4620e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004ef40 : rtems_status_code rtems_clock_get( rtems_clock_get_options option, void *time_buffer ) { 4ef40: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4ef44: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4ef48: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4ef4a: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED if ( !time_buffer ) 4ef4e: 4a8a tstl %a2 <== NOT EXECUTED 4ef50: 6760 beqs 4efb2 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( option == RTEMS_CLOCK_GET_TOD ) 4ef52: 4a80 tstl %d0 <== NOT EXECUTED 4ef54: 6610 bnes 4ef66 <== NOT EXECUTED return rtems_clock_get_tod( (rtems_time_of_day *)time_buffer ); 4ef56: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED if ( option == RTEMS_CLOCK_GET_TIME_VALUE ) return rtems_clock_get_tod_timeval( (struct timeval *)time_buffer ); return RTEMS_INVALID_NUMBER; } 4ef5a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4ef5e: 4e5e unlk %fp <== NOT EXECUTED { if ( !time_buffer ) return RTEMS_INVALID_ADDRESS; if ( option == RTEMS_CLOCK_GET_TOD ) return rtems_clock_get_tod( (rtems_time_of_day *)time_buffer ); 4ef60: 4ef9 0004 f010 jmp 4f010 <== NOT EXECUTED if ( option == RTEMS_CLOCK_GET_SECONDS_SINCE_EPOCH ) 4ef66: 7201 moveq #1,%d1 <== NOT EXECUTED 4ef68: b280 cmpl %d0,%d1 <== NOT EXECUTED 4ef6a: 6610 bnes 4ef7c <== NOT EXECUTED return rtems_clock_get_seconds_since_epoch((rtems_interval *)time_buffer); 4ef6c: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED if ( option == RTEMS_CLOCK_GET_TIME_VALUE ) return rtems_clock_get_tod_timeval( (struct timeval *)time_buffer ); return RTEMS_INVALID_NUMBER; } 4ef70: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4ef74: 4e5e unlk %fp <== NOT EXECUTED if ( option == RTEMS_CLOCK_GET_TOD ) return rtems_clock_get_tod( (rtems_time_of_day *)time_buffer ); if ( option == RTEMS_CLOCK_GET_SECONDS_SINCE_EPOCH ) return rtems_clock_get_seconds_since_epoch((rtems_interval *)time_buffer); 4ef76: 4ef9 0004 efc0 jmp 4efc0 <== NOT EXECUTED if ( option == RTEMS_CLOCK_GET_TICKS_SINCE_BOOT ) { 4ef7c: 7202 moveq #2,%d1 <== NOT EXECUTED 4ef7e: b280 cmpl %d0,%d1 <== NOT EXECUTED 4ef80: 6608 bnes 4ef8a <== NOT EXECUTED rtems_interval *interval = (rtems_interval *)time_buffer; *interval = rtems_clock_get_ticks_since_boot(); 4ef82: 4eb9 0004 f000 jsr 4f000 <== NOT EXECUTED 4ef88: 600c bras 4ef96 <== NOT EXECUTED return RTEMS_SUCCESSFUL; } if ( option == RTEMS_CLOCK_GET_TICKS_PER_SECOND ) { 4ef8a: 7203 moveq #3,%d1 <== NOT EXECUTED 4ef8c: b280 cmpl %d0,%d1 <== NOT EXECUTED 4ef8e: 660c bnes 4ef9c <== NOT EXECUTED rtems_interval *interval = (rtems_interval *)time_buffer; *interval = rtems_clock_get_ticks_per_second(); 4ef90: 4eb9 0004 efe8 jsr 4efe8 <== NOT EXECUTED 4ef96: 2480 movel %d0,%a2@ <== NOT EXECUTED return RTEMS_SUCCESSFUL; 4ef98: 4280 clrl %d0 <== NOT EXECUTED 4ef9a: 601c bras 4efb8 <== NOT EXECUTED } if ( option == RTEMS_CLOCK_GET_TIME_VALUE ) 4ef9c: 7204 moveq #4,%d1 <== NOT EXECUTED 4ef9e: b280 cmpl %d0,%d1 <== NOT EXECUTED 4efa0: 6614 bnes 4efb6 <== NOT EXECUTED return rtems_clock_get_tod_timeval( (struct timeval *)time_buffer ); 4efa2: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED return RTEMS_INVALID_NUMBER; } 4efa6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4efaa: 4e5e unlk %fp <== NOT EXECUTED *interval = rtems_clock_get_ticks_per_second(); return RTEMS_SUCCESSFUL; } if ( option == RTEMS_CLOCK_GET_TIME_VALUE ) return rtems_clock_get_tod_timeval( (struct timeval *)time_buffer ); 4efac: 4ef9 0004 f0c4 jmp 4f0c4 <== NOT EXECUTED rtems_clock_get_options option, void *time_buffer ) { if ( !time_buffer ) return RTEMS_INVALID_ADDRESS; 4efb2: 7009 moveq #9,%d0 <== NOT EXECUTED 4efb4: 6002 bras 4efb8 <== NOT EXECUTED } if ( option == RTEMS_CLOCK_GET_TIME_VALUE ) return rtems_clock_get_tod_timeval( (struct timeval *)time_buffer ); return RTEMS_INVALID_NUMBER; 4efb6: 700a moveq #10,%d0 <== NOT EXECUTED } 4efb8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4efbc: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045d94 : #include rtems_status_code rtems_clock_get_seconds_since_epoch( rtems_interval *the_interval ) { 45d94: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45d98: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !the_interval ) 45d9c: 4a88 tstl %a0 <== NOT EXECUTED 45d9e: 6712 beqs 45db2 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( !_TOD_Is_set ) 45da0: 4a39 0006 8388 tstb 68388 <_TOD_Is_set> <== NOT EXECUTED 45da6: 670e beqs 45db6 <== NOT EXECUTED return RTEMS_NOT_DEFINED; *the_interval = _TOD_Seconds_since_epoch(); 45da8: 20b9 0006 8422 movel 68422 <_TOD_Now>,%a0@ <== NOT EXECUTED return RTEMS_SUCCESSFUL; 45dae: 4280 clrl %d0 <== NOT EXECUTED 45db0: 6006 bras 45db8 <== NOT EXECUTED rtems_status_code rtems_clock_get_seconds_since_epoch( rtems_interval *the_interval ) { if ( !the_interval ) return RTEMS_INVALID_ADDRESS; 45db2: 7009 moveq #9,%d0 <== NOT EXECUTED 45db4: 6002 bras 45db8 <== NOT EXECUTED if ( !_TOD_Is_set ) return RTEMS_NOT_DEFINED; 45db6: 700b moveq #11,%d0 <== NOT EXECUTED *the_interval = _TOD_Seconds_since_epoch(); return RTEMS_SUCCESSFUL; } 45db8: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00044fc0 : rtems_interval rtems_clock_get_ticks_per_second(void) { return TOD_MICROSECONDS_PER_SECOND / rtems_configuration_get_microseconds_per_tick(); } 44fc0: 41f9 0005 cba0 lea 5cba0 ,%a0 <== NOT EXECUTED #include #include #include rtems_interval rtems_clock_get_ticks_per_second(void) { 44fc6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return TOD_MICROSECONDS_PER_SECOND / rtems_configuration_get_microseconds_per_tick(); } 44fca: 203c 000f 4240 movel #1000000,%d0 <== NOT EXECUTED 44fd0: 4e5e unlk %fp <== NOT EXECUTED 44fd2: 4c50 0000 remul %a0@,%d0,%d0 <== NOT EXECUTED =============================================================================== 00044fd8 : #include #include #include rtems_interval rtems_clock_get_ticks_since_boot(void) { 44fd8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _Watchdog_Ticks_since_boot; 44fdc: 2039 0005 e5a2 movel 5e5a2 <_Watchdog_Ticks_since_boot>,%d0<== NOT EXECUTED } 44fe2: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00045de4 : #include rtems_status_code rtems_clock_get_tod( rtems_time_of_day *time_buffer ) { 45de4: 4e56 ffcc linkw %fp,#-52 <== NOT EXECUTED 45de8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45dea: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 45dee: 2f02 movel %d2,%sp@- <== NOT EXECUTED rtems_time_of_day *tmbuf = time_buffer; struct tm time; struct timeval now; if ( !time_buffer ) 45df0: 4a8a tstl %a2 <== NOT EXECUTED 45df2: 6700 0090 beqw 45e84 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( !_TOD_Is_set ) 45df6: 4a39 0006 8388 tstb 68388 <_TOD_Is_set> <== NOT EXECUTED 45dfc: 6700 008a beqw 45e88 <== NOT EXECUTED { ISR_Level level; struct timespec now; suseconds_t useconds; _ISR_Disable(level); 45e00: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 45e06: 40c2 movew %sr,%d2 <== NOT EXECUTED 45e08: 8082 orl %d2,%d0 <== NOT EXECUTED 45e0a: 46c0 movew %d0,%sr <== NOT EXECUTED _TOD_Get( &now ); 45e0c: 486e fff0 pea %fp@(-16) <== NOT EXECUTED 45e10: 4eb9 0004 759c jsr 4759c <_TOD_Get> <== NOT EXECUTED _ISR_Enable(level); 45e16: 46c2 movew %d2,%sr <== NOT EXECUTED useconds = (suseconds_t)now.tv_nsec; useconds /= (suseconds_t)TOD_NANOSECONDS_PER_MICROSECOND; time->tv_sec = now.tv_sec; time->tv_usec = useconds; 45e18: 243c 0000 03e8 movel #1000,%d2 <== NOT EXECUTED /* Obtain the current time */ _TOD_Get_timeval( &now ); /* Split it into a closer format */ gmtime_r( &now.tv_sec, &time ); 45e1e: 486e ffcc pea %fp@(-52) <== NOT EXECUTED _ISR_Disable(level); _TOD_Get( &now ); _ISR_Enable(level); useconds = (suseconds_t)now.tv_nsec; 45e22: 202e fff4 movel %fp@(-12),%d0 <== NOT EXECUTED 45e26: 486e fff8 pea %fp@(-8) <== NOT EXECUTED useconds /= (suseconds_t)TOD_NANOSECONDS_PER_MICROSECOND; time->tv_sec = now.tv_sec; 45e2a: 2d6e fff0 fff8 movel %fp@(-16),%fp@(-8) <== NOT EXECUTED time->tv_usec = useconds; 45e30: 4c42 0800 remsl %d2,%d0,%d0 <== NOT EXECUTED 45e34: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED 45e38: 4eb9 0004 e5b4 jsr 4e5b4 <== NOT EXECUTED /* Now adjust it to the RTEMS format */ tmbuf->year = time.tm_year + 1900; 45e3e: 206e ffe0 moveal %fp@(-32),%a0 <== NOT EXECUTED 45e42: 41e8 076c lea %a0@(1900),%a0 <== NOT EXECUTED tmbuf->minute = time.tm_min; tmbuf->second = time.tm_sec; tmbuf->ticks = now.tv_usec / rtems_configuration_get_microseconds_per_tick(); return RTEMS_SUCCESSFUL; 45e46: 4fef 000c lea %sp@(12),%sp <== 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; 45e4a: 202e ffdc movel %fp@(-36),%d0 <== NOT EXECUTED 45e4e: 5280 addql #1,%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; 45e50: 2488 movel %a0,%a2@ <== NOT EXECUTED tmbuf->month = time.tm_mon + 1; tmbuf->day = time.tm_mday; tmbuf->hour = time.tm_hour; tmbuf->minute = time.tm_min; tmbuf->second = time.tm_sec; tmbuf->ticks = now.tv_usec / 45e52: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED 45e56: 41f9 0005 ecd0 lea 5ecd0 ,%a0 <== 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; 45e5c: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED tmbuf->day = time.tm_mday; 45e60: 256e ffd8 0008 movel %fp@(-40),%a2@(8) <== NOT EXECUTED tmbuf->hour = time.tm_hour; 45e66: 256e ffd4 000c movel %fp@(-44),%a2@(12) <== NOT EXECUTED tmbuf->minute = time.tm_min; 45e6c: 256e ffd0 0010 movel %fp@(-48),%a2@(16) <== NOT EXECUTED tmbuf->second = time.tm_sec; 45e72: 256e ffcc 0014 movel %fp@(-52),%a2@(20) <== NOT EXECUTED tmbuf->ticks = now.tv_usec / 45e78: 4c50 1001 remul %a0@,%d1,%d1 <== NOT EXECUTED rtems_configuration_get_microseconds_per_tick(); return RTEMS_SUCCESSFUL; 45e7c: 4280 clrl %d0 <== 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 / 45e7e: 2541 0018 movel %d1,%a2@(24) <== NOT EXECUTED rtems_configuration_get_microseconds_per_tick(); return RTEMS_SUCCESSFUL; 45e82: 6006 bras 45e8a <== NOT EXECUTED rtems_time_of_day *tmbuf = time_buffer; struct tm time; struct timeval now; if ( !time_buffer ) return RTEMS_INVALID_ADDRESS; 45e84: 7009 moveq #9,%d0 <== NOT EXECUTED 45e86: 6002 bras 45e8a <== NOT EXECUTED if ( !_TOD_Is_set ) return RTEMS_NOT_DEFINED; 45e88: 700b moveq #11,%d0 <== NOT EXECUTED tmbuf->second = time.tm_sec; tmbuf->ticks = now.tv_usec / rtems_configuration_get_microseconds_per_tick(); return RTEMS_SUCCESSFUL; } 45e8a: 242e ffc4 movel %fp@(-60),%d2 <== NOT EXECUTED 45e8e: 246e ffc8 moveal %fp@(-56),%a2 <== NOT EXECUTED 45e92: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004f0c4 : #include rtems_status_code rtems_clock_get_tod_timeval( struct timeval *time ) { 4f0c4: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 4f0c8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4f0ca: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4f0ce: 2f02 movel %d2,%sp@- <== NOT EXECUTED if ( !time ) 4f0d0: 4a8a tstl %a2 <== NOT EXECUTED 4f0d2: 673c beqs 4f110 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( !_TOD_Is_set ) 4f0d4: 4a39 0007 6f1c tstb 76f1c <_TOD_Is_set> <== NOT EXECUTED 4f0da: 6738 beqs 4f114 <== NOT EXECUTED { ISR_Level level; struct timespec now; suseconds_t useconds; _ISR_Disable(level); 4f0dc: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 4f0e2: 40c2 movew %sr,%d2 <== NOT EXECUTED 4f0e4: 8082 orl %d2,%d0 <== NOT EXECUTED 4f0e6: 46c0 movew %d0,%sr <== NOT EXECUTED _TOD_Get( &now ); 4f0e8: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4f0ec: 4eb9 0005 327c jsr 5327c <_TOD_Get> <== NOT EXECUTED _ISR_Enable(level); 4f0f2: 46c2 movew %d2,%sr <== NOT EXECUTED useconds = (suseconds_t)now.tv_nsec; useconds /= (suseconds_t)TOD_NANOSECONDS_PER_MICROSECOND; time->tv_sec = now.tv_sec; time->tv_usec = useconds; 4f0f4: 243c 0000 03e8 movel #1000,%d2 <== NOT EXECUTED return RTEMS_NOT_DEFINED; _TOD_Get_timeval( time ); return RTEMS_SUCCESSFUL; 4f0fa: 588f addql #4,%sp <== NOT EXECUTED _ISR_Disable(level); _TOD_Get( &now ); _ISR_Enable(level); useconds = (suseconds_t)now.tv_nsec; 4f0fc: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED useconds /= (suseconds_t)TOD_NANOSECONDS_PER_MICROSECOND; time->tv_sec = now.tv_sec; time->tv_usec = useconds; 4f100: 4c42 0800 remsl %d2,%d0,%d0 <== NOT EXECUTED _ISR_Enable(level); useconds = (suseconds_t)now.tv_nsec; useconds /= (suseconds_t)TOD_NANOSECONDS_PER_MICROSECOND; time->tv_sec = now.tv_sec; 4f104: 24ae fff8 movel %fp@(-8),%a2@ <== NOT EXECUTED time->tv_usec = useconds; 4f108: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED 4f10c: 4280 clrl %d0 <== NOT EXECUTED 4f10e: 6006 bras 4f116 <== NOT EXECUTED rtems_status_code rtems_clock_get_tod_timeval( struct timeval *time ) { if ( !time ) return RTEMS_INVALID_ADDRESS; 4f110: 7009 moveq #9,%d0 <== NOT EXECUTED 4f112: 6002 bras 4f116 <== NOT EXECUTED if ( !_TOD_Is_set ) return RTEMS_NOT_DEFINED; 4f114: 700b moveq #11,%d0 <== NOT EXECUTED _TOD_Get_timeval( time ); return RTEMS_SUCCESSFUL; } 4f116: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 4f11a: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 4f11e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000451f8 : * error code - if unsuccessful */ rtems_status_code rtems_clock_get_uptime( struct timespec *uptime ) { 451f8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 451fc: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED if ( !uptime ) 45200: 670e beqs 45210 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; _TOD_Get_uptime_as_timespec( uptime ); 45202: 2f00 movel %d0,%sp@- <== NOT EXECUTED 45204: 4eb9 0004 6764 jsr 46764 <_TOD_Get_uptime_as_timespec> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 4520a: 588f addql #4,%sp <== NOT EXECUTED 4520c: 4280 clrl %d0 <== NOT EXECUTED 4520e: 6002 bras 45212 <== NOT EXECUTED rtems_status_code rtems_clock_get_uptime( struct timespec *uptime ) { if ( !uptime ) return RTEMS_INVALID_ADDRESS; 45210: 7009 moveq #9,%d0 <== NOT EXECUTED _TOD_Get_uptime_as_timespec( uptime ); return RTEMS_SUCCESSFUL; } 45212: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00045eb4 : */ rtems_status_code rtems_clock_set( rtems_time_of_day *time_buffer ) { 45eb4: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 45eb8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45eba: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED struct timespec newtime; if ( !time_buffer ) 45ebe: 4a8a tstl %a2 <== NOT EXECUTED 45ec0: 675a beqs 45f1c <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( _TOD_Validate( time_buffer ) ) { 45ec2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45ec4: 4eb9 0004 6004 jsr 46004 <_TOD_Validate> <== NOT EXECUTED 45eca: 588f addql #4,%sp <== NOT EXECUTED 45ecc: 4a00 tstb %d0 <== NOT EXECUTED 45ece: 6750 beqs 45f20 <== NOT EXECUTED newtime.tv_sec = _TOD_To_seconds( time_buffer ); 45ed0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45ed2: 4eb9 0004 5f68 jsr 45f68 <_TOD_To_seconds> <== NOT EXECUTED newtime.tv_nsec = time_buffer->ticks * 45ed8: 41f9 0005 ecd0 lea 5ecd0 ,%a0 <== NOT EXECUTED 45ede: 223c 0000 03e8 movel #1000,%d1 <== NOT EXECUTED if ( !time_buffer ) return RTEMS_INVALID_ADDRESS; if ( _TOD_Validate( time_buffer ) ) { newtime.tv_sec = _TOD_To_seconds( time_buffer ); 45ee4: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED newtime.tv_nsec = time_buffer->ticks * 45ee8: 202a 0018 movel %a2@(24),%d0 <== NOT EXECUTED 45eec: 4c10 0800 mulsl %a0@,%d0 <== NOT EXECUTED 45ef0: 4c00 1800 mulsl %d0,%d1 <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 45ef4: 2039 0006 8378 movel 68378 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 45efa: 5280 addql #1,%d0 <== NOT EXECUTED 45efc: 2d41 fffc movel %d1,%fp@(-4) <== NOT EXECUTED 45f00: 23c0 0006 8378 movel %d0,68378 <_Thread_Dispatch_disable_level><== NOT EXECUTED rtems_configuration_get_nanoseconds_per_tick(); _Thread_Disable_dispatch(); _TOD_Set( &newtime ); 45f06: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 45f0a: 4eb9 0004 7694 jsr 47694 <_TOD_Set> <== NOT EXECUTED _Thread_Enable_dispatch(); 45f10: 4eb9 0004 8b46 jsr 48b46 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 45f16: 508f addql #8,%sp <== NOT EXECUTED 45f18: 4280 clrl %d0 <== NOT EXECUTED 45f1a: 6006 bras 45f22 <== NOT EXECUTED ) { struct timespec newtime; if ( !time_buffer ) return RTEMS_INVALID_ADDRESS; 45f1c: 7009 moveq #9,%d0 <== NOT EXECUTED 45f1e: 6002 bras 45f22 <== NOT EXECUTED _Thread_Disable_dispatch(); _TOD_Set( &newtime ); _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } return RTEMS_INVALID_CLOCK; 45f20: 7014 moveq #20,%d0 <== NOT EXECUTED } 45f22: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 45f26: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00044fe8 : * error code - if unsuccessful */ rtems_status_code rtems_clock_set_nanoseconds_extension( rtems_nanoseconds_extension_routine routine ) { 44fe8: 4e56 0000 linkw %fp,#0 44fec: 202e 0008 movel %fp@(8),%d0 if ( !routine ) 44ff0: 670a beqs 44ffc <== NEVER TAKEN return RTEMS_INVALID_ADDRESS; _Watchdog_Nanoseconds_since_tick_handler = routine; 44ff2: 23c0 0005 cd04 movel %d0,5cd04 <_Watchdog_Nanoseconds_since_tick_handler> return RTEMS_SUCCESSFUL; 44ff8: 4280 clrl %d0 44ffa: 6002 bras 44ffe rtems_status_code rtems_clock_set_nanoseconds_extension( rtems_nanoseconds_extension_routine routine ) { if ( !routine ) return RTEMS_INVALID_ADDRESS; 44ffc: 7009 moveq #9,%d0 <== NOT EXECUTED _Watchdog_Nanoseconds_since_tick_handler = routine; return RTEMS_SUCCESSFUL; } 44ffe: 4e5e unlk %fp ... =============================================================================== 00045004 : * * NOTE: This routine only works for leap-years through 2099. */ rtems_status_code rtems_clock_tick( void ) { 45004: 4e56 0000 linkw %fp,#0 _TOD_Tickle_ticks(); 45008: 4eb9 0004 6418 jsr 46418 <_TOD_Tickle_ticks> */ RTEMS_INLINE_ROUTINE void _Watchdog_Tickle_ticks( void ) { _Watchdog_Tickle( &_Watchdog_Ticks_chain ); 4500e: 4879 0005 e558 pea 5e558 <_Watchdog_Ticks_chain> <== NOT EXECUTED 45014: 4eb9 0004 86b8 jsr 486b8 <_Watchdog_Tickle> <== NOT EXECUTED _Watchdog_Tickle_ticks(); _Thread_Tickle_timeslice(); 4501a: 4eb9 0004 81b0 jsr 481b0 <_Thread_Tickle_timeslice> <== NOT EXECUTED if ( _Thread_Is_context_switch_necessary() && 45020: 588f addql #4,%sp <== NOT EXECUTED * otherwise. */ RTEMS_INLINE_ROUTINE bool _Thread_Is_context_switch_necessary( void ) { return ( _Thread_Dispatch_necessary ); 45022: 1039 0005 e90e moveb 5e90e <_Per_CPU_Information+0x18>,%d0 <== NOT EXECUTED 45028: 670e beqs 45038 <== NOT EXECUTED * otherwise. */ RTEMS_INLINE_ROUTINE bool _Thread_Is_dispatching_enabled( void ) { return ( _Thread_Dispatch_disable_level == 0 ); 4502a: 2039 0005 e478 movel 5e478 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 45030: 6606 bnes 45038 <== NOT EXECUTED _Thread_Is_dispatching_enabled() ) _Thread_Dispatch(); 45032: 4eb9 0004 765c jsr 4765c <_Thread_Dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; } 45038: 4280 clrl %d0 <== NOT EXECUTED 4503a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004a930 : * rtems_debug_enable */ void rtems_debug_enable ( rtems_debug_control to_be_enabled ) { 4a930: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED _Debug_Level |= to_be_enabled; 4a934: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED } 4a938: 4e5e unlk %fp <== NOT EXECUTED */ void rtems_debug_enable ( rtems_debug_control to_be_enabled ) { _Debug_Level |= to_be_enabled; 4a93a: 81b9 0005 e540 orl %d0,5e540 <_Debug_Level> <== NOT EXECUTED } =============================================================================== 0004a96a : * rtems_debug_is_enabled */ bool rtems_debug_is_enabled( rtems_debug_control level ) { 4a96a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return (_Debug_Level & level) ? true : false; 4a96e: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED } 4a972: 4e5e unlk %fp <== NOT EXECUTED */ bool rtems_debug_is_enabled( rtems_debug_control level ) { return (_Debug_Level & level) ? true : false; 4a974: c0b9 0005 e540 andl 5e540 <_Debug_Level>,%d0 <== NOT EXECUTED 4a97a: 56c0 sne %d0 <== NOT EXECUTED } 4a97c: 4480 negl %d0 <== NOT EXECUTED =============================================================================== 00045040 : rtems_event_set event_in, rtems_option option_set, rtems_interval ticks, rtems_event_set *event_out ) { 45040: 4e56 0000 linkw %fp,#0 45044: 202e 0008 movel %fp@(8),%d0 45048: 206e 0014 moveal %fp@(20),%a0 RTEMS_API_Control *api; if ( !event_out ) 4504c: 4a88 tstl %a0 4504e: 6748 beqs 45098 <== NEVER TAKEN return RTEMS_INVALID_ADDRESS; api = _Thread_Executing->API_Extensions[ THREAD_API_RTEMS ]; 45050: 2279 0005 e902 moveal 5e902 <_Per_CPU_Information+0xc>,%a1 45056: 2269 00fe moveal %a1@(254),%a1 if ( _Event_sets_Is_empty( event_in ) ) { 4505a: 4a80 tstl %d0 4505c: 6604 bnes 45062 <== ALWAYS TAKEN *event_out = api->pending_events; 4505e: 2091 movel %a1@,%a0@ <== NOT EXECUTED return RTEMS_SUCCESSFUL; 45060: 6038 bras 4509a <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 45062: 2239 0005 e478 movel 5e478 <_Thread_Dispatch_disable_level>,%d1 45068: 5281 addql #1,%d1 4506a: 23c1 0005 e478 movel %d1,5e478 <_Thread_Dispatch_disable_level> } _Thread_Disable_dispatch(); _Event_Seize( event_in, option_set, ticks, event_out ); 45070: 2f08 movel %a0,%sp@- 45072: 2f2e 0010 movel %fp@(16),%sp@- 45076: 2f2e 000c movel %fp@(12),%sp@- 4507a: 2f00 movel %d0,%sp@- 4507c: 4eb9 0004 50a0 jsr 450a0 <_Event_Seize> _Thread_Enable_dispatch(); 45082: 4eb9 0004 779a jsr 4779a <_Thread_Enable_dispatch> return( _Thread_Executing->Wait.return_code ); 45088: 2079 0005 e902 moveal 5e902 <_Per_CPU_Information+0xc>,%a0 4508e: 4fef 0010 lea %sp@(16),%sp 45092: 2028 0034 movel %a0@(52),%d0 45096: 6002 bras 4509a ) { RTEMS_API_Control *api; if ( !event_out ) return RTEMS_INVALID_ADDRESS; 45098: 7009 moveq #9,%d0 <== NOT EXECUTED _Thread_Disable_dispatch(); _Event_Seize( event_in, option_set, ticks, event_out ); _Thread_Enable_dispatch(); return( _Thread_Executing->Wait.return_code ); } 4509a: 4e5e unlk %fp ... =============================================================================== 000451a4 : rtems_status_code rtems_event_send( rtems_id id, rtems_event_set event_in ) { 451a4: 4e56 fffc linkw %fp,#-4 451a8: 2f02 movel %d2,%sp@- register Thread_Control *the_thread; Objects_Locations location; RTEMS_API_Control *api; the_thread = _Thread_Get( id, &location ); 451aa: 486e fffc pea %fp@(-4) 451ae: 2f2e 0008 movel %fp@(8),%sp@- 451b2: 4eb9 0004 77c0 jsr 477c0 <_Thread_Get> switch ( location ) { 451b8: 508f addql #8,%sp 451ba: 4aae fffc tstl %fp@(-4) 451be: 662e bnes 451ee <== NEVER TAKEN case OBJECTS_LOCAL: api = the_thread->API_Extensions[ THREAD_API_RTEMS ]; 451c0: 2240 moveal %d0,%a1 rtems_event_set *the_event_set ) { ISR_Level level; _ISR_Disable( level ); 451c2: 223c 0000 0700 movel #1792,%d1 451c8: 2069 00fe moveal %a1@(254),%a0 451cc: 40c2 movew %sr,%d2 451ce: 8282 orl %d2,%d1 451d0: 46c1 movew %d1,%sr *the_event_set |= the_new_events; 451d2: 222e 000c movel %fp@(12),%d1 451d6: 8390 orl %d1,%a0@ _ISR_Enable( level ); 451d8: 46c2 movew %d2,%sr _Event_sets_Post( event_in, &api->pending_events ); _Event_Surrender( the_thread ); 451da: 2f00 movel %d0,%sp@- 451dc: 4eb9 0004 51f8 jsr 451f8 <_Event_Surrender> _Thread_Enable_dispatch(); 451e2: 4eb9 0004 779a jsr 4779a <_Thread_Enable_dispatch> return RTEMS_SUCCESSFUL; 451e8: 588f addql #4,%sp 451ea: 4280 clrl %d0 451ec: 6002 bras 451f0 case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 451ee: 7004 moveq #4,%d0 <== NOT EXECUTED } 451f0: 242e fff8 movel %fp@(-8),%d2 451f4: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046df4 : rtems_status_code rtems_extension_create( rtems_name name, const rtems_extensions_table *extension_table, rtems_id *id ) { 46df4: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 46df8: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED 46dfc: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 46e00: 286e 0010 moveal %fp@(16),%a4 <== NOT EXECUTED Extension_Control *the_extension; if ( !id ) 46e04: 4a8c tstl %a4 <== NOT EXECUTED 46e06: 6770 beqs 46e78 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( !rtems_is_name_valid( name ) ) 46e08: 4a82 tstl %d2 <== NOT EXECUTED 46e0a: 6770 beqs 46e7c <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 46e0c: 2039 0006 8378 movel 68378 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 46e12: 5280 addql #1,%d0 <== NOT EXECUTED 46e14: 23c0 0006 8378 movel %d0,68378 <_Thread_Dispatch_disable_level><== NOT EXECUTED #ifndef __EXTENSION_MANAGER_inl #define __EXTENSION_MANAGER_inl RTEMS_INLINE_ROUTINE Extension_Control *_Extension_Allocate( void ) { return (Extension_Control *) _Objects_Allocate( &_Extension_Information ); 46e1a: 4879 0006 8500 pea 68500 <_Extension_Information> <== NOT EXECUTED 46e20: 47f9 0004 8b46 lea 48b46 <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED 46e26: 4eb9 0004 7ba0 jsr 47ba0 <_Objects_Allocate> <== NOT EXECUTED _Thread_Disable_dispatch(); /* to prevent deletion */ the_extension = _Extension_Allocate(); if ( !the_extension ) { 46e2c: 588f addql #4,%sp <== NOT EXECUTED 46e2e: 2440 moveal %d0,%a2 <== NOT EXECUTED 46e30: 4a80 tstl %d0 <== NOT EXECUTED 46e32: 6606 bnes 46e3a <== NOT EXECUTED _Thread_Enable_dispatch(); 46e34: 4e93 jsr %a3@ <== NOT EXECUTED return RTEMS_TOO_MANY; 46e36: 7005 moveq #5,%d0 <== NOT EXECUTED 46e38: 6044 bras 46e7e <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _User_extensions_Add_set_with_table( User_extensions_Control *extension, const User_extensions_Table *extension_table ) { extension->Callouts = *extension_table; 46e3a: 4878 0020 pea 20 <== NOT EXECUTED 46e3e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 46e42: 486a 0024 pea %a2@(36) <== NOT EXECUTED 46e46: 4eb9 0004 e5d0 jsr 4e5d0 <== NOT EXECUTED _User_extensions_Add_set( extension ); 46e4c: 486a 0010 pea %a2@(16) <== NOT EXECUTED 46e50: 4eb9 0004 9770 jsr 49770 <_User_extensions_Add_set> <== NOT EXECUTED Objects_Name name ) { _Objects_Set_local_object( information, _Objects_Get_index( the_object->id ), 46e56: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, Objects_Name name ) { _Objects_Set_local_object( 46e5a: 4281 clrl %d1 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 46e5c: 2079 0006 8518 moveal 68518 <_Extension_Information+0x18>,%a0<== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, Objects_Name name ) { _Objects_Set_local_object( 46e62: 3200 movew %d0,%d1 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 46e64: 218a 1c00 movel %a2,%a0@(00000000,%d1:l:4) <== NOT EXECUTED information, _Objects_Get_index( the_object->id ), the_object ); the_object->name = name; 46e68: 2542 000c movel %d2,%a2@(12) <== NOT EXECUTED &_Extension_Information, &the_extension->Object, (Objects_Name) name ); *id = the_extension->Object.id; 46e6c: 2880 movel %d0,%a4@ <== NOT EXECUTED _Thread_Enable_dispatch(); 46e6e: 4e93 jsr %a3@ <== NOT EXECUTED return RTEMS_SUCCESSFUL; 46e70: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 46e74: 4280 clrl %d0 <== NOT EXECUTED 46e76: 6006 bras 46e7e <== NOT EXECUTED ) { Extension_Control *the_extension; if ( !id ) return RTEMS_INVALID_ADDRESS; 46e78: 7009 moveq #9,%d0 <== NOT EXECUTED 46e7a: 6002 bras 46e7e <== NOT EXECUTED if ( !rtems_is_name_valid( name ) ) return RTEMS_INVALID_NAME; 46e7c: 7003 moveq #3,%d0 <== NOT EXECUTED ); *id = the_extension->Object.id; _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 46e7e: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED 46e84: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046c6c : #include rtems_status_code rtems_extension_delete( rtems_id id ) { 46c6c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 46c70: 2f0a movel %a2,%sp@- <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (Extension_Control *) _Objects_Get( &_Extension_Information, id, location ); 46c72: 486e fffc pea %fp@(-4) <== NOT EXECUTED 46c76: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 46c7a: 4879 0006 7e70 pea 67e70 <_Extension_Information> <== NOT EXECUTED 46c80: 4eb9 0004 7d88 jsr 47d88 <_Objects_Get> <== NOT EXECUTED Extension_Control *the_extension; Objects_Locations location; the_extension = _Extension_Get( id, &location ); switch ( location ) { 46c86: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 46c8a: 2440 moveal %d0,%a2 <== NOT EXECUTED 46c8c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 46c90: 6634 bnes 46cc6 <== NOT EXECUTED case OBJECTS_LOCAL: _User_extensions_Remove_set( &the_extension->Extension ); 46c92: 486a 0010 pea %a2@(16) <== NOT EXECUTED 46c96: 4eb9 0004 9438 jsr 49438 <_User_extensions_Remove_set> <== NOT EXECUTED _Objects_Close( &_Extension_Information, &the_extension->Object ); 46c9c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46c9e: 4879 0006 7e70 pea 67e70 <_Extension_Information> <== NOT EXECUTED 46ca4: 4eb9 0004 79ac jsr 479ac <_Objects_Close> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Extension_Free ( Extension_Control *the_extension ) { _Objects_Free( &_Extension_Information, &the_extension->Object ); 46caa: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46cac: 4879 0006 7e70 pea 67e70 <_Extension_Information> <== NOT EXECUTED 46cb2: 4eb9 0004 7c24 jsr 47c24 <_Objects_Free> <== NOT EXECUTED _Extension_Free( the_extension ); _Thread_Enable_dispatch(); 46cb8: 4eb9 0004 87ee jsr 487ee <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 46cbe: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 46cc2: 4280 clrl %d0 <== NOT EXECUTED 46cc4: 6002 bras 46cc8 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 46cc6: 7004 moveq #4,%d0 <== NOT EXECUTED } 46cc8: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 46ccc: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00047674 : rtems_status_code rtems_extension_ident( rtems_name name, rtems_id *id ) { 47674: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED Objects_Name_or_id_lookup_errors status; status = _Objects_Name_to_id_u32( 47678: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4767c: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED 47682: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47686: 4879 0006 1020 pea 61020 <_Extension_Information> <== NOT EXECUTED 4768c: 4eb9 0004 887c jsr 4887c <_Objects_Name_to_id_u32> <== NOT EXECUTED OBJECTS_SEARCH_LOCAL_NODE, id ); return _Status_Object_name_errors_to_status[ status ]; } 47692: 41f9 0005 e47a lea 5e47a <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED 47698: 4e5e unlk %fp <== NOT EXECUTED 4769a: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED =============================================================================== 0004773c : #endif #include const char *rtems_get_version_string(void) { 4773c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _RTEMS_version; } 47740: 203c 0005 f5c2 movel #390594,%d0 <== NOT EXECUTED 47746: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004537c : rtems_status_code rtems_interrupt_catch( rtems_isr_entry new_isr_handler, rtems_vector_number vector, rtems_isr_entry *old_isr_handler ) { 4537c: 4e56 0000 linkw %fp,#0 45380: 222e 0008 movel %fp@(8),%d1 45384: 202e 000c movel %fp@(12),%d0 45388: 206e 0010 moveal %fp@(16),%a0 if ( !_ISR_Is_vector_number_valid( vector ) ) 4538c: 0c80 0000 00ff cmpil #255,%d0 45392: 621c bhis 453b0 <== NEVER TAKEN return RTEMS_INVALID_NUMBER; if ( !_ISR_Is_valid_user_handler( (void *) new_isr_handler ) ) 45394: 4a81 tstl %d1 45396: 671c beqs 453b4 <== NEVER TAKEN return RTEMS_INVALID_ADDRESS; if ( !_ISR_Is_valid_user_handler( (void *) old_isr_handler ) ) 45398: 4a88 tstl %a0 4539a: 6718 beqs 453b4 <== NEVER TAKEN return RTEMS_INVALID_ADDRESS; _ISR_Install_vector( 4539c: 2f08 movel %a0,%sp@- 4539e: 2f01 movel %d1,%sp@- 453a0: 2f00 movel %d0,%sp@- 453a2: 4eb9 0004 88ea jsr 488ea <_CPU_ISR_install_vector> vector, (proc_ptr)new_isr_handler, (proc_ptr *)old_isr_handler ); return RTEMS_SUCCESSFUL; 453a8: 4fef 000c lea %sp@(12),%sp 453ac: 4280 clrl %d0 453ae: 6006 bras 453b6 rtems_vector_number vector, rtems_isr_entry *old_isr_handler ) { if ( !_ISR_Is_vector_number_valid( vector ) ) return RTEMS_INVALID_NUMBER; 453b0: 700a moveq #10,%d0 <== NOT EXECUTED 453b2: 6002 bras 453b6 <== NOT EXECUTED if ( !_ISR_Is_valid_user_handler( (void *) new_isr_handler ) ) return RTEMS_INVALID_ADDRESS; if ( !_ISR_Is_valid_user_handler( (void *) old_isr_handler ) ) return RTEMS_INVALID_ADDRESS; 453b4: 7009 moveq #9,%d0 <== NOT EXECUTED _ISR_Install_vector( vector, (proc_ptr)new_isr_handler, (proc_ptr *)old_isr_handler ); return RTEMS_SUCCESSFUL; } 453b6: 4e5e unlk %fp ... =============================================================================== 00045f14 : rtems_interrupt_level rtems_interrupt_disable( void ) { rtems_interrupt_level previous_level; _ISR_Disable( previous_level ); 45f14: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED */ #undef rtems_interrupt_disable rtems_interrupt_level rtems_interrupt_disable( void ) { 45f1a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_interrupt_level previous_level; _ISR_Disable( previous_level ); 45f1e: 40c0 movew %sr,%d0 <== NOT EXECUTED 45f20: 8280 orl %d0,%d1 <== NOT EXECUTED 45f22: 46c1 movew %d1,%sr <== NOT EXECUTED return previous_level; } 45f24: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045f28 : #undef rtems_interrupt_enable void rtems_interrupt_enable( rtems_interrupt_level previous_level ) { 45f28: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED _ISR_Enable( previous_level ); 45f2c: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 45f30: 46c0 movew %d0,%sr <== NOT EXECUTED } 45f32: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045f36 : #undef rtems_interrupt_flash void rtems_interrupt_flash( rtems_interrupt_level previous_level ) { 45f36: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED _ISR_Flash( previous_level ); 45f3a: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED 45f3e: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 45f44: 46c1 movew %d1,%sr <== NOT EXECUTED 45f46: 8081 orl %d1,%d0 <== NOT EXECUTED 45f48: 46c0 movew %d0,%sr <== NOT EXECUTED } 45f4a: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045f4e : */ #undef rtems_interrupt_is_in_progress bool rtems_interrupt_is_in_progress( void ) { 45f4e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _ISR_Is_in_progress(); 45f52: 4ab9 0005 fb1e tstl 5fb1e <_Per_CPU_Information+0x8> <== NOT EXECUTED 45f58: 56c0 sne %d0 <== NOT EXECUTED } 45f5a: 4e5e unlk %fp <== NOT EXECUTED 45f5c: 4480 negl %d0 <== NOT EXECUTED =============================================================================== 000459b0 : rtems_attribute rtems_interrupt_level_attribute( uint32_t level ) { return RTEMS_INTERRUPT_LEVEL(level); } 459b0: 7007 moveq #7,%d0 <== NOT EXECUTED uint32_t rtems_interrupt_mask = RTEMS_INTERRUPT_MASK; rtems_attribute rtems_interrupt_level_attribute( uint32_t level ) { 459b2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return RTEMS_INTERRUPT_LEVEL(level); } 459b6: c0ae 0008 andl %fp@(8),%d0 <== NOT EXECUTED 459ba: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004c5f8 : rtems_status_code rtems_io_close( rtems_device_major_number major, rtems_device_minor_number minor, void *argument ) { 4c5f8: 4e56 0000 linkw %fp,#0 4c5fc: 202e 0008 movel %fp@(8),%d0 4c600: 2f03 movel %d3,%sp@- 4c602: 2f02 movel %d2,%sp@- rtems_device_driver_entry callout; if ( major >= _IO_Number_of_drivers ) 4c604: b0b9 0005 ed12 cmpl 5ed12 <_IO_Number_of_drivers>,%d0 4c60a: 6420 bccs 4c62c <== NEVER TAKEN return RTEMS_INVALID_NUMBER; callout = _IO_Driver_address_table[major].close_entry; 4c60c: 2600 movel %d0,%d3 4c60e: 2200 movel %d0,%d1 4c610: e78b lsll #3,%d3 4c612: eb89 lsll #5,%d1 4c614: 2279 0005 ed16 moveal 5ed16 <_IO_Driver_address_table>,%a1 4c61a: 9283 subl %d3,%d1 4c61c: 2271 1808 moveal %a1@(00000008,%d1:l),%a1 return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4c620: 4a89 tstl %a1 4c622: 670c beqs 4c630 <== NEVER TAKEN } 4c624: 241f movel %sp@+,%d2 4c626: 261f movel %sp@+,%d3 4c628: 4e5e unlk %fp if ( major >= _IO_Number_of_drivers ) return RTEMS_INVALID_NUMBER; callout = _IO_Driver_address_table[major].close_entry; return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4c62a: 4ed1 jmp %a1@ ) { rtems_device_driver_entry callout; if ( major >= _IO_Number_of_drivers ) return RTEMS_INVALID_NUMBER; 4c62c: 700a moveq #10,%d0 <== NOT EXECUTED 4c62e: 6002 bras 4c632 <== NOT EXECUTED callout = _IO_Driver_address_table[major].close_entry; return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4c630: 4280 clrl %d0 <== NOT EXECUTED } 4c632: 241f movel %sp@+,%d2 <== NOT EXECUTED 4c634: 261f movel %sp@+,%d3 <== NOT EXECUTED 4c636: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004c63c : rtems_status_code rtems_io_control( rtems_device_major_number major, rtems_device_minor_number minor, void *argument ) { 4c63c: 4e56 0000 linkw %fp,#0 4c640: 202e 0008 movel %fp@(8),%d0 4c644: 2f03 movel %d3,%sp@- 4c646: 2f02 movel %d2,%sp@- rtems_device_driver_entry callout; if ( major >= _IO_Number_of_drivers ) 4c648: b0b9 0005 ed12 cmpl 5ed12 <_IO_Number_of_drivers>,%d0 4c64e: 6420 bccs 4c670 <== NEVER TAKEN return RTEMS_INVALID_NUMBER; callout = _IO_Driver_address_table[major].control_entry; 4c650: 2600 movel %d0,%d3 4c652: 2200 movel %d0,%d1 4c654: e78b lsll #3,%d3 4c656: eb89 lsll #5,%d1 4c658: 2279 0005 ed16 moveal 5ed16 <_IO_Driver_address_table>,%a1 4c65e: 9283 subl %d3,%d1 4c660: 2271 1814 moveal %a1@(00000014,%d1:l),%a1 return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4c664: 4a89 tstl %a1 4c666: 670c beqs 4c674 <== NEVER TAKEN } 4c668: 241f movel %sp@+,%d2 4c66a: 261f movel %sp@+,%d3 4c66c: 4e5e unlk %fp if ( major >= _IO_Number_of_drivers ) return RTEMS_INVALID_NUMBER; callout = _IO_Driver_address_table[major].control_entry; return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4c66e: 4ed1 jmp %a1@ ) { rtems_device_driver_entry callout; if ( major >= _IO_Number_of_drivers ) return RTEMS_INVALID_NUMBER; 4c670: 700a moveq #10,%d0 <== NOT EXECUTED 4c672: 6002 bras 4c676 <== NOT EXECUTED callout = _IO_Driver_address_table[major].control_entry; return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4c674: 4280 clrl %d0 <== NOT EXECUTED } 4c676: 241f movel %sp@+,%d2 <== NOT EXECUTED 4c678: 261f movel %sp@+,%d3 <== NOT EXECUTED 4c67a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004a980 : rtems_status_code rtems_io_initialize( rtems_device_major_number major, rtems_device_minor_number minor, void *argument ) { 4a980: 4e56 0000 linkw %fp,#0 4a984: 202e 0008 movel %fp@(8),%d0 4a988: 2f03 movel %d3,%sp@- 4a98a: 2f02 movel %d2,%sp@- rtems_device_driver_entry callout; if ( major >= _IO_Number_of_drivers ) 4a98c: b0b9 0005 ed12 cmpl 5ed12 <_IO_Number_of_drivers>,%d0 4a992: 6420 bccs 4a9b4 <== NEVER TAKEN return RTEMS_INVALID_NUMBER; callout = _IO_Driver_address_table[major].initialization_entry; 4a994: 2600 movel %d0,%d3 4a996: 2400 movel %d0,%d2 4a998: e78b lsll #3,%d3 4a99a: 2279 0005 ed16 moveal 5ed16 <_IO_Driver_address_table>,%a1 4a9a0: 93c3 subal %d3,%a1 4a9a2: eb8a lsll #5,%d2 4a9a4: 2271 2800 moveal %a1@(00000000,%d2:l),%a1 return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4a9a8: 4a89 tstl %a1 4a9aa: 670c beqs 4a9b8 } 4a9ac: 241f movel %sp@+,%d2 4a9ae: 261f movel %sp@+,%d3 4a9b0: 4e5e unlk %fp if ( major >= _IO_Number_of_drivers ) return RTEMS_INVALID_NUMBER; callout = _IO_Driver_address_table[major].initialization_entry; return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4a9b2: 4ed1 jmp %a1@ ) { rtems_device_driver_entry callout; if ( major >= _IO_Number_of_drivers ) return RTEMS_INVALID_NUMBER; 4a9b4: 700a moveq #10,%d0 <== NOT EXECUTED 4a9b6: 6002 bras 4a9ba <== NOT EXECUTED callout = _IO_Driver_address_table[major].initialization_entry; return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4a9b8: 4280 clrl %d0 } 4a9ba: 241f movel %sp@+,%d2 4a9bc: 261f movel %sp@+,%d3 4a9be: 4e5e unlk %fp ... =============================================================================== 0004c680 : rtems_status_code rtems_io_open( rtems_device_major_number major, rtems_device_minor_number minor, void *argument ) { 4c680: 4e56 0000 linkw %fp,#0 4c684: 202e 0008 movel %fp@(8),%d0 4c688: 2f03 movel %d3,%sp@- 4c68a: 2f02 movel %d2,%sp@- rtems_device_driver_entry callout; if ( major >= _IO_Number_of_drivers ) 4c68c: b0b9 0005 ed12 cmpl 5ed12 <_IO_Number_of_drivers>,%d0 4c692: 6420 bccs 4c6b4 <== NEVER TAKEN return RTEMS_INVALID_NUMBER; callout = _IO_Driver_address_table[major].open_entry; 4c694: 2600 movel %d0,%d3 4c696: 2200 movel %d0,%d1 4c698: e78b lsll #3,%d3 4c69a: eb89 lsll #5,%d1 4c69c: 2279 0005 ed16 moveal 5ed16 <_IO_Driver_address_table>,%a1 4c6a2: 9283 subl %d3,%d1 4c6a4: 2271 1804 moveal %a1@(00000004,%d1:l),%a1 return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4c6a8: 4a89 tstl %a1 4c6aa: 670c beqs 4c6b8 <== NEVER TAKEN } 4c6ac: 241f movel %sp@+,%d2 4c6ae: 261f movel %sp@+,%d3 4c6b0: 4e5e unlk %fp if ( major >= _IO_Number_of_drivers ) return RTEMS_INVALID_NUMBER; callout = _IO_Driver_address_table[major].open_entry; return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4c6b2: 4ed1 jmp %a1@ ) { rtems_device_driver_entry callout; if ( major >= _IO_Number_of_drivers ) return RTEMS_INVALID_NUMBER; 4c6b4: 700a moveq #10,%d0 <== NOT EXECUTED 4c6b6: 6002 bras 4c6ba <== NOT EXECUTED callout = _IO_Driver_address_table[major].open_entry; return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4c6b8: 4280 clrl %d0 <== NOT EXECUTED } 4c6ba: 241f movel %sp@+,%d2 <== NOT EXECUTED 4c6bc: 261f movel %sp@+,%d3 <== NOT EXECUTED 4c6be: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004c6c4 : rtems_status_code rtems_io_read( rtems_device_major_number major, rtems_device_minor_number minor, void *argument ) { 4c6c4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4c6c8: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 4c6cc: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4c6ce: 2f02 movel %d2,%sp@- <== NOT EXECUTED rtems_device_driver_entry callout; if ( major >= _IO_Number_of_drivers ) 4c6d0: b0b9 0005 ed12 cmpl 5ed12 <_IO_Number_of_drivers>,%d0 <== NOT EXECUTED 4c6d6: 6420 bccs 4c6f8 <== NOT EXECUTED return RTEMS_INVALID_NUMBER; callout = _IO_Driver_address_table[major].read_entry; 4c6d8: 2600 movel %d0,%d3 <== NOT EXECUTED 4c6da: 2200 movel %d0,%d1 <== NOT EXECUTED 4c6dc: e78b lsll #3,%d3 <== NOT EXECUTED 4c6de: eb89 lsll #5,%d1 <== NOT EXECUTED 4c6e0: 2279 0005 ed16 moveal 5ed16 <_IO_Driver_address_table>,%a1 <== NOT EXECUTED 4c6e6: 9283 subl %d3,%d1 <== NOT EXECUTED 4c6e8: 2271 180c moveal %a1@(0000000c,%d1:l),%a1 <== NOT EXECUTED return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4c6ec: 4a89 tstl %a1 <== NOT EXECUTED 4c6ee: 670c beqs 4c6fc <== NOT EXECUTED } 4c6f0: 241f movel %sp@+,%d2 <== NOT EXECUTED 4c6f2: 261f movel %sp@+,%d3 <== NOT EXECUTED 4c6f4: 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; 4c6f6: 4ed1 jmp %a1@ <== NOT EXECUTED ) { rtems_device_driver_entry callout; if ( major >= _IO_Number_of_drivers ) return RTEMS_INVALID_NUMBER; 4c6f8: 700a moveq #10,%d0 <== NOT EXECUTED 4c6fa: 6002 bras 4c6fe <== NOT EXECUTED callout = _IO_Driver_address_table[major].read_entry; return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4c6fc: 4280 clrl %d0 <== NOT EXECUTED } 4c6fe: 241f movel %sp@+,%d2 <== NOT EXECUTED 4c700: 261f movel %sp@+,%d3 <== NOT EXECUTED 4c702: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046bf8 : 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 ) { 46bf8: 4e56 0000 linkw %fp,#0 46bfc: 206e 000c moveal %fp@(12),%a0 46c00: 2f0a movel %a2,%sp@- 46c02: 226e 0010 moveal %fp@(16),%a1 46c06: 2f02 movel %d2,%sp@- 46c08: 242e 0008 movel %fp@(8),%d2 rtems_device_major_number major_limit = _IO_Number_of_drivers; 46c0c: 2039 0006 23aa movel 623aa <_IO_Number_of_drivers>,%d0 if ( rtems_interrupt_is_in_progress() ) 46c12: 4ab9 0006 1f96 tstl 61f96 <_Per_CPU_Information+0x8> 46c18: 6600 00d8 bnew 46cf2 return RTEMS_CALLED_FROM_ISR; if ( registered_major == NULL ) 46c1c: 4a89 tstl %a1 46c1e: 6700 00d6 beqw 46cf6 return RTEMS_INVALID_ADDRESS; /* Set it to an invalid value */ *registered_major = major_limit; 46c22: 2280 movel %d0,%a1@ if ( driver_table == NULL ) 46c24: 4a88 tstl %a0 46c26: 6700 00ce beqw 46cf6 static inline bool rtems_io_is_empty_table( const rtems_driver_address_table *table ) { return table->initialization_entry == NULL && table->open_entry == NULL; 46c2a: 4a90 tstl %a0@ 46c2c: 6600 00da bnew 46d08 46c30: 4aa8 0004 tstl %a0@(4) 46c34: 6600 00d2 bnew 46d08 46c38: 6000 00bc braw 46cf6 <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 46c3c: 2039 0006 1b10 movel 61b10 <_Thread_Dispatch_disable_level>,%d0 46c42: 5280 addql #1,%d0 46c44: 23c0 0006 1b10 movel %d0,61b10 <_Thread_Dispatch_disable_level> if ( major >= major_limit ) return RTEMS_INVALID_NUMBER; _Thread_Disable_dispatch(); if ( major == 0 ) { 46c4a: 4a82 tstl %d2 46c4c: 662c bnes 46c7a <== NEVER TAKEN static rtems_status_code rtems_io_obtain_major_number( rtems_device_major_number *major ) { rtems_device_major_number n = _IO_Number_of_drivers; 46c4e: 2039 0006 23aa movel 623aa <_IO_Number_of_drivers>,%d0 46c54: 2479 0006 23ae moveal 623ae <_IO_Driver_address_table>,%a2 46c5a: 6010 bras 46c6c static inline bool rtems_io_is_empty_table( const rtems_driver_address_table *table ) { return table->initialization_entry == NULL && table->open_entry == NULL; 46c5c: 4a92 tstl %a2@ 46c5e: 6600 00b0 bnew 46d10 46c62: 4aaa 0004 tstl %a2@(4) 46c66: 6600 00a8 bnew 46d10 46c6a: 6004 bras 46c70 rtems_device_major_number n = _IO_Number_of_drivers; rtems_device_major_number m = 0; /* major is error checked by caller */ for ( m = 0; m < n; ++m ) { 46c6c: b082 cmpl %d2,%d0 46c6e: 62ec bhis 46c5c <== ALWAYS TAKEN if ( rtems_io_is_empty_table( table ) ) break; } /* Assigns invalid value in case of failure */ *major = m; 46c70: 2282 movel %d2,%a1@ if ( m != n ) 46c72: b082 cmpl %d2,%d0 46c74: 6638 bnes 46cae <== ALWAYS TAKEN 46c76: 6000 00a2 braw 46d1a <== NOT EXECUTED _Thread_Enable_dispatch(); return sc; } major = *registered_major; } else { rtems_driver_address_table *const table = _IO_Driver_address_table + major; 46c7a: 2202 movel %d2,%d1 <== NOT EXECUTED 46c7c: 2002 movel %d2,%d0 <== NOT EXECUTED 46c7e: e789 lsll #3,%d1 <== NOT EXECUTED 46c80: eb88 lsll #5,%d0 <== NOT EXECUTED 46c82: 2479 0006 23ae moveal 623ae <_IO_Driver_address_table>,%a2 <== NOT EXECUTED 46c88: 9081 subl %d1,%d0 <== NOT EXECUTED 46c8a: d5c0 addal %d0,%a2 <== NOT EXECUTED static inline bool rtems_io_is_empty_table( const rtems_driver_address_table *table ) { return table->initialization_entry == NULL && table->open_entry == NULL; 46c8c: 4a92 tstl %a2@ <== NOT EXECUTED 46c8e: 660c bnes 46c9c <== NOT EXECUTED return RTEMS_SUCCESSFUL; return RTEMS_TOO_MANY; } rtems_status_code rtems_io_register_driver( 46c90: 4aaa 0004 tstl %a2@(4) <== NOT EXECUTED 46c94: 57c0 seq %d0 <== NOT EXECUTED 46c96: 49c0 extbl %d0 <== NOT EXECUTED 46c98: 4480 negl %d0 <== NOT EXECUTED 46c9a: 6002 bras 46c9e <== NOT EXECUTED static inline bool rtems_io_is_empty_table( const rtems_driver_address_table *table ) { return table->initialization_entry == NULL && table->open_entry == NULL; 46c9c: 4280 clrl %d0 <== NOT EXECUTED } major = *registered_major; } else { rtems_driver_address_table *const table = _IO_Driver_address_table + major; if ( !rtems_io_is_empty_table( table ) ) { 46c9e: 4a00 tstb %d0 <== NOT EXECUTED 46ca0: 660a bnes 46cac <== NOT EXECUTED _Thread_Enable_dispatch(); 46ca2: 4eb9 0004 87b2 jsr 487b2 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_RESOURCE_IN_USE; 46ca8: 700c moveq #12,%d0 <== NOT EXECUTED 46caa: 6050 bras 46cfc <== NOT EXECUTED } *registered_major = major; 46cac: 2282 movel %d2,%a1@ <== NOT EXECUTED } _IO_Driver_address_table [major] = *driver_table; 46cae: 2202 movel %d2,%d1 46cb0: 2002 movel %d2,%d0 46cb2: 4878 0018 pea 18 46cb6: e789 lsll #3,%d1 46cb8: eb88 lsll #5,%d0 46cba: 2f08 movel %a0,%sp@- 46cbc: 9081 subl %d1,%d0 46cbe: d0b9 0006 23ae addl 623ae <_IO_Driver_address_table>,%d0 46cc4: 2f00 movel %d0,%sp@- 46cc6: 4eb9 0005 09b8 jsr 509b8 _Thread_Enable_dispatch(); 46ccc: 4eb9 0004 87b2 jsr 487b2 <_Thread_Enable_dispatch> return rtems_io_initialize( major, 0, NULL ); } 46cd2: 246e fffc moveal %fp@(-4),%a2 _IO_Driver_address_table [major] = *driver_table; _Thread_Enable_dispatch(); return rtems_io_initialize( major, 0, NULL ); 46cd6: 4fef 000c lea %sp@(12),%sp 46cda: 2d42 0008 movel %d2,%fp@(8) } 46cde: 242e fff8 movel %fp@(-8),%d2 _IO_Driver_address_table [major] = *driver_table; _Thread_Enable_dispatch(); return rtems_io_initialize( major, 0, NULL ); 46ce2: 42ae 0010 clrl %fp@(16) 46ce6: 42ae 000c clrl %fp@(12) } 46cea: 4e5e unlk %fp _IO_Driver_address_table [major] = *driver_table; _Thread_Enable_dispatch(); return rtems_io_initialize( major, 0, NULL ); 46cec: 4ef9 0004 e0ec jmp 4e0ec ) { rtems_device_major_number major_limit = _IO_Number_of_drivers; if ( rtems_interrupt_is_in_progress() ) return RTEMS_CALLED_FROM_ISR; 46cf2: 7012 moveq #18,%d0 <== NOT EXECUTED 46cf4: 6006 bras 46cfc <== NOT EXECUTED if ( driver_table == NULL ) return RTEMS_INVALID_ADDRESS; if ( rtems_io_is_empty_table( driver_table ) ) return RTEMS_INVALID_ADDRESS; 46cf6: 7009 moveq #9,%d0 <== NOT EXECUTED 46cf8: 6002 bras 46cfc <== NOT EXECUTED if ( major >= major_limit ) return RTEMS_INVALID_NUMBER; 46cfa: 700a moveq #10,%d0 <== NOT EXECUTED _IO_Driver_address_table [major] = *driver_table; _Thread_Enable_dispatch(); return rtems_io_initialize( major, 0, NULL ); } 46cfc: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 46d00: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 46d04: 4e5e unlk %fp <== NOT EXECUTED 46d06: 4e75 rts <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( rtems_io_is_empty_table( driver_table ) ) return RTEMS_INVALID_ADDRESS; if ( major >= major_limit ) 46d08: b082 cmpl %d2,%d0 46d0a: 6200 ff30 bhiw 46c3c 46d0e: 60ea bras 46cfa <== NOT EXECUTED rtems_device_major_number n = _IO_Number_of_drivers; rtems_device_major_number m = 0; /* major is error checked by caller */ for ( m = 0; m < n; ++m ) { 46d10: 5282 addql #1,%d2 46d12: 45ea 0018 lea %a2@(24),%a2 46d16: 6000 ff54 braw 46c6c if ( major == 0 ) { rtems_status_code sc = rtems_io_obtain_major_number( registered_major ); if ( sc != RTEMS_SUCCESSFUL ) { _Thread_Enable_dispatch(); 46d1a: 4eb9 0004 87b2 jsr 487b2 <_Thread_Enable_dispatch> <== NOT EXECUTED *major = m; if ( m != n ) return RTEMS_SUCCESSFUL; return RTEMS_TOO_MANY; 46d20: 7005 moveq #5,%d0 <== NOT EXECUTED if ( major == 0 ) { rtems_status_code sc = rtems_io_obtain_major_number( registered_major ); if ( sc != RTEMS_SUCCESSFUL ) { _Thread_Enable_dispatch(); return sc; 46d22: 60d8 bras 46cfc <== NOT EXECUTED =============================================================================== 00046d24 : */ rtems_status_code rtems_io_unregister_driver( rtems_device_major_number major ) { 46d24: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46d28: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED if ( rtems_interrupt_is_in_progress() ) 46d2c: 4ab9 0006 1f96 tstl 61f96 <_Per_CPU_Information+0x8> <== NOT EXECUTED 46d32: 6640 bnes 46d74 <== NOT EXECUTED return RTEMS_CALLED_FROM_ISR; if ( major < _IO_Number_of_drivers ) { 46d34: b0b9 0006 23aa cmpl 623aa <_IO_Number_of_drivers>,%d0 <== NOT EXECUTED 46d3a: 643c bccs 46d78 <== NOT EXECUTED 46d3c: 2239 0006 1b10 movel 61b10 <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED 46d42: 5281 addql #1,%d1 <== NOT EXECUTED 46d44: 23c1 0006 1b10 movel %d1,61b10 <_Thread_Dispatch_disable_level><== NOT EXECUTED _Thread_Disable_dispatch(); memset( &_IO_Driver_address_table[major], 46d4a: 2200 movel %d0,%d1 <== NOT EXECUTED if ( rtems_interrupt_is_in_progress() ) return RTEMS_CALLED_FROM_ISR; if ( major < _IO_Number_of_drivers ) { _Thread_Disable_dispatch(); memset( 46d4c: 4878 0018 pea 18 <== NOT EXECUTED &_IO_Driver_address_table[major], 46d50: e789 lsll #3,%d1 <== NOT EXECUTED 46d52: eb88 lsll #5,%d0 <== NOT EXECUTED if ( rtems_interrupt_is_in_progress() ) return RTEMS_CALLED_FROM_ISR; if ( major < _IO_Number_of_drivers ) { _Thread_Disable_dispatch(); memset( 46d54: 42a7 clrl %sp@- <== NOT EXECUTED &_IO_Driver_address_table[major], 46d56: 9081 subl %d1,%d0 <== NOT EXECUTED if ( rtems_interrupt_is_in_progress() ) return RTEMS_CALLED_FROM_ISR; if ( major < _IO_Number_of_drivers ) { _Thread_Disable_dispatch(); memset( 46d58: d0b9 0006 23ae addl 623ae <_IO_Driver_address_table>,%d0 <== NOT EXECUTED 46d5e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46d60: 4eb9 0005 0a28 jsr 50a28 <== NOT EXECUTED &_IO_Driver_address_table[major], 0, sizeof( rtems_driver_address_table ) ); _Thread_Enable_dispatch(); 46d66: 4eb9 0004 87b2 jsr 487b2 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 46d6c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 46d70: 4280 clrl %d0 <== NOT EXECUTED 46d72: 6006 bras 46d7a <== NOT EXECUTED rtems_status_code rtems_io_unregister_driver( rtems_device_major_number major ) { if ( rtems_interrupt_is_in_progress() ) return RTEMS_CALLED_FROM_ISR; 46d74: 7012 moveq #18,%d0 <== NOT EXECUTED 46d76: 6002 bras 46d7a <== NOT EXECUTED _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } return RTEMS_UNSATISFIED; 46d78: 700d moveq #13,%d0 <== NOT EXECUTED } 46d7a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004c708 : rtems_status_code rtems_io_write( rtems_device_major_number major, rtems_device_minor_number minor, void *argument ) { 4c708: 4e56 0000 linkw %fp,#0 4c70c: 202e 0008 movel %fp@(8),%d0 4c710: 2f03 movel %d3,%sp@- 4c712: 2f02 movel %d2,%sp@- rtems_device_driver_entry callout; if ( major >= _IO_Number_of_drivers ) 4c714: b0b9 0005 ed12 cmpl 5ed12 <_IO_Number_of_drivers>,%d0 4c71a: 6420 bccs 4c73c <== NEVER TAKEN return RTEMS_INVALID_NUMBER; callout = _IO_Driver_address_table[major].write_entry; 4c71c: 2600 movel %d0,%d3 4c71e: 2200 movel %d0,%d1 4c720: e78b lsll #3,%d3 4c722: eb89 lsll #5,%d1 4c724: 2279 0005 ed16 moveal 5ed16 <_IO_Driver_address_table>,%a1 4c72a: 9283 subl %d3,%d1 4c72c: 2271 1810 moveal %a1@(00000010,%d1:l),%a1 return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4c730: 4a89 tstl %a1 4c732: 670c beqs 4c740 <== NEVER TAKEN } 4c734: 241f movel %sp@+,%d2 4c736: 261f movel %sp@+,%d3 4c738: 4e5e unlk %fp if ( major >= _IO_Number_of_drivers ) return RTEMS_INVALID_NUMBER; callout = _IO_Driver_address_table[major].write_entry; return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4c73a: 4ed1 jmp %a1@ ) { rtems_device_driver_entry callout; if ( major >= _IO_Number_of_drivers ) return RTEMS_INVALID_NUMBER; 4c73c: 700a moveq #10,%d0 <== NOT EXECUTED 4c73e: 6002 bras 4c742 <== NOT EXECUTED callout = _IO_Driver_address_table[major].write_entry; return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4c740: 4280 clrl %d0 <== NOT EXECUTED } 4c742: 241f movel %sp@+,%d2 <== NOT EXECUTED 4c744: 261f movel %sp@+,%d3 <== NOT EXECUTED 4c746: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00047b4c : #include #include void rtems_iterate_over_all_threads(rtems_per_thread_routine routine) { 47b4c: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 47b50: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED 47b54: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED uint32_t i; uint32_t api_index; Thread_Control *the_thread; Objects_Information *information; if ( !routine ) 47b58: 4a8c tstl %a4 <== NOT EXECUTED 47b5a: 6738 beqs 47b94 <== NOT EXECUTED 47b5c: 45f9 0006 8338 lea 68338 <_Objects_Information_table+0x4>,%a2<== NOT EXECUTED #if !defined(RTEMS_POSIX_API) || defined(RTEMS_DEBUG) if ( !_Objects_Information_table[ api_index ] ) continue; #endif information = _Objects_Information_table[ api_index ][ 1 ]; 47b62: 205a moveal %a2@+,%a0 <== NOT EXECUTED 47b64: 2668 0004 moveal %a0@(4),%a3 <== NOT EXECUTED if ( !information ) 47b68: 4a8b tstl %a3 <== NOT EXECUTED 47b6a: 6720 beqs 47b8c <== NOT EXECUTED 47b6c: 7401 moveq #1,%d2 <== NOT EXECUTED 47b6e: 6012 bras 47b82 <== NOT EXECUTED continue; for ( i=1 ; i <= information->maximum ; i++ ) { the_thread = (Thread_Control *)information->local_table[ i ]; 47b70: 206b 0018 moveal %a3@(24),%a0 <== NOT EXECUTED 47b74: 2030 2c00 movel %a0@(00000000,%d2:l:4),%d0 <== NOT EXECUTED if ( !the_thread ) 47b78: 6706 beqs 47b80 <== NOT EXECUTED continue; (*routine)(the_thread); 47b7a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47b7c: 4e94 jsr %a4@ <== NOT EXECUTED 47b7e: 588f addql #4,%sp <== NOT EXECUTED information = _Objects_Information_table[ api_index ][ 1 ]; if ( !information ) continue; for ( i=1 ; i <= information->maximum ; i++ ) { 47b80: 5282 addql #1,%d2 <== NOT EXECUTED 47b82: 4280 clrl %d0 <== NOT EXECUTED 47b84: 302b 000e movew %a3@(14),%d0 <== NOT EXECUTED 47b88: b082 cmpl %d2,%d0 <== NOT EXECUTED 47b8a: 64e4 bccs 47b70 <== NOT EXECUTED Objects_Information *information; if ( !routine ) return; for ( api_index = 1 ; api_index <= OBJECTS_APIS_LAST ; api_index++ ) { 47b8c: b5fc 0006 8344 cmpal #426820,%a2 <== NOT EXECUTED 47b92: 66ce bnes 47b62 <== NOT EXECUTED (*routine)(the_thread); } } } 47b94: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED 47b9a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004f89c : rtems_id id, const void *buffer, size_t size, uint32_t *count ) { 4f89c: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 4f8a0: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 4f8a4: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 4f8a8: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4f8ac: 282e 0014 movel %fp@(20),%d4 <== NOT EXECUTED register Message_queue_Control *the_message_queue; Objects_Locations location; CORE_message_queue_Status core_status; if ( !buffer ) 4f8b0: 4a82 tstl %d2 <== NOT EXECUTED 4f8b2: 674e beqs 4f902 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( !count ) 4f8b4: 4a84 tstl %d4 <== NOT EXECUTED 4f8b6: 674a beqs 4f902 <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (Message_queue_Control *) _Objects_Get( &_Message_queue_Information, id, location ); 4f8b8: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4f8bc: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4f8be: 4879 0007 7774 pea 77774 <_Message_queue_Information> <== NOT EXECUTED 4f8c4: 4eb9 0005 43dc jsr 543dc <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_message_queue = _Message_queue_Get( id, &location ); switch ( location ) { 4f8ca: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4f8ce: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4f8d2: 6632 bnes 4f906 <== NOT EXECUTED case OBJECTS_LOCAL: core_status = _CORE_message_queue_Broadcast( 4f8d4: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4f8d6: 2040 moveal %d0,%a0 <== NOT EXECUTED 4f8d8: 42a7 clrl %sp@- <== NOT EXECUTED 4f8da: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4f8dc: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4f8e0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4f8e2: 4868 0014 pea %a0@(20) <== NOT EXECUTED 4f8e6: 4eb9 0005 2b1c jsr 52b1c <_CORE_message_queue_Broadcast> <== NOT EXECUTED 4f8ec: 2400 movel %d0,%d2 <== NOT EXECUTED NULL, #endif count ); _Thread_Enable_dispatch(); 4f8ee: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED return 4f8f4: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4f8f6: 4eb9 0004 fc20 jsr 4fc20 <_Message_queue_Translate_core_message_queue_return_code><== NOT EXECUTED 4f8fc: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 4f900: 6006 bras 4f908 <== NOT EXECUTED if ( !buffer ) return RTEMS_INVALID_ADDRESS; if ( !count ) return RTEMS_INVALID_ADDRESS; 4f902: 7009 moveq #9,%d0 <== NOT EXECUTED 4f904: 6002 bras 4f908 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 4f906: 7004 moveq #4,%d0 <== NOT EXECUTED } 4f908: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 4f90e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004cc54 : uint32_t count, size_t max_message_size, rtems_attribute attribute_set, rtems_id *id ) { 4cc54: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 4cc58: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED 4cc5c: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4cc60: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED 4cc64: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED 4cc68: 282e 0014 movel %fp@(20),%d4 <== NOT EXECUTED 4cc6c: 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 ) ) 4cc70: 4a82 tstl %d2 <== NOT EXECUTED 4cc72: 6700 009a beqw 4cd0e <== NOT EXECUTED return RTEMS_INVALID_NAME; if ( !id ) 4cc76: 4a8c tstl %a4 <== NOT EXECUTED 4cc78: 6700 0098 beqw 4cd12 <== NOT EXECUTED if ( (is_global = _Attributes_Is_global( attribute_set ) ) && !_System_state_Is_multiprocessing ) return RTEMS_MP_NOT_CONFIGURED; #endif if ( count == 0 ) 4cc7c: 4a8b tstl %a3 <== NOT EXECUTED 4cc7e: 6700 0096 beqw 4cd16 <== NOT EXECUTED return RTEMS_INVALID_NUMBER; if ( max_message_size == 0 ) 4cc82: 4a83 tstl %d3 <== NOT EXECUTED 4cc84: 6700 0094 beqw 4cd1a <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 4cc88: 2039 0006 7100 movel 67100 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4cc8e: 5280 addql #1,%d0 <== NOT EXECUTED 4cc90: 23c0 0006 7100 movel %d0,67100 <_Thread_Dispatch_disable_level><== NOT EXECUTED #endif #endif _Thread_Disable_dispatch(); /* protects object pointer */ the_message_queue = _Message_queue_Allocate(); 4cc96: 4eb9 0005 2778 jsr 52778 <_Message_queue_Allocate> <== NOT EXECUTED 4cc9c: 2440 moveal %d0,%a2 <== NOT EXECUTED if ( !the_message_queue ) { 4cc9e: 4a80 tstl %d0 <== NOT EXECUTED 4cca0: 660a bnes 4ccac <== NOT EXECUTED _Thread_Enable_dispatch(); 4cca2: 4eb9 0004 f906 jsr 4f906 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_TOO_MANY; 4cca8: 7005 moveq #5,%d0 <== NOT EXECUTED 4ccaa: 6070 bras 4cd1c <== 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; 4ccac: 204e moveal %fp,%a0 <== NOT EXECUTED 4ccae: 44c4 movew %d4,%ccr <== NOT EXECUTED 4ccb0: 56c0 sne %d0 <== NOT EXECUTED _Thread_Enable_dispatch(); return RTEMS_TOO_MANY; } #endif the_message_queue->attribute_set = attribute_set; 4ccb2: 2544 0010 movel %d4,%a2@(16) <== NOT EXECUTED if (_Attributes_Is_priority( attribute_set ) ) the_msgq_attributes.discipline = CORE_MESSAGE_QUEUE_DISCIPLINES_PRIORITY; 4ccb6: 49c0 extbl %d0 <== NOT EXECUTED 4ccb8: 5280 addql #1,%d0 <== NOT EXECUTED 4ccba: 2100 movel %d0,%a0@- <== NOT EXECUTED else the_msgq_attributes.discipline = CORE_MESSAGE_QUEUE_DISCIPLINES_FIFO; if ( ! _CORE_message_queue_Initialize( 4ccbc: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4ccbe: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4ccc0: 47f9 0004 f906 lea 4f906 <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED 4ccc6: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4ccc8: 486a 0014 pea %a2@(20) <== NOT EXECUTED 4cccc: 4eb9 0004 de30 jsr 4de30 <_CORE_message_queue_Initialize> <== NOT EXECUTED 4ccd2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4ccd6: 4a00 tstb %d0 <== NOT EXECUTED 4ccd8: 6616 bnes 4ccf0 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Message_queue_Free ( Message_queue_Control *the_message_queue ) { _Objects_Free( &_Message_queue_Information, &the_message_queue->Object ); 4ccda: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4ccdc: 4879 0006 7960 pea 67960 <_Message_queue_Information> <== NOT EXECUTED 4cce2: 4eb9 0004 ec40 jsr 4ec40 <_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(); 4cce8: 4e93 jsr %a3@ <== NOT EXECUTED return RTEMS_UNSATISFIED; 4ccea: 508f addql #8,%sp <== NOT EXECUTED 4ccec: 700d moveq #13,%d0 <== NOT EXECUTED 4ccee: 602c bras 4cd1c <== NOT EXECUTED Objects_Name name ) { _Objects_Set_local_object( information, _Objects_Get_index( the_object->id ), 4ccf0: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, Objects_Name name ) { _Objects_Set_local_object( 4ccf4: 4281 clrl %d1 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4ccf6: 2079 0006 7978 moveal 67978 <_Message_queue_Information+0x18>,%a0<== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, Objects_Name name ) { _Objects_Set_local_object( 4ccfc: 3200 movew %d0,%d1 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4ccfe: 218a 1c00 movel %a2,%a0@(00000000,%d1:l:4) <== NOT EXECUTED information, _Objects_Get_index( the_object->id ), the_object ); the_object->name = name; 4cd02: 2542 000c movel %d2,%a2@(12) <== NOT EXECUTED &_Message_queue_Information, &the_message_queue->Object, (Objects_Name) name ); *id = the_message_queue->Object.id; 4cd06: 2880 movel %d0,%a4@ <== NOT EXECUTED name, 0 ); #endif _Thread_Enable_dispatch(); 4cd08: 4e93 jsr %a3@ <== NOT EXECUTED return RTEMS_SUCCESSFUL; 4cd0a: 4280 clrl %d0 <== NOT EXECUTED 4cd0c: 600e bras 4cd1c <== NOT EXECUTED #if defined(RTEMS_MULTIPROCESSING) bool is_global; #endif if ( !rtems_is_name_valid( name ) ) return RTEMS_INVALID_NAME; 4cd0e: 7003 moveq #3,%d0 <== NOT EXECUTED 4cd10: 600a bras 4cd1c <== NOT EXECUTED if ( !id ) return RTEMS_INVALID_ADDRESS; 4cd12: 7009 moveq #9,%d0 <== NOT EXECUTED 4cd14: 6006 bras 4cd1c <== NOT EXECUTED !_System_state_Is_multiprocessing ) return RTEMS_MP_NOT_CONFIGURED; #endif if ( count == 0 ) return RTEMS_INVALID_NUMBER; 4cd16: 700a moveq #10,%d0 <== NOT EXECUTED 4cd18: 6002 bras 4cd1c <== NOT EXECUTED if ( max_message_size == 0 ) return RTEMS_INVALID_SIZE; 4cd1a: 7008 moveq #8,%d0 <== NOT EXECUTED ); #endif _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 4cd1c: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED 4cd22: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004f9e8 : */ rtems_status_code rtems_message_queue_delete( rtems_id id ) { 4f9e8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4f9ec: 2f0a movel %a2,%sp@- <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (Message_queue_Control *) _Objects_Get( &_Message_queue_Information, id, location ); 4f9ee: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4f9f2: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4f9f6: 4879 0007 7774 pea 77774 <_Message_queue_Information> <== NOT EXECUTED 4f9fc: 4eb9 0005 43dc jsr 543dc <_Objects_Get> <== NOT EXECUTED register Message_queue_Control *the_message_queue; Objects_Locations location; the_message_queue = _Message_queue_Get( id, &location ); switch ( location ) { 4fa02: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4fa06: 2440 moveal %d0,%a2 <== NOT EXECUTED 4fa08: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4fa0c: 663a bnes 4fa48 <== NOT EXECUTED case OBJECTS_LOCAL: _Objects_Close( &_Message_queue_Information, 4fa0e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4fa10: 4879 0007 7774 pea 77774 <_Message_queue_Information> <== NOT EXECUTED 4fa16: 4eb9 0005 3fc8 jsr 53fc8 <_Objects_Close> <== NOT EXECUTED &the_message_queue->Object ); _CORE_message_queue_Close( 4fa1c: 4878 0005 pea 5 <== NOT EXECUTED 4fa20: 42a7 clrl %sp@- <== NOT EXECUTED 4fa22: 486a 0014 pea %a2@(20) <== NOT EXECUTED 4fa26: 4eb9 0005 2b8c jsr 52b8c <_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 ); 4fa2c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4fa2e: 4879 0007 7774 pea 77774 <_Message_queue_Information> <== NOT EXECUTED 4fa34: 4eb9 0005 4240 jsr 54240 <_Objects_Free> <== NOT EXECUTED 0, /* Not used */ 0 ); } #endif _Thread_Enable_dispatch(); 4fa3a: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 4fa40: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 4fa44: 4280 clrl %d0 <== NOT EXECUTED 4fa46: 6002 bras 4fa4a <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 4fa48: 7004 moveq #4,%d0 <== NOT EXECUTED } 4fa4a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4fa4e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004fa54 : rtems_status_code rtems_message_queue_flush( rtems_id id, uint32_t *count ) { 4fa54: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4fa58: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4fa5a: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED register Message_queue_Control *the_message_queue; Objects_Locations location; if ( !count ) 4fa5e: 4a8a tstl %a2 <== NOT EXECUTED 4fa60: 6738 beqs 4fa9a <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (Message_queue_Control *) _Objects_Get( &_Message_queue_Information, id, location ); 4fa62: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4fa66: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4fa6a: 4879 0007 7774 pea 77774 <_Message_queue_Information> <== NOT EXECUTED 4fa70: 4eb9 0005 43dc jsr 543dc <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_message_queue = _Message_queue_Get( id, &location ); switch ( location ) { 4fa76: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4fa7a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4fa7e: 661e bnes 4fa9e <== NOT EXECUTED case OBJECTS_LOCAL: *count = _CORE_message_queue_Flush( &the_message_queue->message_queue ); 4fa80: 2040 moveal %d0,%a0 <== NOT EXECUTED 4fa82: 4868 0014 pea %a0@(20) <== NOT EXECUTED 4fa86: 4eb9 0005 2bcc jsr 52bcc <_CORE_message_queue_Flush> <== NOT EXECUTED 4fa8c: 2480 movel %d0,%a2@ <== NOT EXECUTED _Thread_Enable_dispatch(); 4fa8e: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 4fa94: 588f addql #4,%sp <== NOT EXECUTED 4fa96: 4280 clrl %d0 <== NOT EXECUTED 4fa98: 6006 bras 4faa0 <== NOT EXECUTED { register Message_queue_Control *the_message_queue; Objects_Locations location; if ( !count ) return RTEMS_INVALID_ADDRESS; 4fa9a: 7009 moveq #9,%d0 <== NOT EXECUTED 4fa9c: 6002 bras 4faa0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 4fa9e: 7004 moveq #4,%d0 <== NOT EXECUTED } 4faa0: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4faa4: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004faa8 : rtems_status_code rtems_message_queue_get_number_pending( rtems_id id, uint32_t *count ) { 4faa8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4faac: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4faae: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED register Message_queue_Control *the_message_queue; Objects_Locations location; if ( !count ) 4fab2: 4a8a tstl %a2 <== NOT EXECUTED 4fab4: 672e beqs 4fae4 <== NOT EXECUTED 4fab6: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4faba: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4fabe: 4879 0007 7774 pea 77774 <_Message_queue_Information> <== NOT EXECUTED 4fac4: 4eb9 0005 43dc jsr 543dc <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_message_queue = _Message_queue_Get( id, &location ); switch ( location ) { 4faca: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4face: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4fad2: 6614 bnes 4fae8 <== NOT EXECUTED case OBJECTS_LOCAL: *count = the_message_queue->message_queue.number_of_pending_messages; 4fad4: 2040 moveal %d0,%a0 <== NOT EXECUTED 4fad6: 24a8 005c movel %a0@(92),%a2@ <== NOT EXECUTED _Thread_Enable_dispatch(); 4fada: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 4fae0: 4280 clrl %d0 <== NOT EXECUTED 4fae2: 6006 bras 4faea <== NOT EXECUTED { register Message_queue_Control *the_message_queue; Objects_Locations location; if ( !count ) return RTEMS_INVALID_ADDRESS; 4fae4: 7009 moveq #9,%d0 <== NOT EXECUTED 4fae6: 6002 bras 4faea <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 4fae8: 7004 moveq #4,%d0 <== NOT EXECUTED } 4faea: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4faee: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004cd28 : rtems_status_code rtems_message_queue_ident( rtems_name name, uint32_t node, rtems_id *id ) { 4cd28: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED Objects_Name_or_id_lookup_errors status; status = _Objects_Name_to_id_u32( 4cd2c: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4cd30: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4cd34: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4cd38: 4879 0006 7960 pea 67960 <_Message_queue_Information> <== NOT EXECUTED 4cd3e: 4eb9 0004 ef30 jsr 4ef30 <_Objects_Name_to_id_u32> <== NOT EXECUTED node, id ); return _Status_Object_name_errors_to_status[ status ]; } 4cd44: 41f9 0006 47ca lea 647ca <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED 4cd4a: 4e5e unlk %fp <== NOT EXECUTED 4cd4c: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED ... =============================================================================== 0004cd54 : void *buffer, size_t *size, rtems_option option_set, rtems_interval timeout ) { 4cd54: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 4cd58: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 4cd5c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4cd60: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED register Message_queue_Control *the_message_queue; Objects_Locations location; bool wait; if ( !buffer ) 4cd64: 4a82 tstl %d2 <== NOT EXECUTED 4cd66: 6762 beqs 4cdca <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( !size ) 4cd68: 4a83 tstl %d3 <== NOT EXECUTED 4cd6a: 675e beqs 4cdca <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (Message_queue_Control *) _Objects_Get( &_Message_queue_Information, id, location ); 4cd6c: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4cd70: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4cd74: 4879 0006 7960 pea 67960 <_Message_queue_Information> <== NOT EXECUTED 4cd7a: 4eb9 0004 eda4 jsr 4eda4 <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_message_queue = _Message_queue_Get( id, &location ); switch ( location ) { 4cd80: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4cd84: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4cd88: 6644 bnes 4cdce <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _Options_Is_no_wait ( rtems_option option_set ) { return (option_set & RTEMS_NO_WAIT) ? true : false; 4cd8a: 7201 moveq #1,%d1 <== NOT EXECUTED if ( _Options_Is_no_wait( option_set ) ) wait = false; else wait = true; _CORE_message_queue_Seize( 4cd8c: 7801 moveq #1,%d4 <== NOT EXECUTED 4cd8e: 2040 moveal %d0,%a0 <== NOT EXECUTED 4cd90: c2ae 0014 andl %fp@(20),%d1 <== NOT EXECUTED 4cd94: 2f2e 0018 movel %fp@(24),%sp@- <== NOT EXECUTED 4cd98: b384 eorl %d1,%d4 <== NOT EXECUTED 4cd9a: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4cd9c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4cd9e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4cda0: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 4cda4: 4868 0014 pea %a0@(20) <== NOT EXECUTED 4cda8: 4eb9 0004 deec jsr 4deec <_CORE_message_queue_Seize> <== NOT EXECUTED buffer, size, wait, timeout ); _Thread_Enable_dispatch(); 4cdae: 4eb9 0004 f906 jsr 4f906 <_Thread_Enable_dispatch> <== NOT EXECUTED return _Message_queue_Translate_core_message_queue_return_code( _Thread_Executing->Wait.return_code 4cdb4: 2079 0006 758a moveal 6758a <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED size, wait, timeout ); _Thread_Enable_dispatch(); return _Message_queue_Translate_core_message_queue_return_code( 4cdba: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 4cdbe: 4eb9 0004 ce54 jsr 4ce54 <_Message_queue_Translate_core_message_queue_return_code><== NOT EXECUTED 4cdc4: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 4cdc8: 6006 bras 4cdd0 <== NOT EXECUTED if ( !buffer ) return RTEMS_INVALID_ADDRESS; if ( !size ) return RTEMS_INVALID_ADDRESS; 4cdca: 7009 moveq #9,%d0 <== NOT EXECUTED 4cdcc: 6002 bras 4cdd0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 4cdce: 7004 moveq #4,%d0 <== NOT EXECUTED } 4cdd0: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 4cdd6: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004cddc : rtems_status_code rtems_message_queue_send( rtems_id id, const void *buffer, size_t size ) { 4cddc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4cde0: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4cde2: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 4cde6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4cde8: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED register Message_queue_Control *the_message_queue; Objects_Locations location; CORE_message_queue_Status status; if ( !buffer ) 4cdec: 6754 beqs 4ce42 <== NOT EXECUTED 4cdee: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4cdf2: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4cdf4: 4879 0006 7960 pea 67960 <_Message_queue_Information> <== NOT EXECUTED 4cdfa: 4eb9 0004 eda4 jsr 4eda4 <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_message_queue = _Message_queue_Get( id, &location ); switch ( location ) { 4ce00: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4ce04: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4ce08: 663c bnes 4ce46 <== NOT EXECUTED CORE_message_queue_API_mp_support_callout api_message_queue_mp_support, bool wait, Watchdog_Interval timeout ) { return _CORE_message_queue_Submit( 4ce0a: 42a7 clrl %sp@- <== NOT EXECUTED 4ce0c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4ce0e: 42a7 clrl %sp@- <== NOT EXECUTED 4ce10: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED 4ce16: 42a7 clrl %sp@- <== NOT EXECUTED 4ce18: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4ce1a: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4ce1e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4ce20: 4868 0014 pea %a0@(20) <== NOT EXECUTED 4ce24: 4eb9 0004 e028 jsr 4e028 <_CORE_message_queue_Submit> <== NOT EXECUTED MESSAGE_QUEUE_MP_HANDLER, false, /* sender does not block */ 0 /* no timeout */ ); _Thread_Enable_dispatch(); 4ce2a: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED 4ce2e: 2400 movel %d0,%d2 <== NOT EXECUTED 4ce30: 4eb9 0004 f906 jsr 4f906 <_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); 4ce36: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4ce38: 4eb9 0004 ce54 jsr 4ce54 <_Message_queue_Translate_core_message_queue_return_code><== NOT EXECUTED 4ce3e: 588f addql #4,%sp <== NOT EXECUTED 4ce40: 6006 bras 4ce48 <== NOT EXECUTED register Message_queue_Control *the_message_queue; Objects_Locations location; CORE_message_queue_Status status; if ( !buffer ) return RTEMS_INVALID_ADDRESS; 4ce42: 7009 moveq #9,%d0 <== NOT EXECUTED 4ce44: 6002 bras 4ce48 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 4ce46: 7004 moveq #4,%d0 <== NOT EXECUTED } 4ce48: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 4ce4c: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 4ce50: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004fc38 : rtems_status_code rtems_message_queue_urgent( rtems_id id, const void *buffer, size_t size ) { 4fc38: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4fc3c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4fc3e: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 4fc42: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4fc44: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED register Message_queue_Control *the_message_queue; Objects_Locations location; CORE_message_queue_Status status; if ( !buffer ) 4fc48: 6754 beqs 4fc9e <== NOT EXECUTED 4fc4a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4fc4e: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4fc50: 4879 0007 7774 pea 77774 <_Message_queue_Information> <== NOT EXECUTED 4fc56: 4eb9 0005 43dc jsr 543dc <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_message_queue = _Message_queue_Get( id, &location ); switch ( location ) { 4fc5c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4fc60: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4fc64: 663c bnes 4fca2 <== NOT EXECUTED CORE_message_queue_API_mp_support_callout api_message_queue_mp_support, bool wait, Watchdog_Interval timeout ) { return _CORE_message_queue_Submit( 4fc66: 42a7 clrl %sp@- <== NOT EXECUTED 4fc68: 2040 moveal %d0,%a0 <== NOT EXECUTED 4fc6a: 42a7 clrl %sp@- <== NOT EXECUTED 4fc6c: 2f3c 8000 0000 movel #-2147483648,%sp@- <== NOT EXECUTED 4fc72: 42a7 clrl %sp@- <== NOT EXECUTED 4fc74: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4fc76: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4fc7a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4fc7c: 4868 0014 pea %a0@(20) <== NOT EXECUTED 4fc80: 4eb9 0005 2e3c jsr 52e3c <_CORE_message_queue_Submit> <== NOT EXECUTED id, MESSAGE_QUEUE_MP_HANDLER, false, /* sender does not block */ 0 /* no timeout */ ); _Thread_Enable_dispatch(); 4fc86: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED 4fc8a: 2400 movel %d0,%d2 <== NOT EXECUTED 4fc8c: 4eb9 0005 4eb6 jsr 54eb6 <_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); 4fc92: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4fc94: 4eb9 0004 fc20 jsr 4fc20 <_Message_queue_Translate_core_message_queue_return_code><== NOT EXECUTED 4fc9a: 588f addql #4,%sp <== NOT EXECUTED 4fc9c: 6006 bras 4fca4 <== NOT EXECUTED register Message_queue_Control *the_message_queue; Objects_Locations location; CORE_message_queue_Status status; if ( !buffer ) return RTEMS_INVALID_ADDRESS; 4fc9e: 7009 moveq #9,%d0 <== NOT EXECUTED 4fca0: 6002 bras 4fca4 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 4fca2: 7004 moveq #4,%d0 <== NOT EXECUTED } 4fca4: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 4fca8: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 4fcac: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045640 : #include int rtems_object_api_maximum_class( int api ) { 45640: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _Objects_API_maximum_class(api); } 45644: 4e5e unlk %fp <== NOT EXECUTED int rtems_object_api_maximum_class( int api ) { return _Objects_API_maximum_class(api); 45646: 4ef9 0004 6bc4 jmp 46bc4 <_Objects_API_maximum_class> <== NOT EXECUTED =============================================================================== 0004564c : uint32_t api ) { if ( _Objects_Is_api_valid( api ) ) return 1; return -1; 4564c: 7203 moveq #3,%d1 <== NOT EXECUTED #include uint32_t rtems_object_api_minimum_class( uint32_t api ) { 4564e: 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 ) 45652: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 45656: 5380 subql #1,%d0 <== NOT EXECUTED if ( _Objects_Is_api_valid( api ) ) return 1; return -1; 45658: b280 cmpl %d0,%d1 <== NOT EXECUTED 4565a: 53c0 sls %d0 <== NOT EXECUTED 4565c: 49c0 extbl %d0 <== NOT EXECUTED } 4565e: 123c 0001 moveb #1,%d1 <== NOT EXECUTED 45662: 4e5e unlk %fp <== NOT EXECUTED 45664: 8081 orl %d1,%d0 <== NOT EXECUTED =============================================================================== 00045668 : ) { const rtems_assoc_t *api_assoc; const rtems_assoc_t *class_assoc; if ( the_api == OBJECTS_INTERNAL_API ) 45668: 7001 moveq #1,%d0 <== NOT EXECUTED const char *rtems_object_get_api_class_name( int the_api, int the_class ) { 4566a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4566e: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED 45672: 2f02 movel %d2,%sp@- <== NOT EXECUTED const rtems_assoc_t *api_assoc; const rtems_assoc_t *class_assoc; if ( the_api == OBJECTS_INTERNAL_API ) 45674: b081 cmpl %d1,%d0 <== NOT EXECUTED 45676: 671c beqs 45694 <== NOT EXECUTED api_assoc = rtems_object_api_internal_assoc; else if ( the_api == OBJECTS_CLASSIC_API ) 45678: 7402 moveq #2,%d2 <== NOT EXECUTED 4567a: b481 cmpl %d1,%d2 <== NOT EXECUTED 4567c: 671e beqs 4569c <== NOT EXECUTED api_assoc = rtems_object_api_classic_assoc; #ifdef RTEMS_POSIX_API else if ( the_api == OBJECTS_POSIX_API ) 4567e: 143c 0003 moveb #3,%d2 <== NOT EXECUTED api_assoc = rtems_object_api_posix_assoc; #endif else return "BAD API"; 45682: 203c 0005 c4e2 movel #378082,%d0 <== NOT EXECUTED if ( the_api == OBJECTS_INTERNAL_API ) api_assoc = rtems_object_api_internal_assoc; else if ( the_api == OBJECTS_CLASSIC_API ) api_assoc = rtems_object_api_classic_assoc; #ifdef RTEMS_POSIX_API else if ( the_api == OBJECTS_POSIX_API ) 45688: b481 cmpl %d1,%d2 <== NOT EXECUTED 4568a: 6632 bnes 456be <== NOT EXECUTED api_assoc = rtems_object_api_posix_assoc; 4568c: 203c 0005 d708 movel #382728,%d0 <== NOT EXECUTED 45692: 600e bras 456a2 <== NOT EXECUTED { const rtems_assoc_t *api_assoc; const rtems_assoc_t *class_assoc; if ( the_api == OBJECTS_INTERNAL_API ) api_assoc = rtems_object_api_internal_assoc; 45694: 203c 0005 d678 movel #382584,%d0 <== NOT EXECUTED 4569a: 6006 bras 456a2 <== NOT EXECUTED else if ( the_api == OBJECTS_CLASSIC_API ) api_assoc = rtems_object_api_classic_assoc; 4569c: 203c 0005 d690 movel #382608,%d0 <== NOT EXECUTED else if ( the_api == OBJECTS_POSIX_API ) api_assoc = rtems_object_api_posix_assoc; #endif else return "BAD API"; class_assoc = rtems_assoc_ptr_by_local( api_assoc, the_class ); 456a2: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 456a6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 456a8: 4eb9 0004 9ab0 jsr 49ab0 <== NOT EXECUTED if ( class_assoc ) 456ae: 508f addql #8,%sp <== NOT EXECUTED else if ( the_api == OBJECTS_POSIX_API ) api_assoc = rtems_object_api_posix_assoc; #endif else return "BAD API"; class_assoc = rtems_assoc_ptr_by_local( api_assoc, the_class ); 456b0: 2040 moveal %d0,%a0 <== NOT EXECUTED if ( class_assoc ) return class_assoc->name; return "BAD CLASS"; 456b2: 203c 0005 c4ea movel #378090,%d0 <== NOT EXECUTED api_assoc = rtems_object_api_posix_assoc; #endif else return "BAD API"; class_assoc = rtems_assoc_ptr_by_local( api_assoc, the_class ); if ( class_assoc ) 456b8: 4a88 tstl %a0 <== NOT EXECUTED 456ba: 6702 beqs 456be <== NOT EXECUTED return class_assoc->name; 456bc: 2010 movel %a0@,%d0 <== NOT EXECUTED return "BAD CLASS"; } 456be: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 456c2: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000456c8 : }; const char *rtems_object_get_api_name( int api ) { 456c8: 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 ); 456cc: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 456d0: 4879 0005 d798 pea 5d798 <== NOT EXECUTED 456d6: 4eb9 0004 9ab0 jsr 49ab0 <== NOT EXECUTED if ( api_assoc ) 456dc: 508f addql #8,%sp <== NOT EXECUTED int api ) { const rtems_assoc_t *api_assoc; api_assoc = rtems_assoc_ptr_by_local( rtems_objects_api_assoc, api ); 456de: 2040 moveal %d0,%a0 <== NOT EXECUTED if ( api_assoc ) return api_assoc->name; return "BAD CLASS"; 456e0: 203c 0005 c4ea movel #378090,%d0 <== NOT EXECUTED ) { const rtems_assoc_t *api_assoc; api_assoc = rtems_assoc_ptr_by_local( rtems_objects_api_assoc, api ); if ( api_assoc ) 456e6: 4a88 tstl %a0 <== NOT EXECUTED 456e8: 6702 beqs 456ec <== NOT EXECUTED return api_assoc->name; 456ea: 2010 movel %a0@,%d0 <== NOT EXECUTED return "BAD CLASS"; } 456ec: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046cac : rtems_status_code rtems_object_get_class_information( int the_api, int the_class, rtems_object_api_class_information *info ) { 46cac: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46cb0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46cb2: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED 46cb6: 2f02 movel %d2,%sp@- <== NOT EXECUTED int i; /* * Validate parameters and look up information structure. */ if ( !info ) 46cb8: 4a8a tstl %a2 <== NOT EXECUTED 46cba: 6752 beqs 46d0e <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; obj_info = _Objects_Get_information( the_api, the_class ); 46cbc: 3f2e 000e movew %fp@(14),%sp@- <== NOT EXECUTED 46cc0: 4267 clrw %sp@- <== NOT EXECUTED 46cc2: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 46cc6: 4eb9 0004 86c8 jsr 486c8 <_Objects_Get_information> <== NOT EXECUTED if ( !obj_info ) 46ccc: 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 ); 46cce: 2040 moveal %d0,%a0 <== NOT EXECUTED if ( !obj_info ) 46cd0: 4a80 tstl %d0 <== NOT EXECUTED 46cd2: 673e beqs 46d12 <== NOT EXECUTED return RTEMS_INVALID_NUMBER; /* * Return information about this object class to the user. */ info->minimum_id = obj_info->minimum_id; 46cd4: 24a8 0006 movel %a0@(6),%a2@ <== NOT EXECUTED info->maximum_id = obj_info->maximum_id; info->auto_extend = obj_info->auto_extend; info->maximum = obj_info->maximum; 46cd8: 4282 clrl %d2 <== NOT EXECUTED for ( unallocated=0, i=1 ; i <= info->maximum ; i++ ) 46cda: 7001 moveq #1,%d0 <== NOT EXECUTED 46cdc: 4281 clrl %d1 <== 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; 46cde: 2568 000a 0004 movel %a0@(10),%a2@(4) <== NOT EXECUTED info->auto_extend = obj_info->auto_extend; info->maximum = obj_info->maximum; 46ce4: 3428 000e movew %a0@(14),%d2 <== NOT EXECUTED /* * Return information about this object class to the user. */ info->minimum_id = obj_info->minimum_id; info->maximum_id = obj_info->maximum_id; info->auto_extend = obj_info->auto_extend; 46ce8: 1568 0010 000c moveb %a0@(16),%a2@(12) <== NOT EXECUTED info->maximum = obj_info->maximum; 46cee: 2542 0008 movel %d2,%a2@(8) <== NOT EXECUTED for ( unallocated=0, i=1 ; i <= info->maximum ; i++ ) 46cf2: 600e bras 46d02 <== NOT EXECUTED if ( !obj_info->local_table[i] ) 46cf4: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED 46cf8: 4ab1 0c00 tstl %a1@(00000000,%d0:l:4) <== NOT EXECUTED 46cfc: 6602 bnes 46d00 <== NOT EXECUTED unallocated++; 46cfe: 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++ ) 46d00: 5280 addql #1,%d0 <== NOT EXECUTED 46d02: b480 cmpl %d0,%d2 <== NOT EXECUTED 46d04: 64ee bccs 46cf4 <== NOT EXECUTED if ( !obj_info->local_table[i] ) unallocated++; info->unallocated = unallocated; 46d06: 2541 000e movel %d1,%a2@(14) <== NOT EXECUTED return RTEMS_SUCCESSFUL; 46d0a: 4280 clrl %d0 <== NOT EXECUTED 46d0c: 6006 bras 46d14 <== NOT EXECUTED /* * Validate parameters and look up information structure. */ if ( !info ) return RTEMS_INVALID_ADDRESS; 46d0e: 7009 moveq #9,%d0 <== NOT EXECUTED 46d10: 6002 bras 46d14 <== NOT EXECUTED obj_info = _Objects_Get_information( the_api, the_class ); if ( !obj_info ) return RTEMS_INVALID_NUMBER; 46d12: 700a moveq #10,%d0 <== NOT EXECUTED unallocated++; info->unallocated = unallocated; return RTEMS_SUCCESSFUL; } 46d14: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 46d18: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 46d1c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000461cc : rtems_status_code rtems_object_get_classic_name( rtems_id id, rtems_name *name ) { 461cc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 461d0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 461d2: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED Objects_Name_or_id_lookup_errors status; Objects_Name name_u; if ( !name ) 461d6: 4a8a tstl %a2 <== NOT EXECUTED 461d8: 6720 beqs 461fa <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; status = _Objects_Id_to_name( id, &name_u ); 461da: 486e fffc pea %fp@(-4) <== NOT EXECUTED 461de: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 461e2: 4eb9 0004 7bec jsr 47bec <_Objects_Id_to_name> <== NOT EXECUTED *name = name_u.name_u32; 461e8: 24ae fffc movel %fp@(-4),%a2@ <== NOT EXECUTED return _Status_Object_name_errors_to_status[ status ]; 461ec: 41f9 0005 d170 lea 5d170 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED 461f2: 508f addql #8,%sp <== NOT EXECUTED 461f4: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED 461f8: 6002 bras 461fc <== NOT EXECUTED { Objects_Name_or_id_lookup_errors status; Objects_Name name_u; if ( !name ) return RTEMS_INVALID_ADDRESS; 461fa: 7009 moveq #9,%d0 <== NOT EXECUTED status = _Objects_Id_to_name( id, &name_u ); *name = name_u.name_u32; return _Status_Object_name_errors_to_status[ status ]; } 461fc: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 46200: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046404 : char *rtems_object_get_name( Objects_Id id, size_t length, char *name ) { 46404: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _Objects_Get_name_as_string( id, length, name ); } 46408: 4e5e unlk %fp <== NOT EXECUTED Objects_Id id, size_t length, char *name ) { return _Objects_Get_name_as_string( id, length, name ); 4640a: 4ef9 0004 7ff8 jmp 47ff8 <_Objects_Get_name_as_string> <== NOT EXECUTED =============================================================================== 00046d2c : #undef rtems_object_id_api_maximum int rtems_object_id_api_maximum(void) { return OBJECTS_APIS_LAST; } 46d2c: 7003 moveq #3,%d0 <== NOT EXECUTED #include #include #undef rtems_object_id_api_maximum int rtems_object_id_api_maximum(void) { 46d2e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return OBJECTS_APIS_LAST; } 46d32: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046d38 : #undef rtems_object_id_api_minimum int rtems_object_id_api_minimum(void) { return OBJECTS_INTERNAL_API; } 46d38: 7001 moveq #1,%d0 <== NOT EXECUTED #include #include #undef rtems_object_id_api_minimum int rtems_object_id_api_minimum(void) { 46d3a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return OBJECTS_INTERNAL_API; } 46d3e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046d44 : */ RTEMS_INLINE_ROUTINE Objects_APIs _Objects_Get_API( Objects_Id id ) { return (Objects_APIs) ((id >> OBJECTS_API_START_BIT) & OBJECTS_API_VALID_BITS); 46d44: 4280 clrl %d0 <== NOT EXECUTED int rtems_object_id_get_api( rtems_id id ) { return _Objects_Get_API( id ); } 46d46: 7207 moveq #7,%d1 <== NOT EXECUTED #undef rtems_object_id_get_api int rtems_object_id_get_api( rtems_id id ) { 46d48: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46d4c: 102e 0008 moveb %fp@(8),%d0 <== NOT EXECUTED return _Objects_Get_API( id ); } 46d50: 4e5e unlk %fp <== NOT EXECUTED 46d52: c081 andl %d1,%d0 <== NOT EXECUTED ... =============================================================================== 00046d58 : int rtems_object_id_get_class( rtems_id id ) { return _Objects_Get_class( id ); } 46d58: 721b moveq #27,%d1 <== NOT EXECUTED #undef rtems_object_id_get_class int rtems_object_id_get_class( rtems_id id ) { 46d5a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _Objects_Get_class( id ); } 46d5e: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 46d62: 4e5e unlk %fp <== NOT EXECUTED 46d64: e2a8 lsrl %d1,%d0 <== NOT EXECUTED =============================================================================== 00046d68 : int rtems_object_id_get_index( rtems_id id ) { return _Objects_Get_index( id ); } 46d68: 4280 clrl %d0 <== NOT EXECUTED #undef rtems_object_id_get_index int rtems_object_id_get_index( rtems_id id ) { 46d6a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _Objects_Get_index( id ); } 46d6e: 302e 000a movew %fp@(10),%d0 <== NOT EXECUTED 46d72: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046d78 : int rtems_object_id_get_node( rtems_id id ) { return _Objects_Get_node( id ); } 46d78: 4280 clrl %d0 <== NOT EXECUTED #undef rtems_object_id_get_node int rtems_object_id_get_node( rtems_id id ) { 46d7a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _Objects_Get_node( id ); } 46d7e: 102e 0009 moveb %fp@(9),%d0 <== NOT EXECUTED 46d82: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000456fc : */ rtems_status_code rtems_object_set_name( rtems_id id, const char *name ) { 456fc: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 45700: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED 45704: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 45708: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED Objects_Information *information; Objects_Locations location; Objects_Control *the_object; Objects_Id tmpId; if ( !name ) 4570c: 674e beqs 4575c <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id; 4570e: 4a83 tstl %d3 <== NOT EXECUTED 45710: 660a bnes 4571c <== NOT EXECUTED 45712: 2079 0005 f39a moveal 5f39a <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 45718: 2628 0008 movel %a0@(8),%d3 <== NOT EXECUTED information = _Objects_Get_information_id( tmpId ); 4571c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4571e: 4eb9 0004 6ee4 jsr 46ee4 <_Objects_Get_information_id> <== NOT EXECUTED if ( !information ) 45724: 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 ); 45726: 2400 movel %d0,%d2 <== NOT EXECUTED if ( !information ) 45728: 6736 beqs 45760 <== NOT EXECUTED return RTEMS_INVALID_ID; the_object = _Objects_Get( information, tmpId, &location ); 4572a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4572e: 2f03 movel %d3,%sp@- <== NOT EXECUTED 45730: 2f00 movel %d0,%sp@- <== NOT EXECUTED 45732: 4eb9 0004 70ac jsr 470ac <_Objects_Get> <== NOT EXECUTED switch ( location ) { 45738: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4573c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 45740: 661e bnes 45760 <== NOT EXECUTED case OBJECTS_LOCAL: _Objects_Set_name( information, the_object, name ); 45742: 2f04 movel %d4,%sp@- <== NOT EXECUTED 45744: 2f00 movel %d0,%sp@- <== NOT EXECUTED 45746: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45748: 4eb9 0004 7238 jsr 47238 <_Objects_Set_name> <== NOT EXECUTED _Thread_Enable_dispatch(); 4574e: 4eb9 0004 7be2 jsr 47be2 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 45754: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 45758: 4280 clrl %d0 <== NOT EXECUTED 4575a: 6006 bras 45762 <== NOT EXECUTED Objects_Locations location; Objects_Control *the_object; Objects_Id tmpId; if ( !name ) return RTEMS_INVALID_ADDRESS; 4575c: 7009 moveq #9,%d0 <== NOT EXECUTED 4575e: 6002 bras 45762 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 45760: 7004 moveq #4,%d0 <== NOT EXECUTED } 45762: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED 45768: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004fcb0 : uint32_t length, uint32_t buffer_size, rtems_attribute attribute_set, rtems_id *id ) { 4fcb0: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 4fcb4: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@ <== NOT EXECUTED 4fcb8: 2a2e 0008 movel %fp@(8),%d5 <== NOT EXECUTED 4fcbc: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED 4fcc0: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED 4fcc4: 242e 0014 movel %fp@(20),%d2 <== NOT EXECUTED 4fcc8: 246e 001c moveal %fp@(28),%a2 <== NOT EXECUTED register Partition_Control *the_partition; if ( !rtems_is_name_valid( name ) ) 4fccc: 4a85 tstl %d5 <== NOT EXECUTED 4fcce: 6700 00ac beqw 4fd7c <== NOT EXECUTED return RTEMS_INVALID_NAME; if ( !starting_address ) 4fcd2: 4a84 tstl %d4 <== NOT EXECUTED 4fcd4: 6700 00ae beqw 4fd84 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( !id ) 4fcd8: 4a8a tstl %a2 <== NOT EXECUTED 4fcda: 6700 00a8 beqw 4fd84 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( length == 0 || buffer_size == 0 || length < buffer_size || 4fcde: 4a83 tstl %d3 <== NOT EXECUTED 4fce0: 6700 009e beqw 4fd80 <== NOT EXECUTED 4fce4: 4a82 tstl %d2 <== NOT EXECUTED 4fce6: 6700 0098 beqw 4fd80 <== NOT EXECUTED 4fcea: b483 cmpl %d3,%d2 <== NOT EXECUTED 4fcec: 6200 0092 bhiw 4fd80 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _Partition_Is_buffer_size_aligned ( uint32_t buffer_size ) { return ((buffer_size % CPU_PARTITION_ALIGNMENT) == 0); 4fcf0: 7003 moveq #3,%d0 <== NOT EXECUTED 4fcf2: c082 andl %d2,%d0 <== NOT EXECUTED 4fcf4: 6600 008a bnew 4fd80 <== NOT EXECUTED ) { #if (CPU_ALIGNMENT == 0) return true; #else return (((uintptr_t)address % CPU_ALIGNMENT) == 0); 4fcf8: 103c 0003 moveb #3,%d0 <== NOT EXECUTED 4fcfc: c084 andl %d4,%d0 <== NOT EXECUTED !_Partition_Is_buffer_size_aligned( buffer_size ) ) return RTEMS_INVALID_SIZE; if ( !_Addresses_Is_aligned( starting_address ) ) 4fcfe: 6600 0084 bnew 4fd84 <== NOT EXECUTED 4fd02: 2039 0007 6f0c movel 76f0c <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4fd08: 5280 addql #1,%d0 <== NOT EXECUTED 4fd0a: 23c0 0007 6f0c movel %d0,76f0c <_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 ); 4fd10: 4879 0007 6da2 pea 76da2 <_Partition_Information> <== NOT EXECUTED 4fd16: 49f9 0005 4eb6 lea 54eb6 <_Thread_Enable_dispatch>,%a4 <== NOT EXECUTED 4fd1c: 4eb9 0005 3f4c jsr 53f4c <_Objects_Allocate> <== NOT EXECUTED _Thread_Disable_dispatch(); /* prevents deletion */ the_partition = _Partition_Allocate(); if ( !the_partition ) { 4fd22: 588f addql #4,%sp <== NOT EXECUTED 4fd24: 2640 moveal %d0,%a3 <== NOT EXECUTED 4fd26: 4a80 tstl %d0 <== NOT EXECUTED 4fd28: 6606 bnes 4fd30 <== NOT EXECUTED _Thread_Enable_dispatch(); 4fd2a: 4e94 jsr %a4@ <== NOT EXECUTED return RTEMS_TOO_MANY; 4fd2c: 7005 moveq #5,%d0 <== NOT EXECUTED 4fd2e: 6056 bras 4fd86 <== NOT EXECUTED return RTEMS_TOO_MANY; } #endif the_partition->starting_address = starting_address; the_partition->length = length; 4fd30: 2743 0014 movel %d3,%a3@(20) <== NOT EXECUTED the_partition->buffer_size = buffer_size; the_partition->attribute_set = attribute_set; 4fd34: 276e 0018 001c movel %fp@(24),%a3@(28) <== NOT EXECUTED the_partition->number_of_used_blocks = 0; _Chain_Initialize( &the_partition->Memory, starting_address, 4fd3a: 4c42 3003 remul %d2,%d3,%d3 <== NOT EXECUTED _Thread_Enable_dispatch(); return RTEMS_TOO_MANY; } #endif the_partition->starting_address = starting_address; 4fd3e: 2744 0010 movel %d4,%a3@(16) <== NOT EXECUTED the_partition->length = length; the_partition->buffer_size = buffer_size; 4fd42: 2742 0018 movel %d2,%a3@(24) <== NOT EXECUTED the_partition->attribute_set = attribute_set; the_partition->number_of_used_blocks = 0; 4fd46: 42ab 0020 clrl %a3@(32) <== NOT EXECUTED _Chain_Initialize( &the_partition->Memory, starting_address, 4fd4a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4fd4c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4fd4e: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4fd50: 486b 0024 pea %a3@(36) <== NOT EXECUTED 4fd54: 4eb9 0005 2ad8 jsr 52ad8 <_Chain_Initialize> <== NOT EXECUTED Objects_Name name ) { _Objects_Set_local_object( information, _Objects_Get_index( the_object->id ), 4fd5a: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, Objects_Name name ) { _Objects_Set_local_object( 4fd5e: 4281 clrl %d1 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4fd60: 2079 0007 6dba moveal 76dba <_Partition_Information+0x18>,%a0<== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, Objects_Name name ) { _Objects_Set_local_object( 4fd66: 3200 movew %d0,%d1 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4fd68: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4) <== NOT EXECUTED information, _Objects_Get_index( the_object->id ), the_object ); the_object->name = name; 4fd6c: 2745 000c movel %d5,%a3@(12) <== NOT EXECUTED &_Partition_Information, &the_partition->Object, (Objects_Name) name ); *id = the_partition->Object.id; 4fd70: 2480 movel %d0,%a2@ <== NOT EXECUTED name, 0 /* Not used */ ); #endif _Thread_Enable_dispatch(); 4fd72: 4e94 jsr %a4@ <== NOT EXECUTED return RTEMS_SUCCESSFUL; 4fd74: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4fd78: 4280 clrl %d0 <== NOT EXECUTED 4fd7a: 600a bras 4fd86 <== NOT EXECUTED ) { register Partition_Control *the_partition; if ( !rtems_is_name_valid( name ) ) return RTEMS_INVALID_NAME; 4fd7c: 7003 moveq #3,%d0 <== NOT EXECUTED 4fd7e: 6006 bras 4fd86 <== NOT EXECUTED if ( !id ) return RTEMS_INVALID_ADDRESS; if ( length == 0 || buffer_size == 0 || length < buffer_size || !_Partition_Is_buffer_size_aligned( buffer_size ) ) return RTEMS_INVALID_SIZE; 4fd80: 7008 moveq #8,%d0 <== NOT EXECUTED 4fd82: 6002 bras 4fd86 <== NOT EXECUTED if ( !_Addresses_Is_aligned( starting_address ) ) return RTEMS_INVALID_ADDRESS; 4fd84: 7009 moveq #9,%d0 <== NOT EXECUTED ); #endif _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 4fd86: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED 4fd8c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004fd90 : */ rtems_status_code rtems_partition_delete( rtems_id id ) { 4fd90: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4fd94: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4fd96: 2f0a movel %a2,%sp@- <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (Partition_Control *) _Objects_Get( &_Partition_Information, id, location ); 4fd98: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4fd9c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4fda0: 4879 0007 6da2 pea 76da2 <_Partition_Information> <== NOT EXECUTED 4fda6: 4eb9 0005 43dc jsr 543dc <_Objects_Get> <== NOT EXECUTED register Partition_Control *the_partition; Objects_Locations location; the_partition = _Partition_Get( id, &location ); switch ( location ) { 4fdac: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4fdb0: 2440 moveal %d0,%a2 <== NOT EXECUTED 4fdb2: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4fdb6: 6638 bnes 4fdf0 <== NOT EXECUTED 4fdb8: 47f9 0005 4eb6 lea 54eb6 <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED case OBJECTS_LOCAL: if ( the_partition->number_of_used_blocks == 0 ) { 4fdbe: 4aaa 0020 tstl %a2@(32) <== NOT EXECUTED 4fdc2: 6626 bnes 4fdea <== NOT EXECUTED _Objects_Close( &_Partition_Information, &the_partition->Object ); 4fdc4: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4fdc6: 4879 0007 6da2 pea 76da2 <_Partition_Information> <== NOT EXECUTED 4fdcc: 4eb9 0005 3fc8 jsr 53fc8 <_Objects_Close> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Partition_Free ( Partition_Control *the_partition ) { _Objects_Free( &_Partition_Information, &the_partition->Object ); 4fdd2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4fdd4: 4879 0007 6da2 pea 76da2 <_Partition_Information> <== NOT EXECUTED 4fdda: 4eb9 0005 4240 jsr 54240 <_Objects_Free> <== NOT EXECUTED 0 /* Not used */ ); } #endif _Thread_Enable_dispatch(); 4fde0: 4e93 jsr %a3@ <== NOT EXECUTED return RTEMS_SUCCESSFUL; 4fde2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4fde6: 4280 clrl %d0 <== NOT EXECUTED 4fde8: 6008 bras 4fdf2 <== NOT EXECUTED } _Thread_Enable_dispatch(); 4fdea: 4e93 jsr %a3@ <== NOT EXECUTED return RTEMS_RESOURCE_IN_USE; 4fdec: 700c moveq #12,%d0 <== NOT EXECUTED 4fdee: 6002 bras 4fdf2 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 4fdf0: 7004 moveq #4,%d0 <== NOT EXECUTED } 4fdf2: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 4fdf6: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED 4fdfa: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004fe00 : rtems_status_code rtems_partition_get_buffer( rtems_id id, void **buffer ) { 4fe00: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 4fe04: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 4fe08: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED register Partition_Control *the_partition; Objects_Locations location; void *the_buffer; if ( !buffer ) 4fe0c: 4a8b tstl %a3 <== NOT EXECUTED 4fe0e: 6748 beqs 4fe58 <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (Partition_Control *) _Objects_Get( &_Partition_Information, id, location ); 4fe10: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4fe14: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4fe18: 4879 0007 6da2 pea 76da2 <_Partition_Information> <== NOT EXECUTED 4fe1e: 4eb9 0005 43dc jsr 543dc <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_partition = _Partition_Get( id, &location ); switch ( location ) { 4fe24: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4fe28: 2440 moveal %d0,%a2 <== NOT EXECUTED 4fe2a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4fe2e: 662c bnes 4fe5c <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void *_Partition_Allocate_buffer ( Partition_Control *the_partition ) { return _Chain_Get( &the_partition->Memory ); 4fe30: 486a 0024 pea %a2@(36) <== NOT EXECUTED 4fe34: 4eb9 0005 2aa4 jsr 52aa4 <_Chain_Get> <== NOT EXECUTED case OBJECTS_LOCAL: the_buffer = _Partition_Allocate_buffer( the_partition ); if ( the_buffer ) { 4fe3a: 588f addql #4,%sp <== NOT EXECUTED 4fe3c: 41f9 0005 4eb6 lea 54eb6 <_Thread_Enable_dispatch>,%a0 <== NOT EXECUTED 4fe42: 2400 movel %d0,%d2 <== NOT EXECUTED 4fe44: 670c beqs 4fe52 <== NOT EXECUTED the_partition->number_of_used_blocks += 1; 4fe46: 52aa 0020 addql #1,%a2@(32) <== NOT EXECUTED _Thread_Enable_dispatch(); 4fe4a: 4e90 jsr %a0@ <== NOT EXECUTED *buffer = the_buffer; return RTEMS_SUCCESSFUL; 4fe4c: 4280 clrl %d0 <== NOT EXECUTED case OBJECTS_LOCAL: the_buffer = _Partition_Allocate_buffer( the_partition ); if ( the_buffer ) { the_partition->number_of_used_blocks += 1; _Thread_Enable_dispatch(); *buffer = the_buffer; 4fe4e: 2682 movel %d2,%a3@ <== NOT EXECUTED return RTEMS_SUCCESSFUL; 4fe50: 600c bras 4fe5e <== NOT EXECUTED } _Thread_Enable_dispatch(); 4fe52: 4e90 jsr %a0@ <== NOT EXECUTED return RTEMS_UNSATISFIED; 4fe54: 700d moveq #13,%d0 <== NOT EXECUTED 4fe56: 6006 bras 4fe5e <== NOT EXECUTED register Partition_Control *the_partition; Objects_Locations location; void *the_buffer; if ( !buffer ) return RTEMS_INVALID_ADDRESS; 4fe58: 7009 moveq #9,%d0 <== NOT EXECUTED 4fe5a: 6002 bras 4fe5e <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 4fe5c: 7004 moveq #4,%d0 <== NOT EXECUTED } 4fe5e: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED 4fe64: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004fe68 : rtems_status_code rtems_partition_ident( rtems_name name, uint32_t node, rtems_id *id ) { 4fe68: 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 ); 4fe6c: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4fe70: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4fe74: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4fe78: 4879 0007 6da2 pea 76da2 <_Partition_Information> <== NOT EXECUTED 4fe7e: 4eb9 0005 4568 jsr 54568 <_Objects_Name_to_id_u32> <== NOT EXECUTED return _Status_Object_name_errors_to_status[ status ]; } 4fe84: 41f9 0007 02f0 lea 702f0 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED 4fe8a: 4e5e unlk %fp <== NOT EXECUTED 4fe8c: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED ... =============================================================================== 0004fe94 : rtems_status_code rtems_partition_return_buffer( rtems_id id, void *buffer ) { 4fe94: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4fe98: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4fe9a: 2f02 movel %d2,%sp@- <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (Partition_Control *) _Objects_Get( &_Partition_Information, id, location ); 4fe9c: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4fea0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4fea4: 4879 0007 6da2 pea 76da2 <_Partition_Information> <== NOT EXECUTED 4feaa: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4feae: 4eb9 0005 43dc jsr 543dc <_Objects_Get> <== NOT EXECUTED register Partition_Control *the_partition; Objects_Locations location; the_partition = _Partition_Get( id, &location ); switch ( location ) { 4feb4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4feb8: 2440 moveal %d0,%a2 <== NOT EXECUTED 4feba: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4febe: 663e bnes 4fefe <== NOT EXECUTED ) { void *starting; void *ending; starting = the_partition->starting_address; 4fec0: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED ending = _Addresses_Add_offset( starting, the_partition->length ); 4fec4: 222a 0014 movel %a2@(20),%d1 <== NOT EXECUTED const void *address, const void *base, const void *limit ) { return (address >= base && address <= limit); 4fec8: b082 cmpl %d2,%d0 <== NOT EXECUTED 4feca: 6240 bhis 4ff0c <== NOT EXECUTED RTEMS_INLINE_ROUTINE void *_Addresses_Add_offset ( const void *base, uintptr_t offset ) { return (void *)((uintptr_t)base + offset); 4fecc: d280 addl %d0,%d1 <== NOT EXECUTED const void *address, const void *base, const void *limit ) { return (address >= base && address <= limit); 4fece: b282 cmpl %d2,%d1 <== NOT EXECUTED 4fed0: 653a bcss 4ff0c <== NOT EXECUTED RTEMS_INLINE_ROUTINE int32_t _Addresses_Subtract ( const void *left, const void *right ) { return (int32_t) ((const char *) left - (const char *) right); 4fed2: 2202 movel %d2,%d1 <== NOT EXECUTED 4fed4: 9280 subl %d0,%d1 <== NOT EXECUTED 4fed6: 2001 movel %d1,%d0 <== NOT EXECUTED offset = (uint32_t) _Addresses_Subtract( the_buffer, the_partition->starting_address ); return ((offset % the_partition->buffer_size) == 0); 4fed8: 4c6a 0001 0018 remul %a2@(24),%d1,%d0 <== NOT EXECUTED starting = the_partition->starting_address; ending = _Addresses_Add_offset( starting, the_partition->length ); return ( _Addresses_Is_in_range( the_buffer, starting, ending ) && 4fede: 4a81 tstl %d1 <== NOT EXECUTED 4fee0: 662a bnes 4ff0c <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Partition_Free_buffer ( Partition_Control *the_partition, Chain_Node *the_buffer ) { _Chain_Append( &the_partition->Memory, the_buffer ); 4fee2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4fee4: 486a 0024 pea %a2@(36) <== NOT EXECUTED 4fee8: 4eb9 0005 2a44 jsr 52a44 <_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; 4feee: 53aa 0020 subql #1,%a2@(32) <== NOT EXECUTED _Thread_Enable_dispatch(); 4fef2: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 4fef8: 508f addql #8,%sp <== NOT EXECUTED 4fefa: 4280 clrl %d0 <== NOT EXECUTED 4fefc: 6002 bras 4ff00 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 4fefe: 7004 moveq #4,%d0 <== NOT EXECUTED } 4ff00: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 4ff04: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4ff08: 4e5e unlk %fp <== NOT EXECUTED 4ff0a: 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(); 4ff0c: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; 4ff12: 7009 moveq #9,%d0 <== NOT EXECUTED 4ff14: 60ea bras 4ff00 <== NOT EXECUTED ... =============================================================================== 0004f334 : void *internal_start, void *external_start, uint32_t length, rtems_id *id ) { 4f334: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 4f338: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED 4f33c: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4f340: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED 4f344: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED 4f348: 246e 0018 moveal %fp@(24),%a2 <== NOT EXECUTED register Dual_ported_memory_Control *the_port; if ( !rtems_is_name_valid( name ) ) 4f34c: 4a82 tstl %d2 <== NOT EXECUTED 4f34e: 676c beqs 4f3bc <== NOT EXECUTED return RTEMS_INVALID_NAME; if ( !id ) 4f350: 4a8a tstl %a2 <== NOT EXECUTED 4f352: 676c beqs 4f3c0 <== NOT EXECUTED * id - port id * RTEMS_SUCCESSFUL - if successful * error code - if unsuccessful */ rtems_status_code rtems_port_create( 4f354: 2003 movel %d3,%d0 <== NOT EXECUTED 4f356: 7203 moveq #3,%d1 <== NOT EXECUTED 4f358: 8084 orl %d4,%d0 <== NOT EXECUTED 4f35a: c081 andl %d1,%d0 <== NOT EXECUTED return RTEMS_INVALID_NAME; if ( !id ) return RTEMS_INVALID_ADDRESS; if ( !_Addresses_Is_aligned( internal_start ) || 4f35c: 6662 bnes 4f3c0 <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 4f35e: 2039 0007 6f0c movel 76f0c <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4f364: 5280 addql #1,%d0 <== NOT EXECUTED 4f366: 23c0 0007 6f0c movel %d0,76f0c <_Thread_Dispatch_disable_level><== NOT EXECUTED */ RTEMS_INLINE_ROUTINE Dual_ported_memory_Control *_Dual_ported_memory_Allocate ( void ) { return (Dual_ported_memory_Control *) _Objects_Allocate( &_Dual_ported_memory_Information ); 4f36c: 4879 0007 6d68 pea 76d68 <_Dual_ported_memory_Information> <== NOT EXECUTED 4f372: 4eb9 0005 3f4c jsr 53f4c <_Objects_Allocate> <== NOT EXECUTED _Thread_Disable_dispatch(); /* to prevent deletion */ the_port = _Dual_ported_memory_Allocate(); if ( !the_port ) { 4f378: 588f addql #4,%sp <== NOT EXECUTED 4f37a: 43f9 0005 4eb6 lea 54eb6 <_Thread_Enable_dispatch>,%a1 <== NOT EXECUTED 4f380: 2040 moveal %d0,%a0 <== NOT EXECUTED 4f382: 4a80 tstl %d0 <== NOT EXECUTED 4f384: 6606 bnes 4f38c <== NOT EXECUTED _Thread_Enable_dispatch(); 4f386: 4e91 jsr %a1@ <== NOT EXECUTED return RTEMS_TOO_MANY; 4f388: 7005 moveq #5,%d0 <== NOT EXECUTED 4f38a: 6036 bras 4f3c2 <== NOT EXECUTED } the_port->internal_base = internal_start; the_port->external_base = external_start; the_port->length = length - 1; 4f38c: 202e 0014 movel %fp@(20),%d0 <== NOT EXECUTED 4f390: 5380 subql #1,%d0 <== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, Objects_Name name ) { _Objects_Set_local_object( 4f392: 4281 clrl %d1 <== NOT EXECUTED 4f394: 2140 0018 movel %d0,%a0@(24) <== NOT EXECUTED information, _Objects_Get_index( the_object->id ), 4f398: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4f39c: 2679 0007 6d80 moveal 76d80 <_Dual_ported_memory_Information+0x18>,%a3<== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, Objects_Name name ) { _Objects_Set_local_object( 4f3a2: 3200 movew %d0,%d1 <== NOT EXECUTED if ( !the_port ) { _Thread_Enable_dispatch(); return RTEMS_TOO_MANY; } the_port->internal_base = internal_start; 4f3a4: 2144 0010 movel %d4,%a0@(16) <== NOT EXECUTED the_port->external_base = external_start; 4f3a8: 2143 0014 movel %d3,%a0@(20) <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4f3ac: 2788 1c00 movel %a0,%a3@(00000000,%d1:l:4) <== NOT EXECUTED information, _Objects_Get_index( the_object->id ), the_object ); the_object->name = name; 4f3b0: 2142 000c movel %d2,%a0@(12) <== NOT EXECUTED &_Dual_ported_memory_Information, &the_port->Object, (Objects_Name) name ); *id = the_port->Object.id; 4f3b4: 2480 movel %d0,%a2@ <== NOT EXECUTED _Thread_Enable_dispatch(); 4f3b6: 4e91 jsr %a1@ <== NOT EXECUTED return RTEMS_SUCCESSFUL; 4f3b8: 4280 clrl %d0 <== NOT EXECUTED 4f3ba: 6006 bras 4f3c2 <== NOT EXECUTED ) { register Dual_ported_memory_Control *the_port; if ( !rtems_is_name_valid( name ) ) return RTEMS_INVALID_NAME; 4f3bc: 7003 moveq #3,%d0 <== NOT EXECUTED 4f3be: 6002 bras 4f3c2 <== NOT EXECUTED if ( !id ) return RTEMS_INVALID_ADDRESS; if ( !_Addresses_Is_aligned( internal_start ) || !_Addresses_Is_aligned( external_start ) ) return RTEMS_INVALID_ADDRESS; 4f3c0: 7009 moveq #9,%d0 <== NOT EXECUTED ); *id = the_port->Object.id; _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 4f3c2: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 4f3c8: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004f3cc : */ rtems_status_code rtems_port_delete( rtems_id id ) { 4f3cc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4f3d0: 2f02 movel %d2,%sp@- <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (Dual_ported_memory_Control *) _Objects_Get( &_Dual_ported_memory_Information, id, location ); 4f3d2: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4f3d6: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4f3da: 4879 0007 6d68 pea 76d68 <_Dual_ported_memory_Information> <== NOT EXECUTED 4f3e0: 4eb9 0005 43dc jsr 543dc <_Objects_Get> <== NOT EXECUTED register Dual_ported_memory_Control *the_port; Objects_Locations location; the_port = _Dual_ported_memory_Get( id, &location ); switch ( location ) { 4f3e6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4f3ea: 2400 movel %d0,%d2 <== NOT EXECUTED 4f3ec: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4f3f0: 662a bnes 4f41c <== NOT EXECUTED case OBJECTS_LOCAL: _Objects_Close( &_Dual_ported_memory_Information, &the_port->Object ); 4f3f2: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4f3f4: 4879 0007 6d68 pea 76d68 <_Dual_ported_memory_Information> <== NOT EXECUTED 4f3fa: 4eb9 0005 3fc8 jsr 53fc8 <_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 ); 4f400: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4f402: 4879 0007 6d68 pea 76d68 <_Dual_ported_memory_Information> <== NOT EXECUTED 4f408: 4eb9 0005 4240 jsr 54240 <_Objects_Free> <== NOT EXECUTED _Dual_ported_memory_Free( the_port ); _Thread_Enable_dispatch(); 4f40e: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 4f414: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4f418: 4280 clrl %d0 <== NOT EXECUTED 4f41a: 6002 bras 4f41e <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 4f41c: 7004 moveq #4,%d0 <== NOT EXECUTED } 4f41e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4f422: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004f428 : rtems_status_code rtems_port_external_to_internal( rtems_id id, void *external, void **internal ) { 4f428: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4f42c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4f42e: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED 4f432: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4f434: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED register Dual_ported_memory_Control *the_port; Objects_Locations location; uint32_t ending; if ( !internal ) 4f438: 4a8a tstl %a2 <== NOT EXECUTED 4f43a: 6740 beqs 4f47c <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (Dual_ported_memory_Control *) _Objects_Get( &_Dual_ported_memory_Information, id, location ); 4f43c: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4f440: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4f444: 4879 0007 6d68 pea 76d68 <_Dual_ported_memory_Information> <== NOT EXECUTED 4f44a: 4eb9 0005 43dc jsr 543dc <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_port = _Dual_ported_memory_Get( id, &location ); switch ( location ) { 4f450: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4f454: 2040 moveal %d0,%a0 <== NOT EXECUTED 4f456: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4f45a: 6624 bnes 4f480 <== NOT EXECUTED RTEMS_INLINE_ROUTINE int32_t _Addresses_Subtract ( const void *left, const void *right ) { return (int32_t) ((const char *) left - (const char *) right); 4f45c: 2002 movel %d2,%d0 <== NOT EXECUTED 4f45e: 90a8 0014 subl %a0@(20),%d0 <== NOT EXECUTED case OBJECTS_LOCAL: ending = _Addresses_Subtract( external, the_port->external_base ); if ( ending > the_port->length ) 4f462: b0a8 0018 cmpl %a0@(24),%d0 <== NOT EXECUTED 4f466: 6304 blss 4f46c <== NOT EXECUTED *internal = external; 4f468: 2482 movel %d2,%a2@ <== NOT EXECUTED 4f46a: 6006 bras 4f472 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void *_Addresses_Add_offset ( const void *base, uintptr_t offset ) { return (void *)((uintptr_t)base + offset); 4f46c: d0a8 0010 addl %a0@(16),%d0 <== NOT EXECUTED 4f470: 2480 movel %d0,%a2@ <== NOT EXECUTED else *internal = _Addresses_Add_offset( the_port->internal_base, ending ); _Thread_Enable_dispatch(); 4f472: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 4f478: 4280 clrl %d0 <== NOT EXECUTED 4f47a: 6006 bras 4f482 <== NOT EXECUTED register Dual_ported_memory_Control *the_port; Objects_Locations location; uint32_t ending; if ( !internal ) return RTEMS_INVALID_ADDRESS; 4f47c: 7009 moveq #9,%d0 <== NOT EXECUTED 4f47e: 6002 bras 4f482 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 4f480: 7004 moveq #4,%d0 <== NOT EXECUTED } 4f482: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 4f486: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4f48a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004f490 : rtems_status_code rtems_port_ident( rtems_name name, rtems_id *id ) { 4f490: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED Objects_Name_or_id_lookup_errors status; status = _Objects_Name_to_id_u32( 4f494: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4f498: 42a7 clrl %sp@- <== NOT EXECUTED 4f49a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4f49e: 4879 0007 6d68 pea 76d68 <_Dual_ported_memory_Information> <== NOT EXECUTED 4f4a4: 4eb9 0005 4568 jsr 54568 <_Objects_Name_to_id_u32> <== NOT EXECUTED OBJECTS_SEARCH_ALL_NODES, id ); return _Status_Object_name_errors_to_status[ status ]; } 4f4aa: 41f9 0007 02f0 lea 702f0 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED 4f4b0: 4e5e unlk %fp <== NOT EXECUTED 4f4b2: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED =============================================================================== 0004f4b8 : rtems_status_code rtems_port_internal_to_external( rtems_id id, void *internal, void **external ) { 4f4b8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4f4bc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4f4be: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED 4f4c2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4f4c4: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED register Dual_ported_memory_Control *the_port; Objects_Locations location; uint32_t ending; if ( !external ) 4f4c8: 4a8a tstl %a2 <== NOT EXECUTED 4f4ca: 6740 beqs 4f50c <== NOT EXECUTED 4f4cc: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4f4d0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4f4d4: 4879 0007 6d68 pea 76d68 <_Dual_ported_memory_Information> <== NOT EXECUTED 4f4da: 4eb9 0005 43dc jsr 543dc <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_port = _Dual_ported_memory_Get( id, &location ); switch ( location ) { 4f4e0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4f4e4: 2040 moveal %d0,%a0 <== NOT EXECUTED 4f4e6: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4f4ea: 6624 bnes 4f510 <== NOT EXECUTED RTEMS_INLINE_ROUTINE int32_t _Addresses_Subtract ( const void *left, const void *right ) { return (int32_t) ((const char *) left - (const char *) right); 4f4ec: 2002 movel %d2,%d0 <== NOT EXECUTED 4f4ee: 90a8 0010 subl %a0@(16),%d0 <== NOT EXECUTED case OBJECTS_LOCAL: ending = _Addresses_Subtract( internal, the_port->internal_base ); if ( ending > the_port->length ) 4f4f2: b0a8 0018 cmpl %a0@(24),%d0 <== NOT EXECUTED 4f4f6: 6304 blss 4f4fc <== NOT EXECUTED *external = internal; 4f4f8: 2482 movel %d2,%a2@ <== NOT EXECUTED 4f4fa: 6006 bras 4f502 <== NOT EXECUTED RTEMS_INLINE_ROUTINE void *_Addresses_Add_offset ( const void *base, uintptr_t offset ) { return (void *)((uintptr_t)base + offset); 4f4fc: d0a8 0014 addl %a0@(20),%d0 <== NOT EXECUTED 4f500: 2480 movel %d0,%a2@ <== NOT EXECUTED else *external = _Addresses_Add_offset( the_port->external_base, ending ); _Thread_Enable_dispatch(); 4f502: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 4f508: 4280 clrl %d0 <== NOT EXECUTED 4f50a: 6006 bras 4f512 <== NOT EXECUTED register Dual_ported_memory_Control *the_port; Objects_Locations location; uint32_t ending; if ( !external ) return RTEMS_INVALID_ADDRESS; 4f50c: 7009 moveq #9,%d0 <== NOT EXECUTED 4f50e: 6002 bras 4f512 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 4f510: 7004 moveq #4,%d0 <== NOT EXECUTED } 4f512: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 4f516: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4f51a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004ff18 : */ rtems_status_code rtems_rate_monotonic_cancel( rtems_id id ) { 4ff18: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4ff1c: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4ff1e: 2f0a movel %a2,%sp@- <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (Rate_monotonic_Control *) _Objects_Get( &_Rate_monotonic_Information, id, location ); 4ff20: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4ff24: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4ff28: 4879 0007 6ddc pea 76ddc <_Rate_monotonic_Information> <== NOT EXECUTED 4ff2e: 4eb9 0005 43dc jsr 543dc <_Objects_Get> <== NOT EXECUTED Rate_monotonic_Control *the_period; Objects_Locations location; the_period = _Rate_monotonic_Get( id, &location ); switch ( location ) { 4ff34: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4ff38: 2440 moveal %d0,%a2 <== NOT EXECUTED 4ff3a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4ff3e: 662e bnes 4ff6e <== NOT EXECUTED case OBJECTS_LOCAL: if ( !_Thread_Is_executing( the_period->owner ) ) { 4ff40: 2039 0007 739e movel 7739e <_Per_CPU_Information+0xc>,%d0 <== NOT EXECUTED 4ff46: 47f9 0005 4eb6 lea 54eb6 <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED 4ff4c: b0aa 0040 cmpl %a2@(64),%d0 <== NOT EXECUTED 4ff50: 6706 beqs 4ff58 <== NOT EXECUTED _Thread_Enable_dispatch(); 4ff52: 4e93 jsr %a3@ <== NOT EXECUTED return RTEMS_NOT_OWNER_OF_RESOURCE; 4ff54: 7017 moveq #23,%d0 <== NOT EXECUTED 4ff56: 6018 bras 4ff70 <== NOT EXECUTED } (void) _Watchdog_Remove( &the_period->Timer ); 4ff58: 486a 0010 pea %a2@(16) <== NOT EXECUTED 4ff5c: 4eb9 0005 5fd4 jsr 55fd4 <_Watchdog_Remove> <== NOT EXECUTED the_period->state = RATE_MONOTONIC_INACTIVE; 4ff62: 42aa 0038 clrl %a2@(56) <== NOT EXECUTED _Thread_Enable_dispatch(); 4ff66: 4e93 jsr %a3@ <== NOT EXECUTED return RTEMS_SUCCESSFUL; 4ff68: 588f addql #4,%sp <== NOT EXECUTED 4ff6a: 4280 clrl %d0 <== NOT EXECUTED 4ff6c: 6002 bras 4ff70 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 4ff6e: 7004 moveq #4,%d0 <== NOT EXECUTED } 4ff70: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 4ff74: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED 4ff78: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046030 : rtems_status_code rtems_rate_monotonic_create( rtems_name name, rtems_id *id ) { 46030: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 46034: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED 46038: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 4603c: 286e 000c moveal %fp@(12),%a4 <== NOT EXECUTED Rate_monotonic_Control *the_period; if ( !rtems_is_name_valid( name ) ) 46040: 6700 009c beqw 460de <== NOT EXECUTED return RTEMS_INVALID_NAME; if ( !id ) 46044: 4a8c tstl %a4 <== NOT EXECUTED 46046: 6700 009a beqw 460e2 <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 4604a: 2039 0006 0102 movel 60102 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 46050: 5280 addql #1,%d0 <== NOT EXECUTED 46052: 23c0 0006 0102 movel %d0,60102 <_Thread_Dispatch_disable_level><== NOT EXECUTED * the inactive chain of free period control blocks. */ RTEMS_INLINE_ROUTINE Rate_monotonic_Control *_Rate_monotonic_Allocate( void ) { return (Rate_monotonic_Control *) _Objects_Allocate( &_Rate_monotonic_Information ); 46058: 4879 0006 000c pea 6000c <_Rate_monotonic_Information> <== NOT EXECUTED 4605e: 47f9 0004 8dc2 lea 48dc2 <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED 46064: 4eb9 0004 7da8 jsr 47da8 <_Objects_Allocate> <== NOT EXECUTED _Thread_Disable_dispatch(); /* to prevent deletion */ the_period = _Rate_monotonic_Allocate(); if ( !the_period ) { 4606a: 588f addql #4,%sp <== NOT EXECUTED 4606c: 2440 moveal %d0,%a2 <== NOT EXECUTED 4606e: 4a80 tstl %d0 <== NOT EXECUTED 46070: 6606 bnes 46078 <== NOT EXECUTED _Thread_Enable_dispatch(); 46072: 4e93 jsr %a3@ <== NOT EXECUTED return RTEMS_TOO_MANY; 46074: 7005 moveq #5,%d0 <== NOT EXECUTED 46076: 606c bras 460e4 <== NOT EXECUTED } the_period->owner = _Thread_Executing; 46078: 41f9 0006 058c lea 6058c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 4607e: 2550 0040 movel %a0@,%a2@(64) <== NOT EXECUTED the_period->state = RATE_MONOTONIC_INACTIVE; 46082: 42aa 0038 clrl %a2@(56) <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 46086: 42aa 0018 clrl %a2@(24) <== NOT EXECUTED the_watchdog->routine = routine; 4608a: 42aa 002c clrl %a2@(44) <== NOT EXECUTED the_watchdog->id = id; 4608e: 42aa 0030 clrl %a2@(48) <== NOT EXECUTED the_watchdog->user_data = user_data; 46092: 42aa 0034 clrl %a2@(52) <== NOT EXECUTED _Watchdog_Initialize( &the_period->Timer, NULL, 0, NULL ); _Rate_monotonic_Reset_statistics( the_period ); 46096: 4878 0038 pea 38 <== NOT EXECUTED 4609a: 42a7 clrl %sp@- <== NOT EXECUTED 4609c: 486a 0054 pea %a2@(84) <== NOT EXECUTED 460a0: 4eb9 0004 e96c jsr 4e96c <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 460a6: 2079 0006 0024 moveal 60024 <_Rate_monotonic_Information+0x18>,%a0<== NOT EXECUTED 460ac: 203c 7fff ffff movel #2147483647,%d0 <== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, Objects_Name name ) { _Objects_Set_local_object( 460b2: 4281 clrl %d1 <== NOT EXECUTED 460b4: 2540 005c movel %d0,%a2@(92) <== NOT EXECUTED 460b8: 2540 0060 movel %d0,%a2@(96) <== NOT EXECUTED 460bc: 2540 0074 movel %d0,%a2@(116) <== NOT EXECUTED 460c0: 2540 0078 movel %d0,%a2@(120) <== NOT EXECUTED information, _Objects_Get_index( the_object->id ), 460c4: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, Objects_Name name ) { _Objects_Set_local_object( 460c8: 3200 movew %d0,%d1 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 460ca: 218a 1c00 movel %a2,%a0@(00000000,%d1:l:4) <== NOT EXECUTED information, _Objects_Get_index( the_object->id ), the_object ); the_object->name = name; 460ce: 2542 000c movel %d2,%a2@(12) <== NOT EXECUTED &_Rate_monotonic_Information, &the_period->Object, (Objects_Name) name ); *id = the_period->Object.id; 460d2: 2880 movel %d0,%a4@ <== NOT EXECUTED _Thread_Enable_dispatch(); 460d4: 4e93 jsr %a3@ <== NOT EXECUTED return RTEMS_SUCCESSFUL; 460d6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 460da: 4280 clrl %d0 <== NOT EXECUTED 460dc: 6006 bras 460e4 <== NOT EXECUTED ) { Rate_monotonic_Control *the_period; if ( !rtems_is_name_valid( name ) ) return RTEMS_INVALID_NAME; 460de: 7003 moveq #3,%d0 <== NOT EXECUTED 460e0: 6002 bras 460e4 <== NOT EXECUTED if ( !id ) return RTEMS_INVALID_ADDRESS; 460e2: 7009 moveq #9,%d0 <== NOT EXECUTED ); *id = the_period->Object.id; _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 460e4: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED 460ea: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0005003c : */ rtems_status_code rtems_rate_monotonic_delete( rtems_id id ) { 5003c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 50040: 2f0a movel %a2,%sp@- <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (Rate_monotonic_Control *) _Objects_Get( &_Rate_monotonic_Information, id, location ); 50042: 486e fffc pea %fp@(-4) <== NOT EXECUTED 50046: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 5004a: 4879 0007 6ddc pea 76ddc <_Rate_monotonic_Information> <== NOT EXECUTED 50050: 4eb9 0005 43dc jsr 543dc <_Objects_Get> <== NOT EXECUTED Rate_monotonic_Control *the_period; Objects_Locations location; the_period = _Rate_monotonic_Get( id, &location ); switch ( location ) { 50056: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 5005a: 2440 moveal %d0,%a2 <== NOT EXECUTED 5005c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 50060: 6638 bnes 5009a <== NOT EXECUTED case OBJECTS_LOCAL: _Objects_Close( &_Rate_monotonic_Information, &the_period->Object ); 50062: 2f00 movel %d0,%sp@- <== NOT EXECUTED 50064: 4879 0007 6ddc pea 76ddc <_Rate_monotonic_Information> <== NOT EXECUTED 5006a: 4eb9 0005 3fc8 jsr 53fc8 <_Objects_Close> <== NOT EXECUTED (void) _Watchdog_Remove( &the_period->Timer ); 50070: 486a 0010 pea %a2@(16) <== NOT EXECUTED 50074: 4eb9 0005 5fd4 jsr 55fd4 <_Watchdog_Remove> <== NOT EXECUTED the_period->state = RATE_MONOTONIC_INACTIVE; 5007a: 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 ); 5007e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 50080: 4879 0007 6ddc pea 76ddc <_Rate_monotonic_Information> <== NOT EXECUTED 50086: 4eb9 0005 4240 jsr 54240 <_Objects_Free> <== NOT EXECUTED _Rate_monotonic_Free( the_period ); _Thread_Enable_dispatch(); 5008c: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 50092: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 50096: 4280 clrl %d0 <== NOT EXECUTED 50098: 6002 bras 5009c <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 5009a: 7004 moveq #4,%d0 <== NOT EXECUTED } 5009c: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 500a0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004bd6c : rtems_status_code rtems_rate_monotonic_get_statistics( rtems_id id, rtems_rate_monotonic_period_statistics *statistics ) { 4bd6c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4bd70: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4bd72: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED Objects_Locations location; Rate_monotonic_Control *the_period; rtems_rate_monotonic_period_statistics *dst; Rate_monotonic_Statistics *src; if ( !statistics ) 4bd76: 4a8a tstl %a2 <== NOT EXECUTED 4bd78: 6700 0096 beqw 4be10 <== NOT EXECUTED 4bd7c: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4bd80: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4bd84: 4879 0006 000c pea 6000c <_Rate_monotonic_Information> <== NOT EXECUTED 4bd8a: 4eb9 0004 82e8 jsr 482e8 <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_period = _Rate_monotonic_Get( id, &location ); switch ( location ) { 4bd90: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4bd94: 2040 moveal %d0,%a0 <== NOT EXECUTED 4bd96: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4bd9a: 6678 bnes 4be14 <== NOT EXECUTED case OBJECTS_LOCAL: dst = statistics; src = &the_period->Statistics; dst->count = src->count; 4bd9c: 24a8 0054 movel %a0@(84),%a2@ <== NOT EXECUTED dst->missed_count = src->missed_count; 4bda0: 2568 0058 0004 movel %a0@(88),%a2@(4) <== NOT EXECUTED #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ _Timestamp_To_timespec( &src->min_cpu_time, &dst->min_cpu_time ); 4bda6: 2028 005c movel %a0@(92),%d0 <== NOT EXECUTED 4bdaa: 2228 0060 movel %a0@(96),%d1 <== NOT EXECUTED 4bdae: 2540 0008 movel %d0,%a2@(8) <== NOT EXECUTED 4bdb2: 2541 000c movel %d1,%a2@(12) <== NOT EXECUTED _Timestamp_To_timespec( &src->max_cpu_time, &dst->max_cpu_time ); 4bdb6: 2028 0064 movel %a0@(100),%d0 <== NOT EXECUTED 4bdba: 2228 0068 movel %a0@(104),%d1 <== NOT EXECUTED 4bdbe: 2540 0010 movel %d0,%a2@(16) <== NOT EXECUTED 4bdc2: 2541 0014 movel %d1,%a2@(20) <== NOT EXECUTED _Timestamp_To_timespec( &src->total_cpu_time, &dst->total_cpu_time ); 4bdc6: 2028 006c movel %a0@(108),%d0 <== NOT EXECUTED 4bdca: 2228 0070 movel %a0@(112),%d1 <== NOT EXECUTED 4bdce: 2540 0018 movel %d0,%a2@(24) <== NOT EXECUTED 4bdd2: 2541 001c movel %d1,%a2@(28) <== NOT EXECUTED _Timestamp_To_timespec( &src->min_wall_time, &dst->min_wall_time ); 4bdd6: 2028 0074 movel %a0@(116),%d0 <== NOT EXECUTED 4bdda: 2228 0078 movel %a0@(120),%d1 <== NOT EXECUTED 4bdde: 2540 0020 movel %d0,%a2@(32) <== NOT EXECUTED 4bde2: 2541 0024 movel %d1,%a2@(36) <== NOT EXECUTED _Timestamp_To_timespec( &src->max_wall_time, &dst->max_wall_time ); 4bde6: 2028 007c movel %a0@(124),%d0 <== NOT EXECUTED 4bdea: 2228 0080 movel %a0@(128),%d1 <== NOT EXECUTED 4bdee: 2540 0028 movel %d0,%a2@(40) <== NOT EXECUTED 4bdf2: 2541 002c movel %d1,%a2@(44) <== NOT EXECUTED _Timestamp_To_timespec( &src->total_wall_time, &dst->total_wall_time ); 4bdf6: 2028 0084 movel %a0@(132),%d0 <== NOT EXECUTED 4bdfa: 2228 0088 movel %a0@(136),%d1 <== NOT EXECUTED 4bdfe: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED 4be02: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED dst->min_wall_time = src->min_wall_time; dst->max_wall_time = src->max_wall_time; dst->total_wall_time = src->total_wall_time; #endif _Thread_Enable_dispatch(); 4be06: 4eb9 0004 8dc2 jsr 48dc2 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 4be0c: 4280 clrl %d0 <== NOT EXECUTED 4be0e: 6006 bras 4be16 <== NOT EXECUTED Rate_monotonic_Control *the_period; rtems_rate_monotonic_period_statistics *dst; Rate_monotonic_Statistics *src; if ( !statistics ) return RTEMS_INVALID_ADDRESS; 4be10: 7009 moveq #9,%d0 <== NOT EXECUTED 4be12: 6002 bras 4be16 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 4be14: 7004 moveq #4,%d0 <== NOT EXECUTED } 4be16: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4be1a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004be20 : rtems_status_code rtems_rate_monotonic_get_status( rtems_id id, rtems_rate_monotonic_period_status *status ) { 4be20: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 4be24: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4be26: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED Objects_Locations location; Rate_monotonic_Period_time_t since_last_period; Rate_monotonic_Control *the_period; bool valid_status; if ( !status ) 4be2a: 4a8a tstl %a2 <== NOT EXECUTED 4be2c: 6700 0092 beqw 4bec0 <== NOT EXECUTED 4be30: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4be34: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4be38: 4879 0006 000c pea 6000c <_Rate_monotonic_Information> <== NOT EXECUTED 4be3e: 4eb9 0004 82e8 jsr 482e8 <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_period = _Rate_monotonic_Get( id, &location ); switch ( location ) { 4be44: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4be48: 2040 moveal %d0,%a0 <== NOT EXECUTED 4be4a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4be4e: 6674 bnes 4bec4 <== NOT EXECUTED case OBJECTS_LOCAL: status->owner = the_period->owner->Object.id; 4be50: 2268 0040 moveal %a0@(64),%a1 <== NOT EXECUTED 4be54: 24a9 0008 movel %a1@(8),%a2@ <== NOT EXECUTED status->state = the_period->state; 4be58: 2028 0038 movel %a0@(56),%d0 <== NOT EXECUTED 4be5c: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED /* * If the period is inactive, there is no information. */ if ( status->state == RATE_MONOTONIC_INACTIVE ) { 4be60: 6612 bnes 4be74 <== NOT EXECUTED #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ _Timespec_Set_to_zero( &status->since_last_period ); 4be62: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED 4be66: 42aa 000c clrl %a2@(12) <== NOT EXECUTED _Timespec_Set_to_zero( &status->executed_since_last_period ); 4be6a: 42aa 0010 clrl %a2@(16) <== NOT EXECUTED 4be6e: 42aa 0014 clrl %a2@(20) <== NOT EXECUTED 4be72: 6042 bras 4beb6 <== NOT EXECUTED } else { /* * Grab the current status. */ valid_status = 4be74: 486e fff4 pea %fp@(-12) <== NOT EXECUTED 4be78: 486e ffec pea %fp@(-20) <== NOT EXECUTED 4be7c: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4be7e: 4eb9 0004 611c jsr 4611c <_Rate_monotonic_Get_status> <== NOT EXECUTED _Rate_monotonic_Get_status( the_period, &since_last_period, &executed ); if (!valid_status) { 4be84: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4be88: 4a00 tstb %d0 <== NOT EXECUTED 4be8a: 660a bnes 4be96 <== NOT EXECUTED _Thread_Enable_dispatch(); 4be8c: 4eb9 0004 8dc2 jsr 48dc2 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_NOT_DEFINED; 4be92: 700b moveq #11,%d0 <== NOT EXECUTED 4be94: 6030 bras 4bec6 <== NOT EXECUTED } #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ _Timestamp_To_timespec( 4be96: 202e ffec movel %fp@(-20),%d0 <== NOT EXECUTED 4be9a: 222e fff0 movel %fp@(-16),%d1 <== NOT EXECUTED 4be9e: 2540 0008 movel %d0,%a2@(8) <== NOT EXECUTED 4bea2: 2541 000c movel %d1,%a2@(12) <== NOT EXECUTED &since_last_period, &status->since_last_period ); _Timestamp_To_timespec( 4bea6: 202e fff4 movel %fp@(-12),%d0 <== NOT EXECUTED 4beaa: 222e fff8 movel %fp@(-8),%d1 <== NOT EXECUTED 4beae: 2540 0010 movel %d0,%a2@(16) <== NOT EXECUTED 4beb2: 2541 0014 movel %d1,%a2@(20) <== NOT EXECUTED status->since_last_period = since_last_period; status->executed_since_last_period = executed; #endif } _Thread_Enable_dispatch(); 4beb6: 4eb9 0004 8dc2 jsr 48dc2 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 4bebc: 4280 clrl %d0 <== NOT EXECUTED 4bebe: 6006 bras 4bec6 <== NOT EXECUTED Rate_monotonic_Period_time_t since_last_period; Rate_monotonic_Control *the_period; bool valid_status; if ( !status ) return RTEMS_INVALID_ADDRESS; 4bec0: 7009 moveq #9,%d0 <== NOT EXECUTED 4bec2: 6002 bras 4bec6 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 4bec4: 7004 moveq #4,%d0 <== NOT EXECUTED } 4bec6: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED 4beca: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000460f0 : rtems_status_code rtems_rate_monotonic_ident( rtems_name name, rtems_id *id ) { 460f0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED Objects_Name_or_id_lookup_errors status; status = _Objects_Name_to_id_u32( 460f4: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 460f8: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED 460fe: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 46102: 4879 0006 000c pea 6000c <_Rate_monotonic_Information> <== NOT EXECUTED 46108: 4eb9 0004 8474 jsr 48474 <_Objects_Name_to_id_u32> <== NOT EXECUTED OBJECTS_SEARCH_LOCAL_NODE, id ); return _Status_Object_name_errors_to_status[ status ]; } 4610e: 41f9 0005 d876 lea 5d876 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED 46114: 4e5e unlk %fp <== NOT EXECUTED 46116: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED =============================================================================== 00046326 : rtems_status_code rtems_rate_monotonic_period( rtems_id id, rtems_interval length ) { 46326: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 4632a: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (Rate_monotonic_Control *) _Objects_Get( &_Rate_monotonic_Information, id, location ); 4632e: 486e fffc pea %fp@(-4) <== NOT EXECUTED 46332: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 46336: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46338: 4879 0006 000c pea 6000c <_Rate_monotonic_Information> <== NOT EXECUTED 4633e: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 46342: 4eb9 0004 82e8 jsr 482e8 <_Objects_Get> <== NOT EXECUTED rtems_rate_monotonic_period_states local_state; ISR_Level level; the_period = _Rate_monotonic_Get( id, &location ); switch ( location ) { 46348: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4634c: 2440 moveal %d0,%a2 <== NOT EXECUTED 4634e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 46352: 6600 0148 bnew 4649c <== NOT EXECUTED case OBJECTS_LOCAL: if ( !_Thread_Is_executing( the_period->owner ) ) { 46356: 2039 0006 058c movel 6058c <_Per_CPU_Information+0xc>,%d0 <== NOT EXECUTED 4635c: b0aa 0040 cmpl %a2@(64),%d0 <== NOT EXECUTED 46360: 670c beqs 4636e <== NOT EXECUTED _Thread_Enable_dispatch(); 46362: 4eb9 0004 8dc2 jsr 48dc2 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_NOT_OWNER_OF_RESOURCE; 46368: 7417 moveq #23,%d2 <== NOT EXECUTED 4636a: 6000 0132 braw 4649e <== NOT EXECUTED } if ( length == RTEMS_PERIOD_STATUS ) { 4636e: 4a82 tstl %d2 <== NOT EXECUTED 46370: 6622 bnes 46394 <== NOT EXECUTED switch ( the_period->state ) { 46372: 202a 0038 movel %a2@(56),%d0 <== NOT EXECUTED 46376: 7204 moveq #4,%d1 <== NOT EXECUTED 46378: b280 cmpl %d0,%d1 <== NOT EXECUTED 4637a: 650c bcss 46388 <== NOT EXECUTED 4637c: 41f9 0005 d696 lea 5d696 ,%a0 <== NOT EXECUTED 46382: 2430 0c00 movel %a0@(00000000,%d0:l:4),%d2 <== NOT EXECUTED 46386: 6002 bras 4638a <== NOT EXECUTED 46388: 4282 clrl %d2 <== NOT EXECUTED case RATE_MONOTONIC_ACTIVE: default: /* unreached -- only to remove warnings */ return_value = RTEMS_SUCCESSFUL; break; } _Thread_Enable_dispatch(); 4638a: 4eb9 0004 8dc2 jsr 48dc2 <_Thread_Enable_dispatch> <== NOT EXECUTED return( return_value ); 46390: 6000 010c braw 4649e <== NOT EXECUTED } _ISR_Disable( level ); 46394: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 4639a: 40c4 movew %sr,%d4 <== NOT EXECUTED 4639c: 8084 orl %d4,%d0 <== NOT EXECUTED 4639e: 46c0 movew %d0,%sr <== NOT EXECUTED if ( the_period->state == RATE_MONOTONIC_INACTIVE ) { 463a0: 202a 0038 movel %a2@(56),%d0 <== NOT EXECUTED 463a4: 664a bnes 463f0 <== NOT EXECUTED _ISR_Enable( level ); 463a6: 46c4 movew %d4,%sr <== NOT EXECUTED /* * Baseline statistics information for the beginning of a period. */ _Rate_monotonic_Initiate_statistics( the_period ); 463a8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 463aa: 4eb9 0004 61ba jsr 461ba <_Rate_monotonic_Initiate_statistics><== NOT EXECUTED the_period->state = RATE_MONOTONIC_ACTIVE; 463b0: 7002 moveq #2,%d0 <== NOT EXECUTED Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 463b2: 223c 0004 66e8 movel #288488,%d1 <== NOT EXECUTED 463b8: 2540 0038 movel %d0,%a2@(56) <== NOT EXECUTED 463bc: 2541 002c movel %d1,%a2@(44) <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 463c0: 42aa 0018 clrl %a2@(24) <== NOT EXECUTED the_watchdog->routine = routine; the_watchdog->id = id; 463c4: 2543 0030 movel %d3,%a2@(48) <== NOT EXECUTED the_watchdog->user_data = user_data; 463c8: 42aa 0034 clrl %a2@(52) <== NOT EXECUTED _Rate_monotonic_Timeout, id, NULL ); the_period->next_length = length; 463cc: 2542 003c movel %d2,%a2@(60) <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 463d0: 2542 001c movel %d2,%a2@(28) <== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 463d4: 486a 0010 pea %a2@(16) <== NOT EXECUTED 463d8: 4879 0006 01e2 pea 601e2 <_Watchdog_Ticks_chain> <== NOT EXECUTED 463de: 4eb9 0004 9c2c jsr 49c2c <_Watchdog_Insert> <== NOT EXECUTED _Watchdog_Insert_ticks( &the_period->Timer, length ); _Thread_Enable_dispatch(); 463e4: 4eb9 0004 8dc2 jsr 48dc2 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 463ea: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 463ee: 606c bras 4645c <== NOT EXECUTED } if ( the_period->state == RATE_MONOTONIC_ACTIVE ) { 463f0: 7202 moveq #2,%d1 <== NOT EXECUTED 463f2: b280 cmpl %d0,%d1 <== NOT EXECUTED 463f4: 666a bnes 46460 <== NOT EXECUTED /* * Update statistics from the concluding period. */ _Rate_monotonic_Update_statistics( the_period ); 463f6: 2f0a movel %a2,%sp@- <== NOT EXECUTED 463f8: 4eb9 0004 6232 jsr 46232 <_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; 463fe: 7001 moveq #1,%d0 <== NOT EXECUTED the_period->next_length = length; 46400: 2542 003c movel %d2,%a2@(60) <== 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; 46404: 2540 0038 movel %d0,%a2@(56) <== NOT EXECUTED the_period->next_length = length; _ISR_Enable( level ); 46408: 46c4 movew %d4,%sr <== NOT EXECUTED _Thread_Executing->Wait.id = the_period->Object.id; 4640a: 2079 0006 058c moveal 6058c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 46410: 216a 0008 0020 movel %a2@(8),%a0@(32) <== NOT EXECUTED _Thread_Set_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD ); 46416: 4878 4000 pea 4000 <== NOT EXECUTED 4641a: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4641c: 4eb9 0004 9598 jsr 49598 <_Thread_Set_state> <== NOT EXECUTED /* * Did the watchdog timer expire while we were actually blocking * on it? */ _ISR_Disable( level ); 46422: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 46428: 40c1 movew %sr,%d1 <== NOT EXECUTED 4642a: 8081 orl %d1,%d0 <== NOT EXECUTED 4642c: 46c0 movew %d0,%sr <== NOT EXECUTED local_state = the_period->state; the_period->state = RATE_MONOTONIC_ACTIVE; 4642e: 7402 moveq #2,%d2 <== NOT EXECUTED /* * Did the watchdog timer expire while we were actually blocking * on it? */ _ISR_Disable( level ); local_state = the_period->state; 46430: 202a 0038 movel %a2@(56),%d0 <== NOT EXECUTED the_period->state = RATE_MONOTONIC_ACTIVE; 46434: 2542 0038 movel %d2,%a2@(56) <== NOT EXECUTED _ISR_Enable( level ); 46438: 46c1 movew %d1,%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 ) 4643a: 7203 moveq #3,%d1 <== NOT EXECUTED 4643c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 46440: b280 cmpl %d0,%d1 <== NOT EXECUTED 46442: 6612 bnes 46456 <== NOT EXECUTED _Thread_Clear_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD ); 46444: 4878 4000 pea 4000 <== NOT EXECUTED 46448: 2f39 0006 058c movel 6058c <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED 4644e: 4eb9 0004 8a64 jsr 48a64 <_Thread_Clear_state> <== NOT EXECUTED 46454: 508f addql #8,%sp <== NOT EXECUTED _Thread_Enable_dispatch(); 46456: 4eb9 0004 8dc2 jsr 48dc2 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 4645c: 4282 clrl %d2 <== NOT EXECUTED 4645e: 603e bras 4649e <== NOT EXECUTED } if ( the_period->state == RATE_MONOTONIC_EXPIRED ) { 46460: 7204 moveq #4,%d1 <== NOT EXECUTED 46462: b280 cmpl %d0,%d1 <== NOT EXECUTED 46464: 6636 bnes 4649c <== NOT EXECUTED /* * Update statistics from the concluding period */ _Rate_monotonic_Update_statistics( the_period ); 46466: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46468: 4eb9 0004 6232 jsr 46232 <_Rate_monotonic_Update_statistics><== NOT EXECUTED _ISR_Enable( level ); 4646e: 46c4 movew %d4,%sr <== NOT EXECUTED the_period->state = RATE_MONOTONIC_ACTIVE; 46470: 7002 moveq #2,%d0 <== NOT EXECUTED the_period->next_length = length; 46472: 2542 003c movel %d2,%a2@(60) <== NOT EXECUTED */ _Rate_monotonic_Update_statistics( the_period ); _ISR_Enable( level ); the_period->state = RATE_MONOTONIC_ACTIVE; 46476: 2540 0038 movel %d0,%a2@(56) <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 4647a: 2542 001c movel %d2,%a2@(28) <== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 4647e: 486a 0010 pea %a2@(16) <== NOT EXECUTED the_period->next_length = length; _Watchdog_Insert_ticks( &the_period->Timer, length ); _Thread_Enable_dispatch(); return RTEMS_TIMEOUT; 46482: 7406 moveq #6,%d2 <== NOT EXECUTED 46484: 4879 0006 01e2 pea 601e2 <_Watchdog_Ticks_chain> <== NOT EXECUTED 4648a: 4eb9 0004 9c2c jsr 49c2c <_Watchdog_Insert> <== NOT EXECUTED the_period->state = RATE_MONOTONIC_ACTIVE; the_period->next_length = length; _Watchdog_Insert_ticks( &the_period->Timer, length ); _Thread_Enable_dispatch(); 46490: 4eb9 0004 8dc2 jsr 48dc2 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_TIMEOUT; 46496: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4649a: 6002 bras 4649e <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 4649c: 7404 moveq #4,%d2 <== NOT EXECUTED } 4649e: 2002 movel %d2,%d0 <== NOT EXECUTED 464a0: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED 464a6: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046628 : void rtems_rate_monotonic_report_statistics( void ) { 46628: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_rate_monotonic_report_statistics_with_plugin( NULL, printk_plugin ); 4662c: 4879 0004 b3e4 pea 4b3e4 <== NOT EXECUTED 46632: 42a7 clrl %sp@- <== NOT EXECUTED 46634: 4eb9 0004 64ac jsr 464ac <== NOT EXECUTED 4663a: 508f addql #8,%sp <== NOT EXECUTED } 4663c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000464ac : */ void rtems_rate_monotonic_report_statistics_with_plugin( void *context, rtems_printk_plugin_t print ) { 464ac: 4e56 ff78 linkw %fp,#-136 <== NOT EXECUTED 464b0: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED 464b4: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 464b8: 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 ) 464bc: 4a8a tstl %a2 <== NOT EXECUTED 464be: 6700 015e beqw 4661e <== NOT EXECUTED return; (*print)( context, "Period information by period\n" ); 464c2: 4879 0005 d6aa pea 5d6aa <== NOT EXECUTED #if defined(RTEMS_DEBUG) status = rtems_rate_monotonic_get_status( id, &the_status ); if ( status != RTEMS_SUCCESSFUL ) continue; #else (void) rtems_rate_monotonic_get_status( id, &the_status ); 464c8: 2e0e movel %fp,%d7 <== NOT EXECUTED #endif rtems_object_get_name( the_status.owner, sizeof(name), name ); 464ca: 2a0e movel %fp,%d5 <== NOT EXECUTED struct timespec cpu_average; struct timespec *min_cpu = &the_stats.min_cpu_time; struct timespec *max_cpu = &the_stats.max_cpu_time; struct timespec *total_cpu = &the_stats.total_cpu_time; _Timespec_Divide_by_integer( total_cpu, the_stats.count, &cpu_average ); 464cc: 280e movel %fp,%d4 <== NOT EXECUTED #if defined(RTEMS_DEBUG) status = rtems_rate_monotonic_get_status( id, &the_status ); if ( status != RTEMS_SUCCESSFUL ) continue; #else (void) rtems_rate_monotonic_get_status( id, &the_status ); 464ce: 0687 ffff ffda addil #-38,%d7 <== NOT EXECUTED 464d4: 4bf9 0004 be20 lea 4be20 ,%a5<== NOT EXECUTED #endif rtems_object_get_name( the_status.owner, sizeof(name), name ); 464da: 5b85 subql #5,%d5 <== NOT EXECUTED 464dc: 49f9 0004 67ac lea 467ac ,%a4 <== NOT EXECUTED struct timespec cpu_average; struct timespec *min_cpu = &the_stats.min_cpu_time; struct timespec *max_cpu = &the_stats.max_cpu_time; struct timespec *total_cpu = &the_stats.total_cpu_time; _Timespec_Divide_by_integer( total_cpu, the_stats.count, &cpu_average ); 464e2: 0684 ffff fff2 addil #-14,%d4 <== NOT EXECUTED 464e8: 47f9 0004 9888 lea 49888 <_Timespec_Divide_by_integer>,%a3 <== NOT EXECUTED char name[5]; if ( !print ) return; (*print)( context, "Period information by period\n" ); 464ee: 2f02 movel %d2,%sp@- <== NOT EXECUTED 464f0: 4e92 jsr %a2@ <== NOT EXECUTED #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ (*print)( context, "--- CPU times are in seconds ---\n" ); 464f2: 4879 0005 d6c8 pea 5d6c8 <== NOT EXECUTED 464f8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 464fa: 4e92 jsr %a2@ <== NOT EXECUTED (*print)( context, "--- Wall times are in seconds ---\n" ); 464fc: 4879 0005 d6ea pea 5d6ea <== NOT EXECUTED 46502: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46504: 4e92 jsr %a2@ <== NOT EXECUTED Be sure to test the various cases. (*print)( context,"\ 1234567890123456789012345678901234567890123456789012345678901234567890123456789\ \n"); */ (*print)( context, " ID OWNER COUNT MISSED " 46506: 4879 0005 d70d pea 5d70d <== NOT EXECUTED 4650c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4650e: 4e92 jsr %a2@ <== NOT EXECUTED #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ " " #endif " WALL TIME\n" ); (*print)( context, " " 46510: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 46514: 2ebc 0005 d758 movel #382808,%sp@ <== NOT EXECUTED 4651a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4651c: 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 ; 4651e: 2639 0006 0012 movel 60012 <_Rate_monotonic_Information+0x6>,%d3<== NOT EXECUTED 46524: 508f addql #8,%sp <== NOT EXECUTED 46526: 6000 00ec braw 46614 <== NOT EXECUTED id <= _Rate_monotonic_Information.maximum_id ; id++ ) { status = rtems_rate_monotonic_get_statistics( id, &the_stats ); 4652a: 486e ffa2 pea %fp@(-94) <== NOT EXECUTED 4652e: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46530: 4eb9 0004 bd6c jsr 4bd6c <== NOT EXECUTED if ( status != RTEMS_SUCCESSFUL ) 46536: 508f addql #8,%sp <== NOT EXECUTED 46538: 4a80 tstl %d0 <== NOT EXECUTED 4653a: 6600 00d6 bnew 46612 <== NOT EXECUTED #if defined(RTEMS_DEBUG) status = rtems_rate_monotonic_get_status( id, &the_status ); if ( status != RTEMS_SUCCESSFUL ) continue; #else (void) rtems_rate_monotonic_get_status( id, &the_status ); 4653e: 2f07 movel %d7,%sp@- <== NOT EXECUTED 46540: 2f03 movel %d3,%sp@- <== NOT EXECUTED 46542: 4e95 jsr %a5@ <== NOT EXECUTED #endif rtems_object_get_name( the_status.owner, sizeof(name), name ); 46544: 2f05 movel %d5,%sp@- <== NOT EXECUTED 46546: 4878 0005 pea 5 <== NOT EXECUTED 4654a: 2f2e ffda movel %fp@(-38),%sp@- <== NOT EXECUTED 4654e: 4e94 jsr %a4@ <== NOT EXECUTED /* * Print part of report line that is not dependent on granularity */ (*print)( context, 46550: 2f2e ffa6 movel %fp@(-90),%sp@- <== NOT EXECUTED 46554: 2f2e ffa2 movel %fp@(-94),%sp@- <== NOT EXECUTED 46558: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4655a: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4655c: 4879 0005 d7a4 pea 5d7a4 <== NOT EXECUTED 46562: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46564: 4e92 jsr %a2@ <== NOT EXECUTED ); /* * If the count is zero, don't print statistics */ if (the_stats.count == 0) { 46566: 202e ffa2 movel %fp@(-94),%d0 <== NOT EXECUTED 4656a: 4fef 002c lea %sp@(44),%sp <== NOT EXECUTED 4656e: 6610 bnes 46580 <== NOT EXECUTED (*print)( context, "\n" ); 46570: 4879 0005 d5ce pea 5d5ce <== NOT EXECUTED 46576: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46578: 4e92 jsr %a2@ <== NOT EXECUTED continue; 4657a: 508f addql #8,%sp <== NOT EXECUTED 4657c: 6000 0094 braw 46612 <== NOT EXECUTED struct timespec cpu_average; struct timespec *min_cpu = &the_stats.min_cpu_time; struct timespec *max_cpu = &the_stats.max_cpu_time; struct timespec *total_cpu = &the_stats.total_cpu_time; _Timespec_Divide_by_integer( total_cpu, the_stats.count, &cpu_average ); 46580: 2f04 movel %d4,%sp@- <== NOT EXECUTED 46582: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46584: 486e ffba pea %fp@(-70) <== NOT EXECUTED 46588: 4e93 jsr %a3@ <== NOT EXECUTED (*print)( context, 4658a: 202e fff6 movel %fp@(-10),%d0 <== NOT EXECUTED 4658e: 223c 0000 03e8 movel #1000,%d1 <== NOT EXECUTED 46594: 4c41 0800 remsl %d1,%d0,%d0 <== NOT EXECUTED 46598: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4659a: 202e ffb6 movel %fp@(-74),%d0 <== NOT EXECUTED 4659e: 2f2e fff2 movel %fp@(-14),%sp@- <== NOT EXECUTED 465a2: 4c41 0800 remsl %d1,%d0,%d0 <== NOT EXECUTED 465a6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 465a8: 202e ffae movel %fp@(-82),%d0 <== NOT EXECUTED 465ac: 2f2e ffb2 movel %fp@(-78),%sp@- <== NOT EXECUTED 465b0: 4c41 0800 remsl %d1,%d0,%d0 <== NOT EXECUTED 465b4: 2f00 movel %d0,%sp@- <== NOT EXECUTED 465b6: 2f2e ffaa movel %fp@(-86),%sp@- <== NOT EXECUTED 465ba: 4879 0005 d7bb pea 5d7bb <== NOT EXECUTED 465c0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 465c2: 4e92 jsr %a2@ <== NOT EXECUTED struct timespec wall_average; struct timespec *min_wall = &the_stats.min_wall_time; struct timespec *max_wall = &the_stats.max_wall_time; struct timespec *total_wall = &the_stats.total_wall_time; _Timespec_Divide_by_integer(total_wall, the_stats.count, &wall_average); 465c4: 4fef 0028 lea %sp@(40),%sp <== NOT EXECUTED 465c8: 2e84 movel %d4,%sp@ <== NOT EXECUTED 465ca: 2f2e ffa2 movel %fp@(-94),%sp@- <== NOT EXECUTED 465ce: 486e ffd2 pea %fp@(-46) <== NOT EXECUTED 465d2: 4e93 jsr %a3@ <== NOT EXECUTED (*print)( context, 465d4: 202e fff6 movel %fp@(-10),%d0 <== NOT EXECUTED 465d8: 223c 0000 03e8 movel #1000,%d1 <== NOT EXECUTED 465de: 4c41 0800 remsl %d1,%d0,%d0 <== NOT EXECUTED 465e2: 2f00 movel %d0,%sp@- <== NOT EXECUTED 465e4: 202e ffce movel %fp@(-50),%d0 <== NOT EXECUTED 465e8: 2f2e fff2 movel %fp@(-14),%sp@- <== NOT EXECUTED 465ec: 4c41 0800 remsl %d1,%d0,%d0 <== NOT EXECUTED 465f0: 2f00 movel %d0,%sp@- <== NOT EXECUTED 465f2: 202e ffc6 movel %fp@(-58),%d0 <== NOT EXECUTED 465f6: 2f2e ffca movel %fp@(-54),%sp@- <== NOT EXECUTED 465fa: 4c41 0800 remsl %d1,%d0,%d0 <== NOT EXECUTED 465fe: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46600: 2f2e ffc2 movel %fp@(-62),%sp@- <== NOT EXECUTED 46604: 4879 0005 d7da pea 5d7da <== NOT EXECUTED 4660a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4660c: 4e92 jsr %a2@ <== NOT EXECUTED 4660e: 4fef 002c lea %sp@(44),%sp <== NOT EXECUTED * Cycle through all possible ids and try to report on each one. If it * is a period that is inactive, we just get an error back. No big deal. */ for ( id=_Rate_monotonic_Information.minimum_id ; id <= _Rate_monotonic_Information.maximum_id ; id++ ) { 46612: 5283 addql #1,%d3 <== 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 ; 46614: b6b9 0006 0016 cmpl 60016 <_Rate_monotonic_Information+0xa>,%d3<== NOT EXECUTED 4661a: 6300 ff0e blsw 4652a <== NOT EXECUTED the_stats.min_wall_time, the_stats.max_wall_time, ival_wall, fval_wall ); #endif } } } 4661e: 4cee 3cfc ff78 moveml %fp@(-136),%d2-%d7/%a2-%a5 <== NOT EXECUTED 46624: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046640 : /* * rtems_rate_monotonic_reset_all_statistics */ void rtems_rate_monotonic_reset_all_statistics( void ) { 46640: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46644: 2039 0006 0102 movel 60102 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4664a: 5280 addql #1,%d0 <== NOT EXECUTED 4664c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4664e: 23c0 0006 0102 movel %d0,60102 <_Thread_Dispatch_disable_level><== NOT EXECUTED 46654: 2f02 movel %d2,%sp@- <== NOT EXECUTED /* * Cycle through all possible ids and try to reset each one. If it * is a period that is inactive, we just get an error back. No big deal. */ for ( id=_Rate_monotonic_Information.minimum_id ; 46656: 2439 0006 0012 movel 60012 <_Rate_monotonic_Information+0x6>,%d2<== NOT EXECUTED id <= _Rate_monotonic_Information.maximum_id ; id++ ) { (void) rtems_rate_monotonic_reset_statistics( id ); 4665c: 45f9 0004 6684 lea 46684 ,%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 ; 46662: 6008 bras 4666c <== NOT EXECUTED id <= _Rate_monotonic_Information.maximum_id ; id++ ) { (void) rtems_rate_monotonic_reset_statistics( id ); 46664: 2f02 movel %d2,%sp@- <== NOT EXECUTED * Cycle through all possible ids and try to reset each one. If it * is a period that is inactive, we just get an error back. No big deal. */ for ( id=_Rate_monotonic_Information.minimum_id ; id <= _Rate_monotonic_Information.maximum_id ; id++ ) { 46666: 5282 addql #1,%d2 <== NOT EXECUTED (void) rtems_rate_monotonic_reset_statistics( id ); 46668: 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++ ) { 4666a: 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 ; 4666c: b4b9 0006 0016 cmpl 60016 <_Rate_monotonic_Information+0xa>,%d2<== NOT EXECUTED 46672: 63f0 blss 46664 <== NOT EXECUTED /* * Done so exit thread dispatching disabled critical section. */ _Thread_Enable_dispatch(); } 46674: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 46678: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4667c: 4e5e unlk %fp <== NOT EXECUTED } /* * Done so exit thread dispatching disabled critical section. */ _Thread_Enable_dispatch(); 4667e: 4ef9 0004 8dc2 jmp 48dc2 <_Thread_Enable_dispatch> <== NOT EXECUTED =============================================================================== 00046684 : */ rtems_status_code rtems_rate_monotonic_reset_statistics( rtems_id id ) { 46684: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 46688: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4668a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4668e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 46692: 4879 0006 000c pea 6000c <_Rate_monotonic_Information> <== NOT EXECUTED 46698: 4eb9 0004 82e8 jsr 482e8 <_Objects_Get> <== NOT EXECUTED Objects_Locations location; Rate_monotonic_Control *the_period; the_period = _Rate_monotonic_Get( id, &location ); switch ( location ) { 4669e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 466a2: 2440 moveal %d0,%a2 <== NOT EXECUTED 466a4: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 466a8: 6634 bnes 466de <== NOT EXECUTED case OBJECTS_LOCAL: _Rate_monotonic_Reset_statistics( the_period ); 466aa: 4878 0038 pea 38 <== NOT EXECUTED 466ae: 42a7 clrl %sp@- <== NOT EXECUTED 466b0: 486a 0054 pea %a2@(84) <== NOT EXECUTED 466b4: 4eb9 0004 e96c jsr 4e96c <== NOT EXECUTED 466ba: 203c 7fff ffff movel #2147483647,%d0 <== NOT EXECUTED 466c0: 2540 005c movel %d0,%a2@(92) <== NOT EXECUTED 466c4: 2540 0060 movel %d0,%a2@(96) <== NOT EXECUTED 466c8: 2540 0074 movel %d0,%a2@(116) <== NOT EXECUTED 466cc: 2540 0078 movel %d0,%a2@(120) <== NOT EXECUTED _Thread_Enable_dispatch(); 466d0: 4eb9 0004 8dc2 jsr 48dc2 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 466d6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 466da: 4280 clrl %d0 <== NOT EXECUTED 466dc: 6002 bras 466e0 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 466de: 7004 moveq #4,%d0 <== NOT EXECUTED } 466e0: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 466e4: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00050688 : uintptr_t length, uintptr_t page_size, rtems_attribute attribute_set, rtems_id *id ) { 50688: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 5068c: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@ <== NOT EXECUTED 50690: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 50694: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 50698: 2c2e 0010 movel %fp@(16),%d6 <== NOT EXECUTED 5069c: 2a2e 0014 movel %fp@(20),%d5 <== NOT EXECUTED 506a0: 282e 0018 movel %fp@(24),%d4 <== NOT EXECUTED 506a4: 266e 001c moveal %fp@(28),%a3 <== NOT EXECUTED rtems_status_code return_status; Region_Control *the_region; if ( !rtems_is_name_valid( name ) ) 506a8: 4a83 tstl %d3 <== NOT EXECUTED 506aa: 6700 00be beqw 5076a <== NOT EXECUTED return RTEMS_INVALID_NAME; if ( !starting_address ) 506ae: 4a82 tstl %d2 <== NOT EXECUTED 506b0: 6700 00bc beqw 5076e <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( !id ) 506b4: 4a8b tstl %a3 <== NOT EXECUTED 506b6: 6700 00b6 beqw 5076e <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; _RTEMS_Lock_allocator(); /* to prevent deletion */ 506ba: 2f39 0007 6fcc movel 76fcc <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 506c0: 4eb9 0005 29b0 jsr 529b0 <_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 ); 506c6: 4879 0007 6e16 pea 76e16 <_Region_Information> <== NOT EXECUTED 506cc: 4eb9 0005 3f4c jsr 53f4c <_Objects_Allocate> <== NOT EXECUTED the_region = _Region_Allocate(); if ( !the_region ) 506d2: 508f addql #8,%sp <== NOT EXECUTED 506d4: 2440 moveal %d0,%a2 <== NOT EXECUTED 506d6: 4a80 tstl %d0 <== NOT EXECUTED 506d8: 677e beqs 50758 <== NOT EXECUTED return_status = RTEMS_TOO_MANY; else { the_region->maximum_segment_size = _Heap_Initialize( 506da: 2f05 movel %d5,%sp@- <== NOT EXECUTED 506dc: 2f06 movel %d6,%sp@- <== NOT EXECUTED 506de: 2f02 movel %d2,%sp@- <== NOT EXECUTED 506e0: 486a 0068 pea %a2@(104) <== NOT EXECUTED 506e4: 4eb9 0005 3b58 jsr 53b58 <_Heap_Initialize> <== NOT EXECUTED &the_region->Memory, starting_address, length, page_size ); if ( !the_region->maximum_segment_size ) { 506ea: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED if ( !the_region ) return_status = RTEMS_TOO_MANY; else { the_region->maximum_segment_size = _Heap_Initialize( 506ee: 2540 005c movel %d0,%a2@(92) <== NOT EXECUTED &the_region->Memory, starting_address, length, page_size ); if ( !the_region->maximum_segment_size ) { 506f2: 6614 bnes 50708 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Region_Free ( Region_Control *the_region ) { _Objects_Free( &_Region_Information, &the_region->Object ); 506f4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 506f6: 4879 0007 6e16 pea 76e16 <_Region_Information> <== NOT EXECUTED _Region_Free( the_region ); return_status = RTEMS_INVALID_SIZE; 506fc: 7408 moveq #8,%d2 <== NOT EXECUTED 506fe: 4eb9 0005 4240 jsr 54240 <_Objects_Free> <== NOT EXECUTED 50704: 508f addql #8,%sp <== NOT EXECUTED 50706: 6052 bras 5075a <== NOT EXECUTED } else { the_region->starting_address = starting_address; 50708: 2542 0050 movel %d2,%a2@(80) <== NOT EXECUTED &the_region->Object, (Objects_Name) name ); *id = the_region->Object.id; return_status = RTEMS_SUCCESSFUL; 5070c: 4282 clrl %d2 <== NOT EXECUTED } else { the_region->starting_address = starting_address; the_region->length = length; 5070e: 2546 0054 movel %d6,%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( 50712: 44c4 movew %d4,%ccr <== NOT EXECUTED 50714: 57c0 seq %d0 <== NOT EXECUTED else { the_region->starting_address = starting_address; the_region->length = length; the_region->page_size = page_size; 50716: 2545 0058 movel %d5,%a2@(88) <== NOT EXECUTED the_region->attribute_set = attribute_set; the_region->number_of_used_blocks = 0; _Thread_queue_Initialize( 5071a: 49c0 extbl %d0 <== NOT EXECUTED 5071c: 4480 negl %d0 <== NOT EXECUTED else { the_region->starting_address = starting_address; the_region->length = length; the_region->page_size = page_size; the_region->attribute_set = attribute_set; 5071e: 2544 0060 movel %d4,%a2@(96) <== NOT EXECUTED the_region->number_of_used_blocks = 0; 50722: 42aa 0064 clrl %a2@(100) <== NOT EXECUTED _Thread_queue_Initialize( 50726: 4878 0006 pea 6 <== NOT EXECUTED 5072a: 4878 0040 pea 40 <== NOT EXECUTED 5072e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 50730: 486a 0010 pea %a2@(16) <== NOT EXECUTED 50734: 4eb9 0005 555c jsr 5555c <_Thread_queue_Initialize> <== NOT EXECUTED Objects_Name name ) { _Objects_Set_local_object( information, _Objects_Get_index( the_object->id ), 5073a: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, Objects_Name name ) { _Objects_Set_local_object( 5073e: 4281 clrl %d1 <== NOT EXECUTED &_Region_Information, &the_region->Object, (Objects_Name) name ); *id = the_region->Object.id; 50740: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 50744: 2079 0007 6e2e moveal 76e2e <_Region_Information+0x18>,%a0 <== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, Objects_Name name ) { _Objects_Set_local_object( 5074a: 3200 movew %d0,%d1 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 5074c: 218a 1c00 movel %a2,%a0@(00000000,%d1:l:4) <== NOT EXECUTED information, _Objects_Get_index( the_object->id ), the_object ); the_object->name = name; 50750: 2543 000c movel %d3,%a2@(12) <== NOT EXECUTED 50754: 2680 movel %d0,%a3@ <== NOT EXECUTED 50756: 6002 bras 5075a <== NOT EXECUTED _RTEMS_Lock_allocator(); /* to prevent deletion */ the_region = _Region_Allocate(); if ( !the_region ) return_status = RTEMS_TOO_MANY; 50758: 7405 moveq #5,%d2 <== NOT EXECUTED *id = the_region->Object.id; return_status = RTEMS_SUCCESSFUL; } } _RTEMS_Unlock_allocator(); 5075a: 2f39 0007 6fcc movel 76fcc <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 50760: 4eb9 0005 2a10 jsr 52a10 <_API_Mutex_Unlock> <== NOT EXECUTED return return_status; 50766: 588f addql #4,%sp <== NOT EXECUTED 50768: 6006 bras 50770 <== NOT EXECUTED { rtems_status_code return_status; Region_Control *the_region; if ( !rtems_is_name_valid( name ) ) return RTEMS_INVALID_NAME; 5076a: 7403 moveq #3,%d2 <== NOT EXECUTED 5076c: 6002 bras 50770 <== NOT EXECUTED if ( !starting_address ) return RTEMS_INVALID_ADDRESS; if ( !id ) return RTEMS_INVALID_ADDRESS; 5076e: 7409 moveq #9,%d2 <== NOT EXECUTED } } _RTEMS_Unlock_allocator(); return return_status; } 50770: 2002 movel %d2,%d0 <== NOT EXECUTED 50772: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED 50778: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0005077c : */ rtems_status_code rtems_region_delete( rtems_id id ) { 5077c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 50780: 2f0a movel %a2,%sp@- <== NOT EXECUTED 50782: 2f02 movel %d2,%sp@- <== NOT EXECUTED Objects_Locations location; rtems_status_code return_status; Region_Control *the_region; _RTEMS_Lock_allocator(); 50784: 2f39 0007 6fcc movel 76fcc <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 5078a: 4eb9 0005 29b0 jsr 529b0 <_API_Mutex_Lock> <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (Region_Control *) _Objects_Get_no_protection( &_Region_Information, id, location ); 50790: 486e fffc pea %fp@(-4) <== NOT EXECUTED 50794: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 50798: 4879 0007 6e16 pea 76e16 <_Region_Information> <== NOT EXECUTED 5079e: 4eb9 0005 43a4 jsr 543a4 <_Objects_Get_no_protection> <== NOT EXECUTED the_region = _Region_Get( id, &location ); switch ( location ) { 507a4: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 507a8: 2440 moveal %d0,%a2 <== NOT EXECUTED 507aa: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 507ae: 662a bnes 507da <== NOT EXECUTED case OBJECTS_LOCAL: _Region_Debug_Walk( the_region, 5 ); if ( the_region->number_of_used_blocks != 0 ) 507b0: 4aaa 0064 tstl %a2@(100) <== NOT EXECUTED 507b4: 6628 bnes 507de <== NOT EXECUTED return_status = RTEMS_RESOURCE_IN_USE; else { _Objects_Close( &_Region_Information, &the_region->Object ); 507b6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 507b8: 4879 0007 6e16 pea 76e16 <_Region_Information> <== NOT EXECUTED _Region_Free( the_region ); return_status = RTEMS_SUCCESSFUL; 507be: 4282 clrl %d2 <== NOT EXECUTED case OBJECTS_LOCAL: _Region_Debug_Walk( the_region, 5 ); if ( the_region->number_of_used_blocks != 0 ) return_status = RTEMS_RESOURCE_IN_USE; else { _Objects_Close( &_Region_Information, &the_region->Object ); 507c0: 4eb9 0005 3fc8 jsr 53fc8 <_Objects_Close> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Region_Free ( Region_Control *the_region ) { _Objects_Free( &_Region_Information, &the_region->Object ); 507c6: 2f0a movel %a2,%sp@- <== NOT EXECUTED 507c8: 4879 0007 6e16 pea 76e16 <_Region_Information> <== NOT EXECUTED 507ce: 4eb9 0005 4240 jsr 54240 <_Objects_Free> <== NOT EXECUTED 507d4: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 507d8: 6006 bras 507e0 <== NOT EXECUTED break; #endif case OBJECTS_ERROR: default: return_status = RTEMS_INVALID_ID; 507da: 7404 moveq #4,%d2 <== NOT EXECUTED 507dc: 6002 bras 507e0 <== NOT EXECUTED switch ( location ) { case OBJECTS_LOCAL: _Region_Debug_Walk( the_region, 5 ); if ( the_region->number_of_used_blocks != 0 ) return_status = RTEMS_RESOURCE_IN_USE; 507de: 740c moveq #12,%d2 <== NOT EXECUTED default: return_status = RTEMS_INVALID_ID; break; } _RTEMS_Unlock_allocator(); 507e0: 2f39 0007 6fcc movel 76fcc <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 507e6: 4eb9 0005 2a10 jsr 52a10 <_API_Mutex_Unlock> <== NOT EXECUTED return return_status; } 507ec: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 507f0: 2002 movel %d2,%d0 <== NOT EXECUTED 507f2: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 507f6: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000507fc : rtems_status_code rtems_region_extend( rtems_id id, void *starting_address, uintptr_t length ) { 507fc: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 50800: 2f0a movel %a2,%sp@- <== NOT EXECUTED 50802: 2f02 movel %d2,%sp@- <== NOT EXECUTED 50804: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED bool extend_ok; Objects_Locations location; rtems_status_code return_status; Region_Control *the_region; if ( !starting_address ) 50808: 676e beqs 50878 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; _RTEMS_Lock_allocator(); /* to prevent deletion */ 5080a: 2f39 0007 6fcc movel 76fcc <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 50810: 4eb9 0005 29b0 jsr 529b0 <_API_Mutex_Lock> <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (Region_Control *) _Objects_Get_no_protection( &_Region_Information, id, location ); 50816: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 5081a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 5081e: 4879 0007 6e16 pea 76e16 <_Region_Information> <== NOT EXECUTED 50824: 4eb9 0005 43a4 jsr 543a4 <_Objects_Get_no_protection> <== NOT EXECUTED the_region = _Region_Get( id, &location ); switch ( location ) { 5082a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 5082e: 2440 moveal %d0,%a2 <== NOT EXECUTED 50830: 4aae fff8 tstl %fp@(-8) <== NOT EXECUTED 50834: 662c bnes 50862 <== NOT EXECUTED case OBJECTS_LOCAL: extend_ok = _Heap_Extend( 50836: 486e fffc pea %fp@(-4) <== NOT EXECUTED 5083a: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 5083e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 50840: 486a 0068 pea %a2@(104) <== NOT EXECUTED 50844: 4eb9 0005 3618 jsr 53618 <_Heap_Extend> <== NOT EXECUTED starting_address, length, &amount_extended ); if ( extend_ok ) { 5084a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 5084e: 4a00 tstb %d0 <== NOT EXECUTED 50850: 6714 beqs 50866 <== NOT EXECUTED the_region->length += amount_extended; 50852: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED 50856: d1aa 0054 addl %d0,%a2@(84) <== NOT EXECUTED the_region->maximum_segment_size += amount_extended; return_status = RTEMS_SUCCESSFUL; 5085a: 4282 clrl %d2 <== NOT EXECUTED &amount_extended ); if ( extend_ok ) { the_region->length += amount_extended; the_region->maximum_segment_size += amount_extended; 5085c: d1aa 005c addl %d0,%a2@(92) <== NOT EXECUTED 50860: 6006 bras 50868 <== NOT EXECUTED break; #endif case OBJECTS_ERROR: default: return_status = RTEMS_INVALID_ID; 50862: 7404 moveq #4,%d2 <== NOT EXECUTED 50864: 6002 bras 50868 <== NOT EXECUTED if ( extend_ok ) { the_region->length += amount_extended; the_region->maximum_segment_size += amount_extended; return_status = RTEMS_SUCCESSFUL; } else { return_status = RTEMS_INVALID_ADDRESS; 50866: 7409 moveq #9,%d2 <== NOT EXECUTED default: return_status = RTEMS_INVALID_ID; break; } _RTEMS_Unlock_allocator(); 50868: 2f39 0007 6fcc movel 76fcc <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 5086e: 4eb9 0005 2a10 jsr 52a10 <_API_Mutex_Unlock> <== NOT EXECUTED return return_status; 50874: 588f addql #4,%sp <== NOT EXECUTED 50876: 6002 bras 5087a <== NOT EXECUTED Objects_Locations location; rtems_status_code return_status; Region_Control *the_region; if ( !starting_address ) return RTEMS_INVALID_ADDRESS; 50878: 7409 moveq #9,%d2 <== NOT EXECUTED break; } _RTEMS_Unlock_allocator(); return return_status; } 5087a: 2002 movel %d2,%d0 <== NOT EXECUTED 5087c: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 50880: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 50884: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00050888 : rtems_status_code rtems_region_get_free_information( rtems_id id, Heap_Information_block *the_info ) { 50888: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 5088c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 5088e: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED Objects_Locations location; rtems_status_code return_status; register Region_Control *the_region; if ( !the_info ) 50892: 4a8a tstl %a2 <== NOT EXECUTED 50894: 675e beqs 508f4 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; _RTEMS_Lock_allocator(); 50896: 2f39 0007 6fcc movel 76fcc <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 5089c: 4eb9 0005 29b0 jsr 529b0 <_API_Mutex_Lock> <== NOT EXECUTED 508a2: 486e fffc pea %fp@(-4) <== NOT EXECUTED 508a6: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 508aa: 4879 0007 6e16 pea 76e16 <_Region_Information> <== NOT EXECUTED 508b0: 4eb9 0005 43a4 jsr 543a4 <_Objects_Get_no_protection> <== NOT EXECUTED the_region = _Region_Get( id, &location ); switch ( location ) { 508b6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 508ba: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 508be: 6620 bnes 508e0 <== NOT EXECUTED case OBJECTS_LOCAL: the_info->Used.number = 0; 508c0: 42aa 000c clrl %a2@(12) <== NOT EXECUTED the_info->Used.total = 0; the_info->Used.largest = 0; _Heap_Get_free_information( &the_region->Memory, &the_info->Free ); 508c4: 2040 moveal %d0,%a0 <== NOT EXECUTED switch ( location ) { case OBJECTS_LOCAL: the_info->Used.number = 0; the_info->Used.total = 0; 508c6: 42aa 0014 clrl %a2@(20) <== NOT EXECUTED the_info->Used.largest = 0; 508ca: 42aa 0010 clrl %a2@(16) <== NOT EXECUTED _Heap_Get_free_information( &the_region->Memory, &the_info->Free ); 508ce: 2f0a movel %a2,%sp@- <== NOT EXECUTED 508d0: 4868 0068 pea %a0@(104) <== NOT EXECUTED return_status = RTEMS_SUCCESSFUL; 508d4: 95ca subal %a2,%a2 <== 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 ); 508d6: 4eb9 0005 3978 jsr 53978 <_Heap_Get_free_information> <== NOT EXECUTED return_status = RTEMS_SUCCESSFUL; break; 508dc: 508f addql #8,%sp <== NOT EXECUTED 508de: 6004 bras 508e4 <== NOT EXECUTED break; #endif case OBJECTS_ERROR: default: return_status = RTEMS_INVALID_ID; 508e0: 347c 0004 moveaw #4,%a2 <== NOT EXECUTED break; } _RTEMS_Unlock_allocator(); 508e4: 2f39 0007 6fcc movel 76fcc <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 508ea: 4eb9 0005 2a10 jsr 52a10 <_API_Mutex_Unlock> <== NOT EXECUTED return return_status; 508f0: 588f addql #4,%sp <== NOT EXECUTED 508f2: 6004 bras 508f8 <== NOT EXECUTED Objects_Locations location; rtems_status_code return_status; register Region_Control *the_region; if ( !the_info ) return RTEMS_INVALID_ADDRESS; 508f4: 347c 0009 moveaw #9,%a2 <== NOT EXECUTED break; } _RTEMS_Unlock_allocator(); return return_status; } 508f8: 200a movel %a2,%d0 <== NOT EXECUTED 508fa: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 508fe: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00050904 : rtems_status_code rtems_region_get_information( rtems_id id, Heap_Information_block *the_info ) { 50904: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 50908: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5090a: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED Objects_Locations location; rtems_status_code return_status; register Region_Control *the_region; if ( !the_info ) 5090e: 6750 beqs 50960 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; _RTEMS_Lock_allocator(); 50910: 2f39 0007 6fcc movel 76fcc <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 50916: 4eb9 0005 29b0 jsr 529b0 <_API_Mutex_Lock> <== NOT EXECUTED 5091c: 486e fffc pea %fp@(-4) <== NOT EXECUTED 50920: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 50924: 4879 0007 6e16 pea 76e16 <_Region_Information> <== NOT EXECUTED 5092a: 4eb9 0005 43a4 jsr 543a4 <_Objects_Get_no_protection> <== NOT EXECUTED the_region = _Region_Get( id, &location ); switch ( location ) { 50930: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 50934: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 50938: 6614 bnes 5094e <== NOT EXECUTED case OBJECTS_LOCAL: _Heap_Get_information( &the_region->Memory, the_info ); 5093a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 5093c: 2040 moveal %d0,%a0 <== NOT EXECUTED 5093e: 4868 0068 pea %a0@(104) <== NOT EXECUTED return_status = RTEMS_SUCCESSFUL; 50942: 4282 clrl %d2 <== NOT EXECUTED the_region = _Region_Get( id, &location ); switch ( location ) { case OBJECTS_LOCAL: _Heap_Get_information( &the_region->Memory, the_info ); 50944: 4eb9 0005 39bc jsr 539bc <_Heap_Get_information> <== NOT EXECUTED return_status = RTEMS_SUCCESSFUL; break; 5094a: 508f addql #8,%sp <== NOT EXECUTED 5094c: 6002 bras 50950 <== NOT EXECUTED break; #endif case OBJECTS_ERROR: default: return_status = RTEMS_INVALID_ID; 5094e: 7404 moveq #4,%d2 <== NOT EXECUTED break; } _RTEMS_Unlock_allocator(); 50950: 2f39 0007 6fcc movel 76fcc <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 50956: 4eb9 0005 2a10 jsr 52a10 <_API_Mutex_Unlock> <== NOT EXECUTED return return_status; 5095c: 588f addql #4,%sp <== NOT EXECUTED 5095e: 6002 bras 50962 <== NOT EXECUTED Objects_Locations location; rtems_status_code return_status; register Region_Control *the_region; if ( !the_info ) return RTEMS_INVALID_ADDRESS; 50960: 7409 moveq #9,%d2 <== NOT EXECUTED break; } _RTEMS_Unlock_allocator(); return return_status; } 50962: 2002 movel %d2,%d0 <== NOT EXECUTED 50964: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 50968: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0005096c : uintptr_t size, rtems_option option_set, rtems_interval timeout, void **segment ) { 5096c: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 50970: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED 50974: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 50978: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 5097c: 286e 0018 moveal %fp@(24),%a4 <== NOT EXECUTED Objects_Locations location; rtems_status_code return_status; Region_Control *the_region; void *the_segment; if ( !segment ) 50980: 4a8c tstl %a4 <== NOT EXECUTED 50982: 6700 00e4 beqw 50a68 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; *segment = NULL; 50986: 4294 clrl %a4@ <== NOT EXECUTED if ( size == 0 ) 50988: 4a82 tstl %d2 <== NOT EXECUTED 5098a: 6700 00e0 beqw 50a6c <== NOT EXECUTED return RTEMS_INVALID_SIZE; _RTEMS_Lock_allocator(); 5098e: 2f39 0007 6fcc movel 76fcc <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 50994: 4eb9 0005 29b0 jsr 529b0 <_API_Mutex_Lock> <== NOT EXECUTED 5099a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 5099e: 2f03 movel %d3,%sp@- <== NOT EXECUTED 509a0: 4879 0007 6e16 pea 76e16 <_Region_Information> <== NOT EXECUTED executing = _Thread_Executing; 509a6: 2679 0007 739e moveal 7739e <_Per_CPU_Information+0xc>,%a3 <== NOT EXECUTED 509ac: 4eb9 0005 43a4 jsr 543a4 <_Objects_Get_no_protection> <== NOT EXECUTED the_region = _Region_Get( id, &location ); switch ( location ) { 509b2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 509b6: 2440 moveal %d0,%a2 <== NOT EXECUTED 509b8: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 509bc: 6600 0090 bnew 50a4e <== NOT EXECUTED case OBJECTS_LOCAL: if ( size > the_region->maximum_segment_size ) 509c0: b4aa 005c cmpl %a2@(92),%d2 <== NOT EXECUTED 509c4: 6200 008c bhiw 50a52 <== NOT EXECUTED * @brief See _Heap_Allocate_aligned_with_boundary() with alignment and * boundary equals zero. */ RTEMS_INLINE_ROUTINE void *_Heap_Allocate( Heap_Control *heap, uintptr_t size ) { return _Heap_Allocate_aligned_with_boundary( heap, size, 0, 0 ); 509c8: 42a7 clrl %sp@- <== NOT EXECUTED 509ca: 42a7 clrl %sp@- <== NOT EXECUTED 509cc: 2f02 movel %d2,%sp@- <== NOT EXECUTED 509ce: 486a 0068 pea %a2@(104) <== NOT EXECUTED 509d2: 4eb9 0005 347c jsr 5347c <_Heap_Allocate_aligned_with_boundary><== NOT EXECUTED the_segment = _Region_Allocate_segment( the_region, size ); _Region_Debug_Walk( the_region, 2 ); if ( the_segment ) { 509d8: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 509dc: 4a80 tstl %d0 <== NOT EXECUTED 509de: 670a beqs 509ea <== NOT EXECUTED the_region->number_of_used_blocks += 1; 509e0: 52aa 0064 addql #1,%a2@(100) <== NOT EXECUTED *segment = the_segment; return_status = RTEMS_SUCCESSFUL; 509e4: 4282 clrl %d2 <== NOT EXECUTED _Region_Debug_Walk( the_region, 2 ); if ( the_segment ) { the_region->number_of_used_blocks += 1; *segment = the_segment; 509e6: 2880 movel %d0,%a4@ <== NOT EXECUTED 509e8: 606e bras 50a58 <== NOT EXECUTED return_status = RTEMS_SUCCESSFUL; } else if ( _Options_Is_no_wait( option_set ) ) { 509ea: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED 509ee: 0800 0000 btst #0,%d0 <== NOT EXECUTED 509f2: 6662 bnes 50a56 <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 509f4: 2039 0007 6f0c movel 76f0c <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 509fa: 5280 addql #1,%d0 <== NOT EXECUTED 509fc: 23c0 0007 6f0c movel %d0,76f0c <_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(); 50a02: 2f39 0007 6fcc movel 76fcc <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 50a08: 4eb9 0005 2a10 jsr 52a10 <_API_Mutex_Unlock> <== NOT EXECUTED executing->Wait.queue = &the_region->Wait_queue; 50a0e: 200a movel %a2,%d0 <== NOT EXECUTED 50a10: 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; 50a16: 7201 moveq #1,%d1 <== NOT EXECUTED 50a18: 2740 0044 movel %d0,%a3@(68) <== NOT EXECUTED executing->Wait.id = id; executing->Wait.count = size; 50a1c: 2742 0024 movel %d2,%a3@(36) <== NOT EXECUTED */ _Thread_Disable_dispatch(); _RTEMS_Unlock_allocator(); executing->Wait.queue = &the_region->Wait_queue; executing->Wait.id = id; 50a20: 2743 0020 movel %d3,%a3@(32) <== NOT EXECUTED executing->Wait.count = size; executing->Wait.return_argument = segment; 50a24: 274c 0028 movel %a4,%a3@(40) <== NOT EXECUTED 50a28: 2541 0040 movel %d1,%a2@(64) <== NOT EXECUTED _Thread_queue_Enter_critical_section( &the_region->Wait_queue ); _Thread_queue_Enqueue( &the_region->Wait_queue, timeout ); 50a2c: 4879 0005 562c pea 5562c <_Thread_queue_Timeout> <== NOT EXECUTED 50a32: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 50a36: 2f00 movel %d0,%sp@- <== NOT EXECUTED 50a38: 4eb9 0005 5318 jsr 55318 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED _Thread_Enable_dispatch(); 50a3e: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED return (rtems_status_code) executing->Wait.return_code; 50a44: 242b 0034 movel %a3@(52),%d2 <== NOT EXECUTED 50a48: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 50a4c: 6020 bras 50a6e <== NOT EXECUTED break; #endif case OBJECTS_ERROR: default: return_status = RTEMS_INVALID_ID; 50a4e: 7404 moveq #4,%d2 <== NOT EXECUTED 50a50: 6006 bras 50a58 <== NOT EXECUTED the_region = _Region_Get( id, &location ); switch ( location ) { case OBJECTS_LOCAL: if ( size > the_region->maximum_segment_size ) return_status = RTEMS_INVALID_SIZE; 50a52: 7408 moveq #8,%d2 <== NOT EXECUTED 50a54: 6002 bras 50a58 <== NOT EXECUTED if ( the_segment ) { the_region->number_of_used_blocks += 1; *segment = the_segment; return_status = RTEMS_SUCCESSFUL; } else if ( _Options_Is_no_wait( option_set ) ) { return_status = RTEMS_UNSATISFIED; 50a56: 740d moveq #13,%d2 <== NOT EXECUTED default: return_status = RTEMS_INVALID_ID; break; } _RTEMS_Unlock_allocator(); 50a58: 2f39 0007 6fcc movel 76fcc <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 50a5e: 4eb9 0005 2a10 jsr 52a10 <_API_Mutex_Unlock> <== NOT EXECUTED return return_status; 50a64: 588f addql #4,%sp <== NOT EXECUTED 50a66: 6006 bras 50a6e <== NOT EXECUTED rtems_status_code return_status; Region_Control *the_region; void *the_segment; if ( !segment ) return RTEMS_INVALID_ADDRESS; 50a68: 7409 moveq #9,%d2 <== NOT EXECUTED 50a6a: 6002 bras 50a6e <== NOT EXECUTED *segment = NULL; if ( size == 0 ) return RTEMS_INVALID_SIZE; 50a6c: 7408 moveq #8,%d2 <== NOT EXECUTED break; } _RTEMS_Unlock_allocator(); return return_status; } 50a6e: 2002 movel %d2,%d0 <== NOT EXECUTED 50a70: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED 50a76: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00050a7c : rtems_status_code rtems_region_get_segment_size( rtems_id id, void *segment, uintptr_t *size ) { 50a7c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 50a80: 2f03 movel %d3,%sp@- <== NOT EXECUTED 50a82: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED 50a86: 2f02 movel %d2,%sp@- <== NOT EXECUTED 50a88: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED Objects_Locations location; rtems_status_code return_status = RTEMS_SUCCESSFUL; register Region_Control *the_region; if ( !segment ) 50a8c: 6768 beqs 50af6 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( !size ) 50a8e: 4a83 tstl %d3 <== NOT EXECUTED 50a90: 6764 beqs 50af6 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; _RTEMS_Lock_allocator(); 50a92: 2f39 0007 6fcc movel 76fcc <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 50a98: 4eb9 0005 29b0 jsr 529b0 <_API_Mutex_Lock> <== NOT EXECUTED 50a9e: 486e fffc pea %fp@(-4) <== NOT EXECUTED 50aa2: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 50aa6: 4879 0007 6e16 pea 76e16 <_Region_Information> <== NOT EXECUTED 50aac: 4eb9 0005 43a4 jsr 543a4 <_Objects_Get_no_protection> <== NOT EXECUTED the_region = _Region_Get( id, &location ); switch ( location ) { 50ab2: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED 50ab6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 50aba: 6708 beqs 50ac4 <== NOT EXECUTED 50abc: 7001 moveq #1,%d0 <== NOT EXECUTED 50abe: b081 cmpl %d1,%d0 <== NOT EXECUTED 50ac0: 661a bnes 50adc <== NOT EXECUTED 50ac2: 601c bras 50ae0 <== NOT EXECUTED case OBJECTS_LOCAL: if ( !_Heap_Size_of_alloc_area( &the_region->Memory, segment, size ) ) 50ac4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 50ac6: 2040 moveal %d0,%a0 <== NOT EXECUTED 50ac8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 50aca: 4868 0068 pea %a0@(104) <== NOT EXECUTED 50ace: 4eb9 0005 3e20 jsr 53e20 <_Heap_Size_of_alloc_area> <== NOT EXECUTED 50ad4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 50ad8: 4a00 tstb %d0 <== NOT EXECUTED 50ada: 6708 beqs 50ae4 <== NOT EXECUTED void *segment, uintptr_t *size ) { Objects_Locations location; rtems_status_code return_status = RTEMS_SUCCESSFUL; 50adc: 4282 clrl %d2 <== NOT EXECUTED 50ade: 6006 bras 50ae6 <== NOT EXECUTED case OBJECTS_REMOTE: /* this error cannot be returned */ break; #endif case OBJECTS_ERROR: return_status = RTEMS_INVALID_ID; 50ae0: 7404 moveq #4,%d2 <== NOT EXECUTED 50ae2: 6002 bras 50ae6 <== NOT EXECUTED the_region = _Region_Get( id, &location ); switch ( location ) { case OBJECTS_LOCAL: if ( !_Heap_Size_of_alloc_area( &the_region->Memory, segment, size ) ) return_status = RTEMS_INVALID_ADDRESS; 50ae4: 7409 moveq #9,%d2 <== NOT EXECUTED case OBJECTS_ERROR: return_status = RTEMS_INVALID_ID; break; } _RTEMS_Unlock_allocator(); 50ae6: 2f39 0007 6fcc movel 76fcc <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 50aec: 4eb9 0005 2a10 jsr 52a10 <_API_Mutex_Unlock> <== NOT EXECUTED return return_status; 50af2: 588f addql #4,%sp <== NOT EXECUTED 50af4: 6002 bras 50af8 <== NOT EXECUTED if ( !segment ) return RTEMS_INVALID_ADDRESS; if ( !size ) return RTEMS_INVALID_ADDRESS; 50af6: 7409 moveq #9,%d2 <== NOT EXECUTED break; } _RTEMS_Unlock_allocator(); return return_status; } 50af8: 2002 movel %d2,%d0 <== NOT EXECUTED 50afa: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 50afe: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 50b02: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00050b08 : rtems_status_code rtems_region_ident( rtems_name name, rtems_id *id ) { 50b08: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED Objects_Name_or_id_lookup_errors status; status = _Objects_Name_to_id_u32( 50b0c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 50b10: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED 50b16: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 50b1a: 4879 0007 6e16 pea 76e16 <_Region_Information> <== NOT EXECUTED 50b20: 4eb9 0005 4568 jsr 54568 <_Objects_Name_to_id_u32> <== NOT EXECUTED OBJECTS_SEARCH_LOCAL_NODE, id ); return _Status_Object_name_errors_to_status[ status ]; } 50b26: 41f9 0007 02f0 lea 702f0 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED 50b2c: 4e5e unlk %fp <== NOT EXECUTED 50b2e: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED =============================================================================== 00050b34 : rtems_id id, void *segment, uintptr_t size, uintptr_t *old_size ) { 50b34: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 50b38: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 50b3c: 266e 0014 moveal %fp@(20),%a3 <== NOT EXECUTED uintptr_t osize; rtems_status_code return_status; Heap_Resize_status status; register Region_Control *the_region; if ( !old_size ) 50b40: 4a8b tstl %a3 <== NOT EXECUTED 50b42: 6700 008e beqw 50bd2 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; _RTEMS_Lock_allocator(); 50b46: 2f39 0007 6fcc movel 76fcc <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 50b4c: 4eb9 0005 29b0 jsr 529b0 <_API_Mutex_Lock> <== NOT EXECUTED 50b52: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 50b56: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 50b5a: 4879 0007 6e16 pea 76e16 <_Region_Information> <== NOT EXECUTED 50b60: 4eb9 0005 43a4 jsr 543a4 <_Objects_Get_no_protection> <== NOT EXECUTED the_region = _Region_Get( id, &location ); switch ( location ) { 50b66: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 50b6a: 2440 moveal %d0,%a2 <== NOT EXECUTED 50b6c: 4aae fff8 tstl %fp@(-8) <== NOT EXECUTED 50b70: 664e bnes 50bc0 <== NOT EXECUTED case OBJECTS_LOCAL: _Region_Debug_Walk( the_region, 7 ); status = _Heap_Resize_block( 50b72: 486e fffc pea %fp@(-4) <== NOT EXECUTED 50b76: 486e fff4 pea %fp@(-12) <== NOT EXECUTED 50b7a: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 50b7e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 50b82: 486a 0068 pea %a2@(104) <== NOT EXECUTED 50b86: 4eb9 0005 3d48 jsr 53d48 <_Heap_Resize_block> <== NOT EXECUTED segment, (uint32_t) size, &osize, &avail_size ); *old_size = (uint32_t) osize; 50b8c: 26ae fff4 movel %fp@(-12),%a3@ <== NOT EXECUTED case OBJECTS_LOCAL: _Region_Debug_Walk( the_region, 7 ); status = _Heap_Resize_block( 50b90: 2400 movel %d0,%d2 <== NOT EXECUTED ); *old_size = (uint32_t) osize; _Region_Debug_Walk( the_region, 8 ); if ( status == HEAP_RESIZE_SUCCESSFUL ) 50b92: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 50b96: 660e bnes 50ba6 <== NOT EXECUTED _Region_Process_queue( the_region ); /* unlocks allocator */ 50b98: 2f0a movel %a2,%sp@- <== NOT EXECUTED 50b9a: 4eb9 0005 8048 jsr 58048 <_Region_Process_queue> <== NOT EXECUTED 50ba0: 588f addql #4,%sp <== NOT EXECUTED else _RTEMS_Unlock_allocator(); if (status == HEAP_RESIZE_SUCCESSFUL) return RTEMS_SUCCESSFUL; 50ba2: 4280 clrl %d0 <== NOT EXECUTED 50ba4: 602e bras 50bd4 <== NOT EXECUTED _Region_Debug_Walk( the_region, 8 ); if ( status == HEAP_RESIZE_SUCCESSFUL ) _Region_Process_queue( the_region ); /* unlocks allocator */ else _RTEMS_Unlock_allocator(); 50ba6: 2f39 0007 6fcc movel 76fcc <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 50bac: 4eb9 0005 2a10 jsr 52a10 <_API_Mutex_Unlock> <== NOT EXECUTED if (status == HEAP_RESIZE_SUCCESSFUL) return RTEMS_SUCCESSFUL; if (status == HEAP_RESIZE_UNSATISFIED) 50bb2: 588f addql #4,%sp <== NOT EXECUTED 50bb4: 7001 moveq #1,%d0 <== NOT EXECUTED 50bb6: b082 cmpl %d2,%d0 <== NOT EXECUTED 50bb8: 6618 bnes 50bd2 <== NOT EXECUTED return RTEMS_UNSATISFIED; 50bba: 103c 000d moveb #13,%d0 <== NOT EXECUTED 50bbe: 6014 bras 50bd4 <== NOT EXECUTED default: return_status = RTEMS_INVALID_ID; break; } _RTEMS_Unlock_allocator(); 50bc0: 2f39 0007 6fcc movel 76fcc <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 50bc6: 4eb9 0005 2a10 jsr 52a10 <_API_Mutex_Unlock> <== NOT EXECUTED return return_status; 50bcc: 588f addql #4,%sp <== NOT EXECUTED 50bce: 7004 moveq #4,%d0 <== NOT EXECUTED 50bd0: 6002 bras 50bd4 <== NOT EXECUTED if (status == HEAP_RESIZE_SUCCESSFUL) return RTEMS_SUCCESSFUL; if (status == HEAP_RESIZE_UNSATISFIED) return RTEMS_UNSATISFIED; return RTEMS_INVALID_ADDRESS; 50bd2: 7009 moveq #9,%d0 <== NOT EXECUTED break; } _RTEMS_Unlock_allocator(); return return_status; } 50bd4: 4cee 0c04 ffe8 moveml %fp@(-24),%d2/%a2-%a3 <== NOT EXECUTED 50bda: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00050be0 : rtems_status_code rtems_region_return_segment( rtems_id id, void *segment ) { 50be0: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 50be4: 2f0a movel %a2,%sp@- <== NOT EXECUTED uint32_t size; #endif int status; register Region_Control *the_region; _RTEMS_Lock_allocator(); 50be6: 2f39 0007 6fcc movel 76fcc <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 50bec: 4eb9 0005 29b0 jsr 529b0 <_API_Mutex_Lock> <== NOT EXECUTED 50bf2: 486e fffc pea %fp@(-4) <== NOT EXECUTED 50bf6: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 50bfa: 4879 0007 6e16 pea 76e16 <_Region_Information> <== NOT EXECUTED 50c00: 4eb9 0005 43a4 jsr 543a4 <_Objects_Get_no_protection> <== NOT EXECUTED the_region = _Region_Get( id, &location ); switch ( location ) { 50c06: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 50c0a: 2440 moveal %d0,%a2 <== NOT EXECUTED 50c0c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 50c10: 6626 bnes 50c38 <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Region_Free_segment ( Region_Control *the_region, void *the_segment ) { return _Heap_Free( &the_region->Memory, the_segment ); 50c12: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 50c16: 486a 0068 pea %a2@(104) <== NOT EXECUTED 50c1a: 4eb9 0005 380c jsr 5380c <_Heap_Free> <== NOT EXECUTED #endif status = _Region_Free_segment( the_region, segment ); _Region_Debug_Walk( the_region, 4 ); if ( !status ) 50c20: 508f addql #8,%sp <== NOT EXECUTED 50c22: 4a00 tstb %d0 <== NOT EXECUTED 50c24: 6718 beqs 50c3e <== NOT EXECUTED return_status = RTEMS_INVALID_ADDRESS; else { the_region->number_of_used_blocks -= 1; 50c26: 53aa 0064 subql #1,%a2@(100) <== NOT EXECUTED _Region_Process_queue(the_region); /* unlocks allocator */ 50c2a: 2f0a movel %a2,%sp@- <== NOT EXECUTED return RTEMS_SUCCESSFUL; 50c2c: 95ca subal %a2,%a2 <== NOT EXECUTED if ( !status ) return_status = RTEMS_INVALID_ADDRESS; else { the_region->number_of_used_blocks -= 1; _Region_Process_queue(the_region); /* unlocks allocator */ 50c2e: 4eb9 0005 8048 jsr 58048 <_Region_Process_queue> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 50c34: 588f addql #4,%sp <== NOT EXECUTED 50c36: 6018 bras 50c50 <== NOT EXECUTED break; #endif case OBJECTS_ERROR: default: return_status = RTEMS_INVALID_ID; 50c38: 347c 0004 moveaw #4,%a2 <== NOT EXECUTED 50c3c: 6004 bras 50c42 <== NOT EXECUTED status = _Region_Free_segment( the_region, segment ); _Region_Debug_Walk( the_region, 4 ); if ( !status ) return_status = RTEMS_INVALID_ADDRESS; 50c3e: 347c 0009 moveaw #9,%a2 <== NOT EXECUTED default: return_status = RTEMS_INVALID_ID; break; } _RTEMS_Unlock_allocator(); 50c42: 2f39 0007 6fcc movel 76fcc <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 50c48: 4eb9 0005 2a10 jsr 52a10 <_API_Mutex_Unlock> <== NOT EXECUTED return return_status; 50c4e: 588f addql #4,%sp <== NOT EXECUTED } 50c50: 200a movel %a2,%d0 <== NOT EXECUTED 50c52: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 50c56: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000453bc : uint32_t count, rtems_attribute attribute_set, rtems_task_priority priority_ceiling, rtems_id *id ) { 453bc: 4e56 ffd0 linkw %fp,#-48 453c0: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ 453c4: 2a2e 0008 movel %fp@(8),%d5 453c8: 262e 000c movel %fp@(12),%d3 453cc: 242e 0010 movel %fp@(16),%d2 453d0: 266e 0018 moveal %fp@(24),%a3 register Semaphore_Control *the_semaphore; CORE_mutex_Attributes the_mutex_attr; CORE_semaphore_Attributes the_semaphore_attr; CORE_mutex_Status mutex_status; if ( !rtems_is_name_valid( name ) ) 453d4: 4a85 tstl %d5 453d6: 6700 0166 beqw 4553e return RTEMS_INVALID_NAME; if ( !id ) 453da: 4a8b tstl %a3 453dc: 6700 0164 beqw 45542 * id - semaphore id * RTEMS_SUCCESSFUL - if successful * error code - if unsuccessful */ rtems_status_code rtems_semaphore_create( 453e0: 2002 movel %d2,%d0 453e2: 0280 0000 00c0 andil #192,%d0 return RTEMS_NOT_DEFINED; } else #endif if ( _Attributes_Is_inherit_priority( attribute_set ) || 453e8: 671c beqs 45406 */ RTEMS_INLINE_ROUTINE bool _Attributes_Is_binary_semaphore( rtems_attribute attribute_set ) { return ((attribute_set & RTEMS_SEMAPHORE_CLASS) == RTEMS_BINARY_SEMAPHORE); 453ea: 7230 moveq #48,%d1 _Attributes_Is_priority_ceiling( attribute_set ) ) { if ( ! (_Attributes_Is_binary_semaphore( attribute_set ) && 453ec: 7810 moveq #16,%d4 453ee: c282 andl %d2,%d1 453f0: b881 cmpl %d1,%d4 453f2: 6600 0152 bnew 45546 453f6: 44c2 movew %d2,%ccr 453f8: 6600 014c bnew 45546 _Attributes_Is_priority( attribute_set ) ) ) return RTEMS_NOT_DEFINED; } if ( _Attributes_Is_inherit_priority( attribute_set ) && 453fc: 0c80 0000 00c0 cmpil #192,%d0 45402: 6700 0142 beqw 45546 */ RTEMS_INLINE_ROUTINE bool _Attributes_Is_counting_semaphore( rtems_attribute attribute_set ) { return ((attribute_set & RTEMS_SEMAPHORE_CLASS) == RTEMS_COUNTING_SEMAPHORE); 45406: 7830 moveq #48,%d4 45408: c882 andl %d2,%d4 _Attributes_Is_priority_ceiling( attribute_set ) ) return RTEMS_NOT_DEFINED; if ( !_Attributes_Is_counting_semaphore( attribute_set ) && ( count > 1 ) ) 4540a: 6708 beqs 45414 4540c: 7001 moveq #1,%d0 4540e: b083 cmpl %d3,%d0 45410: 6500 0138 bcsw 4554a rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 45414: 2039 0005 e478 movel 5e478 <_Thread_Dispatch_disable_level>,%d0 4541a: 5280 addql #1,%d0 4541c: 23c0 0005 e478 movel %d0,5e478 <_Thread_Dispatch_disable_level> * This function allocates a semaphore control block from * the inactive chain of free semaphore control blocks. */ RTEMS_INLINE_ROUTINE Semaphore_Control *_Semaphore_Allocate( void ) { return (Semaphore_Control *) _Objects_Allocate( &_Semaphore_Information ); 45422: 4879 0005 e3bc pea 5e3bc <_Semaphore_Information> 45428: 4eb9 0004 6868 jsr 46868 <_Objects_Allocate> _Thread_Disable_dispatch(); /* prevents deletion */ the_semaphore = _Semaphore_Allocate(); if ( !the_semaphore ) { 4542e: 588f addql #4,%sp 45430: 2440 moveal %d0,%a2 45432: 4a80 tstl %d0 45434: 660c bnes 45442 _Thread_Enable_dispatch(); 45436: 4eb9 0004 779a jsr 4779a <_Thread_Enable_dispatch> return RTEMS_TOO_MANY; 4543c: 7005 moveq #5,%d0 4543e: 6000 010c braw 4554c 45442: 7004 moveq #4,%d0 _Thread_Enable_dispatch(); return RTEMS_TOO_MANY; } #endif the_semaphore->attribute_set = attribute_set; 45444: 2542 0010 movel %d2,%a2@(16) 45448: c082 andl %d2,%d0 /* * Initialize it as a counting semaphore. */ if ( _Attributes_Is_counting_semaphore( attribute_set ) ) { 4544a: 4a84 tstl %d4 4544c: 6632 bnes 45480 * This effectively disables limit checking. */ the_semaphore_attr.maximum_count = 0xFFFFFFFF; if ( _Attributes_Is_priority( attribute_set ) ) the_semaphore_attr.discipline = CORE_SEMAPHORE_DISCIPLINES_PRIORITY; 4544e: 4a80 tstl %d0 45450: 57c0 seq %d0 * The following are just to make Purify happy. */ the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES; the_mutex_attr.priority_ceiling = PRIORITY_MINIMUM; _CORE_semaphore_Initialize( 45452: 2f03 movel %d3,%sp@- 45454: 486e fff8 pea %fp@(-8) * This effectively disables limit checking. */ the_semaphore_attr.maximum_count = 0xFFFFFFFF; if ( _Attributes_Is_priority( attribute_set ) ) the_semaphore_attr.discipline = CORE_SEMAPHORE_DISCIPLINES_PRIORITY; 45458: 49c0 extbl %d0 */ if ( _Attributes_Is_counting_semaphore( attribute_set ) ) { /* * This effectively disables limit checking. */ the_semaphore_attr.maximum_count = 0xFFFFFFFF; 4545a: 72ff moveq #-1,%d1 if ( _Attributes_Is_priority( attribute_set ) ) the_semaphore_attr.discipline = CORE_SEMAPHORE_DISCIPLINES_PRIORITY; 4545c: 5280 addql #1,%d0 * The following are just to make Purify happy. */ the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES; the_mutex_attr.priority_ceiling = PRIORITY_MINIMUM; _CORE_semaphore_Initialize( 4545e: 486a 0014 pea %a2@(20) */ if ( _Attributes_Is_counting_semaphore( attribute_set ) ) { /* * This effectively disables limit checking. */ the_semaphore_attr.maximum_count = 0xFFFFFFFF; 45462: 2d41 fff8 movel %d1,%fp@(-8) if ( _Attributes_Is_priority( attribute_set ) ) the_semaphore_attr.discipline = CORE_SEMAPHORE_DISCIPLINES_PRIORITY; 45466: 2d40 fffc movel %d0,%fp@(-4) the_semaphore_attr.discipline = CORE_SEMAPHORE_DISCIPLINES_FIFO; /* * The following are just to make Purify happy. */ the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES; 4546a: 42ae ffea clrl %fp@(-22) the_mutex_attr.priority_ceiling = PRIORITY_MINIMUM; 4546e: 42ae fff4 clrl %fp@(-12) _CORE_semaphore_Initialize( 45472: 4eb9 0004 62f4 jsr 462f4 <_CORE_semaphore_Initialize> 45478: 4fef 000c lea %sp@(12),%sp 4547c: 6000 009e braw 4551c /* * It is either simple binary semaphore or a more powerful mutex * style binary semaphore. This is the mutex style. */ if ( _Attributes_Is_priority( attribute_set ) ) the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY; 45480: 4a80 tstl %d0 45482: 57c0 seq %d0 45484: 49c0 extbl %d0 45486: 5280 addql #1,%d0 45488: 2d40 fff0 movel %d0,%fp@(-16) else the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_FIFO; if ( _Attributes_Is_binary_semaphore( attribute_set ) ) { 4548c: 7010 moveq #16,%d0 4548e: b084 cmpl %d4,%d0 45490: 6640 bnes 454d2 the_mutex_attr.priority_ceiling = priority_ceiling; the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES; 45492: 42ae ffea clrl %fp@(-22) the_mutex_attr.only_owner_release = false; if ( the_mutex_attr.discipline == CORE_MUTEX_DISCIPLINES_PRIORITY ) { 45496: 7801 moveq #1,%d4 the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_FIFO; if ( _Attributes_Is_binary_semaphore( attribute_set ) ) { the_mutex_attr.priority_ceiling = priority_ceiling; the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES; the_mutex_attr.only_owner_release = false; 45498: 4201 clrb %d1 the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY; else the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_FIFO; if ( _Attributes_Is_binary_semaphore( attribute_set ) ) { the_mutex_attr.priority_ceiling = priority_ceiling; 4549a: 2d6e 0014 fff4 movel %fp@(20),%fp@(-12) the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES; the_mutex_attr.only_owner_release = false; 454a0: 1d41 ffee moveb %d1,%fp@(-18) if ( the_mutex_attr.discipline == CORE_MUTEX_DISCIPLINES_PRIORITY ) { 454a4: b8ae fff0 cmpl %fp@(-16),%d4 454a8: 6634 bnes 454de if ( _Attributes_Is_inherit_priority( attribute_set ) ) { 454aa: 0802 0006 btst #6,%d2 454ae: 6710 beqs 454c0 <== NEVER TAKEN the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT; 454b0: 103c 0002 moveb #2,%d0 the_mutex_attr.only_owner_release = true; 454b4: 7201 moveq #1,%d1 the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES; the_mutex_attr.only_owner_release = false; if ( the_mutex_attr.discipline == CORE_MUTEX_DISCIPLINES_PRIORITY ) { if ( _Attributes_Is_inherit_priority( attribute_set ) ) { the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT; 454b6: 2d40 fff0 movel %d0,%fp@(-16) the_mutex_attr.only_owner_release = true; 454ba: 1d41 ffee moveb %d1,%fp@(-18) 454be: 601e bras 454de } else if ( _Attributes_Is_priority_ceiling( attribute_set ) ) { 454c0: 4a02 tstb %d2 <== NOT EXECUTED 454c2: 6c1a bges 454de <== NOT EXECUTED the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING; 454c4: 7803 moveq #3,%d4 <== NOT EXECUTED the_mutex_attr.only_owner_release = true; 454c6: 7001 moveq #1,%d0 <== NOT EXECUTED if ( the_mutex_attr.discipline == CORE_MUTEX_DISCIPLINES_PRIORITY ) { if ( _Attributes_Is_inherit_priority( attribute_set ) ) { the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT; the_mutex_attr.only_owner_release = true; } else if ( _Attributes_Is_priority_ceiling( attribute_set ) ) { the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING; 454c8: 2d44 fff0 movel %d4,%fp@(-16) <== NOT EXECUTED the_mutex_attr.only_owner_release = true; 454cc: 1d40 ffee moveb %d0,%fp@(-18) <== NOT EXECUTED 454d0: 600c bras 454de <== NOT EXECUTED } } } else /* must be simple binary semaphore */ { the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_BLOCKS; 454d2: 7202 moveq #2,%d1 the_mutex_attr.only_owner_release = false; 454d4: 4204 clrb %d4 the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING; the_mutex_attr.only_owner_release = true; } } } else /* must be simple binary semaphore */ { the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_BLOCKS; 454d6: 2d41 ffea movel %d1,%fp@(-22) the_mutex_attr.only_owner_release = false; 454da: 1d44 ffee moveb %d4,%fp@(-18) } mutex_status = _CORE_mutex_Initialize( 454de: 7001 moveq #1,%d0 454e0: b083 cmpl %d3,%d0 454e2: 57c0 seq %d0 454e4: 49c0 extbl %d0 454e6: 4480 negl %d0 454e8: 2f00 movel %d0,%sp@- 454ea: 486e ffea pea %fp@(-22) 454ee: 486a 0014 pea %a2@(20) 454f2: 4eb9 0004 6054 jsr 46054 <_CORE_mutex_Initialize> &the_semaphore->Core_control.mutex, &the_mutex_attr, (count == 1) ? CORE_MUTEX_UNLOCKED : CORE_MUTEX_LOCKED ); if ( mutex_status == CORE_MUTEX_STATUS_CEILING_VIOLATED ) { 454f8: 4fef 000c lea %sp@(12),%sp 454fc: 7206 moveq #6,%d1 454fe: b280 cmpl %d0,%d1 45500: 661a bnes 4551c <== ALWAYS TAKEN */ RTEMS_INLINE_ROUTINE void _Semaphore_Free ( Semaphore_Control *the_semaphore ) { _Objects_Free( &_Semaphore_Information, &the_semaphore->Object ); 45502: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45504: 4879 0005 e3bc pea 5e3bc <_Semaphore_Information> <== NOT EXECUTED 4550a: 4eb9 0004 6b5c jsr 46b5c <_Objects_Free> <== NOT EXECUTED _Semaphore_Free( the_semaphore ); _Thread_Enable_dispatch(); 45510: 4eb9 0004 779a jsr 4779a <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_INVALID_PRIORITY; 45516: 508f addql #8,%sp <== NOT EXECUTED 45518: 7013 moveq #19,%d0 <== NOT EXECUTED 4551a: 6030 bras 4554c <== NOT EXECUTED Objects_Name name ) { _Objects_Set_local_object( information, _Objects_Get_index( the_object->id ), 4551c: 202a 0008 movel %a2@(8),%d0 Objects_Information *information, Objects_Control *the_object, Objects_Name name ) { _Objects_Set_local_object( 45520: 4281 clrl %d1 #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 45522: 2079 0005 e3d4 moveal 5e3d4 <_Semaphore_Information+0x18>,%a0 Objects_Information *information, Objects_Control *the_object, Objects_Name name ) { _Objects_Set_local_object( 45528: 3200 movew %d0,%d1 #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4552a: 218a 1c00 movel %a2,%a0@(00000000,%d1:l:4) information, _Objects_Get_index( the_object->id ), the_object ); the_object->name = name; 4552e: 2545 000c movel %d5,%a2@(12) &_Semaphore_Information, &the_semaphore->Object, (Objects_Name) name ); *id = the_semaphore->Object.id; 45532: 2680 movel %d0,%a3@ the_semaphore->Object.id, name, 0 /* Not used */ ); #endif _Thread_Enable_dispatch(); 45534: 4eb9 0004 779a jsr 4779a <_Thread_Enable_dispatch> return RTEMS_SUCCESSFUL; 4553a: 4280 clrl %d0 4553c: 600e bras 4554c CORE_mutex_Attributes the_mutex_attr; CORE_semaphore_Attributes the_semaphore_attr; CORE_mutex_Status mutex_status; if ( !rtems_is_name_valid( name ) ) return RTEMS_INVALID_NAME; 4553e: 7003 moveq #3,%d0 <== NOT EXECUTED 45540: 600a bras 4554c <== NOT EXECUTED if ( !id ) return RTEMS_INVALID_ADDRESS; 45542: 7009 moveq #9,%d0 <== NOT EXECUTED 45544: 6006 bras 4554c <== NOT EXECUTED } if ( _Attributes_Is_inherit_priority( attribute_set ) && _Attributes_Is_priority_ceiling( attribute_set ) ) return RTEMS_NOT_DEFINED; 45546: 700b moveq #11,%d0 <== NOT EXECUTED 45548: 6002 bras 4554c <== NOT EXECUTED if ( !_Attributes_Is_counting_semaphore( attribute_set ) && ( count > 1 ) ) return RTEMS_INVALID_NUMBER; 4554a: 700a moveq #10,%d0 <== NOT EXECUTED 0 /* Not used */ ); #endif _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 4554c: 4cee 0c3c ffd0 moveml %fp@(-48),%d2-%d5/%a2-%a3 45552: 4e5e unlk %fp ... =============================================================================== 00045558 : #endif rtems_status_code rtems_semaphore_delete( rtems_id id ) { 45558: 4e56 fffc linkw %fp,#-4 4555c: 2f0a movel %a2,%sp@- Objects_Id id, Objects_Locations *location ) { return (Semaphore_Control *) _Objects_Get( &_Semaphore_Information, id, location ); 4555e: 486e fffc pea %fp@(-4) 45562: 2f2e 0008 movel %fp@(8),%sp@- 45566: 4879 0005 e3bc pea 5e3bc <_Semaphore_Information> 4556c: 4eb9 0004 6cc0 jsr 46cc0 <_Objects_Get> register Semaphore_Control *the_semaphore; Objects_Locations location; the_semaphore = _Semaphore_Get( id, &location ); switch ( location ) { 45572: 4fef 000c lea %sp@(12),%sp 45576: 2440 moveal %d0,%a2 45578: 4aae fffc tstl %fp@(-4) 4557c: 666c bnes 455ea <== NEVER TAKEN 4557e: 7030 moveq #48,%d0 45580: c0aa 0010 andl %a2@(16),%d0 case OBJECTS_LOCAL: if ( !_Attributes_Is_counting_semaphore(the_semaphore->attribute_set) ) { 45584: 6728 beqs 455ae if ( _CORE_mutex_Is_locked( &the_semaphore->Core_control.mutex ) && 45586: 4aaa 0062 tstl %a2@(98) 4558a: 6610 bnes 4559c 4558c: 7220 moveq #32,%d1 4558e: b280 cmpl %d0,%d1 45590: 670a beqs 4559c <== ALWAYS TAKEN !_Attributes_Is_simple_binary_semaphore( the_semaphore->attribute_set ) ) { _Thread_Enable_dispatch(); 45592: 4eb9 0004 779a jsr 4779a <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_RESOURCE_IN_USE; 45598: 700c moveq #12,%d0 <== NOT EXECUTED 4559a: 6050 bras 455ec <== NOT EXECUTED } _CORE_mutex_Flush( 4559c: 4878 0004 pea 4 455a0: 42a7 clrl %sp@- 455a2: 486a 0014 pea %a2@(20) 455a6: 4eb9 0004 6048 jsr 46048 <_CORE_mutex_Flush> 455ac: 6010 bras 455be &the_semaphore->Core_control.mutex, SEMAPHORE_MP_OBJECT_WAS_DELETED, CORE_MUTEX_WAS_DELETED ); } else { _CORE_semaphore_Flush( 455ae: 4878 0002 pea 2 455b2: 42a7 clrl %sp@- 455b4: 486a 0014 pea %a2@(20) 455b8: 4eb9 0004 62e8 jsr 462e8 <_CORE_semaphore_Flush> SEMAPHORE_MP_OBJECT_WAS_DELETED, CORE_SEMAPHORE_WAS_DELETED ); } _Objects_Close( &_Semaphore_Information, &the_semaphore->Object ); 455be: 508f addql #8,%sp 455c0: 2e8a movel %a2,%sp@ 455c2: 4879 0005 e3bc pea 5e3bc <_Semaphore_Information> 455c8: 4eb9 0004 68e4 jsr 468e4 <_Objects_Close> */ RTEMS_INLINE_ROUTINE void _Semaphore_Free ( Semaphore_Control *the_semaphore ) { _Objects_Free( &_Semaphore_Information, &the_semaphore->Object ); 455ce: 2f0a movel %a2,%sp@- 455d0: 4879 0005 e3bc pea 5e3bc <_Semaphore_Information> 455d6: 4eb9 0004 6b5c jsr 46b5c <_Objects_Free> 0, /* Not used */ 0 /* Not used */ ); } #endif _Thread_Enable_dispatch(); 455dc: 4eb9 0004 779a jsr 4779a <_Thread_Enable_dispatch> return RTEMS_SUCCESSFUL; 455e2: 4fef 0010 lea %sp@(16),%sp 455e6: 4280 clrl %d0 455e8: 6002 bras 455ec case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 455ea: 7004 moveq #4,%d0 <== NOT EXECUTED } 455ec: 246e fff8 moveal %fp@(-8),%a2 455f0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004dc9c : #endif rtems_status_code rtems_semaphore_flush( rtems_id id ) { 4dc9c: 4e56 fffc linkw %fp,#-4 4dca0: 486e fffc pea %fp@(-4) 4dca4: 2f2e 0008 movel %fp@(8),%sp@- 4dca8: 4879 0006 1a54 pea 61a54 <_Semaphore_Information> 4dcae: 4eb9 0004 7cc4 jsr 47cc4 <_Objects_Get> register Semaphore_Control *the_semaphore; Objects_Locations location; the_semaphore = _Semaphore_Get( id, &location ); switch ( location ) { 4dcb4: 4fef 000c lea %sp@(12),%sp 4dcb8: 4aae fffc tstl %fp@(-4) 4dcbc: 663c bnes 4dcfa <== NEVER TAKEN 4dcbe: 2040 moveal %d0,%a0 4dcc0: 7230 moveq #48,%d1 4dcc2: 0680 0000 0014 addil #20,%d0 4dcc8: c2a8 0010 andl %a0@(16),%d1 case OBJECTS_LOCAL: if ( !_Attributes_Is_counting_semaphore(the_semaphore->attribute_set) ) { 4dccc: 6710 beqs 4dcde <== NEVER TAKEN _CORE_mutex_Flush( 4dcce: 4878 0001 pea 1 4dcd2: 42a7 clrl %sp@- 4dcd4: 2f00 movel %d0,%sp@- 4dcd6: 4eb9 0004 704c jsr 4704c <_CORE_mutex_Flush> 4dcdc: 600e bras 4dcec &the_semaphore->Core_control.mutex, SEND_OBJECT_WAS_DELETED, CORE_MUTEX_STATUS_UNSATISFIED_NOWAIT ); } else { _CORE_semaphore_Flush( 4dcde: 4878 0001 pea 1 <== NOT EXECUTED 4dce2: 42a7 clrl %sp@- <== NOT EXECUTED 4dce4: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4dce6: 4eb9 0004 72ec jsr 472ec <_CORE_semaphore_Flush> <== NOT EXECUTED 4dcec: 4fef 000c lea %sp@(12),%sp &the_semaphore->Core_control.semaphore, SEND_OBJECT_WAS_DELETED, CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT ); } _Thread_Enable_dispatch(); 4dcf0: 4eb9 0004 87b2 jsr 487b2 <_Thread_Enable_dispatch> return RTEMS_SUCCESSFUL; 4dcf6: 4280 clrl %d0 4dcf8: 6002 bras 4dcfc case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 4dcfa: 7004 moveq #4,%d0 <== NOT EXECUTED } 4dcfc: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00050ef8 : rtems_status_code rtems_semaphore_ident( rtems_name name, uint32_t node, rtems_id *id ) { 50ef8: 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 ); 50efc: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 50f00: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 50f04: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 50f08: 4879 0007 6e50 pea 76e50 <_Semaphore_Information> <== NOT EXECUTED 50f0e: 4eb9 0005 4568 jsr 54568 <_Objects_Name_to_id_u32> <== NOT EXECUTED return _Status_Object_name_errors_to_status[ status ]; } 50f14: 41f9 0007 02f0 lea 702f0 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED 50f1a: 4e5e unlk %fp <== NOT EXECUTED 50f1c: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED ... =============================================================================== 000455f4 : rtems_status_code rtems_semaphore_obtain( rtems_id id, rtems_option option_set, rtems_interval timeout ) { 455f4: 4e56 ffec linkw %fp,#-20 455f8: 48d7 001c moveml %d2-%d4,%sp@ Objects_Locations *location, ISR_Level *level ) { return (Semaphore_Control *) _Objects_Get_isr_disable( &_Semaphore_Information, id, location, level ); 455fc: 486e fff8 pea %fp@(-8) 45600: 486e fffc pea %fp@(-4) 45604: 242e 0008 movel %fp@(8),%d2 45608: 2f02 movel %d2,%sp@- 4560a: 4879 0005 e3bc pea 5e3bc <_Semaphore_Information> 45610: 282e 000c movel %fp@(12),%d4 45614: 262e 0010 movel %fp@(16),%d3 45618: 4eb9 0004 6c68 jsr 46c68 <_Objects_Get_isr_disable> register Semaphore_Control *the_semaphore; Objects_Locations location; ISR_Level level; the_semaphore = _Semaphore_Get_interrupt_disable( id, &location, &level ); switch ( location ) { 4561e: 4fef 0010 lea %sp@(16),%sp 45622: 2040 moveal %d0,%a0 45624: 4aae fffc tstl %fp@(-4) 45628: 6600 00c4 bnew 456ee 4562c: 7030 moveq #48,%d0 4562e: c0a8 0010 andl %a0@(16),%d0 case OBJECTS_LOCAL: if ( !_Attributes_Is_counting_semaphore(the_semaphore->attribute_set) ) { 45632: 6732 beqs 45666 <== NEVER TAKEN _CORE_mutex_Seize( 45634: 2f2e fff8 movel %fp@(-8),%sp@- */ RTEMS_INLINE_ROUTINE bool _Options_Is_no_wait ( rtems_option option_set ) { return (option_set & RTEMS_NO_WAIT) ? true : false; 45638: 7001 moveq #1,%d0 4563a: c880 andl %d0,%d4 4563c: 2f03 movel %d3,%sp@- 4563e: b980 eorl %d4,%d0 45640: 2f00 movel %d0,%sp@- 45642: 2f02 movel %d2,%sp@- 45644: 4868 0014 pea %a0@(20) 45648: 4eb9 0004 6160 jsr 46160 <_CORE_mutex_Seize> ((_Options_Is_no_wait( option_set )) ? false : true), timeout, level ); return _Semaphore_Translate_core_mutex_return_code( _Thread_Executing->Wait.return_code ); 4564e: 2079 0005 e902 moveal 5e902 <_Per_CPU_Information+0xc>,%a0 id, ((_Options_Is_no_wait( option_set )) ? false : true), timeout, level ); return _Semaphore_Translate_core_mutex_return_code( 45654: 2f28 0034 movel %a0@(52),%sp@- 45658: 4eb9 0004 5780 jsr 45780 <_Semaphore_Translate_core_mutex_return_code> 4565e: 4fef 0018 lea %sp@(24),%sp 45662: 6000 008c braw 456f0 { Thread_Control *executing; /* disabled when you get here */ executing = _Thread_Executing; 45666: 2279 0005 e902 moveal 5e902 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL; if ( the_semaphore->count != 0 ) { 4566c: 2028 005c movel %a0@(92),%d0 <== NOT EXECUTED Thread_Control *executing; /* disabled when you get here */ executing = _Thread_Executing; executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL; 45670: 42a9 0034 clrl %a1@(52) <== NOT EXECUTED if ( the_semaphore->count != 0 ) { 45674: 4a80 tstl %d0 <== NOT EXECUTED 45676: 670e beqs 45686 <== NOT EXECUTED the_semaphore->count -= 1; 45678: 5380 subql #1,%d0 <== NOT EXECUTED 4567a: 2140 005c movel %d0,%a0@(92) <== NOT EXECUTED _ISR_Enable( *level_p ); 4567e: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 45682: 46c0 movew %d0,%sr <== NOT EXECUTED 45684: 6054 bras 456da <== NOT EXECUTED return; } if ( !wait ) { 45686: 0804 0000 btst #0,%d4 <== NOT EXECUTED 4568a: 670e beqs 4569a <== NOT EXECUTED _ISR_Enable( *level_p ); 4568c: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 45690: 46c0 movew %d0,%sr <== NOT EXECUTED executing->Wait.return_code = CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT; 45692: 7001 moveq #1,%d0 <== NOT EXECUTED 45694: 2340 0034 movel %d0,%a1@(52) <== NOT EXECUTED 45698: 6040 bras 456da <== NOT EXECUTED 4569a: 2039 0005 e478 movel 5e478 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 456a0: 5280 addql #1,%d0 <== NOT EXECUTED 456a2: 23c0 0005 e478 movel %d0,5e478 <_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; 456a8: 7001 moveq #1,%d0 <== NOT EXECUTED 456aa: 2140 0044 movel %d0,%a0@(68) <== NOT EXECUTED return; } _Thread_Disable_dispatch(); _Thread_queue_Enter_critical_section( &the_semaphore->Wait_queue ); executing->Wait.queue = &the_semaphore->Wait_queue; 456ae: 41e8 0014 lea %a0@(20),%a0 <== NOT EXECUTED executing->Wait.id = id; 456b2: 2342 0020 movel %d2,%a1@(32) <== NOT EXECUTED return; } _Thread_Disable_dispatch(); _Thread_queue_Enter_critical_section( &the_semaphore->Wait_queue ); executing->Wait.queue = &the_semaphore->Wait_queue; 456b6: 2348 0044 movel %a0,%a1@(68) <== NOT EXECUTED executing->Wait.id = id; _ISR_Enable( *level_p ); 456ba: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 456be: 46c0 movew %d0,%sr <== NOT EXECUTED _Thread_queue_Enqueue( &the_semaphore->Wait_queue, timeout ); 456c0: 4879 0004 7f10 pea 47f10 <_Thread_queue_Timeout> <== NOT EXECUTED 456c6: 2f03 movel %d3,%sp@- <== NOT EXECUTED 456c8: 2f08 movel %a0,%sp@- <== NOT EXECUTED 456ca: 4eb9 0004 7bfc jsr 47bfc <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED _Thread_Enable_dispatch(); 456d0: 4eb9 0004 779a jsr 4779a <_Thread_Enable_dispatch> <== NOT EXECUTED 456d6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED ((_Options_Is_no_wait( option_set )) ? false : true), timeout, &level ); return _Semaphore_Translate_core_semaphore_return_code( _Thread_Executing->Wait.return_code ); 456da: 2079 0005 e902 moveal 5e902 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED id, ((_Options_Is_no_wait( option_set )) ? false : true), timeout, &level ); return _Semaphore_Translate_core_semaphore_return_code( 456e0: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED 456e4: 4eb9 0004 5796 jsr 45796 <_Semaphore_Translate_core_semaphore_return_code><== NOT EXECUTED 456ea: 588f addql #4,%sp <== NOT EXECUTED 456ec: 6002 bras 456f0 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 456ee: 7004 moveq #4,%d0 <== NOT EXECUTED } 456f0: 4cee 001c ffec moveml %fp@(-20),%d2-%d4 456f6: 4e5e unlk %fp ... =============================================================================== 000456fc : #endif rtems_status_code rtems_semaphore_release( rtems_id id ) { 456fc: 4e56 fffc linkw %fp,#-4 45700: 2f0a movel %a2,%sp@- 45702: 2f02 movel %d2,%sp@- Objects_Id id, Objects_Locations *location ) { return (Semaphore_Control *) _Objects_Get( &_Semaphore_Information, id, location ); 45704: 486e fffc pea %fp@(-4) 45708: 242e 0008 movel %fp@(8),%d2 4570c: 2f02 movel %d2,%sp@- 4570e: 4879 0005 e3bc pea 5e3bc <_Semaphore_Information> 45714: 4eb9 0004 6cc0 jsr 46cc0 <_Objects_Get> Objects_Locations location; CORE_mutex_Status mutex_status; CORE_semaphore_Status semaphore_status; the_semaphore = _Semaphore_Get( id, &location ); switch ( location ) { 4571a: 4fef 000c lea %sp@(12),%sp 4571e: 4aae fffc tstl %fp@(-4) 45722: 664e bnes 45772 <== NEVER TAKEN 45724: 2040 moveal %d0,%a0 45726: 7230 moveq #48,%d1 45728: 0680 0000 0014 addil #20,%d0 4572e: 45f9 0004 779a lea 4779a <_Thread_Enable_dispatch>,%a2 45734: c2a8 0010 andl %a0@(16),%d1 case OBJECTS_LOCAL: if ( !_Attributes_Is_counting_semaphore(the_semaphore->attribute_set) ) { 45738: 671a beqs 45754 <== NEVER TAKEN mutex_status = _CORE_mutex_Surrender( 4573a: 42a7 clrl %sp@- 4573c: 2f02 movel %d2,%sp@- 4573e: 2f00 movel %d0,%sp@- 45740: 4eb9 0004 6204 jsr 46204 <_CORE_mutex_Surrender> 45746: 2400 movel %d0,%d2 &the_semaphore->Core_control.mutex, id, MUTEX_MP_SUPPORT ); _Thread_Enable_dispatch(); 45748: 4e92 jsr %a2@ return _Semaphore_Translate_core_mutex_return_code( mutex_status ); 4574a: 2f02 movel %d2,%sp@- 4574c: 4eb9 0004 5780 jsr 45780 <_Semaphore_Translate_core_mutex_return_code> 45752: 6018 bras 4576c } else { semaphore_status = _CORE_semaphore_Surrender( 45754: 42a7 clrl %sp@- <== NOT EXECUTED 45756: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45758: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4575a: 4eb9 0004 633c jsr 4633c <_CORE_semaphore_Surrender> <== NOT EXECUTED 45760: 2400 movel %d0,%d2 <== NOT EXECUTED &the_semaphore->Core_control.semaphore, id, MUTEX_MP_SUPPORT ); _Thread_Enable_dispatch(); 45762: 4e92 jsr %a2@ <== NOT EXECUTED return 45764: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45766: 4eb9 0004 5796 jsr 45796 <_Semaphore_Translate_core_semaphore_return_code><== NOT EXECUTED 4576c: 4fef 0010 lea %sp@(16),%sp 45770: 6002 bras 45774 case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 45772: 7004 moveq #4,%d0 <== NOT EXECUTED } 45774: 242e fff4 movel %fp@(-12),%d2 45778: 246e fff8 moveal %fp@(-8),%a2 4577c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045c38 : void rtems_shutdown_executive( uint32_t result ) { if ( _System_state_Is_up( _System_state_Get() ) ) { 45c38: 7003 moveq #3,%d0 */ void rtems_shutdown_executive( uint32_t result ) { 45c3a: 4e56 0000 linkw %fp,#0 if ( _System_state_Is_up( _System_state_Get() ) ) { 45c3e: b0b9 0005 e5e4 cmpl 5e5e4 <_System_state_Current>,%d0 45c44: 6618 bnes 45c5e 45c46: 103c 0004 moveb #4,%d0 * if we were running within the same context, it would work. * * And we will not return to this thread, so there is no point of * saving the context. */ _Context_Restart_self( &_Thread_BSP_context ); 45c4a: 4879 0005 e444 pea 5e444 <_Thread_BSP_context> 45c50: 23c0 0005 e5e4 movel %d0,5e5e4 <_System_state_Current> 45c56: 4eb9 0004 8812 jsr 48812 <_CPU_Context_Restart_self> 45c5c: 588f addql #4,%sp <== NOT EXECUTED _System_state_Set( SYSTEM_STATE_SHUTDOWN ); _Thread_Stop_multitasking(); } _Internal_error_Occurred( 45c5e: 4878 0014 pea 14 45c62: 4878 0001 pea 1 45c66: 42a7 clrl %sp@- 45c68: 4eb9 0004 67b4 jsr 467b4 <_Internal_error_Occurred> ... =============================================================================== 00046564 : rtems_status_code rtems_signal_catch( rtems_asr_entry asr_handler, rtems_mode mode_set ) { 46564: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 46568: 2239 0005 f8a0 movel 5f8a0 <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED 4656e: 5281 addql #1,%d1 <== NOT EXECUTED RTEMS_API_Control *api; ASR_Information *asr; /* XXX normalize mode */ executing = _Thread_Executing; api = (RTEMS_API_Control*)executing->API_Extensions[ THREAD_API_RTEMS ]; 46570: 2079 0005 fd2a moveal 5fd2a <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED rtems_status_code rtems_signal_catch( rtems_asr_entry asr_handler, rtems_mode mode_set ) { 46576: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED RTEMS_API_Control *api; ASR_Information *asr; /* XXX normalize mode */ executing = _Thread_Executing; api = (RTEMS_API_Control*)executing->API_Extensions[ THREAD_API_RTEMS ]; 4657a: 2068 00fe moveal %a0@(254),%a0 <== NOT EXECUTED 4657e: 23c1 0005 f8a0 movel %d1,5f8a0 <_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 ) ) { 46584: 4a80 tstl %d0 <== NOT EXECUTED 46586: 670c beqs 46594 <== NOT EXECUTED asr->mode_set = mode_set; asr->handler = asr_handler; 46588: 2140 000a movel %d0,%a0@(10) <== NOT EXECUTED _Thread_Disable_dispatch(); /* cannot reschedule while */ /* the thread is inconsistent */ if ( !_ASR_Is_null_handler( asr_handler ) ) { asr->mode_set = mode_set; 4658c: 216e 000c 000e movel %fp@(12),%a0@(14) <== NOT EXECUTED 46592: 601a bras 465ae <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _ASR_Initialize ( ASR_Information *information ) { information->is_enabled = false; information->handler = NULL; 46594: 42a8 000a clrl %a0@(10) <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _ASR_Initialize ( ASR_Information *information ) { information->is_enabled = false; 46598: 4200 clrb %d0 <== NOT EXECUTED information->handler = NULL; information->mode_set = RTEMS_DEFAULT_MODES; 4659a: 42a8 000e clrl %a0@(14) <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _ASR_Initialize ( ASR_Information *information ) { information->is_enabled = false; 4659e: 1140 0008 moveb %d0,%a0@(8) <== NOT EXECUTED information->handler = NULL; information->mode_set = RTEMS_DEFAULT_MODES; information->signals_posted = 0; 465a2: 42a8 0012 clrl %a0@(18) <== NOT EXECUTED information->signals_pending = 0; 465a6: 42a8 0016 clrl %a0@(22) <== NOT EXECUTED information->nest_level = 0; 465aa: 42a8 001a clrl %a0@(26) <== NOT EXECUTED asr->handler = asr_handler; } else _ASR_Initialize( asr ); _Thread_Enable_dispatch(); 465ae: 4eb9 0004 87ee jsr 487ee <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; } 465b4: 4280 clrl %d0 <== NOT EXECUTED 465b6: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000510dc : rtems_status_code rtems_signal_send( rtems_id id, rtems_signal_set signal_set ) { 510dc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 510e0: 2f03 movel %d3,%sp@- <== NOT EXECUTED 510e2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 510e4: 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 ) 510e8: 677a beqs 51164 <== NOT EXECUTED return RTEMS_INVALID_NUMBER; the_thread = _Thread_Get( id, &location ); 510ea: 486e fffc pea %fp@(-4) <== NOT EXECUTED 510ee: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 510f2: 4eb9 0005 4edc jsr 54edc <_Thread_Get> <== NOT EXECUTED switch ( location ) { 510f8: 508f addql #8,%sp <== NOT EXECUTED 510fa: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 510fe: 6668 bnes 51168 <== NOT EXECUTED case OBJECTS_LOCAL: api = the_thread->API_Extensions[ THREAD_API_RTEMS ]; 51100: 2240 moveal %d0,%a1 <== NOT EXECUTED 51102: 2069 00fe moveal %a1@(254),%a0 <== NOT EXECUTED asr = &api->Signal; if ( ! _ASR_Is_null_handler( asr->handler ) ) { 51106: 4aa8 000a tstl %a0@(10) <== NOT EXECUTED 5110a: 674e beqs 5115a <== NOT EXECUTED if ( asr->is_enabled ) { 5110c: 4a28 0008 tstb %a0@(8) <== NOT EXECUTED 51110: 672c beqs 5113e <== NOT EXECUTED rtems_signal_set *signal_set ) { ISR_Level _level; _ISR_Disable( _level ); 51112: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED 51118: 40c3 movew %sr,%d3 <== NOT EXECUTED 5111a: 8283 orl %d3,%d1 <== NOT EXECUTED 5111c: 46c1 movew %d1,%sr <== NOT EXECUTED *signal_set |= signals; 5111e: 85a8 0012 orl %d2,%a0@(18) <== NOT EXECUTED _ISR_Enable( _level ); 51122: 46c3 movew %d3,%sr <== NOT EXECUTED _ASR_Post_signals( signal_set, &asr->signals_posted ); if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) ) 51124: 4ab9 0007 739a tstl 7739a <_Per_CPU_Information+0x8> <== NOT EXECUTED 5112a: 6724 beqs 51150 <== NOT EXECUTED 5112c: b0b9 0007 739e cmpl 7739e <_Per_CPU_Information+0xc>,%d0 <== NOT EXECUTED 51132: 661c bnes 51150 <== NOT EXECUTED _Thread_Dispatch_necessary = true; 51134: 7001 moveq #1,%d0 <== NOT EXECUTED 51136: 13c0 0007 73aa moveb %d0,773aa <_Per_CPU_Information+0x18> <== NOT EXECUTED 5113c: 6012 bras 51150 <== NOT EXECUTED rtems_signal_set *signal_set ) { ISR_Level _level; _ISR_Disable( _level ); 5113e: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 51144: 40c1 movew %sr,%d1 <== NOT EXECUTED 51146: 8081 orl %d1,%d0 <== NOT EXECUTED 51148: 46c0 movew %d0,%sr <== NOT EXECUTED *signal_set |= signals; 5114a: 85a8 0016 orl %d2,%a0@(22) <== NOT EXECUTED _ISR_Enable( _level ); 5114e: 46c1 movew %d1,%sr <== NOT EXECUTED } else { _ASR_Post_signals( signal_set, &asr->signals_pending ); } _Thread_Enable_dispatch(); 51150: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 51156: 4280 clrl %d0 <== NOT EXECUTED 51158: 6010 bras 5116a <== NOT EXECUTED } _Thread_Enable_dispatch(); 5115a: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_NOT_DEFINED; 51160: 700b moveq #11,%d0 <== NOT EXECUTED 51162: 6006 bras 5116a <== NOT EXECUTED Objects_Locations location; RTEMS_API_Control *api; ASR_Information *asr; if ( !signal_set ) return RTEMS_INVALID_NUMBER; 51164: 700a moveq #10,%d0 <== NOT EXECUTED 51166: 6002 bras 5116a <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 51168: 7004 moveq #4,%d0 <== NOT EXECUTED } 5116a: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 5116e: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 51172: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000457ac : size_t stack_size, rtems_mode initial_modes, rtems_attribute attribute_set, rtems_id *id ) { 457ac: 4e56 ffe8 linkw %fp,#-24 457b0: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ 457b4: 266e 0008 moveal %fp@(8),%a3 457b8: 262e 000c movel %fp@(12),%d3 457bc: 242e 0014 movel %fp@(20),%d2 457c0: 282e 0018 movel %fp@(24),%d4 457c4: 286e 001c moveal %fp@(28),%a4 Priority_Control core_priority; RTEMS_API_Control *api; ASR_Information *asr; if ( !id ) 457c8: 4a8c tstl %a4 457ca: 6700 00f0 beqw 458bc return RTEMS_INVALID_ADDRESS; if ( !rtems_is_name_valid( name ) ) 457ce: 4a8b tstl %a3 457d0: 6700 00ee beqw 458c0 /* * Validate the RTEMS API priority and convert it to the core priority range. */ if ( !_Attributes_Is_system_task( the_attribute_set ) ) { 457d4: 4a44 tstw %d4 457d6: 6d1e blts 457f6 <== NEVER TAKEN */ RTEMS_INLINE_ROUTINE bool _RTEMS_tasks_Priority_is_valid ( rtems_task_priority the_priority ) { return ( ( the_priority >= RTEMS_MINIMUM_PRIORITY ) && 457d8: 4a83 tstl %d3 457da: 6712 beqs 457ee <== NEVER TAKEN ( the_priority <= RTEMS_MAXIMUM_PRIORITY ) ); 457dc: 4280 clrl %d0 457de: 1039 0005 cb92 moveb 5cb92 ,%d0 */ RTEMS_INLINE_ROUTINE bool _RTEMS_tasks_Priority_is_valid ( rtems_task_priority the_priority ) { return ( ( the_priority >= RTEMS_MINIMUM_PRIORITY ) && 457e4: b083 cmpl %d3,%d0 457e6: 54c0 scc %d0 457e8: 49c0 extbl %d0 457ea: 4480 negl %d0 457ec: 6002 bras 457f0 457ee: 4280 clrl %d0 <== NOT EXECUTED if ( !_RTEMS_tasks_Priority_is_valid( initial_priority ) ) 457f0: 4a00 tstb %d0 457f2: 6700 00d0 beqw 458c4 */ /* * Lock the allocator mutex for protection */ _RTEMS_Lock_allocator(); 457f6: 2f39 0005 e538 movel 5e538 <_RTEMS_Allocator_Mutex>,%sp@- 457fc: 4eb9 0004 5f20 jsr 45f20 <_API_Mutex_Lock> * This function allocates a task control block from * the inactive chain of free task control blocks. */ RTEMS_INLINE_ROUTINE Thread_Control *_RTEMS_tasks_Allocate( void ) { return (Thread_Control *) _Objects_Allocate( &_RTEMS_tasks_Information ); 45802: 4879 0005 e3f6 pea 5e3f6 <_RTEMS_tasks_Information> 45808: 4eb9 0004 6868 jsr 46868 <_Objects_Allocate> * the event of an error. */ the_thread = _RTEMS_tasks_Allocate(); if ( !the_thread ) { 4580e: 508f addql #8,%sp 45810: 2440 moveal %d0,%a2 45812: 4a80 tstl %d0 45814: 6614 bnes 4582a <== ALWAYS TAKEN _RTEMS_Unlock_allocator(); 45816: 2f39 0005 e538 movel 5e538 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 4581c: 4eb9 0004 5f80 jsr 45f80 <_API_Mutex_Unlock> <== NOT EXECUTED return RTEMS_TOO_MANY; 45822: 588f addql #4,%sp <== NOT EXECUTED 45824: 7005 moveq #5,%d0 <== NOT EXECUTED 45826: 6000 009e braw 458c6 <== NOT EXECUTED /* * Initialize the core thread for this task. */ status = _Thread_Initialize( 4582a: 7007 moveq #7,%d0 4582c: 2f0b movel %a3,%sp@- 4582e: 47f9 0004 5f80 lea 45f80 <_API_Mutex_Unlock>,%a3 45834: c082 andl %d2,%d0 45836: 2f00 movel %d0,%sp@- 45838: 0802 0009 btst #9,%d2 4583c: 56c0 sne %d0 4583e: 42a7 clrl %sp@- 45840: 49c0 extbl %d0 45842: 4480 negl %d0 45844: 2f00 movel %d0,%sp@- 45846: 0802 0008 btst #8,%d2 4584a: 57c0 seq %d0 4584c: 49c0 extbl %d0 4584e: 4480 negl %d0 45850: 2f00 movel %d0,%sp@- 45852: 7001 moveq #1,%d0 45854: 2f03 movel %d3,%sp@- 45856: c084 andl %d4,%d0 45858: 2f00 movel %d0,%sp@- 4585a: 2f2e 0010 movel %fp@(16),%sp@- 4585e: 42a7 clrl %sp@- 45860: 2f0a movel %a2,%sp@- 45862: 4879 0005 e3f6 pea 5e3f6 <_RTEMS_tasks_Information> 45868: 4eb9 0004 7848 jsr 47848 <_Thread_Initialize> NULL, /* no budget algorithm callout */ _Modes_Get_interrupt_level(initial_modes), (Objects_Name) name ); if ( !status ) { 4586e: 4fef 002c lea %sp@(44),%sp 45872: 4a00 tstb %d0 45874: 6624 bnes 4589a */ RTEMS_INLINE_ROUTINE void _RTEMS_tasks_Free ( Thread_Control *the_task ) { _Objects_Free( 45876: 2f2a 0008 movel %a2@(8),%sp@- 4587a: 4eb9 0004 6be0 jsr 46be0 <_Objects_Get_information_id> 45880: 2f0a movel %a2,%sp@- 45882: 2f00 movel %d0,%sp@- 45884: 4eb9 0004 6b5c jsr 46b5c <_Objects_Free> #if defined(RTEMS_MULTIPROCESSING) if ( is_global ) _Objects_MP_Free_global_object( the_global_object ); #endif _RTEMS_tasks_Free( the_thread ); _RTEMS_Unlock_allocator(); 4588a: 2f39 0005 e538 movel 5e538 <_RTEMS_Allocator_Mutex>,%sp@- 45890: 4e93 jsr %a3@ return RTEMS_UNSATISFIED; 45892: 4fef 0010 lea %sp@(16),%sp 45896: 700d moveq #13,%d0 45898: 602c bras 458c6 } api = the_thread->API_Extensions[ THREAD_API_RTEMS ]; asr = &api->Signal; 4589a: 206a 00fe moveal %a2@(254),%a0 * id - thread id * RTEMS_SUCCESSFUL - if successful * error code - if unsuccessful */ rtems_status_code rtems_task_create( 4589e: 0802 000a btst #10,%d2 458a2: 57c0 seq %d0 458a4: 4480 negl %d0 } api = the_thread->API_Extensions[ THREAD_API_RTEMS ]; asr = &api->Signal; asr->is_enabled = _Modes_Is_asr_disabled(initial_modes) ? false : true; 458a6: 1140 0008 moveb %d0,%a0@(8) *id = the_thread->Object.id; 458aa: 28aa 0008 movel %a2@(8),%a4@ ); } #endif _RTEMS_Unlock_allocator(); 458ae: 2f39 0005 e538 movel 5e538 <_RTEMS_Allocator_Mutex>,%sp@- 458b4: 4e93 jsr %a3@ return RTEMS_SUCCESSFUL; 458b6: 588f addql #4,%sp 458b8: 4280 clrl %d0 458ba: 600a bras 458c6 RTEMS_API_Control *api; ASR_Information *asr; if ( !id ) return RTEMS_INVALID_ADDRESS; 458bc: 7009 moveq #9,%d0 <== NOT EXECUTED 458be: 6006 bras 458c6 <== NOT EXECUTED if ( !rtems_is_name_valid( name ) ) return RTEMS_INVALID_NAME; 458c0: 7003 moveq #3,%d0 <== NOT EXECUTED 458c2: 6002 bras 458c6 <== NOT EXECUTED * Validate the RTEMS API priority and convert it to the core priority range. */ if ( !_Attributes_Is_system_task( the_attribute_set ) ) { if ( !_RTEMS_tasks_Priority_is_valid( initial_priority ) ) return RTEMS_INVALID_PRIORITY; 458c4: 7013 moveq #19,%d0 <== NOT EXECUTED } #endif _RTEMS_Unlock_allocator(); return RTEMS_SUCCESSFUL; } 458c6: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 458cc: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000458d0 : */ rtems_status_code rtems_task_delete( rtems_id id ) { 458d0: 4e56 fff0 linkw %fp,#-16 458d4: 48d7 1c00 moveml %a2-%a4,%sp@ register Thread_Control *the_thread; Objects_Locations location; Objects_Information *the_information; _RTEMS_Lock_allocator(); 458d8: 2f39 0005 e538 movel 5e538 <_RTEMS_Allocator_Mutex>,%sp@- 458de: 47f9 0004 5f80 lea 45f80 <_API_Mutex_Unlock>,%a3 458e4: 4eb9 0004 5f20 jsr 45f20 <_API_Mutex_Lock> the_thread = _Thread_Get( id, &location ); 458ea: 486e fffc pea %fp@(-4) 458ee: 2f2e 0008 movel %fp@(8),%sp@- 458f2: 4eb9 0004 77c0 jsr 477c0 <_Thread_Get> switch ( location ) { 458f8: 4fef 000c lea %sp@(12),%sp Objects_Locations location; Objects_Information *the_information; _RTEMS_Lock_allocator(); the_thread = _Thread_Get( id, &location ); 458fc: 2440 moveal %d0,%a2 switch ( location ) { 458fe: 4aae fffc tstl %fp@(-4) 45902: 663c bnes 45940 <== NEVER TAKEN case OBJECTS_LOCAL: the_information = _Objects_Get_information_id( the_thread->Object.id ); 45904: 2f2a 0008 movel %a2@(8),%sp@- 45908: 49f9 0004 6be0 lea 46be0 <_Objects_Get_information_id>,%a4 4590e: 4e94 jsr %a4@ 0 /* Not used */ ); } #endif _Thread_Close( the_information, the_thread ); 45910: 2f0a movel %a2,%sp@- 45912: 2f00 movel %d0,%sp@- 45914: 4eb9 0004 748c jsr 4748c <_Thread_Close> 4591a: 2f2a 0008 movel %a2@(8),%sp@- 4591e: 4e94 jsr %a4@ 45920: 2f0a movel %a2,%sp@- 45922: 2f00 movel %d0,%sp@- 45924: 4eb9 0004 6b5c jsr 46b5c <_Objects_Free> _RTEMS_tasks_Free( the_thread ); _RTEMS_Unlock_allocator(); 4592a: 2f39 0005 e538 movel 5e538 <_RTEMS_Allocator_Mutex>,%sp@- 45930: 4e93 jsr %a3@ _Thread_Enable_dispatch(); 45932: 4eb9 0004 779a jsr 4779a <_Thread_Enable_dispatch> return RTEMS_SUCCESSFUL; 45938: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 4593c: 4280 clrl %d0 <== NOT EXECUTED 4593e: 600c bras 4594c <== NOT EXECUTED case OBJECTS_ERROR: break; } _RTEMS_Unlock_allocator(); 45940: 2f39 0005 e538 movel 5e538 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED 45946: 4e93 jsr %a3@ <== NOT EXECUTED return RTEMS_INVALID_ID; 45948: 588f addql #4,%sp <== NOT EXECUTED 4594a: 7004 moveq #4,%d0 <== NOT EXECUTED } 4594c: 4cee 1c00 fff0 moveml %fp@(-16),%a2-%a4 <== NOT EXECUTED 45952: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000470c8 : rtems_status_code rtems_task_get_note( rtems_id id, uint32_t notepad, uint32_t *note ) { 470c8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 470cc: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 470d0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 470d2: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED 470d6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 470d8: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED register Thread_Control *the_thread; Objects_Locations location; RTEMS_API_Control *api; if ( !rtems_configuration_get_notepads_enabled() ) 470dc: 4a39 0005 f314 tstb 5f314 <== NOT EXECUTED 470e2: 6752 beqs 47136 <== NOT EXECUTED return RTEMS_NOT_CONFIGURED; if ( !note ) 470e4: 4a8a tstl %a2 <== NOT EXECUTED 470e6: 6752 beqs 4713a <== 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 ) 470e8: 720f moveq #15,%d1 <== NOT EXECUTED 470ea: b282 cmpl %d2,%d1 <== NOT EXECUTED 470ec: 6550 bcss 4713e <== NOT EXECUTED /* * Optimize the most likely case to avoid the Thread_Dispatch. */ if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) || 470ee: 4a80 tstl %d0 <== NOT EXECUTED 470f0: 670c beqs 470fe <== NOT EXECUTED _Objects_Are_ids_equal( id, _Thread_Executing->Object.id ) ) { 470f2: 2079 0006 135c moveal 6135c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED /* * Optimize the most likely case to avoid the Thread_Dispatch. */ if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) || 470f8: b0a8 0008 cmpl %a0@(8),%d0 <== NOT EXECUTED 470fc: 6610 bnes 4710e <== NOT EXECUTED _Objects_Are_ids_equal( id, _Thread_Executing->Object.id ) ) { api = _Thread_Executing->API_Extensions[ THREAD_API_RTEMS ]; 470fe: 2079 0006 135c moveal 6135c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED *note = api->Notepads[ notepad ]; 47104: 2068 00fe moveal %a0@(254),%a0 <== NOT EXECUTED 47108: 24b0 2c1e movel %a0@(0000001e,%d2:l:4),%a2@ <== NOT EXECUTED 4710c: 6024 bras 47132 <== NOT EXECUTED return RTEMS_SUCCESSFUL; } the_thread = _Thread_Get( id, &location ); 4710e: 486e fffc pea %fp@(-4) <== NOT EXECUTED 47112: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47114: 4eb9 0004 91f0 jsr 491f0 <_Thread_Get> <== NOT EXECUTED switch ( location ) { 4711a: 508f addql #8,%sp <== NOT EXECUTED 4711c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 47120: 6620 bnes 47142 <== NOT EXECUTED case OBJECTS_LOCAL: api = the_thread->API_Extensions[ THREAD_API_RTEMS ]; *note = api->Notepads[ notepad ]; 47122: 2240 moveal %d0,%a1 <== NOT EXECUTED 47124: 2069 00fe moveal %a1@(254),%a0 <== NOT EXECUTED 47128: 24b0 2c1e movel %a0@(0000001e,%d2:l:4),%a2@ <== NOT EXECUTED _Thread_Enable_dispatch(); 4712c: 4eb9 0004 91ca jsr 491ca <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 47132: 4280 clrl %d0 <== NOT EXECUTED 47134: 600e bras 47144 <== NOT EXECUTED register Thread_Control *the_thread; Objects_Locations location; RTEMS_API_Control *api; if ( !rtems_configuration_get_notepads_enabled() ) return RTEMS_NOT_CONFIGURED; 47136: 7016 moveq #22,%d0 <== NOT EXECUTED 47138: 600a bras 47144 <== NOT EXECUTED if ( !note ) return RTEMS_INVALID_ADDRESS; 4713a: 7009 moveq #9,%d0 <== NOT EXECUTED 4713c: 6006 bras 47144 <== NOT EXECUTED * NOTE: There is no check for < RTEMS_NOTEPAD_FIRST because that would * be checking an unsigned number for being negative. */ if ( notepad > RTEMS_NOTEPAD_LAST ) return RTEMS_INVALID_NUMBER; 4713e: 700a moveq #10,%d0 <== NOT EXECUTED 47140: 6002 bras 47144 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 47142: 7004 moveq #4,%d0 <== NOT EXECUTED } 47144: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 47148: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4714c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045958 : rtems_status_code rtems_task_ident( rtems_name name, uint32_t node, rtems_id *id ) { 45958: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4595c: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 45960: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED Objects_Name_or_id_lookup_errors status; if ( !id ) 45964: 4a88 tstl %a0 <== NOT EXECUTED 45966: 6734 beqs 4599c <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( name == OBJECTS_ID_OF_SELF ) { 45968: 4a80 tstl %d0 <== NOT EXECUTED 4596a: 660c bnes 45978 <== NOT EXECUTED *id = _Thread_Executing->Object.id; 4596c: 2279 0005 e902 moveal 5e902 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED 45972: 20a9 0008 movel %a1@(8),%a0@ <== NOT EXECUTED return RTEMS_SUCCESSFUL; 45976: 6026 bras 4599e <== NOT EXECUTED } status = _Objects_Name_to_id_u32( &_RTEMS_tasks_Information, name, node, id ); 45978: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4597a: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4597e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 45980: 4879 0005 e3f6 pea 5e3f6 <_RTEMS_tasks_Information> <== NOT EXECUTED 45986: 4eb9 0004 6e4c jsr 46e4c <_Objects_Name_to_id_u32> <== NOT EXECUTED return _Status_Object_name_errors_to_status[ status ]; 4598c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 45990: 41f9 0005 bcce lea 5bcce <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED 45996: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED 4599a: 6002 bras 4599e <== NOT EXECUTED ) { Objects_Name_or_id_lookup_errors status; if ( !id ) return RTEMS_INVALID_ADDRESS; 4599c: 7009 moveq #9,%d0 <== NOT EXECUTED } status = _Objects_Name_to_id_u32( &_RTEMS_tasks_Information, name, node, id ); return _Status_Object_name_errors_to_status[ status ]; } 4599e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0005147c : */ rtems_status_code rtems_task_is_suspended( rtems_id id ) { 5147c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED register Thread_Control *the_thread; Objects_Locations location; the_thread = _Thread_Get( id, &location ); 51480: 486e fffc pea %fp@(-4) <== NOT EXECUTED 51484: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 51488: 4eb9 0005 4edc jsr 54edc <_Thread_Get> <== NOT EXECUTED switch ( location ) { 5148e: 508f addql #8,%sp <== NOT EXECUTED 51490: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 51494: 661c bnes 514b2 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _States_Is_suspended ( States_Control the_states ) { return (the_states & STATES_SUSPENDED); 51496: 2040 moveal %d0,%a0 <== NOT EXECUTED 51498: 7202 moveq #2,%d1 <== NOT EXECUTED 5149a: c2a8 0010 andl %a0@(16),%d1 <== NOT EXECUTED 5149e: 41f9 0005 4eb6 lea 54eb6 <_Thread_Enable_dispatch>,%a0 <== NOT EXECUTED case OBJECTS_LOCAL: if ( !_States_Is_suspended( the_thread->current_state ) ) { 514a4: 6606 bnes 514ac <== NOT EXECUTED _Thread_Enable_dispatch(); 514a6: 4e90 jsr %a0@ <== NOT EXECUTED return RTEMS_SUCCESSFUL; 514a8: 4280 clrl %d0 <== NOT EXECUTED 514aa: 6008 bras 514b4 <== NOT EXECUTED } _Thread_Enable_dispatch(); 514ac: 4e90 jsr %a0@ <== NOT EXECUTED return RTEMS_ALREADY_SUSPENDED; 514ae: 700f moveq #15,%d0 <== NOT EXECUTED 514b0: 6002 bras 514b4 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 514b2: 7004 moveq #4,%d0 <== NOT EXECUTED } 514b4: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004c4cc : rtems_status_code rtems_task_mode( rtems_mode mode_set, rtems_mode mask, rtems_mode *previous_mode_set ) { 4c4cc: 4e56 ffe4 linkw %fp,#-28 4c4d0: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@ 4c4d4: 262e 0008 movel %fp@(8),%d3 4c4d8: 282e 000c movel %fp@(12),%d4 4c4dc: 286e 0010 moveal %fp@(16),%a4 ASR_Information *asr; bool is_asr_enabled = false; bool needs_asr_dispatching = false; rtems_mode old_mode; if ( !previous_mode_set ) 4c4e0: 4a8c tstl %a4 4c4e2: 6700 0104 beqw 4c5e8 return RTEMS_INVALID_ADDRESS; executing = _Thread_Executing; 4c4e6: 2679 0005 e902 moveal 5e902 <_Per_CPU_Information+0xc>,%a3 api = executing->API_Extensions[ THREAD_API_RTEMS ]; asr = &api->Signal; old_mode = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT; 4c4ec: 4a2b 0074 tstb %a3@(116) 4c4f0: 57c2 seq %d2 if ( !previous_mode_set ) return RTEMS_INVALID_ADDRESS; executing = _Thread_Executing; api = executing->API_Extensions[ THREAD_API_RTEMS ]; 4c4f2: 246b 00fe moveal %a3@(254),%a2 asr = &api->Signal; old_mode = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT; 4c4f6: 49c2 extbl %d2 4c4f8: 0282 0000 0100 andil #256,%d2 if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE ) 4c4fe: 4aab 007a tstl %a3@(122) 4c502: 6704 beqs 4c508 <== ALWAYS TAKEN old_mode |= RTEMS_NO_TIMESLICE; else old_mode |= RTEMS_TIMESLICE; 4c504: 08c2 0009 bset #9,%d2 <== NOT EXECUTED old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR; 4c508: 4a2a 0008 tstb %a2@(8) 4c50c: 57c5 seq %d5 old_mode |= _ISR_Get_level(); 4c50e: 4eb9 0004 88b8 jsr 488b8 <_CPU_ISR_Get_level> if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE ) old_mode |= RTEMS_NO_TIMESLICE; else old_mode |= RTEMS_TIMESLICE; old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR; 4c514: 49c5 extbl %d5 4c516: 0285 0000 0400 andil #1024,%d5 4c51c: 8085 orl %d5,%d0 old_mode |= _ISR_Get_level(); 4c51e: 8082 orl %d2,%d0 4c520: 2880 movel %d0,%a4@ *previous_mode_set = old_mode; /* * These are generic thread scheduling characteristics. */ if ( mask & RTEMS_PREEMPT_MASK ) 4c522: 0804 0008 btst #8,%d4 4c526: 670c beqs 4c534 <== NEVER TAKEN executing->is_preemptible = _Modes_Is_preempt(mode_set) ? true : false; 4c528: 0803 0008 btst #8,%d3 4c52c: 57c0 seq %d0 4c52e: 4480 negl %d0 4c530: 1740 0074 moveb %d0,%a3@(116) if ( mask & RTEMS_TIMESLICE_MASK ) { 4c534: 0804 0009 btst #9,%d4 4c538: 671c beqs 4c556 if ( _Modes_Is_timeslice(mode_set) ) { 4c53a: 0803 0009 btst #9,%d3 4c53e: 6712 beqs 4c552 <== ALWAYS TAKEN executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE; executing->cpu_time_budget = _Thread_Ticks_per_timeslice; 4c540: 41f9 0005 e430 lea 5e430 <_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; 4c546: 7001 moveq #1,%d0 <== NOT EXECUTED executing->cpu_time_budget = _Thread_Ticks_per_timeslice; 4c548: 2750 0076 movel %a0@,%a3@(118) <== 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; 4c54c: 2740 007a movel %d0,%a3@(122) <== NOT EXECUTED 4c550: 6004 bras 4c556 <== NOT EXECUTED executing->cpu_time_budget = _Thread_Ticks_per_timeslice; } else executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE; 4c552: 42ab 007a clrl %a3@(122) } /* * Set the new interrupt level */ if ( mask & RTEMS_INTERRUPT_MASK ) 4c556: 7007 moveq #7,%d0 4c558: c084 andl %d4,%d0 4c55a: 6712 beqs 4c56e */ RTEMS_INLINE_ROUTINE void _Modes_Set_interrupt_level ( Modes_Control mode_set ) { _ISR_Set_level( _Modes_Get_interrupt_level( mode_set ) ); 4c55c: 40c0 movew %sr,%d0 */ RTEMS_INLINE_ROUTINE ISR_Level _Modes_Get_interrupt_level ( Modes_Control mode_set ) { return ( mode_set & RTEMS_INTERRUPT_MASK ); 4c55e: 7207 moveq #7,%d1 4c560: c283 andl %d3,%d1 */ RTEMS_INLINE_ROUTINE void _Modes_Set_interrupt_level ( Modes_Control mode_set ) { _ISR_Set_level( _Modes_Get_interrupt_level( mode_set ) ); 4c562: 0280 0000 f8ff andil #63743,%d0 4c568: e189 lsll #8,%d1 4c56a: 8081 orl %d1,%d0 4c56c: 46c0 movew %d0,%sr * This is specific to the RTEMS API */ is_asr_enabled = false; needs_asr_dispatching = false; if ( mask & RTEMS_ASR_MASK ) { 4c56e: 0804 000a btst #10,%d4 4c572: 6740 beqs 4c5b4 is_asr_enabled = _Modes_Is_asr_disabled( mode_set ) ? false : true; if ( is_asr_enabled != asr->is_enabled ) { 4c574: 4281 clrl %d1 4c576: 122a 0008 moveb %a2@(8),%d1 4c57a: 4282 clrl %d2 * Output: * *previous_mode_set - previous mode set * always return RTEMS_SUCCESSFUL; */ rtems_status_code rtems_task_mode( 4c57c: 0803 000a btst #10,%d3 4c580: 57c0 seq %d0 4c582: 4480 negl %d0 is_asr_enabled = false; needs_asr_dispatching = false; if ( mask & RTEMS_ASR_MASK ) { is_asr_enabled = _Modes_Is_asr_disabled( mode_set ) ? false : true; if ( is_asr_enabled != asr->is_enabled ) { 4c584: 1400 moveb %d0,%d2 4c586: b282 cmpl %d2,%d1 4c588: 672a beqs 4c5b4 <== ALWAYS TAKEN asr->is_enabled = is_asr_enabled; 4c58a: 1540 0008 moveb %d0,%a2@(8) <== NOT EXECUTED ) { rtems_signal_set _signals; ISR_Level _level; _ISR_Disable( _level ); 4c58e: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 4c594: 40c1 movew %sr,%d1 <== NOT EXECUTED 4c596: 8081 orl %d1,%d0 <== NOT EXECUTED 4c598: 46c0 movew %d0,%sr <== NOT EXECUTED _signals = information->signals_pending; 4c59a: 202a 0016 movel %a2@(22),%d0 <== NOT EXECUTED information->signals_pending = information->signals_posted; 4c59e: 256a 0012 0016 movel %a2@(18),%a2@(22) <== NOT EXECUTED information->signals_posted = _signals; 4c5a4: 2540 0012 movel %d0,%a2@(18) <== NOT EXECUTED _ISR_Enable( _level ); 4c5a8: 46c1 movew %d1,%sr <== NOT EXECUTED /* * This is specific to the RTEMS API */ is_asr_enabled = false; needs_asr_dispatching = false; 4c5aa: 4aaa 0012 tstl %a2@(18) <== NOT EXECUTED 4c5ae: 56c0 sne %d0 <== NOT EXECUTED 4c5b0: 4480 negl %d0 <== NOT EXECUTED 4c5b2: 6002 bras 4c5b6 <== NOT EXECUTED 4c5b4: 4200 clrb %d0 needs_asr_dispatching = true; } } } if ( _System_state_Is_up( _System_state_Get() ) ) { 4c5b6: 7203 moveq #3,%d1 4c5b8: b2b9 0005 e5e4 cmpl 5e5e4 <_System_state_Current>,%d1 4c5be: 662c bnes 4c5ec <== NEVER TAKEN bool are_signals_pending ) { Thread_Control *executing; executing = _Thread_Executing; 4c5c0: 2079 0005 e902 moveal 5e902 <_Per_CPU_Information+0xc>,%a0 if ( are_signals_pending || 4c5c6: 4a00 tstb %d0 4c5c8: 660e bnes 4c5d8 <== NEVER TAKEN 4c5ca: b1f9 0005 e906 cmpal 5e906 <_Per_CPU_Information+0x10>,%a0 4c5d0: 671a beqs 4c5ec <== ALWAYS TAKEN (!_Thread_Is_heir( executing ) && executing->is_preemptible) ) { 4c5d2: 4a28 0074 tstb %a0@(116) <== NOT EXECUTED 4c5d6: 6714 beqs 4c5ec <== NOT EXECUTED _Thread_Dispatch_necessary = true; 4c5d8: 7001 moveq #1,%d0 <== NOT EXECUTED 4c5da: 13c0 0005 e90e moveb %d0,5e90e <_Per_CPU_Information+0x18> <== NOT EXECUTED if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) ) _Thread_Dispatch(); 4c5e0: 4eb9 0004 765c jsr 4765c <_Thread_Dispatch> <== NOT EXECUTED 4c5e6: 6004 bras 4c5ec <== NOT EXECUTED bool is_asr_enabled = false; bool needs_asr_dispatching = false; rtems_mode old_mode; if ( !previous_mode_set ) return RTEMS_INVALID_ADDRESS; 4c5e8: 7009 moveq #9,%d0 <== NOT EXECUTED 4c5ea: 6002 bras 4c5ee <== NOT EXECUTED if ( _System_state_Is_up( _System_state_Get() ) ) { if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) ) _Thread_Dispatch(); } return RTEMS_SUCCESSFUL; 4c5ec: 4280 clrl %d0 } 4c5ee: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 4c5f4: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046188 : rtems_status_code rtems_task_restart( rtems_id id, uint32_t argument ) { 46188: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED register Thread_Control *the_thread; Objects_Locations location; the_thread = _Thread_Get( id, &location ); 4618c: 486e fffc pea %fp@(-4) <== NOT EXECUTED 46190: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 46194: 4eb9 0004 7f78 jsr 47f78 <_Thread_Get> <== NOT EXECUTED switch ( location ) { 4619a: 508f addql #8,%sp <== NOT EXECUTED 4619c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 461a0: 6628 bnes 461ca <== NOT EXECUTED case OBJECTS_LOCAL: if ( _Thread_Restart( the_thread, NULL, argument ) ) { 461a2: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 461a6: 42a7 clrl %sp@- <== NOT EXECUTED 461a8: 2f00 movel %d0,%sp@- <== NOT EXECUTED 461aa: 4eb9 0004 8700 jsr 48700 <_Thread_Restart> <== NOT EXECUTED 461b0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 461b4: 41f9 0004 7f52 lea 47f52 <_Thread_Enable_dispatch>,%a0 <== NOT EXECUTED 461ba: 4a00 tstb %d0 <== NOT EXECUTED 461bc: 6706 beqs 461c4 <== NOT EXECUTED _Thread_Enable_dispatch(); 461be: 4e90 jsr %a0@ <== NOT EXECUTED return RTEMS_SUCCESSFUL; 461c0: 4280 clrl %d0 <== NOT EXECUTED 461c2: 6008 bras 461cc <== NOT EXECUTED } _Thread_Enable_dispatch(); 461c4: 4e90 jsr %a0@ <== NOT EXECUTED return RTEMS_INCORRECT_STATE; 461c6: 700e moveq #14,%d0 <== NOT EXECUTED 461c8: 6002 bras 461cc <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 461ca: 7004 moveq #4,%d0 <== NOT EXECUTED } 461cc: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00048790 : */ rtems_status_code rtems_task_resume( rtems_id id ) { 48790: 4e56 fffc linkw %fp,#-4 48794: 2f0a movel %a2,%sp@- register Thread_Control *the_thread; Objects_Locations location; the_thread = _Thread_Get( id, &location ); 48796: 486e fffc pea %fp@(-4) 4879a: 2f2e 0008 movel %fp@(8),%sp@- 4879e: 4eb9 0004 a5d0 jsr 4a5d0 <_Thread_Get> switch ( location ) { 487a4: 508f addql #8,%sp 487a6: 4aae fffc tstl %fp@(-4) 487aa: 662a bnes 487d6 <== NEVER TAKEN */ RTEMS_INLINE_ROUTINE bool _States_Is_suspended ( States_Control the_states ) { return (the_states & STATES_SUSPENDED); 487ac: 7202 moveq #2,%d1 487ae: 2040 moveal %d0,%a0 487b0: 45f9 0004 a5aa lea 4a5aa <_Thread_Enable_dispatch>,%a2 487b6: c2a8 0010 andl %a0@(16),%d1 case OBJECTS_LOCAL: if ( _States_Is_suspended( the_thread->current_state ) ) { 487ba: 6714 beqs 487d0 <== NEVER TAKEN _Thread_Resume( the_thread, true ); 487bc: 4878 0001 pea 1 487c0: 2f00 movel %d0,%sp@- 487c2: 4eb9 0004 ad58 jsr 4ad58 <_Thread_Resume> _Thread_Enable_dispatch(); 487c8: 4e92 jsr %a2@ return RTEMS_SUCCESSFUL; 487ca: 508f addql #8,%sp 487cc: 4280 clrl %d0 487ce: 6008 bras 487d8 } _Thread_Enable_dispatch(); 487d0: 4e92 jsr %a2@ return RTEMS_INCORRECT_STATE; 487d2: 700e moveq #14,%d0 487d4: 6002 bras 487d8 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 487d6: 7004 moveq #4,%d0 <== NOT EXECUTED } 487d8: 246e fff8 moveal %fp@(-8),%a2 487dc: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00047230 : rtems_status_code rtems_task_set_note( rtems_id id, uint32_t notepad, uint32_t note ) { 47230: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 47234: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 47238: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4723a: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED 4723e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47240: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED register Thread_Control *the_thread; Objects_Locations location; RTEMS_API_Control *api; if ( !rtems_configuration_get_notepads_enabled() ) 47244: 4a39 0005 f314 tstb 5f314 <== NOT EXECUTED 4724a: 674e beqs 4729a <== 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 ) 4724c: 720f moveq #15,%d1 <== NOT EXECUTED 4724e: b282 cmpl %d2,%d1 <== NOT EXECUTED 47250: 654c bcss 4729e <== NOT EXECUTED /* * Optimize the most likely case to avoid the Thread_Dispatch. */ if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) || 47252: 4a80 tstl %d0 <== NOT EXECUTED 47254: 670c beqs 47262 <== NOT EXECUTED _Objects_Are_ids_equal( id, _Thread_Executing->Object.id ) ) { 47256: 2079 0006 135c moveal 6135c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED /* * Optimize the most likely case to avoid the Thread_Dispatch. */ if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) || 4725c: b0a8 0008 cmpl %a0@(8),%d0 <== NOT EXECUTED 47260: 6610 bnes 47272 <== NOT EXECUTED _Objects_Are_ids_equal( id, _Thread_Executing->Object.id ) ) { api = _Thread_Executing->API_Extensions[ THREAD_API_RTEMS ]; 47262: 2079 0006 135c moveal 6135c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED api->Notepads[ notepad ] = note; 47268: 2068 00fe moveal %a0@(254),%a0 <== NOT EXECUTED 4726c: 2183 2c1e movel %d3,%a0@(0000001e,%d2:l:4) <== NOT EXECUTED 47270: 6024 bras 47296 <== NOT EXECUTED return RTEMS_SUCCESSFUL; } the_thread = _Thread_Get( id, &location ); 47272: 486e fffc pea %fp@(-4) <== NOT EXECUTED 47276: 2f00 movel %d0,%sp@- <== NOT EXECUTED 47278: 4eb9 0004 91f0 jsr 491f0 <_Thread_Get> <== NOT EXECUTED switch ( location ) { 4727e: 508f addql #8,%sp <== NOT EXECUTED 47280: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 47284: 661c bnes 472a2 <== NOT EXECUTED case OBJECTS_LOCAL: api = the_thread->API_Extensions[ THREAD_API_RTEMS ]; api->Notepads[ notepad ] = note; 47286: 2240 moveal %d0,%a1 <== NOT EXECUTED 47288: 2069 00fe moveal %a1@(254),%a0 <== NOT EXECUTED 4728c: 2183 2c1e movel %d3,%a0@(0000001e,%d2:l:4) <== NOT EXECUTED _Thread_Enable_dispatch(); 47290: 4eb9 0004 91ca jsr 491ca <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 47296: 4280 clrl %d0 <== NOT EXECUTED 47298: 600a bras 472a4 <== NOT EXECUTED register Thread_Control *the_thread; Objects_Locations location; RTEMS_API_Control *api; if ( !rtems_configuration_get_notepads_enabled() ) return RTEMS_NOT_CONFIGURED; 4729a: 7016 moveq #22,%d0 <== NOT EXECUTED 4729c: 6006 bras 472a4 <== NOT EXECUTED * NOTE: There is no check for < RTEMS_NOTEPAD_FIRST because that would * be checking an unsigned number for being negative. */ if ( notepad > RTEMS_NOTEPAD_LAST ) return RTEMS_INVALID_NUMBER; 4729e: 700a moveq #10,%d0 <== NOT EXECUTED 472a0: 6002 bras 472a4 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 472a2: 7004 moveq #4,%d0 <== NOT EXECUTED } 472a4: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 472a8: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 472ac: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000492cc : rtems_status_code rtems_task_set_priority( rtems_id id, rtems_task_priority new_priority, rtems_task_priority *old_priority ) { 492cc: 4e56 fffc linkw %fp,#-4 492d0: 2f0a movel %a2,%sp@- 492d2: 246e 0010 moveal %fp@(16),%a2 492d6: 2f02 movel %d2,%sp@- 492d8: 242e 000c movel %fp@(12),%d2 register Thread_Control *the_thread; Objects_Locations location; if ( new_priority != RTEMS_CURRENT_PRIORITY && 492dc: 670c beqs 492ea <== NEVER TAKEN RTEMS_INLINE_ROUTINE bool _RTEMS_tasks_Priority_is_valid ( rtems_task_priority the_priority ) { return ( ( the_priority >= RTEMS_MINIMUM_PRIORITY ) && ( the_priority <= RTEMS_MAXIMUM_PRIORITY ) ); 492de: 4280 clrl %d0 492e0: 1039 0006 04c2 moveb 604c2 ,%d0 492e6: b082 cmpl %d2,%d0 492e8: 654e bcss 49338 <== NEVER TAKEN !_RTEMS_tasks_Priority_is_valid( new_priority ) ) return RTEMS_INVALID_PRIORITY; if ( !old_priority ) 492ea: 4a8a tstl %a2 492ec: 674e beqs 4933c <== NEVER TAKEN return RTEMS_INVALID_ADDRESS; the_thread = _Thread_Get( id, &location ); 492ee: 486e fffc pea %fp@(-4) 492f2: 2f2e 0008 movel %fp@(8),%sp@- 492f6: 4eb9 0004 b258 jsr 4b258 <_Thread_Get> switch ( location ) { 492fc: 508f addql #8,%sp return RTEMS_INVALID_PRIORITY; if ( !old_priority ) return RTEMS_INVALID_ADDRESS; the_thread = _Thread_Get( id, &location ); 492fe: 2040 moveal %d0,%a0 switch ( location ) { 49300: 4aae fffc tstl %fp@(-4) 49304: 663a bnes 49340 <== NEVER TAKEN case OBJECTS_LOCAL: /* XXX need helper to "convert" from core priority */ *old_priority = the_thread->current_priority; 49306: 24a8 0014 movel %a0@(20),%a2@ if ( new_priority != RTEMS_CURRENT_PRIORITY ) { 4930a: 4a82 tstl %d2 4930c: 6720 beqs 4932e <== NEVER TAKEN the_thread->real_priority = new_priority; 4930e: 2142 0018 movel %d2,%a0@(24) if ( the_thread->resource_count == 0 || 49312: 4aa8 001c tstl %a0@(28) 49316: 6706 beqs 4931e <== ALWAYS TAKEN 49318: b4a8 0014 cmpl %a0@(20),%d2 <== NOT EXECUTED 4931c: 6410 bccs 4932e <== NOT EXECUTED the_thread->current_priority > new_priority ) _Thread_Change_priority( the_thread, new_priority, false ); 4931e: 42a7 clrl %sp@- 49320: 2f02 movel %d2,%sp@- 49322: 2f08 movel %a0,%sp@- 49324: 4eb9 0004 ad98 jsr 4ad98 <_Thread_Change_priority> 4932a: 4fef 000c lea %sp@(12),%sp } _Thread_Enable_dispatch(); 4932e: 4eb9 0004 b232 jsr 4b232 <_Thread_Enable_dispatch> return RTEMS_SUCCESSFUL; 49334: 4280 clrl %d0 49336: 600a bras 49342 register Thread_Control *the_thread; Objects_Locations location; if ( new_priority != RTEMS_CURRENT_PRIORITY && !_RTEMS_tasks_Priority_is_valid( new_priority ) ) return RTEMS_INVALID_PRIORITY; 49338: 7013 moveq #19,%d0 <== NOT EXECUTED 4933a: 6006 bras 49342 <== NOT EXECUTED if ( !old_priority ) return RTEMS_INVALID_ADDRESS; 4933c: 7009 moveq #9,%d0 <== NOT EXECUTED 4933e: 6002 bras 49342 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 49340: 7004 moveq #4,%d0 <== NOT EXECUTED } 49342: 242e fff4 movel %fp@(-12),%d2 49346: 246e fff8 moveal %fp@(-8),%a2 4934a: 4e5e unlk %fp ... =============================================================================== 00045a28 : rtems_status_code rtems_task_start( rtems_id id, rtems_task_entry entry_point, rtems_task_argument argument ) { 45a28: 4e56 fffc linkw %fp,#-4 45a2c: 2f02 movel %d2,%sp@- 45a2e: 242e 000c movel %fp@(12),%d2 register Thread_Control *the_thread; Objects_Locations location; if ( entry_point == NULL ) 45a32: 6742 beqs 45a76 return RTEMS_INVALID_ADDRESS; the_thread = _Thread_Get( id, &location ); 45a34: 486e fffc pea %fp@(-4) 45a38: 2f2e 0008 movel %fp@(8),%sp@- 45a3c: 4eb9 0004 77c0 jsr 477c0 <_Thread_Get> switch ( location ) { 45a42: 508f addql #8,%sp 45a44: 4aae fffc tstl %fp@(-4) 45a48: 6630 bnes 45a7a <== NEVER TAKEN case OBJECTS_LOCAL: if ( _Thread_Start( 45a4a: 2f2e 0010 movel %fp@(16),%sp@- 45a4e: 42a7 clrl %sp@- 45a50: 2f02 movel %d2,%sp@- 45a52: 42a7 clrl %sp@- 45a54: 2f00 movel %d0,%sp@- 45a56: 4eb9 0004 8110 jsr 48110 <_Thread_Start> 45a5c: 4fef 0014 lea %sp@(20),%sp 45a60: 41f9 0004 779a lea 4779a <_Thread_Enable_dispatch>,%a0 45a66: 4a00 tstb %d0 45a68: 6706 beqs 45a70 <== NEVER TAKEN the_thread, THREAD_START_NUMERIC, entry_point, NULL, argument ) ) { _Thread_Enable_dispatch(); 45a6a: 4e90 jsr %a0@ return RTEMS_SUCCESSFUL; 45a6c: 4280 clrl %d0 45a6e: 600c bras 45a7c } _Thread_Enable_dispatch(); 45a70: 4e90 jsr %a0@ <== NOT EXECUTED return RTEMS_INCORRECT_STATE; 45a72: 700e moveq #14,%d0 <== NOT EXECUTED 45a74: 6006 bras 45a7c <== NOT EXECUTED { register Thread_Control *the_thread; Objects_Locations location; if ( entry_point == NULL ) return RTEMS_INVALID_ADDRESS; 45a76: 7009 moveq #9,%d0 45a78: 6002 bras 45a7c case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 45a7a: 7004 moveq #4,%d0 <== NOT EXECUTED } 45a7c: 242e fff8 movel %fp@(-8),%d2 45a80: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045a84 : */ rtems_status_code rtems_task_suspend( rtems_id id ) { 45a84: 4e56 fffc linkw %fp,#-4 45a88: 2f0a movel %a2,%sp@- register Thread_Control *the_thread; Objects_Locations location; the_thread = _Thread_Get( id, &location ); 45a8a: 486e fffc pea %fp@(-4) 45a8e: 2f2e 0008 movel %fp@(8),%sp@- 45a92: 4eb9 0004 77c0 jsr 477c0 <_Thread_Get> switch ( location ) { 45a98: 508f addql #8,%sp 45a9a: 4aae fffc tstl %fp@(-4) 45a9e: 6626 bnes 45ac6 <== NEVER TAKEN */ RTEMS_INLINE_ROUTINE bool _States_Is_suspended ( States_Control the_states ) { return (the_states & STATES_SUSPENDED); 45aa0: 7202 moveq #2,%d1 45aa2: 2040 moveal %d0,%a0 45aa4: 45f9 0004 779a lea 4779a <_Thread_Enable_dispatch>,%a2 45aaa: c2a8 0010 andl %a0@(16),%d1 case OBJECTS_LOCAL: if ( !_States_Is_suspended( the_thread->current_state ) ) { 45aae: 6610 bnes 45ac0 <== NEVER TAKEN _Thread_Suspend( the_thread ); 45ab0: 2f00 movel %d0,%sp@- 45ab2: 4eb9 0004 8164 jsr 48164 <_Thread_Suspend> _Thread_Enable_dispatch(); 45ab8: 4e92 jsr %a2@ return RTEMS_SUCCESSFUL; 45aba: 588f addql #4,%sp 45abc: 4280 clrl %d0 45abe: 6008 bras 45ac8 } _Thread_Enable_dispatch(); 45ac0: 4e92 jsr %a2@ <== NOT EXECUTED return RTEMS_ALREADY_SUSPENDED; 45ac2: 700f moveq #15,%d0 <== NOT EXECUTED 45ac4: 6002 bras 45ac8 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 45ac6: 7004 moveq #4,%d0 <== NOT EXECUTED } 45ac8: 246e fff8 moveal %fp@(-8),%a2 45acc: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00046568 : rtems_status_code rtems_task_variable_add( rtems_id tid, void **ptr, void (*dtor)(void *) ) { 46568: 4e56 fff0 linkw %fp,#-16 4656c: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ 46570: 246e 000c moveal %fp@(12),%a2 46574: 242e 0010 movel %fp@(16),%d2 Thread_Control *the_thread; Objects_Locations location; rtems_task_variable_t *tvp, *new; if ( !ptr ) 46578: 4a8a tstl %a2 4657a: 676e beqs 465ea return RTEMS_INVALID_ADDRESS; the_thread = _Thread_Get (tid, &location); 4657c: 486e fffc pea %fp@(-4) <== NOT EXECUTED 46580: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 46584: 4eb9 0004 8398 jsr 48398 <_Thread_Get> <== NOT EXECUTED switch (location) { 4658a: 508f addql #8,%sp <== NOT EXECUTED rtems_task_variable_t *tvp, *new; if ( !ptr ) return RTEMS_INVALID_ADDRESS; the_thread = _Thread_Get (tid, &location); 4658c: 2640 moveal %d0,%a3 <== NOT EXECUTED switch (location) { 4658e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 46592: 665a bnes 465ee <== NOT EXECUTED case OBJECTS_LOCAL: /* * Figure out if the variable is already in this task's list. */ tvp = the_thread->task_variables; 46594: 206b 010a moveal %a3@(266),%a0 <== NOT EXECUTED while (tvp) { 46598: 6014 bras 465ae <== NOT EXECUTED if (tvp->ptr == ptr) { 4659a: b5e8 0004 cmpal %a0@(4),%a2 <== NOT EXECUTED 4659e: 660c bnes 465ac <== NOT EXECUTED tvp->dtor = dtor; 465a0: 2142 0010 movel %d2,%a0@(16) <== NOT EXECUTED _Thread_Enable_dispatch(); 465a4: 4eb9 0004 8372 jsr 48372 <_Thread_Enable_dispatch> <== NOT EXECUTED 465aa: 603a bras 465e6 <== NOT EXECUTED return RTEMS_SUCCESSFUL; } tvp = (rtems_task_variable_t *)tvp->next; 465ac: 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) { 465ae: 4a88 tstl %a0 <== NOT EXECUTED 465b0: 66e8 bnes 4659a <== NOT EXECUTED /* * Now allocate memory for this task variable. */ new = (rtems_task_variable_t *) _Workspace_Allocate(sizeof(rtems_task_variable_t)); 465b2: 4878 0014 pea 14 <== NOT EXECUTED 465b6: 4eb9 0004 936c jsr 4936c <_Workspace_Allocate> <== NOT EXECUTED if (new == NULL) { 465bc: 588f addql #4,%sp <== NOT EXECUTED 465be: 43f9 0004 8372 lea 48372 <_Thread_Enable_dispatch>,%a1 <== NOT EXECUTED /* * Now allocate memory for this task variable. */ new = (rtems_task_variable_t *) _Workspace_Allocate(sizeof(rtems_task_variable_t)); 465c4: 2040 moveal %d0,%a0 <== NOT EXECUTED if (new == NULL) { 465c6: 4a80 tstl %d0 <== NOT EXECUTED 465c8: 6606 bnes 465d0 <== NOT EXECUTED _Thread_Enable_dispatch(); 465ca: 4e91 jsr %a1@ <== NOT EXECUTED return RTEMS_NO_MEMORY; 465cc: 701a moveq #26,%d0 <== NOT EXECUTED 465ce: 6020 bras 465f0 <== NOT EXECUTED } new->gval = *ptr; 465d0: 2152 0008 movel %a2@,%a0@(8) <== NOT EXECUTED new->ptr = ptr; new->dtor = dtor; new->next = (struct rtems_task_variable_tt *)the_thread->task_variables; 465d4: 20ab 010a movel %a3@(266),%a0@ <== NOT EXECUTED if (new == NULL) { _Thread_Enable_dispatch(); return RTEMS_NO_MEMORY; } new->gval = *ptr; new->ptr = ptr; 465d8: 214a 0004 movel %a2,%a0@(4) <== NOT EXECUTED new->dtor = dtor; 465dc: 2142 0010 movel %d2,%a0@(16) <== NOT EXECUTED new->next = (struct rtems_task_variable_tt *)the_thread->task_variables; the_thread->task_variables = new; 465e0: 2740 010a movel %d0,%a3@(266) <== NOT EXECUTED _Thread_Enable_dispatch(); 465e4: 4e91 jsr %a1@ <== NOT EXECUTED return RTEMS_SUCCESSFUL; 465e6: 4280 clrl %d0 <== NOT EXECUTED 465e8: 6006 bras 465f0 <== NOT EXECUTED Thread_Control *the_thread; Objects_Locations location; rtems_task_variable_t *tvp, *new; if ( !ptr ) return RTEMS_INVALID_ADDRESS; 465ea: 7009 moveq #9,%d0 465ec: 6002 bras 465f0 #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 465ee: 7004 moveq #4,%d0 <== NOT EXECUTED } 465f0: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 465f6: 4e5e unlk %fp ... =============================================================================== 000465fc : rtems_status_code rtems_task_variable_delete( rtems_id tid, void **ptr ) { 465fc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 46600: 2f02 movel %d2,%sp@- <== NOT EXECUTED 46602: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED Thread_Control *the_thread; Objects_Locations location; rtems_task_variable_t *tvp, *prev; if ( !ptr ) 46606: 6758 beqs 46660 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; prev = NULL; the_thread = _Thread_Get (tid, &location); 46608: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4660c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 46610: 4eb9 0004 8398 jsr 48398 <_Thread_Get> <== NOT EXECUTED switch (location) { 46616: 508f addql #8,%sp <== NOT EXECUTED 46618: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4661c: 6646 bnes 46664 <== NOT EXECUTED case OBJECTS_LOCAL: tvp = the_thread->task_variables; 4661e: 2240 moveal %d0,%a1 <== NOT EXECUTED 46620: 2069 010a moveal %a1@(266),%a0 <== NOT EXECUTED rtems_task_variable_t *tvp, *prev; if ( !ptr ) return RTEMS_INVALID_ADDRESS; prev = NULL; 46624: 93c9 subal %a1,%a1 <== NOT EXECUTED the_thread = _Thread_Get (tid, &location); switch (location) { case OBJECTS_LOCAL: tvp = the_thread->task_variables; while (tvp) { 46626: 602e bras 46656 <== NOT EXECUTED if (tvp->ptr == ptr) { 46628: b4a8 0004 cmpl %a0@(4),%d2 <== NOT EXECUTED 4662c: 6624 bnes 46652 <== NOT EXECUTED if (prev) 4662e: 4a89 tstl %a1 <== NOT EXECUTED 46630: 6704 beqs 46636 <== NOT EXECUTED prev->next = tvp->next; 46632: 2290 movel %a0@,%a1@ <== NOT EXECUTED 46634: 6006 bras 4663c <== NOT EXECUTED else the_thread->task_variables = (rtems_task_variable_t *)tvp->next; 46636: 2240 moveal %d0,%a1 <== NOT EXECUTED 46638: 2350 010a movel %a0@,%a1@(266) <== NOT EXECUTED _RTEMS_Tasks_Invoke_task_variable_dtor( the_thread, tvp ); 4663c: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4663e: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46640: 4eb9 0004 66d8 jsr 466d8 <_RTEMS_Tasks_Invoke_task_variable_dtor><== NOT EXECUTED _Thread_Enable_dispatch(); 46646: 4eb9 0004 8372 jsr 48372 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 4664c: 508f addql #8,%sp <== NOT EXECUTED 4664e: 4280 clrl %d0 <== NOT EXECUTED 46650: 6014 bras 46666 <== NOT EXECUTED } prev = tvp; tvp = (rtems_task_variable_t *)tvp->next; 46652: 2248 moveal %a0,%a1 <== NOT EXECUTED 46654: 2050 moveal %a0@,%a0 <== NOT EXECUTED the_thread = _Thread_Get (tid, &location); switch (location) { case OBJECTS_LOCAL: tvp = the_thread->task_variables; while (tvp) { 46656: 4a88 tstl %a0 <== NOT EXECUTED 46658: 66ce bnes 46628 <== NOT EXECUTED return RTEMS_SUCCESSFUL; } prev = tvp; tvp = (rtems_task_variable_t *)tvp->next; } _Thread_Enable_dispatch(); 4665a: 4eb9 0004 8372 jsr 48372 <_Thread_Enable_dispatch> <== NOT EXECUTED Thread_Control *the_thread; Objects_Locations location; rtems_task_variable_t *tvp, *prev; if ( !ptr ) return RTEMS_INVALID_ADDRESS; 46660: 7009 moveq #9,%d0 <== NOT EXECUTED 46662: 6002 bras 46666 <== NOT EXECUTED case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 46664: 7004 moveq #4,%d0 <== NOT EXECUTED } 46666: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4666a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046670 : rtems_status_code rtems_task_variable_get( rtems_id tid, void **ptr, void **result ) { 46670: 4e56 fffc linkw %fp,#-4 46674: 2f0a movel %a2,%sp@- 46676: 246e 0010 moveal %fp@(16),%a2 4667a: 2f02 movel %d2,%sp@- 4667c: 242e 000c movel %fp@(12),%d2 Thread_Control *the_thread; Objects_Locations location; rtems_task_variable_t *tvp; if ( !ptr ) 46680: 6742 beqs 466c4 <== ALWAYS TAKEN return RTEMS_INVALID_ADDRESS; if ( !result ) 46682: 4a8a tstl %a2 <== NOT EXECUTED 46684: 673e beqs 466c4 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_thread = _Thread_Get (tid, &location); 46686: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4668a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4668e: 4eb9 0004 8398 jsr 48398 <_Thread_Get> <== NOT EXECUTED switch (location) { 46694: 508f addql #8,%sp <== NOT EXECUTED 46696: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4669a: 662c bnes 466c8 <== NOT EXECUTED case OBJECTS_LOCAL: /* * Figure out if the variable is in this task's list. */ tvp = the_thread->task_variables; 4669c: 2240 moveal %d0,%a1 <== NOT EXECUTED 4669e: 2069 010a moveal %a1@(266),%a0 <== NOT EXECUTED while (tvp) { 466a2: 6016 bras 466ba <== NOT EXECUTED if (tvp->ptr == ptr) { 466a4: b4a8 0004 cmpl %a0@(4),%d2 <== NOT EXECUTED 466a8: 660e bnes 466b8 <== NOT EXECUTED /* * Should this return the current (i.e not the * saved) value if `tid' is the current task? */ *result = tvp->tval; 466aa: 24a8 000c movel %a0@(12),%a2@ <== NOT EXECUTED _Thread_Enable_dispatch(); 466ae: 4eb9 0004 8372 jsr 48372 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 466b4: 4280 clrl %d0 <== NOT EXECUTED 466b6: 6012 bras 466ca <== NOT EXECUTED } tvp = (rtems_task_variable_t *)tvp->next; 466b8: 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) { 466ba: 4a88 tstl %a0 <== NOT EXECUTED 466bc: 66e6 bnes 466a4 <== NOT EXECUTED _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } tvp = (rtems_task_variable_t *)tvp->next; } _Thread_Enable_dispatch(); 466be: 4eb9 0004 8372 jsr 48372 <_Thread_Enable_dispatch> <== NOT EXECUTED if ( !ptr ) return RTEMS_INVALID_ADDRESS; if ( !result ) return RTEMS_INVALID_ADDRESS; 466c4: 7009 moveq #9,%d0 466c6: 6002 bras 466ca #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 466c8: 7004 moveq #4,%d0 <== NOT EXECUTED } 466ca: 242e fff4 movel %fp@(-12),%d2 466ce: 246e fff8 moveal %fp@(-8),%a2 466d2: 4e5e unlk %fp ... =============================================================================== 00045ad0 : */ rtems_status_code rtems_task_wake_after( rtems_interval ticks ) { 45ad0: 4e56 0000 linkw %fp,#0 45ad4: 2039 0005 e478 movel 5e478 <_Thread_Dispatch_disable_level>,%d0 45ada: 5280 addql #1,%d0 45adc: 2f02 movel %d2,%sp@- 45ade: 242e 0008 movel %fp@(8),%d2 45ae2: 23c0 0005 e478 movel %d0,5e478 <_Thread_Dispatch_disable_level> _Thread_Disable_dispatch(); if ( ticks == 0 ) { 45ae8: 4a82 tstl %d2 45aea: 6612 bnes 45afe <== ALWAYS TAKEN * always operates on the scheduler that 'owns' the currently executing * thread. */ RTEMS_INLINE_ROUTINE void _Scheduler_Yield( void ) { _Scheduler.Operations.yield( &_Scheduler ); 45aec: 4879 0005 e4fe pea 5e4fe <_Scheduler> <== NOT EXECUTED 45af2: 2079 0005 e506 moveal 5e506 <_Scheduler+0x8>,%a0 <== NOT EXECUTED 45af8: 4e90 jsr %a0@ <== NOT EXECUTED 45afa: 588f addql #4,%sp <== NOT EXECUTED 45afc: 6048 bras 45b46 <== NOT EXECUTED _Scheduler_Yield(); } else { _Thread_Set_state( _Thread_Executing, STATES_DELAYING ); 45afe: 4878 0008 pea 8 45b02: 2f39 0005 e902 movel 5e902 <_Per_CPU_Information+0xc>,%sp@- 45b08: 4eb9 0004 7f70 jsr 47f70 <_Thread_Set_state> _Watchdog_Initialize( &_Thread_Executing->Timer, _Thread_Delay_ended, _Thread_Executing->Object.id, 45b0e: 2079 0005 e902 moveal 5e902 <_Per_CPU_Information+0xc>,%a0 Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 45b14: 223c 0004 7620 movel #292384,%d1 _Thread_Disable_dispatch(); if ( ticks == 0 ) { _Scheduler_Yield(); } else { _Thread_Set_state( _Thread_Executing, STATES_DELAYING ); _Watchdog_Initialize( 45b1a: 2028 0008 movel %a0@(8),%d0 Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 45b1e: 42a8 0050 clrl %a0@(80) the_watchdog->routine = routine; 45b22: 2141 0064 movel %d1,%a0@(100) the_watchdog->id = id; 45b26: 2140 0068 movel %d0,%a0@(104) the_watchdog->user_data = user_data; 45b2a: 42a8 006c clrl %a0@(108) Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 45b2e: 2142 0054 movel %d2,%a0@(84) _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 45b32: 4868 0048 pea %a0@(72) 45b36: 4879 0005 e558 pea 5e558 <_Watchdog_Ticks_chain> 45b3c: 4eb9 0004 8514 jsr 48514 <_Watchdog_Insert> 45b42: 4fef 0010 lea %sp@(16),%sp _Thread_Executing->Object.id, NULL ); _Watchdog_Insert_ticks( &_Thread_Executing->Timer, ticks ); } _Thread_Enable_dispatch(); 45b46: 4eb9 0004 779a jsr 4779a <_Thread_Enable_dispatch> return RTEMS_SUCCESSFUL; } 45b4c: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 45b50: 4280 clrl %d0 <== NOT EXECUTED 45b52: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000466d0 : */ rtems_status_code rtems_task_wake_when( rtems_time_of_day *time_buffer ) { 466d0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 466d4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 466d6: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED Watchdog_Interval seconds; if ( !_TOD_Is_set ) 466da: 4a39 0005 fa40 tstb 5fa40 <_TOD_Is_set> <== NOT EXECUTED 466e0: 6700 0096 beqw 46778 <== NOT EXECUTED return RTEMS_NOT_DEFINED; if ( !time_buffer ) 466e4: 4a8a tstl %a2 <== NOT EXECUTED 466e6: 6700 0094 beqw 4677c <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; time_buffer->ticks = 0; 466ea: 42aa 0018 clrl %a2@(24) <== NOT EXECUTED if ( !_TOD_Validate( time_buffer ) ) 466ee: 2f0a movel %a2,%sp@- <== NOT EXECUTED 466f0: 4eb9 0004 5b80 jsr 45b80 <_TOD_Validate> <== NOT EXECUTED 466f6: 588f addql #4,%sp <== NOT EXECUTED 466f8: 4a00 tstb %d0 <== NOT EXECUTED 466fa: 6700 0084 beqw 46780 <== NOT EXECUTED return RTEMS_INVALID_CLOCK; seconds = _TOD_To_seconds( time_buffer ); 466fe: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46700: 4eb9 0004 5ae4 jsr 45ae4 <_TOD_To_seconds> <== NOT EXECUTED if ( seconds <= _TOD_Seconds_since_epoch() ) 46706: 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 ); 46708: 2440 moveal %d0,%a2 <== NOT EXECUTED if ( seconds <= _TOD_Seconds_since_epoch() ) 4670a: b0b9 0005 fada cmpl 5fada <_TOD_Now>,%d0 <== NOT EXECUTED 46710: 636e blss 46780 <== NOT EXECUTED 46712: 2039 0005 fa30 movel 5fa30 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 46718: 5280 addql #1,%d0 <== NOT EXECUTED 4671a: 23c0 0005 fa30 movel %d0,5fa30 <_Thread_Dispatch_disable_level><== NOT EXECUTED return RTEMS_INVALID_CLOCK; _Thread_Disable_dispatch(); _Thread_Set_state( _Thread_Executing, STATES_WAITING_FOR_TIME ); 46720: 4878 0010 pea 10 <== NOT EXECUTED 46724: 2f39 0005 feba movel 5feba <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED 4672a: 4eb9 0004 8b98 jsr 48b98 <_Thread_Set_state> <== NOT EXECUTED _Watchdog_Initialize( &_Thread_Executing->Timer, _Thread_Delay_ended, _Thread_Executing->Object.id, 46730: 2079 0005 feba moveal 5feba <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED NULL ); _Watchdog_Insert_seconds( 46736: 95f9 0005 fada subal 5fada <_TOD_Now>,%a2 <== NOT EXECUTED Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 4673c: 223c 0004 8248 movel #295496,%d1 <== NOT EXECUTED if ( seconds <= _TOD_Seconds_since_epoch() ) return RTEMS_INVALID_CLOCK; _Thread_Disable_dispatch(); _Thread_Set_state( _Thread_Executing, STATES_WAITING_FOR_TIME ); _Watchdog_Initialize( 46742: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 46746: 42a8 0050 clrl %a0@(80) <== NOT EXECUTED the_watchdog->routine = routine; the_watchdog->id = id; 4674a: 2140 0068 movel %d0,%a0@(104) <== NOT EXECUTED Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 4674e: 2141 0064 movel %d1,%a0@(100) <== NOT EXECUTED the_watchdog->id = id; the_watchdog->user_data = user_data; 46752: 42a8 006c clrl %a0@(108) <== NOT EXECUTED &_Thread_Executing->Timer, _Thread_Delay_ended, _Thread_Executing->Object.id, NULL ); _Watchdog_Insert_seconds( 46756: 214a 0054 movel %a2,%a0@(84) <== NOT EXECUTED ) { the_watchdog->initial = units; _Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog ); 4675a: 4868 0048 pea %a0@(72) <== NOT EXECUTED 4675e: 4879 0005 fb04 pea 5fb04 <_Watchdog_Seconds_chain> <== NOT EXECUTED 46764: 4eb9 0004 91bc jsr 491bc <_Watchdog_Insert> <== NOT EXECUTED &_Thread_Executing->Timer, seconds - _TOD_Seconds_since_epoch() ); _Thread_Enable_dispatch(); 4676a: 4eb9 0004 83c2 jsr 483c2 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 46770: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 46774: 4280 clrl %d0 <== NOT EXECUTED 46776: 600a bras 46782 <== NOT EXECUTED ) { Watchdog_Interval seconds; if ( !_TOD_Is_set ) return RTEMS_NOT_DEFINED; 46778: 700b moveq #11,%d0 <== NOT EXECUTED 4677a: 6006 bras 46782 <== NOT EXECUTED if ( !time_buffer ) return RTEMS_INVALID_ADDRESS; 4677c: 7009 moveq #9,%d0 <== NOT EXECUTED 4677e: 6002 bras 46782 <== NOT EXECUTED return RTEMS_INVALID_CLOCK; seconds = _TOD_To_seconds( time_buffer ); if ( seconds <= _TOD_Seconds_since_epoch() ) return RTEMS_INVALID_CLOCK; 46780: 7014 moveq #20,%d0 <== NOT EXECUTED &_Thread_Executing->Timer, seconds - _TOD_Seconds_since_epoch() ); _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 46782: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 46786: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0005196c : */ rtems_status_code rtems_timer_cancel( rtems_id id ) { 5196c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (Timer_Control *) _Objects_Get( &_Timer_Information, id, location ); 51970: 486e fffc pea %fp@(-4) <== NOT EXECUTED 51974: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 51978: 4879 0007 77ae pea 777ae <_Timer_Information> <== NOT EXECUTED 5197e: 4eb9 0005 43dc jsr 543dc <_Objects_Get> <== NOT EXECUTED Timer_Control *the_timer; Objects_Locations location; the_timer = _Timer_Get( id, &location ); switch ( location ) { 51984: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 51988: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 5198c: 6620 bnes 519ae <== NOT EXECUTED case OBJECTS_LOCAL: if ( !_Timer_Is_dormant_class( the_timer->the_class ) ) 5198e: 7204 moveq #4,%d1 <== NOT EXECUTED 51990: 2040 moveal %d0,%a0 <== NOT EXECUTED 51992: b2a8 0038 cmpl %a0@(56),%d1 <== NOT EXECUTED 51996: 670c beqs 519a4 <== NOT EXECUTED (void) _Watchdog_Remove( &the_timer->Ticker ); 51998: 4868 0010 pea %a0@(16) <== NOT EXECUTED 5199c: 4eb9 0005 5fd4 jsr 55fd4 <_Watchdog_Remove> <== NOT EXECUTED 519a2: 588f addql #4,%sp <== NOT EXECUTED _Thread_Enable_dispatch(); 519a4: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 519aa: 4280 clrl %d0 <== NOT EXECUTED 519ac: 6002 bras 519b0 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 519ae: 7004 moveq #4,%d0 <== NOT EXECUTED } 519b0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045cac : rtems_status_code rtems_timer_create( rtems_name name, rtems_id *id ) { 45cac: 4e56 fff4 linkw %fp,#-12 45cb0: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ 45cb4: 242e 0008 movel %fp@(8),%d2 45cb8: 246e 000c moveal %fp@(12),%a2 Timer_Control *the_timer; if ( !rtems_is_name_valid( name ) ) 45cbc: 6766 beqs 45d24 <== NEVER TAKEN return RTEMS_INVALID_NAME; if ( !id ) 45cbe: 4a8a tstl %a2 45cc0: 6766 beqs 45d28 <== NEVER TAKEN 45cc2: 2039 0005 e6fa movel 5e6fa <_Thread_Dispatch_disable_level>,%d0 45cc8: 5280 addql #1,%d0 45cca: 23c0 0005 e6fa movel %d0,5e6fa <_Thread_Dispatch_disable_level> * This function allocates a timer control block from * the inactive chain of free timer control blocks. */ RTEMS_INLINE_ROUTINE Timer_Control *_Timer_Allocate( void ) { return (Timer_Control *) _Objects_Allocate( &_Timer_Information ); 45cd0: 4879 0005 ef5c pea 5ef5c <_Timer_Information> 45cd6: 4eb9 0004 6af8 jsr 46af8 <_Objects_Allocate> _Thread_Disable_dispatch(); /* to prevent deletion */ the_timer = _Timer_Allocate(); if ( !the_timer ) { 45cdc: 588f addql #4,%sp 45cde: 43f9 0004 79b6 lea 479b6 <_Thread_Enable_dispatch>,%a1 45ce4: 2040 moveal %d0,%a0 45ce6: 4a80 tstl %d0 45ce8: 6606 bnes 45cf0 <== ALWAYS TAKEN _Thread_Enable_dispatch(); 45cea: 4e91 jsr %a1@ <== NOT EXECUTED return RTEMS_TOO_MANY; 45cec: 7005 moveq #5,%d0 <== NOT EXECUTED 45cee: 603a bras 45d2a <== NOT EXECUTED } the_timer->the_class = TIMER_DORMANT; 45cf0: 7004 moveq #4,%d0 Objects_Information *information, Objects_Control *the_object, Objects_Name name ) { _Objects_Set_local_object( 45cf2: 4281 clrl %d1 45cf4: 2140 0038 movel %d0,%a0@(56) information, _Objects_Get_index( the_object->id ), 45cf8: 2028 0008 movel %a0@(8),%d0 #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 45cfc: 2679 0005 ef74 moveal 5ef74 <_Timer_Information+0x18>,%a3 Objects_Information *information, Objects_Control *the_object, Objects_Name name ) { _Objects_Set_local_object( 45d02: 3200 movew %d0,%d1 Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 45d04: 42a8 0018 clrl %a0@(24) the_watchdog->routine = routine; 45d08: 42a8 002c clrl %a0@(44) the_watchdog->id = id; 45d0c: 42a8 0030 clrl %a0@(48) the_watchdog->user_data = user_data; 45d10: 42a8 0034 clrl %a0@(52) #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 45d14: 2788 1c00 movel %a0,%a3@(00000000,%d1:l:4) information, _Objects_Get_index( the_object->id ), the_object ); the_object->name = name; 45d18: 2142 000c movel %d2,%a0@(12) &_Timer_Information, &the_timer->Object, (Objects_Name) name ); *id = the_timer->Object.id; 45d1c: 2480 movel %d0,%a2@ _Thread_Enable_dispatch(); 45d1e: 4e91 jsr %a1@ return RTEMS_SUCCESSFUL; 45d20: 4280 clrl %d0 45d22: 6006 bras 45d2a ) { Timer_Control *the_timer; if ( !rtems_is_name_valid( name ) ) return RTEMS_INVALID_NAME; 45d24: 7003 moveq #3,%d0 45d26: 6002 bras 45d2a <== NOT EXECUTED if ( !id ) return RTEMS_INVALID_ADDRESS; 45d28: 7009 moveq #9,%d0 <== NOT EXECUTED ); *id = the_timer->Object.id; _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; } 45d2a: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 45d30: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00051a3c : */ rtems_status_code rtems_timer_delete( rtems_id id ) { 51a3c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 51a40: 2f0a movel %a2,%sp@- <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (Timer_Control *) _Objects_Get( &_Timer_Information, id, location ); 51a42: 486e fffc pea %fp@(-4) <== NOT EXECUTED 51a46: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 51a4a: 4879 0007 77ae pea 777ae <_Timer_Information> <== NOT EXECUTED 51a50: 4eb9 0005 43dc jsr 543dc <_Objects_Get> <== NOT EXECUTED Timer_Control *the_timer; Objects_Locations location; the_timer = _Timer_Get( id, &location ); switch ( location ) { 51a56: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 51a5a: 2440 moveal %d0,%a2 <== NOT EXECUTED 51a5c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 51a60: 6634 bnes 51a96 <== NOT EXECUTED case OBJECTS_LOCAL: _Objects_Close( &_Timer_Information, &the_timer->Object ); 51a62: 2f00 movel %d0,%sp@- <== NOT EXECUTED 51a64: 4879 0007 77ae pea 777ae <_Timer_Information> <== NOT EXECUTED 51a6a: 4eb9 0005 3fc8 jsr 53fc8 <_Objects_Close> <== NOT EXECUTED (void) _Watchdog_Remove( &the_timer->Ticker ); 51a70: 486a 0010 pea %a2@(16) <== NOT EXECUTED 51a74: 4eb9 0005 5fd4 jsr 55fd4 <_Watchdog_Remove> <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void _Timer_Free ( Timer_Control *the_timer ) { _Objects_Free( &_Timer_Information, &the_timer->Object ); 51a7a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 51a7c: 4879 0007 77ae pea 777ae <_Timer_Information> <== NOT EXECUTED 51a82: 4eb9 0005 4240 jsr 54240 <_Objects_Free> <== NOT EXECUTED _Timer_Free( the_timer ); _Thread_Enable_dispatch(); 51a88: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 51a8e: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 51a92: 4280 clrl %d0 <== NOT EXECUTED 51a94: 6002 bras 51a98 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 51a96: 7004 moveq #4,%d0 <== NOT EXECUTED } 51a98: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 51a9c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045d34 : rtems_id id, rtems_interval ticks, rtems_timer_service_routine_entry routine, void *user_data ) { 45d34: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 45d38: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED 45d3c: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED 45d40: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 45d44: 2a2e 0010 movel %fp@(16),%d5 <== NOT EXECUTED Timer_Control *the_timer; Objects_Locations location; ISR_Level level; if ( ticks == 0 ) 45d48: 4a83 tstl %d3 <== NOT EXECUTED 45d4a: 6700 0088 beqw 45dd4 <== NOT EXECUTED return RTEMS_INVALID_NUMBER; if ( !routine ) 45d4e: 4a85 tstl %d5 <== NOT EXECUTED 45d50: 6700 0086 beqw 45dd8 <== NOT EXECUTED Objects_Id id, Objects_Locations *location ) { return (Timer_Control *) _Objects_Get( &_Timer_Information, id, location ); 45d54: 486e fffc pea %fp@(-4) <== NOT EXECUTED 45d58: 2f04 movel %d4,%sp@- <== NOT EXECUTED 45d5a: 4879 0005 ef5c pea 5ef5c <_Timer_Information> <== NOT EXECUTED 45d60: 4eb9 0004 6f50 jsr 46f50 <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_timer = _Timer_Get( id, &location ); switch ( location ) { 45d66: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 45d6a: 2440 moveal %d0,%a2 <== NOT EXECUTED 45d6c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 45d70: 666a bnes 45ddc <== NOT EXECUTED case OBJECTS_LOCAL: (void) _Watchdog_Remove( &the_timer->Ticker ); 45d72: 2400 movel %d0,%d2 <== NOT EXECUTED 45d74: 0682 0000 0010 addil #16,%d2 <== NOT EXECUTED 45d7a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45d7c: 4eb9 0004 8858 jsr 48858 <_Watchdog_Remove> <== NOT EXECUTED _ISR_Disable( level ); 45d82: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 45d88: 40c1 movew %sr,%d1 <== NOT EXECUTED 45d8a: 8081 orl %d1,%d0 <== NOT EXECUTED 45d8c: 46c0 movew %d0,%sr <== NOT EXECUTED 45d8e: 47f9 0004 79b6 lea 479b6 <_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 ) { 45d94: 588f addql #4,%sp <== NOT EXECUTED 45d96: 4aaa 0018 tstl %a2@(24) <== NOT EXECUTED 45d9a: 6706 beqs 45da2 <== NOT EXECUTED _ISR_Enable( level ); 45d9c: 46c1 movew %d1,%sr <== NOT EXECUTED _Thread_Enable_dispatch(); 45d9e: 4e93 jsr %a3@ <== NOT EXECUTED 45da0: 602e bras 45dd0 <== 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; 45da2: 42aa 0038 clrl %a2@(56) <== NOT EXECUTED 45da6: 256e 0014 0034 movel %fp@(20),%a2@(52) <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 45dac: 42aa 0018 clrl %a2@(24) <== NOT EXECUTED the_watchdog->routine = routine; 45db0: 2545 002c movel %d5,%a2@(44) <== NOT EXECUTED the_watchdog->id = id; 45db4: 2544 0030 movel %d4,%a2@(48) <== NOT EXECUTED _Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data ); _ISR_Enable( level ); 45db8: 46c1 movew %d1,%sr <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 45dba: 2543 001c movel %d3,%a2@(28) <== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 45dbe: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45dc0: 4879 0005 e7da pea 5e7da <_Watchdog_Ticks_chain> <== NOT EXECUTED 45dc6: 4eb9 0004 8730 jsr 48730 <_Watchdog_Insert> <== NOT EXECUTED _Watchdog_Insert_ticks( &the_timer->Ticker, ticks ); _Thread_Enable_dispatch(); 45dcc: 4e93 jsr %a3@ <== NOT EXECUTED return RTEMS_SUCCESSFUL; 45dce: 508f addql #8,%sp <== NOT EXECUTED 45dd0: 4280 clrl %d0 <== NOT EXECUTED 45dd2: 600a bras 45dde <== NOT EXECUTED Timer_Control *the_timer; Objects_Locations location; ISR_Level level; if ( ticks == 0 ) return RTEMS_INVALID_NUMBER; 45dd4: 700a moveq #10,%d0 <== NOT EXECUTED 45dd6: 6006 bras 45dde <== NOT EXECUTED if ( !routine ) return RTEMS_INVALID_ADDRESS; 45dd8: 7009 moveq #9,%d0 <== NOT EXECUTED 45dda: 6002 bras 45dde <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 45ddc: 7004 moveq #4,%d0 <== NOT EXECUTED } 45dde: 4cee 0c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a3 <== NOT EXECUTED 45de4: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00051b54 : rtems_id id, rtems_time_of_day *wall_time, rtems_timer_service_routine_entry routine, void *user_data ) { 51b54: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 51b58: 48d7 043c moveml %d2-%d5/%a2,%sp@ <== NOT EXECUTED 51b5c: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED 51b60: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 51b64: 2a2e 0010 movel %fp@(16),%d5 <== NOT EXECUTED Timer_Control *the_timer; Objects_Locations location; rtems_interval seconds; if ( !_TOD_Is_set ) 51b68: 4a39 0007 6f1c tstb 76f1c <_TOD_Is_set> <== NOT EXECUTED 51b6e: 6700 0098 beqw 51c08 <== NOT EXECUTED return RTEMS_NOT_DEFINED; if ( !_TOD_Validate( wall_time ) ) 51b72: 2f02 movel %d2,%sp@- <== NOT EXECUTED 51b74: 4eb9 0004 f2b0 jsr 4f2b0 <_TOD_Validate> <== NOT EXECUTED 51b7a: 588f addql #4,%sp <== NOT EXECUTED 51b7c: 4a00 tstb %d0 <== NOT EXECUTED 51b7e: 6700 0090 beqw 51c10 <== NOT EXECUTED return RTEMS_INVALID_CLOCK; if ( !routine ) 51b82: 4a85 tstl %d5 <== NOT EXECUTED 51b84: 6700 0086 beqw 51c0c <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; seconds = _TOD_To_seconds( wall_time ); 51b88: 2f02 movel %d2,%sp@- <== NOT EXECUTED 51b8a: 4eb9 0004 f214 jsr 4f214 <_TOD_To_seconds> <== NOT EXECUTED if ( seconds <= _TOD_Seconds_since_epoch() ) 51b90: 588f addql #4,%sp <== NOT EXECUTED return RTEMS_INVALID_CLOCK; if ( !routine ) return RTEMS_INVALID_ADDRESS; seconds = _TOD_To_seconds( wall_time ); 51b92: 2600 movel %d0,%d3 <== NOT EXECUTED if ( seconds <= _TOD_Seconds_since_epoch() ) 51b94: b0b9 0007 6fb6 cmpl 76fb6 <_TOD_Now>,%d0 <== NOT EXECUTED 51b9a: 6374 blss 51c10 <== NOT EXECUTED 51b9c: 486e fffc pea %fp@(-4) <== NOT EXECUTED 51ba0: 2f04 movel %d4,%sp@- <== NOT EXECUTED 51ba2: 4879 0007 77ae pea 777ae <_Timer_Information> <== NOT EXECUTED 51ba8: 4eb9 0005 43dc jsr 543dc <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_CLOCK; the_timer = _Timer_Get( id, &location ); switch ( location ) { 51bae: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 51bb2: 2440 moveal %d0,%a2 <== NOT EXECUTED 51bb4: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 51bb8: 665a bnes 51c14 <== NOT EXECUTED case OBJECTS_LOCAL: (void) _Watchdog_Remove( &the_timer->Ticker ); 51bba: 2400 movel %d0,%d2 <== NOT EXECUTED 51bbc: 0682 0000 0010 addil #16,%d2 <== NOT EXECUTED 51bc2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 51bc4: 4eb9 0005 5fd4 jsr 55fd4 <_Watchdog_Remove> <== NOT EXECUTED ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; the_watchdog->id = id; the_watchdog->user_data = user_data; 51bca: 256e 0014 0034 movel %fp@(20),%a2@(52) <== NOT EXECUTED the_timer->the_class = TIMER_TIME_OF_DAY; _Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data ); _Watchdog_Insert_seconds( 51bd0: 96b9 0007 6fb6 subl 76fb6 <_TOD_Now>,%d3 <== 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; 51bd6: 7002 moveq #2,%d0 <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 51bd8: 42aa 0018 clrl %a2@(24) <== NOT EXECUTED 51bdc: 2540 0038 movel %d0,%a2@(56) <== NOT EXECUTED the_watchdog->routine = routine; 51be0: 2545 002c movel %d5,%a2@(44) <== NOT EXECUTED the_watchdog->id = id; 51be4: 2544 0030 movel %d4,%a2@(48) <== NOT EXECUTED _Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data ); _Watchdog_Insert_seconds( 51be8: 2543 001c movel %d3,%a2@(28) <== NOT EXECUTED ) { the_watchdog->initial = units; _Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog ); 51bec: 2f02 movel %d2,%sp@- <== NOT EXECUTED 51bee: 4879 0007 6fe0 pea 76fe0 <_Watchdog_Seconds_chain> <== NOT EXECUTED 51bf4: 4eb9 0005 5eac jsr 55eac <_Watchdog_Insert> <== NOT EXECUTED &the_timer->Ticker, seconds - _TOD_Seconds_since_epoch() ); _Thread_Enable_dispatch(); 51bfa: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 51c00: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 51c04: 4280 clrl %d0 <== NOT EXECUTED 51c06: 600e bras 51c16 <== NOT EXECUTED Timer_Control *the_timer; Objects_Locations location; rtems_interval seconds; if ( !_TOD_Is_set ) return RTEMS_NOT_DEFINED; 51c08: 700b moveq #11,%d0 <== NOT EXECUTED 51c0a: 600a bras 51c16 <== NOT EXECUTED if ( !_TOD_Validate( wall_time ) ) return RTEMS_INVALID_CLOCK; if ( !routine ) return RTEMS_INVALID_ADDRESS; 51c0c: 7009 moveq #9,%d0 <== NOT EXECUTED 51c0e: 6006 bras 51c16 <== NOT EXECUTED seconds = _TOD_To_seconds( wall_time ); if ( seconds <= _TOD_Seconds_since_epoch() ) return RTEMS_INVALID_CLOCK; 51c10: 7014 moveq #20,%d0 <== NOT EXECUTED 51c12: 6002 bras 51c16 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 51c14: 7004 moveq #4,%d0 <== NOT EXECUTED } 51c16: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED 51c1c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00051c20 : rtems_status_code rtems_timer_get_information( rtems_id id, rtems_timer_information *the_info ) { 51c20: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 51c24: 2f0a movel %a2,%sp@- <== NOT EXECUTED 51c26: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED Timer_Control *the_timer; Objects_Locations location; if ( !the_info ) 51c2a: 4a8a tstl %a2 <== NOT EXECUTED 51c2c: 6740 beqs 51c6e <== NOT EXECUTED 51c2e: 486e fffc pea %fp@(-4) <== NOT EXECUTED 51c32: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 51c36: 4879 0007 77ae pea 777ae <_Timer_Information> <== NOT EXECUTED 51c3c: 4eb9 0005 43dc jsr 543dc <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; the_timer = _Timer_Get( id, &location ); switch ( location ) { 51c42: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 51c46: 2040 moveal %d0,%a0 <== NOT EXECUTED 51c48: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 51c4c: 6624 bnes 51c72 <== NOT EXECUTED case OBJECTS_LOCAL: the_info->the_class = the_timer->the_class; 51c4e: 24a8 0038 movel %a0@(56),%a2@ <== NOT EXECUTED the_info->initial = the_timer->Ticker.initial; 51c52: 2568 001c 0004 movel %a0@(28),%a2@(4) <== NOT EXECUTED the_info->start_time = the_timer->Ticker.start_time; 51c58: 2568 0024 0008 movel %a0@(36),%a2@(8) <== NOT EXECUTED the_info->stop_time = the_timer->Ticker.stop_time; 51c5e: 2568 0028 000c movel %a0@(40),%a2@(12) <== NOT EXECUTED _Thread_Enable_dispatch(); 51c64: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 51c6a: 4280 clrl %d0 <== NOT EXECUTED 51c6c: 6006 bras 51c74 <== NOT EXECUTED { Timer_Control *the_timer; Objects_Locations location; if ( !the_info ) return RTEMS_INVALID_ADDRESS; 51c6e: 7009 moveq #9,%d0 <== NOT EXECUTED 51c70: 6002 bras 51c74 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 51c72: 7004 moveq #4,%d0 <== NOT EXECUTED } 51c74: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 51c78: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00051c7c : rtems_status_code rtems_timer_ident( rtems_name name, rtems_id *id ) { 51c7c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED Objects_Name_or_id_lookup_errors status; status = _Objects_Name_to_id_u32( 51c80: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 51c84: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED 51c8a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 51c8e: 4879 0007 77ae pea 777ae <_Timer_Information> <== NOT EXECUTED 51c94: 4eb9 0005 4568 jsr 54568 <_Objects_Name_to_id_u32> <== NOT EXECUTED OBJECTS_SEARCH_LOCAL_NODE, id ); return _Status_Object_name_errors_to_status[ status ]; } 51c9a: 41f9 0007 02f0 lea 702f0 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED 51ca0: 4e5e unlk %fp <== NOT EXECUTED 51ca2: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED =============================================================================== 00052286 : rtems_status_code rtems_timer_initiate_server( uint32_t priority, uint32_t stack_size, rtems_attribute attribute_set ) { 52286: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 5228a: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED 5228e: 2f03 movel %d3,%sp@- <== NOT EXECUTED 52290: 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 ) && 52292: 4a80 tstl %d0 <== NOT EXECUTED 52294: 6712 beqs 522a8 <== NOT EXECUTED ( the_priority <= RTEMS_MAXIMUM_PRIORITY ) ); 52296: 4281 clrl %d1 <== NOT EXECUTED 52298: 1239 0007 1272 moveb 71272 ,%d1 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE bool _RTEMS_tasks_Priority_is_valid ( rtems_task_priority the_priority ) { return ( ( the_priority >= RTEMS_MINIMUM_PRIORITY ) && 5229e: b280 cmpl %d0,%d1 <== NOT EXECUTED 522a0: 54c1 scc %d1 <== NOT EXECUTED 522a2: 49c1 extbl %d1 <== NOT EXECUTED 522a4: 4481 negl %d1 <== NOT EXECUTED 522a6: 6002 bras 522aa <== NOT EXECUTED 522a8: 4281 clrl %d1 <== 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 ) ) { 522aa: 4a01 tstb %d1 <== NOT EXECUTED 522ac: 660c bnes 522ba <== NOT EXECUTED if ( priority != RTEMS_TIMER_SERVER_DEFAULT_PRIORITY ) 522ae: 72ff moveq #-1,%d1 <== NOT EXECUTED 522b0: b280 cmpl %d0,%d1 <== NOT EXECUTED 522b2: 6600 013a bnew 523ee <== NOT EXECUTED return RTEMS_INVALID_PRIORITY; _priority = 0; 522b6: 4282 clrl %d2 <== NOT EXECUTED 522b8: 6002 bras 522bc <== 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 ) ) { 522ba: 2400 movel %d0,%d2 <== NOT EXECUTED } /* * Just to make sure this is only called once. */ _Thread_Disable_dispatch(); 522bc: 4eba fc0a jsr %pc@(51ec8 <_Thread_Disable_dispatch>) <== NOT EXECUTED tmpInitialized = initialized; initialized = true; 522c0: 7001 moveq #1,%d0 <== NOT EXECUTED /* * Just to make sure this is only called once. */ _Thread_Disable_dispatch(); tmpInitialized = initialized; 522c2: 1639 0007 23ea moveb 723ea ,%d3 <== NOT EXECUTED initialized = true; 522c8: 13c0 0007 23ea moveb %d0,723ea <== NOT EXECUTED _Thread_Enable_dispatch(); 522ce: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED if ( tmpInitialized ) 522d4: 4a03 tstb %d3 <== NOT EXECUTED 522d6: 6600 011a bnew 523f2 <== 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( 522da: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED 522de: 486e fffc pea %fp@(-4) <== NOT EXECUTED 522e2: 08c1 000f bset #15,%d1 <== NOT EXECUTED 522e6: 2f01 movel %d1,%sp@- <== NOT EXECUTED 522e8: 4878 0100 pea 100 <== NOT EXECUTED 522ec: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 522f0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 522f2: 2f3c 5449 4d45 movel #1414090053,%sp@- <== NOT EXECUTED 522f8: 4eb9 0005 1178 jsr 51178 <== 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) { 522fe: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED 52302: 4a80 tstl %d0 <== NOT EXECUTED 52304: 670c beqs 52312 <== NOT EXECUTED initialized = false; 52306: 4201 clrb %d1 <== NOT EXECUTED 52308: 13c1 0007 23ea moveb %d1,723ea <== NOT EXECUTED return status; 5230e: 6000 00e4 braw 523f4 <== NOT EXECUTED * We work with the TCB pointer, not the ID, so we need to convert * to a TCB pointer from here out. */ ts->thread = (Thread_Control *)_Objects_Get_local_object( &_RTEMS_tasks_Information, _Objects_Get_index(id) 52312: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED */ #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return NULL; #endif return information->local_table[ index ]; 52316: 4281 clrl %d1 <== NOT EXECUTED 52318: 2079 0007 6ea2 moveal 76ea2 <_RTEMS_tasks_Information+0x18>,%a0<== NOT EXECUTED 5231e: 3200 movew %d0,%d1 <== NOT EXECUTED /* * We work with the TCB pointer, not the ID, so we need to convert * to a TCB pointer from here out. */ ts->thread = (Thread_Control *)_Objects_Get_local_object( 52320: 41f0 1c00 lea %a0@(00000000,%d1:l:4),%a0 <== NOT EXECUTED Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; head->previous = NULL; tail->previous = head; 52324: 223c 0007 239c movel #467868,%d1 <== NOT EXECUTED 5232a: 23d0 0007 236c movel %a0@,7236c <_Timer_server_Default> <== NOT EXECUTED ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; 52330: 41f9 0007 23a0 lea 723a0 <_Timer_server_Default+0x34>,%a0 <== NOT EXECUTED head->previous = NULL; tail->previous = head; 52336: 23c1 0007 23a4 movel %d1,723a4 <_Timer_server_Default+0x38><== NOT EXECUTED 5233c: 223c 0007 23d4 movel #467924,%d1 <== NOT EXECUTED ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; 52342: 23c8 0007 239c movel %a0,7239c <_Timer_server_Default+0x30><== NOT EXECUTED 52348: 41f9 0007 23d8 lea 723d8 <_Timer_server_Default+0x6c>,%a0 <== NOT EXECUTED head->previous = NULL; tail->previous = head; 5234e: 23c1 0007 23dc movel %d1,723dc <_Timer_server_Default+0x70><== NOT EXECUTED /* * Initialize the pointer to the timer schedule method so applications that * do not use the Timer Server do not have to pull it in. */ ts->schedule_operation = _Timer_server_Schedule_operation_method; 52354: 223c 0005 216c movel #336236,%d1 <== NOT EXECUTED ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; 5235a: 23c8 0007 23d4 movel %a0,723d4 <_Timer_server_Default+0x68><== NOT EXECUTED Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 52360: 41f9 0005 4d3c lea 54d3c <_Thread_Delay_ended>,%a0 <== NOT EXECUTED 52366: 23c1 0007 2370 movel %d1,72370 <_Timer_server_Default+0x4> <== NOT EXECUTED ts->Interval_watchdogs.last_snapshot = _Watchdog_Ticks_since_boot; 5236c: 2239 0007 7036 movel 77036 <_Watchdog_Ticks_since_boot>,%d1<== NOT EXECUTED 52372: 23c8 0007 2390 movel %a0,72390 <_Timer_server_Default+0x24><== NOT EXECUTED 52378: 23c8 0007 23c8 movel %a0,723c8 <_Timer_server_Default+0x5c><== NOT EXECUTED ts->TOD_watchdogs.last_snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch(); 5237e: 41f9 0007 6fb6 lea 76fb6 <_TOD_Now>,%a0 <== NOT EXECUTED * Initialize the pointer to the timer schedule method so applications that * do not use the Timer Server do not have to pull it in. */ ts->schedule_operation = _Timer_server_Schedule_operation_method; ts->Interval_watchdogs.last_snapshot = _Watchdog_Ticks_since_boot; 52384: 23c1 0007 23a8 movel %d1,723a8 <_Timer_server_Default+0x3c><== NOT EXECUTED ts->TOD_watchdogs.last_snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch(); 5238a: 23d0 0007 23e0 movel %a0@,723e0 <_Timer_server_Default+0x74><== NOT EXECUTED ts->active = false; /* * The default timer server is now available. */ _Timer_server = ts; 52390: 41f9 0007 236c lea 7236c <_Timer_server_Default>,%a0 <== NOT EXECUTED ts->Interval_watchdogs.last_snapshot = _Watchdog_Ticks_since_boot; ts->TOD_watchdogs.last_snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch(); ts->insert_chain = NULL; ts->active = false; 52396: 4201 clrb %d1 <== NOT EXECUTED _Timer_server = ts; /* * Start the timer server */ status = rtems_task_start( 52398: 2f08 movel %a0,%sp@- <== NOT EXECUTED 5239a: 487a fc06 pea %pc@(51fa2 <_Timer_server_Body>) <== NOT EXECUTED ts->schedule_operation = _Timer_server_Schedule_operation_method; ts->Interval_watchdogs.last_snapshot = _Watchdog_Ticks_since_boot; ts->TOD_watchdogs.last_snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch(); ts->insert_chain = NULL; 5239e: 42b9 0007 23e4 clrl 723e4 <_Timer_server_Default+0x78> <== NOT EXECUTED ts->active = false; 523a4: 13c1 0007 23e8 moveb %d1,723e8 <_Timer_server_Default+0x7c><== NOT EXECUTED _Timer_server = ts; /* * Start the timer server */ status = rtems_task_start( 523aa: 2f00 movel %d0,%sp@- <== NOT EXECUTED head->previous = NULL; 523ac: 42b9 0007 23a0 clrl 723a0 <_Timer_server_Default+0x34> <== NOT EXECUTED 523b2: 42b9 0007 23d8 clrl 723d8 <_Timer_server_Default+0x6c> <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 523b8: 42b9 0007 237c clrl 7237c <_Timer_server_Default+0x10> <== NOT EXECUTED the_watchdog->routine = routine; the_watchdog->id = id; 523be: 23c0 0007 2394 movel %d0,72394 <_Timer_server_Default+0x28><== NOT EXECUTED the_watchdog->user_data = user_data; 523c4: 42b9 0007 2398 clrl 72398 <_Timer_server_Default+0x2c> <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 523ca: 42b9 0007 23b4 clrl 723b4 <_Timer_server_Default+0x48> <== NOT EXECUTED the_watchdog->routine = routine; the_watchdog->id = id; 523d0: 23c0 0007 23cc movel %d0,723cc <_Timer_server_Default+0x60><== NOT EXECUTED the_watchdog->user_data = user_data; 523d6: 42b9 0007 23d0 clrl 723d0 <_Timer_server_Default+0x64> <== NOT EXECUTED ts->active = false; /* * The default timer server is now available. */ _Timer_server = ts; 523dc: 23c8 0007 77e8 movel %a0,777e8 <_Timer_server> <== NOT EXECUTED /* * Start the timer server */ status = rtems_task_start( 523e2: 4eb9 0005 1780 jsr 51780 <== NOT EXECUTED if (status) { initialized = false; } #endif return status; 523e8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 523ec: 6006 bras 523f4 <== NOT EXECUTED * a specific invalid value as the default. */ _priority = priority; if ( !_RTEMS_tasks_Priority_is_valid( priority ) ) { if ( priority != RTEMS_TIMER_SERVER_DEFAULT_PRIORITY ) return RTEMS_INVALID_PRIORITY; 523ee: 7013 moveq #19,%d0 <== NOT EXECUTED 523f0: 6002 bras 523f4 <== NOT EXECUTED tmpInitialized = initialized; initialized = true; _Thread_Enable_dispatch(); if ( tmpInitialized ) return RTEMS_INCORRECT_STATE; 523f2: 700e moveq #14,%d0 <== NOT EXECUTED initialized = false; } #endif return status; } 523f4: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED 523f8: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED 523fc: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00051ca8 : */ rtems_status_code rtems_timer_reset( rtems_id id ) { 51ca8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 51cac: 2f0b movel %a3,%sp@- <== NOT EXECUTED 51cae: 2f0a movel %a2,%sp@- <== NOT EXECUTED 51cb0: 486e fffc pea %fp@(-4) <== NOT EXECUTED 51cb4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 51cb8: 4879 0007 77ae pea 777ae <_Timer_Information> <== NOT EXECUTED 51cbe: 4eb9 0005 43dc jsr 543dc <_Objects_Get> <== NOT EXECUTED Timer_Control *the_timer; Objects_Locations location; rtems_status_code status = RTEMS_SUCCESSFUL; the_timer = _Timer_Get( id, &location ); switch ( location ) { 51cc4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 51cc8: 2440 moveal %d0,%a2 <== NOT EXECUTED 51cca: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 51cce: 6656 bnes 51d26 <== NOT EXECUTED case OBJECTS_LOCAL: if ( the_timer->the_class == TIMER_INTERVAL ) { 51cd0: 202a 0038 movel %a2@(56),%d0 <== NOT EXECUTED 51cd4: 661c bnes 51cf2 <== NOT EXECUTED _Watchdog_Remove( &the_timer->Ticker ); 51cd6: 45ea 0010 lea %a2@(16),%a2 <== NOT EXECUTED 51cda: 2f0a movel %a2,%sp@- <== NOT EXECUTED 51cdc: 4eb9 0005 5fd4 jsr 55fd4 <_Watchdog_Remove> <== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Ticks_chain, &the_timer->Ticker ); 51ce2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 51ce4: 4879 0007 6fec pea 76fec <_Watchdog_Ticks_chain> <== NOT EXECUTED 51cea: 4eb9 0005 5eac jsr 55eac <_Watchdog_Insert> <== NOT EXECUTED 51cf0: 6020 bras 51d12 <== NOT EXECUTED } else if ( the_timer->the_class == TIMER_INTERVAL_ON_TASK ) { 51cf2: 7201 moveq #1,%d1 <== NOT EXECUTED 51cf4: b280 cmpl %d0,%d1 <== NOT EXECUTED 51cf6: 6622 bnes 51d1a <== NOT EXECUTED if ( !timer_server ) { _Thread_Enable_dispatch(); return RTEMS_INCORRECT_STATE; } #endif _Watchdog_Remove( &the_timer->Ticker ); 51cf8: 486a 0010 pea %a2@(16) <== NOT EXECUTED case OBJECTS_LOCAL: if ( the_timer->the_class == TIMER_INTERVAL ) { _Watchdog_Remove( &the_timer->Ticker ); _Watchdog_Insert( &_Watchdog_Ticks_chain, &the_timer->Ticker ); } else if ( the_timer->the_class == TIMER_INTERVAL_ON_TASK ) { Timer_server_Control *timer_server = _Timer_server; 51cfc: 2679 0007 77e8 moveal 777e8 <_Timer_server>,%a3 <== NOT EXECUTED if ( !timer_server ) { _Thread_Enable_dispatch(); return RTEMS_INCORRECT_STATE; } #endif _Watchdog_Remove( &the_timer->Ticker ); 51d02: 4eb9 0005 5fd4 jsr 55fd4 <_Watchdog_Remove> <== NOT EXECUTED (*timer_server->schedule_operation)( timer_server, the_timer ); 51d08: 2f0a movel %a2,%sp@- <== NOT EXECUTED 51d0a: 2f0b movel %a3,%sp@- <== NOT EXECUTED 51d0c: 206b 0004 moveal %a3@(4),%a0 <== NOT EXECUTED 51d10: 4e90 jsr %a0@ <== NOT EXECUTED 51d12: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED rtems_id id ) { Timer_Control *the_timer; Objects_Locations location; rtems_status_code status = RTEMS_SUCCESSFUL; 51d16: 95ca subal %a2,%a2 <== NOT EXECUTED 51d18: 6004 bras 51d1e <== NOT EXECUTED /* * Must be dormant or time of day timer (e.g. TIMER_DORMANT, * TIMER_TIME_OF_DAY, or TIMER_TIME_OF_DAY_ON_TASK). We * can only reset active interval timers. */ status = RTEMS_NOT_DEFINED; 51d1a: 347c 000b moveaw #11,%a2 <== NOT EXECUTED } _Thread_Enable_dispatch(); 51d1e: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED return status; 51d24: 6004 bras 51d2a <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 51d26: 347c 0004 moveaw #4,%a2 <== NOT EXECUTED } 51d2a: 200a movel %a2,%d0 <== NOT EXECUTED 51d2c: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 51d30: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED 51d34: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00051d38 : rtems_id id, rtems_interval ticks, rtems_timer_service_routine_entry routine, void *user_data ) { 51d38: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 51d3c: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED 51d40: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 51d44: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 51d48: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED Timer_Control *the_timer; Objects_Locations location; ISR_Level level; Timer_server_Control *timer_server = _Timer_server; 51d4c: 2679 0007 77e8 moveal 777e8 <_Timer_server>,%a3 <== NOT EXECUTED if ( !timer_server ) 51d52: 4a8b tstl %a3 <== NOT EXECUTED 51d54: 6700 0086 beqw 51ddc <== NOT EXECUTED return RTEMS_INCORRECT_STATE; if ( !routine ) 51d58: 4a84 tstl %d4 <== NOT EXECUTED 51d5a: 6700 0084 beqw 51de0 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( ticks == 0 ) 51d5e: 4a82 tstl %d2 <== NOT EXECUTED 51d60: 6700 0082 beqw 51de4 <== NOT EXECUTED 51d64: 486e fffc pea %fp@(-4) <== NOT EXECUTED 51d68: 2f03 movel %d3,%sp@- <== NOT EXECUTED 51d6a: 4879 0007 77ae pea 777ae <_Timer_Information> <== NOT EXECUTED 51d70: 4eb9 0005 43dc jsr 543dc <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_NUMBER; the_timer = _Timer_Get( id, &location ); switch ( location ) { 51d76: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 51d7a: 2440 moveal %d0,%a2 <== NOT EXECUTED 51d7c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 51d80: 6666 bnes 51de8 <== NOT EXECUTED case OBJECTS_LOCAL: (void) _Watchdog_Remove( &the_timer->Ticker ); 51d82: 486a 0010 pea %a2@(16) <== NOT EXECUTED 51d86: 4eb9 0005 5fd4 jsr 55fd4 <_Watchdog_Remove> <== NOT EXECUTED _ISR_Disable( level ); 51d8c: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 51d92: 40c1 movew %sr,%d1 <== NOT EXECUTED 51d94: 8081 orl %d1,%d0 <== NOT EXECUTED 51d96: 46c0 movew %d0,%sr <== NOT EXECUTED 51d98: 49f9 0005 4eb6 lea 54eb6 <_Thread_Enable_dispatch>,%a4 <== 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 ) { 51d9e: 588f addql #4,%sp <== NOT EXECUTED 51da0: 4aaa 0018 tstl %a2@(24) <== NOT EXECUTED 51da4: 6706 beqs 51dac <== NOT EXECUTED _ISR_Enable( level ); 51da6: 46c1 movew %d1,%sr <== NOT EXECUTED _Thread_Enable_dispatch(); 51da8: 4e94 jsr %a4@ <== NOT EXECUTED 51daa: 602c bras 51dd8 <== 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; 51dac: 7001 moveq #1,%d0 <== NOT EXECUTED ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; the_watchdog->id = id; the_watchdog->user_data = user_data; 51dae: 256e 0014 0034 movel %fp@(20),%a2@(52) <== NOT EXECUTED 51db4: 2540 0038 movel %d0,%a2@(56) <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 51db8: 42aa 0018 clrl %a2@(24) <== NOT EXECUTED the_watchdog->routine = routine; 51dbc: 2544 002c movel %d4,%a2@(44) <== NOT EXECUTED the_watchdog->id = id; 51dc0: 2543 0030 movel %d3,%a2@(48) <== NOT EXECUTED _Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data ); the_timer->Ticker.initial = ticks; 51dc4: 2542 001c movel %d2,%a2@(28) <== NOT EXECUTED _ISR_Enable( level ); 51dc8: 46c1 movew %d1,%sr <== NOT EXECUTED (*timer_server->schedule_operation)( timer_server, the_timer ); 51dca: 2f0a movel %a2,%sp@- <== NOT EXECUTED 51dcc: 2f0b movel %a3,%sp@- <== NOT EXECUTED 51dce: 206b 0004 moveal %a3@(4),%a0 <== NOT EXECUTED 51dd2: 4e90 jsr %a0@ <== NOT EXECUTED _Thread_Enable_dispatch(); 51dd4: 4e94 jsr %a4@ <== NOT EXECUTED return RTEMS_SUCCESSFUL; 51dd6: 508f addql #8,%sp <== NOT EXECUTED 51dd8: 4280 clrl %d0 <== NOT EXECUTED 51dda: 600e bras 51dea <== NOT EXECUTED Objects_Locations location; ISR_Level level; Timer_server_Control *timer_server = _Timer_server; if ( !timer_server ) return RTEMS_INCORRECT_STATE; 51ddc: 700e moveq #14,%d0 <== NOT EXECUTED 51dde: 600a bras 51dea <== NOT EXECUTED if ( !routine ) return RTEMS_INVALID_ADDRESS; 51de0: 7009 moveq #9,%d0 <== NOT EXECUTED 51de2: 6006 bras 51dea <== NOT EXECUTED if ( ticks == 0 ) return RTEMS_INVALID_NUMBER; 51de4: 700a moveq #10,%d0 <== NOT EXECUTED 51de6: 6002 bras 51dea <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 51de8: 7004 moveq #4,%d0 <== NOT EXECUTED } 51dea: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED 51df0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00051df4 : rtems_id id, rtems_time_of_day *wall_time, rtems_timer_service_routine_entry routine, void *user_data ) { 51df4: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 51df8: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED 51dfc: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 51e00: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 51e04: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED Timer_Control *the_timer; Objects_Locations location; rtems_interval seconds; Timer_server_Control *timer_server = _Timer_server; 51e08: 2679 0007 77e8 moveal 777e8 <_Timer_server>,%a3 <== NOT EXECUTED if ( !timer_server ) 51e0e: 4a8b tstl %a3 <== NOT EXECUTED 51e10: 6700 0098 beqw 51eaa <== NOT EXECUTED return RTEMS_INCORRECT_STATE; if ( !_TOD_Is_set ) 51e14: 4a39 0007 6f1c tstb 76f1c <_TOD_Is_set> <== NOT EXECUTED 51e1a: 6700 0092 beqw 51eae <== NOT EXECUTED return RTEMS_NOT_DEFINED; if ( !routine ) 51e1e: 4a84 tstl %d4 <== NOT EXECUTED 51e20: 6700 0090 beqw 51eb2 <== NOT EXECUTED return RTEMS_INVALID_ADDRESS; if ( !_TOD_Validate( wall_time ) ) 51e24: 2f02 movel %d2,%sp@- <== NOT EXECUTED 51e26: 4eb9 0004 f2b0 jsr 4f2b0 <_TOD_Validate> <== NOT EXECUTED 51e2c: 588f addql #4,%sp <== NOT EXECUTED 51e2e: 4a00 tstb %d0 <== NOT EXECUTED 51e30: 6700 0084 beqw 51eb6 <== NOT EXECUTED return RTEMS_INVALID_CLOCK; seconds = _TOD_To_seconds( wall_time ); 51e34: 2f02 movel %d2,%sp@- <== NOT EXECUTED 51e36: 4eb9 0004 f214 jsr 4f214 <_TOD_To_seconds> <== NOT EXECUTED if ( seconds <= _TOD_Seconds_since_epoch() ) 51e3c: 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 ); 51e3e: 2400 movel %d0,%d2 <== NOT EXECUTED if ( seconds <= _TOD_Seconds_since_epoch() ) 51e40: b0b9 0007 6fb6 cmpl 76fb6 <_TOD_Now>,%d0 <== NOT EXECUTED 51e46: 636e blss 51eb6 <== NOT EXECUTED 51e48: 486e fffc pea %fp@(-4) <== NOT EXECUTED 51e4c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 51e4e: 4879 0007 77ae pea 777ae <_Timer_Information> <== NOT EXECUTED 51e54: 4eb9 0005 43dc jsr 543dc <_Objects_Get> <== NOT EXECUTED return RTEMS_INVALID_CLOCK; the_timer = _Timer_Get( id, &location ); switch ( location ) { 51e5a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 51e5e: 2440 moveal %d0,%a2 <== NOT EXECUTED 51e60: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 51e64: 6654 bnes 51eba <== NOT EXECUTED case OBJECTS_LOCAL: (void) _Watchdog_Remove( &the_timer->Ticker ); 51e66: 486a 0010 pea %a2@(16) <== NOT EXECUTED 51e6a: 4eb9 0005 5fd4 jsr 55fd4 <_Watchdog_Remove> <== NOT EXECUTED the_watchdog->user_data = user_data; 51e70: 256e 0014 0034 movel %fp@(20),%a2@(52) <== 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(); 51e76: 94b9 0007 6fb6 subl 76fb6 <_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; 51e7c: 7003 moveq #3,%d0 <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 51e7e: 42aa 0018 clrl %a2@(24) <== NOT EXECUTED 51e82: 2540 0038 movel %d0,%a2@(56) <== NOT EXECUTED the_watchdog->routine = routine; 51e86: 2544 002c movel %d4,%a2@(44) <== NOT EXECUTED the_watchdog->id = id; 51e8a: 2543 0030 movel %d3,%a2@(48) <== NOT EXECUTED _Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data ); the_timer->Ticker.initial = seconds - _TOD_Seconds_since_epoch(); 51e8e: 2542 001c movel %d2,%a2@(28) <== NOT EXECUTED (*timer_server->schedule_operation)( timer_server, the_timer ); 51e92: 2f0a movel %a2,%sp@- <== NOT EXECUTED 51e94: 2f0b movel %a3,%sp@- <== NOT EXECUTED 51e96: 206b 0004 moveal %a3@(4),%a0 <== NOT EXECUTED 51e9a: 4e90 jsr %a0@ <== NOT EXECUTED _Thread_Enable_dispatch(); 51e9c: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED return RTEMS_SUCCESSFUL; 51ea2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 51ea6: 4280 clrl %d0 <== NOT EXECUTED 51ea8: 6012 bras 51ebc <== NOT EXECUTED Objects_Locations location; rtems_interval seconds; Timer_server_Control *timer_server = _Timer_server; if ( !timer_server ) return RTEMS_INCORRECT_STATE; 51eaa: 700e moveq #14,%d0 <== NOT EXECUTED 51eac: 600e bras 51ebc <== NOT EXECUTED if ( !_TOD_Is_set ) return RTEMS_NOT_DEFINED; 51eae: 700b moveq #11,%d0 <== NOT EXECUTED 51eb0: 600a bras 51ebc <== NOT EXECUTED if ( !routine ) return RTEMS_INVALID_ADDRESS; 51eb2: 7009 moveq #9,%d0 <== NOT EXECUTED 51eb4: 6006 bras 51ebc <== NOT EXECUTED if ( !_TOD_Validate( wall_time ) ) return RTEMS_INVALID_CLOCK; seconds = _TOD_To_seconds( wall_time ); if ( seconds <= _TOD_Seconds_since_epoch() ) return RTEMS_INVALID_CLOCK; 51eb6: 7014 moveq #20,%d0 <== NOT EXECUTED 51eb8: 6002 bras 51ebc <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; 51eba: 7004 moveq #4,%d0 <== NOT EXECUTED } 51ebc: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED 51ec2: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004608a : */ bool rtems_workspace_allocate( uintptr_t bytes, void **pointer ) { 4608a: 4e56 0000 linkw %fp,#0 4608e: 202e 0008 movel %fp@(8),%d0 46092: 2f0a movel %a2,%sp@- 46094: 246e 000c moveal %fp@(12),%a2 void *ptr; /* * check the arguments */ if ( !pointer ) 46098: 4a8a tstl %a2 4609a: 6724 beqs 460c0 <== NEVER TAKEN return false; if ( !bytes ) 4609c: 4a80 tstl %d0 4609e: 6720 beqs 460c0 <== NEVER TAKEN RTEMS_INLINE_ROUTINE void *_Protected_heap_Allocate( Heap_Control *heap, uintptr_t size ) { return _Protected_heap_Allocate_aligned_with_boundary( heap, size, 0, 0 ); 460a0: 42a7 clrl %sp@- 460a2: 42a7 clrl %sp@- 460a4: 2f00 movel %d0,%sp@- 460a6: 4879 0005 edb6 pea 5edb6 <_Workspace_Area> 460ac: 4eb9 0004 7590 jsr 47590 <_Protected_heap_Allocate_aligned_with_boundary> /* * Allocate the memory */ ptr = _Protected_heap_Allocate( &_Workspace_Area, (intptr_t) bytes ); if (!ptr) 460b2: 4fef 0010 lea %sp@(16),%sp 460b6: 4a80 tstl %d0 460b8: 6706 beqs 460c0 <== NEVER TAKEN return false; *pointer = ptr; 460ba: 2480 movel %d0,%a2@ return true; 460bc: 7001 moveq #1,%d0 460be: 6002 bras 460c2 /* * Allocate the memory */ ptr = _Protected_heap_Allocate( &_Workspace_Area, (intptr_t) bytes ); if (!ptr) return false; 460c0: 4200 clrb %d0 <== NOT EXECUTED *pointer = ptr; return true; } 460c2: 246e fffc moveal %fp@(-4),%a2 460c6: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000460ca : * _Workspace_Allocate */ bool rtems_workspace_free( void *pointer ) { 460ca: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _Protected_heap_Free( &_Workspace_Area, pointer ); 460ce: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 460d2: 4879 0005 edb6 pea 5edb6 <_Workspace_Area> <== NOT EXECUTED 460d8: 4eb9 0004 75d0 jsr 475d0 <_Protected_heap_Free> <== NOT EXECUTED } 460de: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046068 : #include /* for memset */ bool rtems_workspace_get_information( Heap_Information_block *the_info ) { 46068: 4e56 0000 linkw %fp,#0 4606c: 202e 0008 movel %fp@(8),%d0 if ( !the_info ) 46070: 6712 beqs 46084 <== NEVER TAKEN return false; return _Protected_heap_Get_information( &_Workspace_Area, the_info ); 46072: 2f00 movel %d0,%sp@- 46074: 4879 0005 edb6 pea 5edb6 <_Workspace_Area> 4607a: 4eb9 0004 7608 jsr 47608 <_Protected_heap_Get_information> 46080: 508f addql #8,%sp 46082: 6002 bras 46086 bool rtems_workspace_get_information( Heap_Information_block *the_info ) { if ( !the_info ) return false; 46084: 4200 clrb %d0 <== NOT EXECUTED return _Protected_heap_Get_information( &_Workspace_Area, the_info ); } 46086: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045d90 : int sched_get_priority_max( int policy ) { switch ( policy ) { 45d90: 7004 moveq #4,%d0 <== NOT EXECUTED #include int sched_get_priority_max( int policy ) { 45d92: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45d96: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED switch ( policy ) { 45d9a: b081 cmpl %d1,%d0 <== NOT EXECUTED 45d9c: 650c bcss 45daa <== NOT EXECUTED 45d9e: 103c 0001 moveb #1,%d0 <== NOT EXECUTED 45da2: e3a8 lsll %d1,%d0 <== NOT EXECUTED 45da4: 7217 moveq #23,%d1 <== NOT EXECUTED 45da6: c081 andl %d1,%d0 <== NOT EXECUTED 45da8: 6610 bnes 45dba <== NOT EXECUTED case SCHED_RR: case SCHED_SPORADIC: break; default: rtems_set_errno_and_return_minus_one( EINVAL ); 45daa: 4eb9 0004 d510 jsr 4d510 <__errno> <== NOT EXECUTED 45db0: 2040 moveal %d0,%a0 <== NOT EXECUTED 45db2: 7016 moveq #22,%d0 <== NOT EXECUTED 45db4: 2080 movel %d0,%a0@ <== NOT EXECUTED 45db6: 70ff moveq #-1,%d0 <== NOT EXECUTED 45db8: 600a bras 45dc4 <== NOT EXECUTED } return POSIX_SCHEDULER_MAXIMUM_PRIORITY; 45dba: 4280 clrl %d0 <== NOT EXECUTED 45dbc: 1039 0005 dbf6 moveb 5dbf6 ,%d0 <== NOT EXECUTED 45dc2: 5380 subql #1,%d0 <== NOT EXECUTED } 45dc4: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045dc8 : int sched_get_priority_min( int policy ) { switch ( policy ) { 45dc8: 7004 moveq #4,%d0 <== NOT EXECUTED #include int sched_get_priority_min( int policy ) { 45dca: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45dce: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED switch ( policy ) { 45dd2: b081 cmpl %d1,%d0 <== NOT EXECUTED 45dd4: 650c bcss 45de2 <== NOT EXECUTED 45dd6: 103c 0001 moveb #1,%d0 <== NOT EXECUTED 45dda: e3a8 lsll %d1,%d0 <== NOT EXECUTED 45ddc: 7217 moveq #23,%d1 <== NOT EXECUTED 45dde: c081 andl %d1,%d0 <== NOT EXECUTED 45de0: 6610 bnes 45df2 <== NOT EXECUTED case SCHED_RR: case SCHED_SPORADIC: break; default: rtems_set_errno_and_return_minus_one( EINVAL ); 45de2: 4eb9 0004 d510 jsr 4d510 <__errno> <== NOT EXECUTED 45de8: 2040 moveal %d0,%a0 <== NOT EXECUTED 45dea: 7016 moveq #22,%d0 <== NOT EXECUTED 45dec: 2080 movel %d0,%a0@ <== NOT EXECUTED 45dee: 70ff moveq #-1,%d0 <== NOT EXECUTED 45df0: 6002 bras 45df4 <== NOT EXECUTED } return POSIX_SCHEDULER_MINIMUM_PRIORITY; 45df2: 7001 moveq #1,%d0 <== NOT EXECUTED } 45df4: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045548 : int sched_getparam( pid_t pid __attribute__((unused)), struct sched_param *param __attribute__((unused)) ) { 45548: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 4554c: 4eb9 0004 d19c jsr 4d19c <__errno> <== NOT EXECUTED } 45552: 4e5e unlk %fp <== NOT EXECUTED int sched_getparam( pid_t pid __attribute__((unused)), struct sched_param *param __attribute__((unused)) ) { rtems_set_errno_and_return_minus_one( ENOSYS ); 45554: 2040 moveal %d0,%a0 <== NOT EXECUTED 45556: 7058 moveq #88,%d0 <== NOT EXECUTED 45558: 2080 movel %d0,%a0@ <== NOT EXECUTED } 4555a: 70ff moveq #-1,%d0 <== NOT EXECUTED ... =============================================================================== 00045560 : #include int sched_getscheduler( pid_t pid __attribute__((unused)) ) { 45560: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 45564: 4eb9 0004 d19c jsr 4d19c <__errno> <== NOT EXECUTED } 4556a: 4e5e unlk %fp <== NOT EXECUTED int sched_getscheduler( pid_t pid __attribute__((unused)) ) { rtems_set_errno_and_return_minus_one( ENOSYS ); 4556c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4556e: 7058 moveq #88,%d0 <== NOT EXECUTED 45570: 2080 movel %d0,%a0@ <== NOT EXECUTED } 45572: 70ff moveq #-1,%d0 <== NOT EXECUTED ... =============================================================================== 00045df8 : int sched_rr_get_interval( pid_t pid, struct timespec *interval ) { 45df8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45dfc: 2f03 movel %d3,%sp@- <== NOT EXECUTED 45dfe: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED 45e02: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45e04: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED /* * Only supported for the "calling process" (i.e. this node). */ if ( pid && pid != getpid() ) 45e08: 4a83 tstl %d3 <== NOT EXECUTED 45e0a: 6718 beqs 45e24 <== NOT EXECUTED 45e0c: 4eb9 0004 2ec8 jsr 42ec8 <== NOT EXECUTED 45e12: b083 cmpl %d3,%d0 <== NOT EXECUTED 45e14: 670e beqs 45e24 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ESRCH ); 45e16: 4eb9 0004 d510 jsr 4d510 <__errno> <== NOT EXECUTED 45e1c: 7203 moveq #3,%d1 <== NOT EXECUTED 45e1e: 2040 moveal %d0,%a0 <== NOT EXECUTED 45e20: 2081 movel %d1,%a0@ <== NOT EXECUTED 45e22: 6010 bras 45e34 <== NOT EXECUTED if ( !interval ) 45e24: 4a82 tstl %d2 <== NOT EXECUTED 45e26: 6610 bnes 45e38 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 45e28: 4eb9 0004 d510 jsr 4d510 <__errno> <== NOT EXECUTED 45e2e: 2040 moveal %d0,%a0 <== NOT EXECUTED 45e30: 7016 moveq #22,%d0 <== NOT EXECUTED 45e32: 2080 movel %d0,%a0@ <== NOT EXECUTED 45e34: 70ff moveq #-1,%d0 <== NOT EXECUTED 45e36: 6012 bras 45e4a <== NOT EXECUTED _Timespec_From_ticks( _Thread_Ticks_per_timeslice, interval ); 45e38: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45e3a: 2f39 0005 f470 movel 5f470 <_Thread_Ticks_per_timeslice>,%sp@-<== NOT EXECUTED 45e40: 4eb9 0004 910c jsr 4910c <_Timespec_From_ticks> <== NOT EXECUTED return 0; 45e46: 508f addql #8,%sp <== NOT EXECUTED 45e48: 4280 clrl %d0 <== NOT EXECUTED } 45e4a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 45e4e: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 45e52: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00045578 : int sched_setparam( pid_t pid __attribute__((unused)), const struct sched_param *param __attribute__((unused)) ) { 45578: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 4557c: 4eb9 0004 d19c jsr 4d19c <__errno> <== NOT EXECUTED } 45582: 4e5e unlk %fp <== NOT EXECUTED int sched_setparam( pid_t pid __attribute__((unused)), const struct sched_param *param __attribute__((unused)) ) { rtems_set_errno_and_return_minus_one( ENOSYS ); 45584: 2040 moveal %d0,%a0 <== NOT EXECUTED 45586: 7058 moveq #88,%d0 <== NOT EXECUTED 45588: 2080 movel %d0,%a0@ <== NOT EXECUTED } 4558a: 70ff moveq #-1,%d0 <== NOT EXECUTED ... =============================================================================== 00045590 : int sched_setscheduler( pid_t pid __attribute__((unused)), int policy __attribute__((unused)), const struct sched_param *param __attribute__((unused)) ) { 45590: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 45594: 4eb9 0004 d19c jsr 4d19c <__errno> <== NOT EXECUTED } 4559a: 4e5e unlk %fp <== NOT EXECUTED pid_t pid __attribute__((unused)), int policy __attribute__((unused)), const struct sched_param *param __attribute__((unused)) ) { rtems_set_errno_and_return_minus_one( ENOSYS ); 4559c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4559e: 7058 moveq #88,%d0 <== NOT EXECUTED 455a0: 2080 movel %d0,%a0@ <== NOT EXECUTED } 455a2: 70ff moveq #-1,%d0 <== NOT EXECUTED ... =============================================================================== 00045e58 : #include #include #include int sched_yield( void ) { 45e58: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45e5c: 2039 0005 f4b8 movel 5f4b8 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 45e62: 5280 addql #1,%d0 <== NOT EXECUTED 45e64: 23c0 0005 f4b8 movel %d0,5f4b8 <_Thread_Dispatch_disable_level><== NOT EXECUTED * always operates on the scheduler that 'owns' the currently executing * thread. */ RTEMS_INLINE_ROUTINE void _Scheduler_Yield( void ) { _Scheduler.Operations.yield( &_Scheduler ); 45e6a: 4879 0005 f53e pea 5f53e <_Scheduler> <== NOT EXECUTED 45e70: 2079 0005 f546 moveal 5f546 <_Scheduler+0x8>,%a0 <== NOT EXECUTED 45e76: 4e90 jsr %a0@ <== NOT EXECUTED _Thread_Disable_dispatch(); _Scheduler_Yield(); _Thread_Enable_dispatch(); 45e78: 4eb9 0004 8646 jsr 48646 <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; } 45e7e: 4280 clrl %d0 <== NOT EXECUTED 45e80: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000482ec : */ int sem_close( sem_t *sem ) { 482ec: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED sem_t *id, Objects_Locations *location ) { return (POSIX_Semaphore_Control *) _Objects_Get( &_POSIX_Semaphore_Information, (Objects_Id)*id, location ); 482f0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 482f4: 486e fffc pea %fp@(-4) <== NOT EXECUTED 482f8: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 482fa: 4879 0006 362a pea 6362a <_POSIX_Semaphore_Information> <== NOT EXECUTED 48300: 4eb9 0004 a2fc jsr 4a2fc <_Objects_Get> <== NOT EXECUTED register POSIX_Semaphore_Control *the_semaphore; Objects_Locations location; the_semaphore = _POSIX_Semaphore_Get( sem, &location ); switch ( location ) { 48306: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4830a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4830e: 661a bnes 4832a <== NOT EXECUTED case OBJECTS_LOCAL: the_semaphore->open_count -= 1; 48310: 2040 moveal %d0,%a0 <== NOT EXECUTED 48312: 53a8 0016 subql #1,%a0@(22) <== NOT EXECUTED _POSIX_Semaphore_Delete( the_semaphore ); 48316: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48318: 4eb9 0004 df6c jsr 4df6c <_POSIX_Semaphore_Delete> <== NOT EXECUTED _Thread_Enable_dispatch(); 4831e: 4eb9 0004 ade2 jsr 4ade2 <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 48324: 588f addql #4,%sp <== NOT EXECUTED 48326: 4280 clrl %d0 <== NOT EXECUTED 48328: 600e bras 48338 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 4832a: 4eb9 0005 07b8 jsr 507b8 <__errno> <== NOT EXECUTED 48330: 2040 moveal %d0,%a0 <== NOT EXECUTED 48332: 7016 moveq #22,%d0 <== NOT EXECUTED 48334: 2080 movel %d0,%a0@ <== NOT EXECUTED 48336: 70ff moveq #-1,%d0 <== NOT EXECUTED } 48338: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004833c : */ int sem_destroy( sem_t *sem ) { 4833c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 48340: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 48344: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48346: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4834a: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4834c: 4879 0006 362a pea 6362a <_POSIX_Semaphore_Information> <== NOT EXECUTED 48352: 4eb9 0004 a2fc jsr 4a2fc <_Objects_Get> <== NOT EXECUTED register POSIX_Semaphore_Control *the_semaphore; Objects_Locations location; the_semaphore = _POSIX_Semaphore_Get( sem, &location ); switch ( location ) { 48358: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4835c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 48360: 6622 bnes 48384 <== NOT EXECUTED 48362: 45f9 0004 ade2 lea 4ade2 <_Thread_Enable_dispatch>,%a2 <== NOT EXECUTED case OBJECTS_LOCAL: /* * Undefined operation on a named semaphore. */ if ( the_semaphore->named == true ) { 48368: 2040 moveal %d0,%a0 <== NOT EXECUTED 4836a: 4a28 0014 tstb %a0@(20) <== NOT EXECUTED 4836e: 6704 beqs 48374 <== NOT EXECUTED _Thread_Enable_dispatch(); 48370: 4e92 jsr %a2@ <== NOT EXECUTED 48372: 6010 bras 48384 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); } _POSIX_Semaphore_Delete( the_semaphore ); 48374: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48376: 4eb9 0004 df6c jsr 4df6c <_POSIX_Semaphore_Delete> <== NOT EXECUTED _Thread_Enable_dispatch(); 4837c: 4e92 jsr %a2@ <== NOT EXECUTED return 0; 4837e: 588f addql #4,%sp <== NOT EXECUTED 48380: 4280 clrl %d0 <== NOT EXECUTED 48382: 600e bras 48392 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 48384: 4eb9 0005 07b8 jsr 507b8 <__errno> <== NOT EXECUTED 4838a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4838c: 7016 moveq #22,%d0 <== NOT EXECUTED 4838e: 2080 movel %d0,%a0@ <== NOT EXECUTED 48390: 70ff moveq #-1,%d0 <== NOT EXECUTED } 48392: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 48396: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004839c : int sem_getvalue( sem_t *sem, int *sval ) { 4839c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 483a0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 483a4: 486e fffc pea %fp@(-4) <== NOT EXECUTED 483a8: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 483aa: 4879 0006 362a pea 6362a <_POSIX_Semaphore_Information> <== NOT EXECUTED 483b0: 4eb9 0004 a2fc jsr 4a2fc <_Objects_Get> <== NOT EXECUTED register POSIX_Semaphore_Control *the_semaphore; Objects_Locations location; the_semaphore = _POSIX_Semaphore_Get( sem, &location ); switch ( location ) { 483b6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 483ba: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 483be: 6614 bnes 483d4 <== NOT EXECUTED case OBJECTS_LOCAL: *sval = _CORE_semaphore_Get_count( &the_semaphore->Semaphore ); 483c0: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 483c4: 2240 moveal %d0,%a1 <== NOT EXECUTED 483c6: 20a9 0062 movel %a1@(98),%a0@ <== NOT EXECUTED _Thread_Enable_dispatch(); 483ca: 4eb9 0004 ade2 jsr 4ade2 <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 483d0: 4280 clrl %d0 <== NOT EXECUTED 483d2: 600e bras 483e2 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 483d4: 4eb9 0005 07b8 jsr 507b8 <__errno> <== NOT EXECUTED 483da: 2040 moveal %d0,%a0 <== NOT EXECUTED 483dc: 7016 moveq #22,%d0 <== NOT EXECUTED 483de: 2080 movel %d0,%a0@ <== NOT EXECUTED 483e0: 70ff moveq #-1,%d0 <== NOT EXECUTED } 483e2: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000483e8 : int sem_init( sem_t *sem, int pshared, unsigned int value ) { 483e8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 483ec: 2f0a movel %a2,%sp@- <== NOT EXECUTED 483ee: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED int status; POSIX_Semaphore_Control *the_semaphore; if ( !sem ) 483f2: 4a8a tstl %a2 <== NOT EXECUTED 483f4: 6610 bnes 48406 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 483f6: 4eb9 0005 07b8 jsr 507b8 <__errno> <== NOT EXECUTED 483fc: 2040 moveal %d0,%a0 <== NOT EXECUTED 483fe: 7016 moveq #22,%d0 <== NOT EXECUTED 48400: 2080 movel %d0,%a0@ <== NOT EXECUTED 48402: 70ff moveq #-1,%d0 <== NOT EXECUTED 48404: 6026 bras 4842c <== NOT EXECUTED status = _POSIX_Semaphore_Create_support( 48406: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4840a: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4840e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 48412: 42a7 clrl %sp@- <== NOT EXECUTED 48414: 4eb9 0004 de78 jsr 4de78 <_POSIX_Semaphore_Create_support> <== NOT EXECUTED pshared, value, &the_semaphore ); if ( status != -1 ) 4841a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4841e: 72ff moveq #-1,%d1 <== NOT EXECUTED 48420: b280 cmpl %d0,%d1 <== NOT EXECUTED 48422: 6708 beqs 4842c <== NOT EXECUTED *sem = the_semaphore->Object.id; 48424: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED 48428: 24a8 0008 movel %a0@(8),%a2@ <== NOT EXECUTED return status; } 4842c: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 48430: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00048434 : int oflag, ... /* mode_t mode, */ /* unsigned int value */ ) { 48434: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 48438: 2039 0006 33f4 movel 633f4 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 4843e: 5280 addql #1,%d0 <== NOT EXECUTED 48440: 48d7 043c moveml %d2-%d5/%a2,%sp@ <== NOT EXECUTED 48444: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 48448: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED 4844c: 23c0 0006 33f4 movel %d0,633f4 <_Thread_Dispatch_disable_level><== NOT EXECUTED POSIX_Semaphore_Control *the_semaphore; Objects_Locations location; _Thread_Disable_dispatch(); if ( oflag & O_CREAT ) { 48452: 2a04 movel %d4,%d5 <== NOT EXECUTED 48454: 0285 0000 0200 andil #512,%d5 <== NOT EXECUTED 4845a: 6706 beqs 48462 <== NOT EXECUTED va_start(arg, oflag); mode = (mode_t) va_arg( arg, unsigned int ); value = va_arg( arg, unsigned int ); 4845c: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED 48460: 6002 bras 48464 <== NOT EXECUTED /* unsigned int value */ ) { va_list arg; mode_t mode; unsigned int value = 0; 48462: 4283 clrl %d3 <== 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 ); 48464: 486e fffc pea %fp@(-4) <== NOT EXECUTED 48468: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4846a: 4eb9 0004 dfbc jsr 4dfbc <_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 ) { 48470: 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 ); 48472: 2440 moveal %d0,%a2 <== 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 ) { 48474: 4a80 tstl %d0 <== NOT EXECUTED 48476: 671c beqs 48494 <== 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) ) ) { 48478: 7002 moveq #2,%d0 <== NOT EXECUTED 4847a: b08a cmpl %a2,%d0 <== NOT EXECUTED 4847c: 6604 bnes 48482 <== NOT EXECUTED 4847e: 4a85 tstl %d5 <== NOT EXECUTED 48480: 665e bnes 484e0 <== NOT EXECUTED _Thread_Enable_dispatch(); 48482: 4eb9 0004 ade2 jsr 4ade2 <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one_cast( status, sem_t * ); 48488: 4eb9 0005 07b8 jsr 507b8 <__errno> <== NOT EXECUTED 4848e: 2040 moveal %d0,%a0 <== NOT EXECUTED 48490: 208a movel %a2,%a0@ <== NOT EXECUTED 48492: 6076 bras 4850a <== NOT EXECUTED 48494: 45f9 0004 ade2 lea 4ade2 <_Thread_Enable_dispatch>,%a2 <== NOT EXECUTED /* * Check for existence with creation. */ if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) { 4849a: 0284 0000 0a00 andil #2560,%d4 <== NOT EXECUTED 484a0: 0c84 0000 0a00 cmpil #2560,%d4 <== NOT EXECUTED 484a6: 6610 bnes 484b8 <== NOT EXECUTED _Thread_Enable_dispatch(); 484a8: 4e92 jsr %a2@ <== NOT EXECUTED rtems_set_errno_and_return_minus_one_cast( EEXIST, sem_t * ); 484aa: 4eb9 0005 07b8 jsr 507b8 <__errno> <== NOT EXECUTED 484b0: 2040 moveal %d0,%a0 <== NOT EXECUTED 484b2: 7011 moveq #17,%d0 <== NOT EXECUTED 484b4: 2080 movel %d0,%a0@ <== NOT EXECUTED 484b6: 6052 bras 4850a <== NOT EXECUTED 484b8: 486e fff4 pea %fp@(-12) <== NOT EXECUTED 484bc: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 484c0: 4879 0006 362a pea 6362a <_POSIX_Semaphore_Information> <== NOT EXECUTED 484c6: 4eb9 0004 a2fc jsr 4a2fc <_Objects_Get> <== NOT EXECUTED } the_semaphore = _POSIX_Semaphore_Get( &the_semaphore_id, &location ); the_semaphore->open_count += 1; 484cc: 2040 moveal %d0,%a0 <== NOT EXECUTED 484ce: 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 ); 484d2: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED the_semaphore->open_count += 1; _Thread_Enable_dispatch(); 484d6: 4e92 jsr %a2@ <== NOT EXECUTED _Thread_Enable_dispatch(); 484d8: 4e92 jsr %a2@ <== NOT EXECUTED goto return_id; 484da: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 484de: 6022 bras 48502 <== 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( 484e0: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 484e4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 484e6: 42a7 clrl %sp@- <== NOT EXECUTED 484e8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 484ea: 4eb9 0004 de78 jsr 4de78 <_POSIX_Semaphore_Create_support> <== NOT EXECUTED 484f0: 2400 movel %d0,%d2 <== NOT EXECUTED /* * errno was set by Create_support, so don't set it again. */ _Thread_Enable_dispatch(); 484f2: 4eb9 0004 ade2 jsr 4ade2 <_Thread_Enable_dispatch> <== NOT EXECUTED if ( status == -1 ) 484f8: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 484fc: 70ff moveq #-1,%d0 <== NOT EXECUTED 484fe: b082 cmpl %d2,%d0 <== NOT EXECUTED 48500: 6708 beqs 4850a <== NOT EXECUTED return_id: #if defined(RTEMS_USE_16_BIT_OBJECT) the_semaphore->Semaphore_id = the_semaphore->Object.id; id = &the_semaphore->Semaphore_id; #else id = (sem_t *)&the_semaphore->Object.id; 48502: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 48506: 5080 addql #8,%d0 <== NOT EXECUTED #endif return id; 48508: 6002 bras 4850c <== NOT EXECUTED */ _Thread_Enable_dispatch(); if ( status == -1 ) return SEM_FAILED; 4850a: 70ff moveq #-1,%d0 <== NOT EXECUTED id = &the_semaphore->Semaphore_id; #else id = (sem_t *)&the_semaphore->Object.id; #endif return id; } 4850c: 4cee 043c ffe0 moveml %fp@(-32),%d2-%d5/%a2 <== NOT EXECUTED 48512: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00048518 : */ int sem_post( sem_t *sem ) { 48518: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 4851c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 48520: 486e fffc pea %fp@(-4) <== NOT EXECUTED 48524: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 48526: 4879 0006 362a pea 6362a <_POSIX_Semaphore_Information> <== NOT EXECUTED 4852c: 4eb9 0004 a2fc jsr 4a2fc <_Objects_Get> <== NOT EXECUTED register POSIX_Semaphore_Control *the_semaphore; Objects_Locations location; the_semaphore = _POSIX_Semaphore_Get( sem, &location ); switch ( location ) { 48532: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 48536: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4853a: 6620 bnes 4855c <== NOT EXECUTED case OBJECTS_LOCAL: _CORE_semaphore_Surrender( 4853c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4853e: 42a7 clrl %sp@- <== NOT EXECUTED 48540: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 48544: 4868 001a pea %a0@(26) <== NOT EXECUTED 48548: 4eb9 0004 9978 jsr 49978 <_CORE_semaphore_Surrender> <== NOT EXECUTED NULL /* XXX need to define a routine to handle this case */ #else NULL #endif ); _Thread_Enable_dispatch(); 4854e: 4eb9 0004 ade2 jsr 4ade2 <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 48554: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 48558: 4280 clrl %d0 <== NOT EXECUTED 4855a: 600e bras 4856a <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 4855c: 4eb9 0005 07b8 jsr 507b8 <__errno> <== NOT EXECUTED 48562: 2040 moveal %d0,%a0 <== NOT EXECUTED 48564: 7016 moveq #22,%d0 <== NOT EXECUTED 48566: 2080 movel %d0,%a0@ <== NOT EXECUTED 48568: 70ff moveq #-1,%d0 <== NOT EXECUTED } 4856a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00048570 : int sem_timedwait( sem_t *sem, const struct timespec *abstime ) { 48570: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED * * If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID, * POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW, * then we should not wait. */ status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks ); 48574: 486e fffc pea %fp@(-4) <== NOT EXECUTED 48578: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4857c: 4eb9 0004 d4c0 jsr 4d4c0 <_POSIX_Absolute_timeout_to_ticks><== NOT EXECUTED if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE ) do_wait = false; lock_status = _POSIX_Semaphore_Wait_support( sem, do_wait, ticks ); 48582: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED 48586: 7203 moveq #3,%d1 <== NOT EXECUTED 48588: b280 cmpl %d0,%d1 <== NOT EXECUTED 4858a: 57c0 seq %d0 <== NOT EXECUTED 4858c: 49c0 extbl %d0 <== NOT EXECUTED 4858e: 4480 negl %d0 <== NOT EXECUTED 48590: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48592: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 48596: 4eb9 0004 e030 jsr 4e030 <_POSIX_Semaphore_Wait_support> <== NOT EXECUTED lock_status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW ) rtems_set_errno_and_return_minus_one( ETIMEDOUT ); } return lock_status; } 4859c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000485a0 : */ int sem_trywait( sem_t *sem ) { 485a0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _POSIX_Semaphore_Wait_support(sem, false, THREAD_QUEUE_WAIT_FOREVER); 485a4: 42a7 clrl %sp@- <== NOT EXECUTED 485a6: 42a7 clrl %sp@- <== NOT EXECUTED 485a8: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 485ac: 4eb9 0004 e030 jsr 4e030 <_POSIX_Semaphore_Wait_support> <== NOT EXECUTED } 485b2: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000485b8 : */ int sem_unlink( const char *name ) { 485b8: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED 485bc: 2039 0006 33f4 movel 633f4 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 485c2: 5280 addql #1,%d0 <== NOT EXECUTED 485c4: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 485c8: 23c0 0006 33f4 movel %d0,633f4 <_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 ); 485ce: 486e fffc pea %fp@(-4) <== NOT EXECUTED 485d2: 47f9 0004 ade2 lea 4ade2 <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED 485d8: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 485dc: 4eb9 0004 dfbc jsr 4dfbc <_POSIX_Semaphore_Name_to_id> <== NOT EXECUTED if ( status != 0 ) { 485e2: 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 ); 485e4: 2400 movel %d0,%d2 <== NOT EXECUTED if ( status != 0 ) { 485e6: 6710 beqs 485f8 <== NOT EXECUTED _Thread_Enable_dispatch(); 485e8: 4e93 jsr %a3@ <== NOT EXECUTED rtems_set_errno_and_return_minus_one( status ); 485ea: 4eb9 0005 07b8 jsr 507b8 <__errno> <== NOT EXECUTED 485f0: 2040 moveal %d0,%a0 <== NOT EXECUTED 485f2: 70ff moveq #-1,%d0 <== NOT EXECUTED 485f4: 2082 movel %d2,%a0@ <== NOT EXECUTED 485f6: 6034 bras 4862c <== NOT EXECUTED */ #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return NULL; #endif return information->local_table[ index ]; 485f8: 4280 clrl %d0 <== NOT EXECUTED 485fa: 2079 0006 3642 moveal 63642 <_POSIX_Semaphore_Information+0x18>,%a0<== NOT EXECUTED 48600: 302e fffe movew %fp@(-2),%d0 <== NOT EXECUTED } the_semaphore = (POSIX_Semaphore_Control *) _Objects_Get_local_object( 48604: 2470 0c00 moveal %a0@(00000000,%d0:l:4),%a2 <== NOT EXECUTED &_POSIX_Semaphore_Information, _Objects_Get_index( the_semaphore_id ) ); the_semaphore->linked = false; 48608: 4200 clrb %d0 <== NOT EXECUTED 4860a: 1540 0015 moveb %d0,%a2@(21) <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _POSIX_Semaphore_Namespace_remove ( POSIX_Semaphore_Control *the_semaphore ) { _Objects_Namespace_remove( 4860e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48610: 4879 0006 362a pea 6362a <_POSIX_Semaphore_Information> <== NOT EXECUTED 48616: 4eb9 0004 a458 jsr 4a458 <_Objects_Namespace_remove> <== NOT EXECUTED _POSIX_Semaphore_Namespace_remove( the_semaphore ); _POSIX_Semaphore_Delete( the_semaphore ); 4861c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4861e: 4eb9 0004 df6c jsr 4df6c <_POSIX_Semaphore_Delete> <== NOT EXECUTED _Thread_Enable_dispatch(); 48624: 4e93 jsr %a3@ <== NOT EXECUTED return 0; 48626: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4862a: 4280 clrl %d0 <== NOT EXECUTED } 4862c: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED 48632: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00048638 : */ int sem_wait( sem_t *sem ) { 48638: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return _POSIX_Semaphore_Wait_support( sem, true, THREAD_QUEUE_WAIT_FOREVER ); 4863c: 42a7 clrl %sp@- <== NOT EXECUTED 4863e: 4878 0001 pea 1 <== NOT EXECUTED 48642: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 48646: 4eb9 0004 e030 jsr 4e030 <_POSIX_Semaphore_Wait_support> <== NOT EXECUTED } 4864c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045354 : int setitimer( int which, const struct itimerval *value, struct itimerval *ovalue ) { 45354: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED if ( !value ) 45358: 4aae 000c tstl %fp@(12) <== NOT EXECUTED 4535c: 6706 beqs 45364 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EFAULT ); if ( !ovalue ) 4535e: 4aae 0010 tstl %fp@(16) <== NOT EXECUTED 45362: 660e bnes 45372 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EFAULT ); 45364: 4eb9 0004 cf50 jsr 4cf50 <__errno> <== NOT EXECUTED 4536a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4536c: 700e moveq #14,%d0 <== NOT EXECUTED 4536e: 2080 movel %d0,%a0@ <== NOT EXECUTED 45370: 6020 bras 45392 <== NOT EXECUTED 45372: 41f9 0004 cf50 lea 4cf50 <__errno>,%a0 <== NOT EXECUTED switch ( which ) { 45378: 7002 moveq #2,%d0 <== NOT EXECUTED 4537a: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED 4537e: 650a bcss 4538a <== NOT EXECUTED case ITIMER_REAL: case ITIMER_VIRTUAL: case ITIMER_PROF: rtems_set_errno_and_return_minus_one( ENOSYS ); 45380: 4e90 jsr %a0@ <== NOT EXECUTED 45382: 7258 moveq #88,%d1 <== NOT EXECUTED 45384: 2040 moveal %d0,%a0 <== NOT EXECUTED 45386: 2081 movel %d1,%a0@ <== NOT EXECUTED 45388: 6008 bras 45392 <== NOT EXECUTED default: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 4538a: 4e90 jsr %a0@ <== NOT EXECUTED 4538c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4538e: 7016 moveq #22,%d0 <== NOT EXECUTED 45390: 2080 movel %d0,%a0@ <== NOT EXECUTED } 45392: 70ff moveq #-1,%d0 <== NOT EXECUTED 45394: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045c98 : int sigaction( int sig, const struct sigaction *act, struct sigaction *oact ) { 45c98: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 45c9c: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED 45ca0: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED 45ca4: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED 45ca8: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED ISR_Level level; if ( oact ) 45cac: 4a81 tstl %d1 <== NOT EXECUTED 45cae: 6722 beqs 45cd2 <== NOT EXECUTED *oact = _POSIX_signals_Vectors[ sig ]; 45cb0: 2602 movel %d2,%d3 <== NOT EXECUTED 45cb2: 2002 movel %d2,%d0 <== NOT EXECUTED 45cb4: 4878 000c pea c <== NOT EXECUTED 45cb8: e58b lsll #2,%d3 <== NOT EXECUTED 45cba: e988 lsll #4,%d0 <== NOT EXECUTED 45cbc: 9083 subl %d3,%d0 <== NOT EXECUTED 45cbe: 0680 0006 05f4 addil #394740,%d0 <== NOT EXECUTED 45cc4: 2f00 movel %d0,%sp@- <== NOT EXECUTED 45cc6: 2f01 movel %d1,%sp@- <== NOT EXECUTED 45cc8: 4eb9 0004 e0a0 jsr 4e0a0 <== NOT EXECUTED 45cce: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED if ( !sig ) 45cd2: 4a82 tstl %d2 <== NOT EXECUTED 45cd4: 6710 beqs 45ce6 <== NOT EXECUTED static inline bool is_valid_signo( int signo ) { return ((signo) >= 1 && (signo) <= 32 ); 45cd6: 2002 movel %d2,%d0 <== NOT EXECUTED 45cd8: 5380 subql #1,%d0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); if ( !is_valid_signo(sig) ) 45cda: 721f moveq #31,%d1 <== NOT EXECUTED 45cdc: b280 cmpl %d0,%d1 <== NOT EXECUTED 45cde: 6506 bcss 45ce6 <== NOT EXECUTED * * NOTE: Solaris documentation claims to "silently enforce" this which * contradicts the POSIX specification. */ if ( sig == SIGKILL ) 45ce0: 7009 moveq #9,%d0 <== NOT EXECUTED 45ce2: b082 cmpl %d2,%d0 <== NOT EXECUTED 45ce4: 6610 bnes 45cf6 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 45ce6: 4eb9 0004 d7dc jsr 4d7dc <__errno> <== NOT EXECUTED 45cec: 2040 moveal %d0,%a0 <== NOT EXECUTED 45cee: 7016 moveq #22,%d0 <== NOT EXECUTED 45cf0: 2080 movel %d0,%a0@ <== NOT EXECUTED 45cf2: 70ff moveq #-1,%d0 <== NOT EXECUTED 45cf4: 6060 bras 45d56 <== NOT EXECUTED /* * Evaluate the new action structure and set the global signal vector * appropriately. */ if ( act ) { 45cf6: 4a8a tstl %a2 <== NOT EXECUTED 45cf8: 675a beqs 45d54 <== 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 ); 45cfa: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED 45d00: 40c3 movew %sr,%d3 <== NOT EXECUTED 45d02: 8083 orl %d3,%d0 <== NOT EXECUTED 45d04: 46c0 movew %d0,%sr <== NOT EXECUTED 45d06: 780c moveq #12,%d4 <== NOT EXECUTED 45d08: 4c02 4800 mulsl %d2,%d4 <== NOT EXECUTED 45d0c: 47f9 0004 e0a0 lea 4e0a0 ,%a3 <== NOT EXECUTED if ( act->sa_handler == SIG_DFL ) { 45d12: 4aaa 0008 tstl %a2@(8) <== NOT EXECUTED 45d16: 661e bnes 45d36 <== NOT EXECUTED _POSIX_signals_Vectors[ sig ] = _POSIX_signals_Default_vectors[ sig ]; 45d18: 4878 000c pea c <== NOT EXECUTED 45d1c: 2004 movel %d4,%d0 <== NOT EXECUTED 45d1e: 0680 0005 db60 addil #383840,%d0 <== NOT EXECUTED 45d24: 2f00 movel %d0,%sp@- <== NOT EXECUTED 45d26: 0684 0006 05f4 addil #394740,%d4 <== NOT EXECUTED 45d2c: 2f04 movel %d4,%sp@- <== NOT EXECUTED 45d2e: 4e93 jsr %a3@ <== NOT EXECUTED 45d30: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 45d34: 601c bras 45d52 <== NOT EXECUTED } else { _POSIX_signals_Clear_process_signals( sig ); 45d36: 2f02 movel %d2,%sp@- <== NOT EXECUTED _POSIX_signals_Vectors[ sig ] = *act; 45d38: 0684 0006 05f4 addil #394740,%d4 <== NOT EXECUTED _ISR_Disable( level ); if ( act->sa_handler == SIG_DFL ) { _POSIX_signals_Vectors[ sig ] = _POSIX_signals_Default_vectors[ sig ]; } else { _POSIX_signals_Clear_process_signals( sig ); 45d3e: 4eb9 0004 ae94 jsr 4ae94 <_POSIX_signals_Clear_process_signals><== NOT EXECUTED _POSIX_signals_Vectors[ sig ] = *act; 45d44: 4878 000c pea c <== NOT EXECUTED 45d48: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45d4a: 2f04 movel %d4,%sp@- <== NOT EXECUTED 45d4c: 4e93 jsr %a3@ <== NOT EXECUTED 45d4e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED } _ISR_Enable( level ); 45d52: 46c3 movew %d3,%sr <== NOT EXECUTED * now (signals not posted when SIG_IGN). * + If we are now ignoring a signal that was previously pending, * we clear the pending signal indicator. */ return 0; 45d54: 4280 clrl %d0 <== NOT EXECUTED } 45d56: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED 45d5c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045d60 : int sigaddset( sigset_t *set, int signo ) { 45d60: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45d64: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 45d68: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED if ( !set ) 45d6c: 4a88 tstl %a0 <== NOT EXECUTED 45d6e: 670c beqs 45d7c <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); if ( !signo ) 45d70: 4a81 tstl %d1 <== NOT EXECUTED 45d72: 6708 beqs 45d7c <== NOT EXECUTED 45d74: 5381 subql #1,%d1 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); if ( !is_valid_signo(signo) ) 45d76: 701f moveq #31,%d0 <== NOT EXECUTED 45d78: b081 cmpl %d1,%d0 <== NOT EXECUTED 45d7a: 6410 bccs 45d8c <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 45d7c: 4eb9 0004 d7dc jsr 4d7dc <__errno> <== NOT EXECUTED 45d82: 2040 moveal %d0,%a0 <== NOT EXECUTED 45d84: 7016 moveq #22,%d0 <== NOT EXECUTED 45d86: 2080 movel %d0,%a0@ <== NOT EXECUTED 45d88: 70ff moveq #-1,%d0 <== NOT EXECUTED 45d8a: 6008 bras 45d94 <== NOT EXECUTED static inline sigset_t signo_to_mask( uint32_t sig ) { return 1u << (sig - 1); 45d8c: 7001 moveq #1,%d0 <== NOT EXECUTED 45d8e: e3a8 lsll %d1,%d0 <== NOT EXECUTED *set |= signo_to_mask(signo); 45d90: 8190 orl %d0,%a0@ <== NOT EXECUTED return 0; 45d92: 4280 clrl %d0 <== NOT EXECUTED } 45d94: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00047a94 : int sigdelset( sigset_t *set, int signo ) { 47a94: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47a98: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 47a9c: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED if ( !set ) 47aa0: 4a88 tstl %a0 <== NOT EXECUTED 47aa2: 670c beqs 47ab0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); if ( !signo ) 47aa4: 4a81 tstl %d1 <== NOT EXECUTED 47aa6: 6720 beqs 47ac8 <== NOT EXECUTED static inline bool is_valid_signo( int signo ) { return ((signo) >= 1 && (signo) <= 32 ); 47aa8: 5381 subql #1,%d1 <== NOT EXECUTED return 0; if ( !is_valid_signo(signo) ) 47aaa: 701f moveq #31,%d0 <== NOT EXECUTED 47aac: b081 cmpl %d1,%d0 <== NOT EXECUTED 47aae: 6410 bccs 47ac0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 47ab0: 4eb9 0004 f588 jsr 4f588 <__errno> <== NOT EXECUTED 47ab6: 2040 moveal %d0,%a0 <== NOT EXECUTED 47ab8: 7016 moveq #22,%d0 <== NOT EXECUTED 47aba: 2080 movel %d0,%a0@ <== NOT EXECUTED 47abc: 70ff moveq #-1,%d0 <== NOT EXECUTED 47abe: 600a bras 47aca <== NOT EXECUTED static inline sigset_t signo_to_mask( uint32_t sig ) { return 1u << (sig - 1); 47ac0: 7001 moveq #1,%d0 <== NOT EXECUTED 47ac2: e3a8 lsll %d1,%d0 <== NOT EXECUTED *set &= ~signo_to_mask(signo); 47ac4: 4680 notl %d0 <== NOT EXECUTED 47ac6: c190 andl %d0,%a0@ <== NOT EXECUTED { if ( !set ) rtems_set_errno_and_return_minus_one( EINVAL ); if ( !signo ) return 0; 47ac8: 4280 clrl %d0 <== NOT EXECUTED if ( !is_valid_signo(signo) ) rtems_set_errno_and_return_minus_one( EINVAL ); *set &= ~signo_to_mask(signo); return 0; } 47aca: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004a548 : #include int sigemptyset( sigset_t *set ) { 4a548: 4e56 0000 linkw %fp,#0 4a54c: 206e 0008 moveal %fp@(8),%a0 if ( !set ) 4a550: 4a88 tstl %a0 4a552: 6610 bnes 4a564 <== ALWAYS TAKEN rtems_set_errno_and_return_minus_one( EINVAL ); 4a554: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED 4a55a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4a55c: 7016 moveq #22,%d0 <== NOT EXECUTED 4a55e: 2080 movel %d0,%a0@ <== NOT EXECUTED 4a560: 70ff moveq #-1,%d0 <== NOT EXECUTED 4a562: 6004 bras 4a568 <== NOT EXECUTED *set = 0; 4a564: 4290 clrl %a0@ return 0; 4a566: 4280 clrl %d0 } 4a568: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00047af4 : #include int sigfillset( sigset_t *set ) { 47af4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47af8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED if ( !set ) 47afc: 4a88 tstl %a0 <== NOT EXECUTED 47afe: 6610 bnes 47b10 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 47b00: 4eb9 0004 f588 jsr 4f588 <__errno> <== NOT EXECUTED 47b06: 7216 moveq #22,%d1 <== NOT EXECUTED 47b08: 2040 moveal %d0,%a0 <== NOT EXECUTED 47b0a: 70ff moveq #-1,%d0 <== NOT EXECUTED 47b0c: 2081 movel %d1,%a0@ <== NOT EXECUTED 47b0e: 6006 bras 47b16 <== NOT EXECUTED *set = SIGNAL_ALL_MASK; 47b10: 70ff moveq #-1,%d0 <== NOT EXECUTED 47b12: 2080 movel %d0,%a0@ <== NOT EXECUTED return 0; 47b14: 4280 clrl %d0 <== NOT EXECUTED } 47b16: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00047b1c : int sigismember( const sigset_t *set, int signo ) { 47b1c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47b20: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 47b24: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED if ( !set ) 47b28: 4a88 tstl %a0 <== NOT EXECUTED 47b2a: 670c beqs 47b38 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); if ( !signo ) 47b2c: 4a81 tstl %d1 <== NOT EXECUTED 47b2e: 6726 beqs 47b56 <== NOT EXECUTED static inline bool is_valid_signo( int signo ) { return ((signo) >= 1 && (signo) <= 32 ); 47b30: 5381 subql #1,%d1 <== NOT EXECUTED return 0; if ( !is_valid_signo(signo) ) 47b32: 701f moveq #31,%d0 <== NOT EXECUTED 47b34: b081 cmpl %d1,%d0 <== NOT EXECUTED 47b36: 6410 bccs 47b48 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 47b38: 4eb9 0004 f588 jsr 4f588 <__errno> <== NOT EXECUTED 47b3e: 2040 moveal %d0,%a0 <== NOT EXECUTED 47b40: 7016 moveq #22,%d0 <== NOT EXECUTED 47b42: 2080 movel %d0,%a0@ <== NOT EXECUTED 47b44: 70ff moveq #-1,%d0 <== NOT EXECUTED 47b46: 6010 bras 47b58 <== NOT EXECUTED static inline sigset_t signo_to_mask( uint32_t sig ) { return 1u << (sig - 1); 47b48: 7001 moveq #1,%d0 <== NOT EXECUTED 47b4a: e3a8 lsll %d1,%d0 <== NOT EXECUTED if ( *set & signo_to_mask(signo) ) 47b4c: c090 andl %a0@,%d0 <== NOT EXECUTED const sigset_t *set, int signo ) { if ( !set ) rtems_set_errno_and_return_minus_one( EINVAL ); 47b4e: 56c0 sne %d0 <== NOT EXECUTED 47b50: 49c0 extbl %d0 <== NOT EXECUTED 47b52: 4480 negl %d0 <== NOT EXECUTED 47b54: 6002 bras 47b58 <== NOT EXECUTED if ( !signo ) return 0; 47b56: 4280 clrl %d0 <== NOT EXECUTED if ( *set & signo_to_mask(signo) ) return 1; return 0; } 47b58: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045cdc : sighandler_t signal( int signum, sighandler_t handler ) { 45cdc: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED struct sigaction s; struct sigaction old; s.sa_handler = handler ; 45ce0: 2d6e 000c fffc movel %fp@(12),%fp@(-4) <== NOT EXECUTED sigemptyset(&s.sa_mask); 45ce6: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 45cea: 4eb9 0004 5cb8 jsr 45cb8 <== NOT EXECUTED s.sa_flags = SA_RESTART; #else s.sa_flags = 0; #endif sigaction( signum, &s, &old ); 45cf0: 486e ffe8 pea %fp@(-24) <== NOT EXECUTED 45cf4: 486e fff4 pea %fp@(-12) <== NOT EXECUTED 45cf8: 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; 45cfc: 42ae fff4 clrl %fp@(-12) <== NOT EXECUTED #endif sigaction( signum, &s, &old ); 45d00: 4eb9 0004 5bb8 jsr 45bb8 <== NOT EXECUTED return (sighandler_t) old.sa_handler; } 45d06: 202e fff0 movel %fp@(-16),%d0 <== NOT EXECUTED 45d0a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00045dbc : #include int sigpending( sigset_t *set ) { 45dbc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 45dc0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED POSIX_API_Control *api; if ( !set ) 45dc4: 4a88 tstl %a0 <== NOT EXECUTED 45dc6: 6610 bnes 45dd8 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 45dc8: 4eb9 0004 d7dc jsr 4d7dc <__errno> <== NOT EXECUTED 45dce: 2040 moveal %d0,%a0 <== NOT EXECUTED 45dd0: 7016 moveq #22,%d0 <== NOT EXECUTED 45dd2: 2080 movel %d0,%a0@ <== NOT EXECUTED 45dd4: 70ff moveq #-1,%d0 <== NOT EXECUTED 45dd6: 6018 bras 45df0 <== NOT EXECUTED api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; 45dd8: 2279 0006 05c2 moveal 605c2 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED *set = api->signals_pending | _POSIX_signals_Pending; 45dde: 2039 0006 07e8 movel 607e8 <_POSIX_signals_Pending>,%d0 <== NOT EXECUTED 45de4: 2269 0102 moveal %a1@(258),%a1 <== NOT EXECUTED 45de8: 80a9 00d4 orl %a1@(212),%d0 <== NOT EXECUTED 45dec: 2080 movel %d0,%a0@ <== NOT EXECUTED return 0; 45dee: 4280 clrl %d0 <== NOT EXECUTED } 45df0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045df4 : int sigprocmask( int how, const sigset_t *set, sigset_t *oset ) { 45df4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED #if defined(RTEMS_POSIX_API) return pthread_sigmask( how, set, oset ); #else return -1; #endif } 45df8: 4e5e unlk %fp <== NOT EXECUTED /* * P1003.1c/Draft 10, p. 38 maps sigprocmask to pthread_sigmask. */ #if defined(RTEMS_POSIX_API) return pthread_sigmask( how, set, oset ); 45dfa: 4ef9 0004 b540 jmp 4b540 <== NOT EXECUTED =============================================================================== 00047ba0 : int sigqueue( pid_t pid, int signo, const union sigval value ) { 47ba0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return killinfo( pid, signo, &value ); 47ba4: 486e 0010 pea %fp@(16) <== NOT EXECUTED 47ba8: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 47bac: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47bb0: 4eb9 0004 cdac jsr 4cdac <== NOT EXECUTED } 47bb6: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00047bbc : #include int sigsuspend( const sigset_t *sigmask ) { 47bbc: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 47bc0: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED /* * We use SIG_BLOCK and not SIG_SETMASK because there may be * signals which might be pending, which might get caught here. * We want the signals to be caught inside sigtimedwait. */ status = sigprocmask( SIG_BLOCK, sigmask, &saved_signals_blocked ); 47bc4: 240e movel %fp,%d2 <== NOT EXECUTED 47bc6: 5982 subql #4,%d2 <== NOT EXECUTED 47bc8: 45f9 0004 7b94 lea 47b94 ,%a2 <== NOT EXECUTED 47bce: 2f02 movel %d2,%sp@- <== NOT EXECUTED #include int sigsuspend( const sigset_t *sigmask ) { 47bd0: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED /* * We use SIG_BLOCK and not SIG_SETMASK because there may be * signals which might be pending, which might get caught here. * We want the signals to be caught inside sigtimedwait. */ status = sigprocmask( SIG_BLOCK, sigmask, &saved_signals_blocked ); 47bd4: 2f0b movel %a3,%sp@- <== NOT EXECUTED 47bd6: 4878 0001 pea 1 <== NOT EXECUTED 47bda: 4e92 jsr %a2@ <== NOT EXECUTED current_unblocked_signals = ~(*sigmask); 47bdc: 2013 movel %a3@,%d0 <== NOT EXECUTED 47bde: 4680 notl %d0 <== NOT EXECUTED status = sigtimedwait( ¤t_unblocked_signals, NULL, NULL ); 47be0: 42a7 clrl %sp@- <== NOT EXECUTED 47be2: 42a7 clrl %sp@- <== NOT EXECUTED 47be4: 486e fff8 pea %fp@(-8) <== NOT EXECUTED * signals which might be pending, which might get caught here. * We want the signals to be caught inside sigtimedwait. */ status = sigprocmask( SIG_BLOCK, sigmask, &saved_signals_blocked ); current_unblocked_signals = ~(*sigmask); 47be8: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED status = sigtimedwait( ¤t_unblocked_signals, NULL, NULL ); 47bec: 4eb9 0004 7c64 jsr 47c64 <== NOT EXECUTED (void) sigprocmask( SIG_SETMASK, &saved_signals_blocked, NULL ); 47bf2: 42a7 clrl %sp@- <== NOT EXECUTED 47bf4: 2f02 movel %d2,%sp@- <== NOT EXECUTED 47bf6: 42a7 clrl %sp@- <== NOT EXECUTED 47bf8: 4e92 jsr %a2@ <== NOT EXECUTED */ #if defined(RTEMS_DEBUG) assert( status != -1 ); #endif rtems_set_errno_and_return_minus_one( EINTR ); 47bfa: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED 47bfe: 4eb9 0004 f588 jsr 4f588 <__errno> <== NOT EXECUTED } 47c04: 4cee 0c04 ffec moveml %fp@(-20),%d2/%a2-%a3 <== NOT EXECUTED */ #if defined(RTEMS_DEBUG) assert( status != -1 ); #endif rtems_set_errno_and_return_minus_one( EINTR ); 47c0a: 2040 moveal %d0,%a0 <== NOT EXECUTED 47c0c: 7004 moveq #4,%d0 <== NOT EXECUTED } 47c0e: 4e5e unlk %fp <== NOT EXECUTED */ #if defined(RTEMS_DEBUG) assert( status != -1 ); #endif rtems_set_errno_and_return_minus_one( EINTR ); 47c10: 2080 movel %d0,%a0@ <== NOT EXECUTED } 47c12: 70ff moveq #-1,%d0 <== NOT EXECUTED ... =============================================================================== 0004607c : int sigtimedwait( const sigset_t *set, siginfo_t *info, const struct timespec *timeout ) { 4607c: 4e56 ffd8 linkw %fp,#-40 <== NOT EXECUTED 46080: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@ <== NOT EXECUTED 46084: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED 46088: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 4608c: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED ISR_Level level; /* * Error check parameters before disabling interrupts. */ if ( !set ) 46090: 4a8b tstl %a3 <== NOT EXECUTED 46092: 6730 beqs 460c4 <== NOT EXECUTED /* NOTE: This is very specifically a RELATIVE not ABSOLUTE time * in the Open Group specification. */ interval = 0; if ( timeout ) { 46094: 4a82 tstl %d2 <== NOT EXECUTED 46096: 673c beqs 460d4 <== NOT EXECUTED if ( !_Timespec_Is_valid( timeout ) ) 46098: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4609a: 4eb9 0004 93f4 jsr 493f4 <_Timespec_Is_valid> <== NOT EXECUTED 460a0: 588f addql #4,%sp <== NOT EXECUTED 460a2: 4a00 tstb %d0 <== NOT EXECUTED 460a4: 6610 bnes 460b6 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 460a6: 4eb9 0004 dd50 jsr 4dd50 <__errno> <== NOT EXECUTED 460ac: 7616 moveq #22,%d3 <== NOT EXECUTED 460ae: 2240 moveal %d0,%a1 <== NOT EXECUTED 460b0: 2283 movel %d3,%a1@ <== NOT EXECUTED 460b2: 6000 0144 braw 461f8 <== NOT EXECUTED interval = _Timespec_To_ticks( timeout ); 460b6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 460b8: 4eb9 0004 9460 jsr 49460 <_Timespec_To_ticks> <== NOT EXECUTED if ( !interval ) 460be: 588f addql #4,%sp <== NOT EXECUTED 460c0: 4a80 tstl %d0 <== NOT EXECUTED 460c2: 6612 bnes 460d6 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 460c4: 4eb9 0004 dd50 jsr 4dd50 <__errno> <== NOT EXECUTED 460ca: 7416 moveq #22,%d2 <== NOT EXECUTED 460cc: 2040 moveal %d0,%a0 <== NOT EXECUTED 460ce: 2082 movel %d2,%a0@ <== NOT EXECUTED 460d0: 6000 0126 braw 461f8 <== NOT EXECUTED /* NOTE: This is very specifically a RELATIVE not ABSOLUTE time * in the Open Group specification. */ interval = 0; 460d4: 4280 clrl %d0 <== NOT EXECUTED /* * Initialize local variables. */ the_info = ( info ) ? info : &signal_information; 460d6: 4a8a tstl %a2 <== NOT EXECUTED 460d8: 6604 bnes 460de <== NOT EXECUTED 460da: 45ee fff4 lea %fp@(-12),%a2 <== NOT EXECUTED the_thread = _Thread_Executing; 460de: 2079 0006 0992 moveal 60992 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED * What if they are already pending? */ /* API signals pending? */ _ISR_Disable( level ); 460e4: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED the_info = ( info ) ? info : &signal_information; the_thread = _Thread_Executing; api = the_thread->API_Extensions[ THREAD_API_POSIX ]; 460ea: 2868 0102 moveal %a0@(258),%a4 <== NOT EXECUTED * What if they are already pending? */ /* API signals pending? */ _ISR_Disable( level ); 460ee: 40c3 movew %sr,%d3 <== NOT EXECUTED 460f0: 8283 orl %d3,%d1 <== NOT EXECUTED 460f2: 46c1 movew %d1,%sr <== NOT EXECUTED if ( *set & api->signals_pending ) { 460f4: 2413 movel %a3@,%d2 <== NOT EXECUTED 460f6: 2802 movel %d2,%d4 <== NOT EXECUTED 460f8: 222c 00d4 movel %a4@(212),%d1 <== NOT EXECUTED 460fc: c881 andl %d1,%d4 <== NOT EXECUTED 460fe: 672a beqs 4612a <== NOT EXECUTED /* XXX real info later */ the_info->si_signo = _POSIX_signals_Get_lowest( api->signals_pending ); 46100: 2f01 movel %d1,%sp@- <== NOT EXECUTED 46102: 4eb9 0004 6030 jsr 46030 <_POSIX_signals_Get_lowest> <== NOT EXECUTED 46108: 2480 movel %d0,%a2@ <== NOT EXECUTED _POSIX_signals_Clear_signals( 4610a: 4297 clrl %sp@ <== NOT EXECUTED 4610c: 42a7 clrl %sp@- <== NOT EXECUTED 4610e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 46110: 2f00 movel %d0,%sp@- <== NOT EXECUTED 46112: 2f0c movel %a4,%sp@- <== NOT EXECUTED 46114: 4eb9 0004 b4d0 jsr 4b4d0 <_POSIX_signals_Clear_signals> <== NOT EXECUTED the_info->si_signo, the_info, false, false ); _ISR_Enable( level ); 4611a: 46c3 movew %d3,%sr <== NOT EXECUTED the_info->si_code = SI_USER; 4611c: 7001 moveq #1,%d0 <== NOT EXECUTED the_info->si_value.sival_int = 0; 4611e: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED return the_info->si_signo; 46122: 2412 movel %a2@,%d2 <== NOT EXECUTED false, false ); _ISR_Enable( level ); the_info->si_code = SI_USER; 46124: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED 46128: 6036 bras 46160 <== NOT EXECUTED return the_info->si_signo; } /* Process pending signals? */ if ( *set & _POSIX_signals_Pending ) { 4612a: 2239 0006 0bb8 movel 60bb8 <_POSIX_signals_Pending>,%d1 <== NOT EXECUTED 46130: 4bf9 0004 b4d0 lea 4b4d0 <_POSIX_signals_Clear_signals>,%a5<== NOT EXECUTED 46136: c481 andl %d1,%d2 <== NOT EXECUTED 46138: 672e beqs 46168 <== NOT EXECUTED signo = _POSIX_signals_Get_lowest( _POSIX_signals_Pending ); 4613a: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4613c: 4eb9 0004 6030 jsr 46030 <_POSIX_signals_Get_lowest> <== NOT EXECUTED 46142: 2400 movel %d0,%d2 <== NOT EXECUTED _POSIX_signals_Clear_signals( api, signo, the_info, true, false ); 46144: 4297 clrl %sp@ <== NOT EXECUTED 46146: 4878 0001 pea 1 <== NOT EXECUTED 4614a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4614c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4614e: 2f0c movel %a4,%sp@- <== NOT EXECUTED 46150: 4e95 jsr %a5@ <== NOT EXECUTED _ISR_Enable( level ); 46152: 46c3 movew %d3,%sr <== NOT EXECUTED the_info->si_signo = signo; the_info->si_code = SI_USER; 46154: 7201 moveq #1,%d1 <== NOT EXECUTED if ( *set & _POSIX_signals_Pending ) { signo = _POSIX_signals_Get_lowest( _POSIX_signals_Pending ); _POSIX_signals_Clear_signals( api, signo, the_info, true, false ); _ISR_Enable( level ); the_info->si_signo = signo; 46156: 2482 movel %d2,%a2@ <== NOT EXECUTED the_info->si_code = SI_USER; 46158: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED the_info->si_value.sival_int = 0; 4615c: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED return signo; 46160: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 46164: 6000 0094 braw 461fa <== NOT EXECUTED } the_info->si_signo = -1; 46168: 72ff moveq #-1,%d1 <== NOT EXECUTED 4616a: 2481 movel %d1,%a2@ <== NOT EXECUTED 4616c: 2239 0006 0508 movel 60508 <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED 46172: 5281 addql #1,%d1 <== NOT EXECUTED 46174: 23c1 0006 0508 movel %d1,60508 <_Thread_Dispatch_disable_level><== NOT EXECUTED _Thread_Disable_dispatch(); the_thread->Wait.queue = &_POSIX_signals_Wait_queue; the_thread->Wait.return_code = EINTR; 4617a: 7204 moveq #4,%d1 <== NOT EXECUTED } the_info->si_signo = -1; _Thread_Disable_dispatch(); the_thread->Wait.queue = &_POSIX_signals_Wait_queue; 4617c: 43f9 0006 0b50 lea 60b50 <_POSIX_signals_Wait_queue>,%a1 <== NOT EXECUTED the_thread->Wait.return_code = EINTR; 46182: 2141 0034 movel %d1,%a0@(52) <== NOT EXECUTED the_thread->Wait.option = *set; 46186: 2153 0030 movel %a3@,%a0@(48) <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Thread_queue_Enter_critical_section ( Thread_queue_Control *the_thread_queue ) { the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED; 4618a: 123c 0001 moveb #1,%d1 <== NOT EXECUTED the_thread->Wait.return_argument = the_info; 4618e: 214a 0028 movel %a2,%a0@(40) <== NOT EXECUTED } the_info->si_signo = -1; _Thread_Disable_dispatch(); the_thread->Wait.queue = &_POSIX_signals_Wait_queue; 46192: 2149 0044 movel %a1,%a0@(68) <== NOT EXECUTED 46196: 23c1 0006 0b80 movel %d1,60b80 <_POSIX_signals_Wait_queue+0x30><== NOT EXECUTED the_thread->Wait.return_code = EINTR; the_thread->Wait.option = *set; the_thread->Wait.return_argument = the_info; _Thread_queue_Enter_critical_section( &_POSIX_signals_Wait_queue ); _ISR_Enable( level ); 4619c: 46c3 movew %d3,%sr <== NOT EXECUTED _Thread_queue_Enqueue( &_POSIX_signals_Wait_queue, interval ); 4619e: 4879 0004 90a4 pea 490a4 <_Thread_queue_Timeout> <== NOT EXECUTED 461a4: 2f00 movel %d0,%sp@- <== NOT EXECUTED 461a6: 4879 0006 0b50 pea 60b50 <_POSIX_signals_Wait_queue> <== NOT EXECUTED 461ac: 4eb9 0004 8d90 jsr 48d90 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED _Thread_Enable_dispatch(); 461b2: 4eb9 0004 892e jsr 4892e <_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 ); 461b8: 42a7 clrl %sp@- <== NOT EXECUTED 461ba: 42a7 clrl %sp@- <== NOT EXECUTED 461bc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 461be: 2f12 movel %a2@,%sp@- <== NOT EXECUTED 461c0: 2f0c movel %a4,%sp@- <== NOT EXECUTED 461c2: 4e95 jsr %a5@ <== NOT EXECUTED /* Set errno only if return code is not EINTR or * if EINTR was caused by a signal being caught, which * was not in our set. */ if ( (_Thread_Executing->Wait.return_code != EINTR) 461c4: 2079 0006 0992 moveal 60992 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 461ca: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED 461ce: 7004 moveq #4,%d0 <== NOT EXECUTED 461d0: b0a8 0034 cmpl %a0@(52),%d0 <== NOT EXECUTED 461d4: 6610 bnes 461e6 <== NOT EXECUTED || !(*set & signo_to_mask( the_info->si_signo )) ) { 461d6: 2412 movel %a2@,%d2 <== NOT EXECUTED 461d8: 2202 movel %d2,%d1 <== NOT EXECUTED 461da: 5381 subql #1,%d1 <== NOT EXECUTED 461dc: 103c 0001 moveb #1,%d0 <== NOT EXECUTED 461e0: e3a8 lsll %d1,%d0 <== NOT EXECUTED 461e2: c093 andl %a3@,%d0 <== NOT EXECUTED 461e4: 6614 bnes 461fa <== NOT EXECUTED errno = _Thread_Executing->Wait.return_code; 461e6: 4eb9 0004 dd50 jsr 4dd50 <__errno> <== NOT EXECUTED 461ec: 2079 0006 0992 moveal 60992 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED 461f2: 2240 moveal %d0,%a1 <== NOT EXECUTED 461f4: 22a8 0034 movel %a0@(52),%a1@ <== NOT EXECUTED return -1; 461f8: 74ff moveq #-1,%d2 <== NOT EXECUTED } return the_info->si_signo; } 461fa: 2002 movel %d2,%d0 <== NOT EXECUTED 461fc: 4cee 3c1c ffd8 moveml %fp@(-40),%d2-%d4/%a2-%a5 <== NOT EXECUTED 46202: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00047e08 : int sigwait( const sigset_t *set, int *sig ) { 47e08: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 47e0c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 47e0e: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED int status; status = sigtimedwait( set, NULL, NULL ); 47e12: 42a7 clrl %sp@- <== NOT EXECUTED 47e14: 42a7 clrl %sp@- <== NOT EXECUTED 47e16: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47e1a: 4eb9 0004 7c64 jsr 47c64 <== NOT EXECUTED if ( status != -1 ) { 47e20: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 47e24: 72ff moveq #-1,%d1 <== NOT EXECUTED 47e26: b280 cmpl %d0,%d1 <== NOT EXECUTED 47e28: 6708 beqs 47e32 <== NOT EXECUTED if ( sig ) 47e2a: 4a8a tstl %a2 <== NOT EXECUTED 47e2c: 6710 beqs 47e3e <== NOT EXECUTED *sig = status; 47e2e: 2480 movel %d0,%a2@ <== NOT EXECUTED 47e30: 600c bras 47e3e <== NOT EXECUTED return 0; } return errno; 47e32: 4eb9 0004 f588 jsr 4f588 <__errno> <== NOT EXECUTED 47e38: 2040 moveal %d0,%a0 <== NOT EXECUTED 47e3a: 2010 movel %a0@,%d0 <== NOT EXECUTED 47e3c: 6002 bras 47e40 <== NOT EXECUTED status = sigtimedwait( set, NULL, NULL ); if ( status != -1 ) { if ( sig ) *sig = status; return 0; 47e3e: 4280 clrl %d0 <== NOT EXECUTED } return errno; } 47e40: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 47e44: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00047df0 : int sigwaitinfo( const sigset_t *set, siginfo_t *info ) { 47df0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return sigtimedwait( set, info, NULL ); 47df4: 42a7 clrl %sp@- <== NOT EXECUTED 47df6: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 47dfa: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 47dfe: 4eb9 0004 7c64 jsr 47c64 <== NOT EXECUTED } 47e04: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000451f0 : long sysconf( int name ) { if ( name == _SC_CLK_TCK ) 451f0: 7002 moveq #2,%d0 <== NOT EXECUTED */ long sysconf( int name ) { 451f2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 451f6: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED 451fa: 2f02 movel %d2,%sp@- <== NOT EXECUTED if ( name == _SC_CLK_TCK ) 451fc: b081 cmpl %d1,%d0 <== NOT EXECUTED 451fe: 6612 bnes 45212 <== NOT EXECUTED return (TOD_MICROSECONDS_PER_SECOND / 45200: 41f9 0005 d0f4 lea 5d0f4 ,%a0 <== NOT EXECUTED 45206: 203c 000f 4240 movel #1000000,%d0 <== NOT EXECUTED 4520c: 4c50 0000 remul %a0@,%d0,%d0 <== NOT EXECUTED 45210: 6034 bras 45246 <== NOT EXECUTED rtems_configuration_get_microseconds_per_tick()); if ( name == _SC_OPEN_MAX ) 45212: 7004 moveq #4,%d0 <== NOT EXECUTED 45214: b081 cmpl %d1,%d0 <== NOT EXECUTED 45216: 6608 bnes 45220 <== NOT EXECUTED return rtems_libio_number_iops; 45218: 2039 0005 d014 movel 5d014 ,%d0 <== NOT EXECUTED 4521e: 6026 bras 45246 <== NOT EXECUTED if ( name == _SC_GETPW_R_SIZE_MAX ) return 1024; 45220: 203c 0000 0400 movel #1024,%d0 <== NOT EXECUTED rtems_configuration_get_microseconds_per_tick()); if ( name == _SC_OPEN_MAX ) return rtems_libio_number_iops; if ( name == _SC_GETPW_R_SIZE_MAX ) 45226: 7433 moveq #51,%d2 <== NOT EXECUTED 45228: b481 cmpl %d1,%d2 <== NOT EXECUTED 4522a: 671a beqs 45246 <== NOT EXECUTED return 1024; if ( name == _SC_PAGESIZE ) 4522c: 143c 0008 moveb #8,%d2 <== NOT EXECUTED return PAGE_SIZE; 45230: 303c 1000 movew #4096,%d0 <== NOT EXECUTED return rtems_libio_number_iops; if ( name == _SC_GETPW_R_SIZE_MAX ) return 1024; if ( name == _SC_PAGESIZE ) 45234: b481 cmpl %d1,%d2 <== NOT EXECUTED 45236: 670e beqs 45246 <== NOT EXECUTED #if defined(__sparc__) if ( name == 515 ) /* Solaris _SC_STACK_PROT */ return 0; #endif rtems_set_errno_and_return_minus_one( EINVAL ); 45238: 4eb9 0004 ce08 jsr 4ce08 <__errno> <== NOT EXECUTED 4523e: 2040 moveal %d0,%a0 <== NOT EXECUTED 45240: 7016 moveq #22,%d0 <== NOT EXECUTED 45242: 2080 movel %d0,%a0@ <== NOT EXECUTED 45244: 70ff moveq #-1,%d0 <== NOT EXECUTED } 45246: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 4524a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00045294 : timer_t *timerid ) { POSIX_Timer_Control *ptimer; if ( clock_id != CLOCK_REALTIME ) 45294: 7001 moveq #1,%d0 <== NOT EXECUTED int timer_create( clockid_t clock_id, struct sigevent *evp, timer_t *timerid ) { 45296: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4529a: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4529c: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED 452a0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 452a2: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED POSIX_Timer_Control *ptimer; if ( clock_id != CLOCK_REALTIME ) 452a6: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED 452aa: 6620 bnes 452cc <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); if ( !timerid ) 452ac: 4a8b tstl %a3 <== NOT EXECUTED 452ae: 671c beqs 452cc <== NOT EXECUTED /* * The data of the structure evp are checked in order to verify if they * are coherent. */ if (evp != NULL) { 452b0: 4a8a tstl %a2 <== NOT EXECUTED 452b2: 6726 beqs 452da <== NOT EXECUTED /* The structure has data */ if ( ( evp->sigev_notify != SIGEV_NONE ) && 452b4: 2012 movel %a2@,%d0 <== NOT EXECUTED 452b6: 7201 moveq #1,%d1 <== NOT EXECUTED 452b8: 5380 subql #1,%d0 <== NOT EXECUTED 452ba: b280 cmpl %d0,%d1 <== NOT EXECUTED 452bc: 650e bcss 452cc <== 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 ) 452be: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 452c2: 6708 beqs 452cc <== NOT EXECUTED static inline bool is_valid_signo( int signo ) { return ((signo) >= 1 && (signo) <= 32 ); 452c4: 5380 subql #1,%d0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); if ( !is_valid_signo(evp->sigev_signo) ) 452c6: 721f moveq #31,%d1 <== NOT EXECUTED 452c8: b280 cmpl %d0,%d1 <== NOT EXECUTED 452ca: 640e bccs 452da <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 452cc: 4eb9 0004 d23c jsr 4d23c <__errno> <== NOT EXECUTED 452d2: 7216 moveq #22,%d1 <== NOT EXECUTED 452d4: 2040 moveal %d0,%a0 <== NOT EXECUTED 452d6: 2081 movel %d1,%a0@ <== NOT EXECUTED 452d8: 6034 bras 4530e <== NOT EXECUTED rtems_fatal_error_occurred( 99 ); } } #endif _Thread_Dispatch_disable_level += 1; 452da: 2039 0005 f018 movel 5f018 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED 452e0: 5280 addql #1,%d0 <== NOT EXECUTED 452e2: 23c0 0005 f018 movel %d0,5f018 <_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 ); 452e8: 4879 0005 f288 pea 5f288 <_POSIX_Timer_Information> <== NOT EXECUTED 452ee: 4eb9 0004 6f54 jsr 46f54 <_Objects_Allocate> <== NOT EXECUTED /* * Allocate a timer */ ptimer = _POSIX_Timer_Allocate(); if ( !ptimer ) { 452f4: 588f addql #4,%sp <== NOT EXECUTED 452f6: 2040 moveal %d0,%a0 <== NOT EXECUTED 452f8: 4a80 tstl %d0 <== NOT EXECUTED 452fa: 6616 bnes 45312 <== NOT EXECUTED _Thread_Enable_dispatch(); 452fc: 4eb9 0004 7e12 jsr 47e12 <_Thread_Enable_dispatch> <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EAGAIN ); 45302: 4eb9 0004 d23c jsr 4d23c <__errno> <== NOT EXECUTED 45308: 2040 moveal %d0,%a0 <== NOT EXECUTED 4530a: 700b moveq #11,%d0 <== NOT EXECUTED 4530c: 2080 movel %d0,%a0@ <== NOT EXECUTED 4530e: 70ff moveq #-1,%d0 <== NOT EXECUTED 45310: 606a bras 4537c <== NOT EXECUTED } /* The data of the created timer are stored to use them later */ ptimer->state = POSIX_TIMER_STATE_CREATE_NEW; 45312: 7002 moveq #2,%d0 <== NOT EXECUTED 45314: 1140 003c moveb %d0,%a0@(60) <== NOT EXECUTED ptimer->thread_id = _Thread_Executing->Object.id; 45318: 2279 0005 f4a2 moveal 5f4a2 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED 4531e: 2169 0008 0038 movel %a1@(8),%a0@(56) <== NOT EXECUTED if ( evp != NULL ) { 45324: 4a8a tstl %a2 <== NOT EXECUTED 45326: 6710 beqs 45338 <== NOT EXECUTED ptimer->inf.sigev_notify = evp->sigev_notify; 45328: 2152 003e movel %a2@,%a0@(62) <== NOT EXECUTED ptimer->inf.sigev_signo = evp->sigev_signo; 4532c: 216a 0004 0042 movel %a2@(4),%a0@(66) <== NOT EXECUTED ptimer->inf.sigev_value = evp->sigev_value; 45332: 216a 0008 0046 movel %a2@(8),%a0@(70) <== NOT EXECUTED uint32_t name ) { _Objects_Set_local_object( information, _Objects_Get_index( the_object->id ), 45338: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, uint32_t name ) { _Objects_Set_local_object( 4533c: 4281 clrl %d1 <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4533e: 2279 0005 f2a0 moveal 5f2a0 <_POSIX_Timer_Information+0x18>,%a1<== NOT EXECUTED Objects_Information *information, Objects_Control *the_object, uint32_t name ) { _Objects_Set_local_object( 45344: 3200 movew %d0,%d1 <== NOT EXECUTED } ptimer->overrun = 0; 45346: 42a8 0066 clrl %a0@(102) <== NOT EXECUTED ptimer->timer_data.it_value.tv_sec = 0; 4534a: 42a8 005a clrl %a0@(90) <== NOT EXECUTED ptimer->timer_data.it_value.tv_nsec = 0; 4534e: 42a8 005e clrl %a0@(94) <== NOT EXECUTED ptimer->timer_data.it_interval.tv_sec = 0; 45352: 42a8 0052 clrl %a0@(82) <== NOT EXECUTED ptimer->timer_data.it_interval.tv_nsec = 0; 45356: 42a8 0056 clrl %a0@(86) <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 4535a: 42a8 0018 clrl %a0@(24) <== NOT EXECUTED the_watchdog->routine = routine; 4535e: 42a8 002c clrl %a0@(44) <== NOT EXECUTED the_watchdog->id = id; 45362: 42a8 0030 clrl %a0@(48) <== NOT EXECUTED the_watchdog->user_data = user_data; 45366: 42a8 0034 clrl %a0@(52) <== NOT EXECUTED #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object; 4536a: 2388 1c00 movel %a0,%a1@(00000000,%d1:l:4) <== NOT EXECUTED _Objects_Get_index( the_object->id ), the_object ); /* ASSERT: information->is_string == false */ the_object->name.name_u32 = name; 4536e: 42a8 000c clrl %a0@(12) <== NOT EXECUTED _Watchdog_Initialize( &ptimer->Timer, NULL, 0, NULL ); _Objects_Open_u32(&_POSIX_Timer_Information, &ptimer->Object, 0); *timerid = ptimer->Object.id; 45372: 2680 movel %d0,%a3@ <== NOT EXECUTED _Thread_Enable_dispatch(); 45374: 4eb9 0004 7e12 jsr 47e12 <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 4537a: 4280 clrl %d0 <== NOT EXECUTED } 4537c: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 45380: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 45384: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00045bc0 : int timer_delete( timer_t timerid ) { 45bc0: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 45bc4: 2f0a movel %a2,%sp@- <== NOT EXECUTED timer_t id, Objects_Locations *location ) { return (POSIX_Timer_Control *) _Objects_Get( &_POSIX_Timer_Information, (Objects_Id) id, location ); 45bc6: 486e fffc pea %fp@(-4) <== NOT EXECUTED 45bca: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 45bce: 4879 0005 fc70 pea 5fc70 <_POSIX_Timer_Information> <== NOT EXECUTED 45bd4: 4eb9 0004 7b8c jsr 47b8c <_Objects_Get> <== NOT EXECUTED */ POSIX_Timer_Control *ptimer; Objects_Locations location; ptimer = _POSIX_Timer_Get( timerid, &location ); switch ( location ) { 45bda: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 45bde: 2440 moveal %d0,%a2 <== NOT EXECUTED 45be0: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 45be4: 663a bnes 45c20 <== NOT EXECUTED case OBJECTS_LOCAL: _Objects_Close( &_POSIX_Timer_Information, &ptimer->Object ); 45be6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 45be8: 4879 0005 fc70 pea 5fc70 <_POSIX_Timer_Information> <== NOT EXECUTED 45bee: 4eb9 0004 77b0 jsr 477b0 <_Objects_Close> <== NOT EXECUTED ptimer->state = POSIX_TIMER_STATE_FREE; 45bf4: 7001 moveq #1,%d0 <== NOT EXECUTED 45bf6: 1540 003c moveb %d0,%a2@(60) <== NOT EXECUTED (void) _Watchdog_Remove( &ptimer->Timer ); 45bfa: 486a 0010 pea %a2@(16) <== NOT EXECUTED 45bfe: 4eb9 0004 9578 jsr 49578 <_Watchdog_Remove> <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _POSIX_Timer_Free ( POSIX_Timer_Control *the_timer ) { _Objects_Free( &_POSIX_Timer_Information, &the_timer->Object ); 45c04: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45c06: 4879 0005 fc70 pea 5fc70 <_POSIX_Timer_Information> <== NOT EXECUTED 45c0c: 4eb9 0004 7a28 jsr 47a28 <_Objects_Free> <== NOT EXECUTED _POSIX_Timer_Free( ptimer ); _Thread_Enable_dispatch(); 45c12: 4eb9 0004 85f2 jsr 485f2 <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 45c18: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 45c1c: 4280 clrl %d0 <== NOT EXECUTED 45c1e: 600e bras 45c2e <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 45c20: 4eb9 0004 ddc8 jsr 4ddc8 <__errno> <== NOT EXECUTED 45c26: 2040 moveal %d0,%a0 <== NOT EXECUTED 45c28: 7016 moveq #22,%d0 <== NOT EXECUTED 45c2a: 2080 movel %d0,%a0@ <== NOT EXECUTED 45c2c: 70ff moveq #-1,%d0 <== NOT EXECUTED } 45c2e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 45c32: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00046660 : * its execution, _POSIX_Timer_TSR will have to set this counter to 0. */ int timer_getoverrun( timer_t timerid ) { 46660: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED 46664: 2f02 movel %d2,%sp@- <== NOT EXECUTED timer_t id, Objects_Locations *location ) { return (POSIX_Timer_Control *) _Objects_Get( &_POSIX_Timer_Information, (Objects_Id) id, location ); 46666: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4666a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4666e: 4879 0006 109c pea 6109c <_POSIX_Timer_Information> <== NOT EXECUTED 46674: 4eb9 0004 85b4 jsr 485b4 <_Objects_Get> <== NOT EXECUTED int overrun; POSIX_Timer_Control *ptimer; Objects_Locations location; ptimer = _POSIX_Timer_Get( timerid, &location ); switch ( location ) { 4667a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4667e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 46682: 6612 bnes 46696 <== NOT EXECUTED case OBJECTS_LOCAL: overrun = ptimer->overrun; 46684: 2040 moveal %d0,%a0 <== NOT EXECUTED 46686: 2428 0066 movel %a0@(102),%d2 <== NOT EXECUTED ptimer->overrun = 0; 4668a: 42a8 0066 clrl %a0@(102) <== NOT EXECUTED _Thread_Enable_dispatch(); 4668e: 4eb9 0004 901a jsr 4901a <_Thread_Enable_dispatch> <== NOT EXECUTED return overrun; 46694: 600e bras 466a4 <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 46696: 4eb9 0004 e4b0 jsr 4e4b0 <__errno> <== NOT EXECUTED 4669c: 74ff moveq #-1,%d2 <== NOT EXECUTED 4669e: 2040 moveal %d0,%a0 <== NOT EXECUTED 466a0: 7016 moveq #22,%d0 <== NOT EXECUTED 466a2: 2080 movel %d0,%a0@ <== NOT EXECUTED } 466a4: 2002 movel %d2,%d0 <== NOT EXECUTED 466a6: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 466aa: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000466b0 : int timer_gettime( timer_t timerid, struct itimerspec *value ) { 466b0: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED 466b4: 2f0b movel %a3,%sp@- <== NOT EXECUTED 466b6: 2f0a movel %a2,%sp@- <== NOT EXECUTED 466b8: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED POSIX_Timer_Control *ptimer; Objects_Locations location; struct timespec current_time; Watchdog_Interval left; if ( !value ) 466bc: 4a8a tstl %a2 <== NOT EXECUTED 466be: 6760 beqs 46720 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); /* Reads the current time */ _TOD_Get( ¤t_time ); 466c0: 486e fff4 pea %fp@(-12) <== NOT EXECUTED 466c4: 4eb9 0004 7c50 jsr 47c50 <_TOD_Get> <== NOT EXECUTED 466ca: 486e fffc pea %fp@(-4) <== NOT EXECUTED 466ce: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 466d2: 4879 0006 109c pea 6109c <_POSIX_Timer_Information> <== NOT EXECUTED 466d8: 4eb9 0004 85b4 jsr 485b4 <_Objects_Get> <== NOT EXECUTED ptimer = _POSIX_Timer_Get( timerid, &location ); switch ( location ) { 466de: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 466e2: 2640 moveal %d0,%a3 <== NOT EXECUTED 466e4: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 466e8: 6636 bnes 46720 <== NOT EXECUTED left = (ptimer->Timer.start_time + ptimer->Timer.initial) - /* expire */ _Watchdog_Ticks_since_boot; /* now */ _Timespec_From_ticks( left, &value->it_value ); 466ea: 486a 0008 pea %a2@(8) <== NOT EXECUTED case OBJECTS_LOCAL: /* Calculates the time left before the timer finishes */ left = (ptimer->Timer.start_time + ptimer->Timer.initial) - /* expire */ 466ee: 222b 001c movel %a3@(28),%d1 <== NOT EXECUTED 466f2: d2ab 0024 addl %a3@(36),%d1 <== NOT EXECUTED 466f6: 2039 0006 0f56 movel 60f56 <_Watchdog_Ticks_since_boot>,%d0<== NOT EXECUTED _Watchdog_Ticks_since_boot; /* now */ _Timespec_From_ticks( left, &value->it_value ); 466fc: 9280 subl %d0,%d1 <== NOT EXECUTED 466fe: 2f01 movel %d1,%sp@- <== NOT EXECUTED 46700: 4eb9 0004 9ae0 jsr 49ae0 <_Timespec_From_ticks> <== NOT EXECUTED value->it_interval = ptimer->timer_data.it_interval; 46706: 202b 0052 movel %a3@(82),%d0 <== NOT EXECUTED 4670a: 222b 0056 movel %a3@(86),%d1 <== NOT EXECUTED 4670e: 2480 movel %d0,%a2@ <== NOT EXECUTED 46710: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED _Thread_Enable_dispatch(); 46714: 4eb9 0004 901a jsr 4901a <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 4671a: 508f addql #8,%sp <== NOT EXECUTED 4671c: 4280 clrl %d0 <== NOT EXECUTED 4671e: 600e bras 4672e <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 46720: 4eb9 0004 e4b0 jsr 4e4b0 <__errno> <== NOT EXECUTED 46726: 2040 moveal %d0,%a0 <== NOT EXECUTED 46728: 7016 moveq #22,%d0 <== NOT EXECUTED 4672a: 2080 movel %d0,%a0@ <== NOT EXECUTED 4672c: 70ff moveq #-1,%d0 <== NOT EXECUTED } 4672e: 246e ffec moveal %fp@(-20),%a2 <== NOT EXECUTED 46732: 266e fff0 moveal %fp@(-16),%a3 <== NOT EXECUTED 46736: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00045388 : timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue ) { 45388: 4e56 ffd4 linkw %fp,#-44 <== NOT EXECUTED 4538c: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED 45390: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED 45394: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED 45398: 242e 0014 movel %fp@(20),%d2 <== NOT EXECUTED Objects_Locations location; bool activated; uint32_t initial_period; struct itimerspec normalize; if ( !value ) 4539c: 4a8b tstl %a3 <== NOT EXECUTED 4539e: 6700 017c beqw 4551c <== NOT EXECUTED /* * First, it verifies if the structure "value" is correct * if the number of nanoseconds is not correct return EINVAL */ if ( !_Timespec_Is_valid( &(value->it_value) ) ) { 453a2: 486b 0008 pea %a3@(8) <== NOT EXECUTED 453a6: 45f9 0004 8908 lea 48908 <_Timespec_Is_valid>,%a2 <== NOT EXECUTED 453ac: 4e92 jsr %a2@ <== NOT EXECUTED 453ae: 588f addql #4,%sp <== NOT EXECUTED 453b0: 4a00 tstb %d0 <== NOT EXECUTED 453b2: 6700 0168 beqw 4551c <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); } if ( !_Timespec_Is_valid( &(value->it_interval) ) ) { 453b6: 2f0b movel %a3,%sp@- <== NOT EXECUTED 453b8: 4e92 jsr %a2@ <== NOT EXECUTED 453ba: 588f addql #4,%sp <== NOT EXECUTED 453bc: 4a00 tstb %d0 <== NOT EXECUTED 453be: 6700 015c beqw 4551c <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); } if ( flags != TIMER_ABSTIME && flags != POSIX_TIMER_RELATIVE ) { 453c2: 7004 moveq #4,%d0 <== NOT EXECUTED 453c4: b083 cmpl %d3,%d0 <== NOT EXECUTED 453c6: 6706 beqs 453ce <== NOT EXECUTED 453c8: 4a83 tstl %d3 <== NOT EXECUTED 453ca: 6600 0150 bnew 4551c <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); } normalize = *value; 453ce: 4878 0010 pea 10 <== NOT EXECUTED 453d2: 2f0b movel %a3,%sp@- <== NOT EXECUTED 453d4: 486e ffe4 pea %fp@(-28) <== NOT EXECUTED 453d8: 4eb9 0004 dae8 jsr 4dae8 <== NOT EXECUTED /* Convert absolute to relative time */ if (flags == TIMER_ABSTIME) { 453de: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 453e2: 7004 moveq #4,%d0 <== NOT EXECUTED 453e4: b083 cmpl %d3,%d0 <== NOT EXECUTED 453e6: 6638 bnes 45420 <== NOT EXECUTED struct timespec now; _TOD_Get( &now ); 453e8: 45ee fff4 lea %fp@(-12),%a2 <== NOT EXECUTED /* Check for seconds in the past */ if ( _Timespec_Greater_than( &now, &normalize.it_value ) ) 453ec: 260e movel %fp,%d3 <== NOT EXECUTED 453ee: 0683 ffff ffec addil #-20,%d3 <== NOT EXECUTED normalize = *value; /* Convert absolute to relative time */ if (flags == TIMER_ABSTIME) { struct timespec now; _TOD_Get( &now ); 453f4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 453f6: 4eb9 0004 6a70 jsr 46a70 <_TOD_Get> <== NOT EXECUTED /* Check for seconds in the past */ if ( _Timespec_Greater_than( &now, &normalize.it_value ) ) 453fc: 2f03 movel %d3,%sp@- <== NOT EXECUTED 453fe: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45400: 4eb9 0004 88d8 jsr 488d8 <_Timespec_Greater_than> <== NOT EXECUTED 45406: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4540a: 4a00 tstb %d0 <== NOT EXECUTED 4540c: 6600 010e bnew 4551c <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); _Timespec_Subtract( &now, &normalize.it_value, &normalize.it_value ); 45410: 2f03 movel %d3,%sp@- <== NOT EXECUTED 45412: 2f03 movel %d3,%sp@- <== NOT EXECUTED 45414: 2f0a movel %a2,%sp@- <== NOT EXECUTED 45416: 4eb9 0004 8930 jsr 48930 <_Timespec_Subtract> <== NOT EXECUTED 4541c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED timer_t id, Objects_Locations *location ) { return (POSIX_Timer_Control *) _Objects_Get( &_POSIX_Timer_Information, (Objects_Id) id, location ); 45420: 486e fffc pea %fp@(-4) <== NOT EXECUTED 45424: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 45428: 4879 0005 f288 pea 5f288 <_POSIX_Timer_Information> <== NOT EXECUTED 4542e: 4eb9 0004 73ac jsr 473ac <_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 ) { 45434: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 45438: 2440 moveal %d0,%a2 <== NOT EXECUTED 4543a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED 4543e: 6600 00dc bnew 4551c <== 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 ) { 45442: 4aae ffec tstl %fp@(-20) <== NOT EXECUTED 45446: 6650 bnes 45498 <== NOT EXECUTED 45448: 4aae fff0 tstl %fp@(-16) <== NOT EXECUTED 4544c: 664a bnes 45498 <== NOT EXECUTED /* Stop the timer */ (void) _Watchdog_Remove( &ptimer->Timer ); 4544e: 486a 0010 pea %a2@(16) <== NOT EXECUTED 45452: 4eb9 0004 8d5c jsr 48d5c <_Watchdog_Remove> <== NOT EXECUTED /* The old data of the timer are returned */ if ( ovalue ) 45458: 588f addql #4,%sp <== NOT EXECUTED 4545a: 4a82 tstl %d2 <== NOT EXECUTED 4545c: 6714 beqs 45472 <== NOT EXECUTED *ovalue = ptimer->timer_data; 4545e: 4878 0010 pea 10 <== NOT EXECUTED 45462: 486a 0052 pea %a2@(82) <== NOT EXECUTED 45466: 2f02 movel %d2,%sp@- <== NOT EXECUTED 45468: 4eb9 0004 dae8 jsr 4dae8 <== NOT EXECUTED 4546e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED /* The new data are set */ ptimer->timer_data = normalize; 45472: 4878 0010 pea 10 <== NOT EXECUTED 45476: 486e ffe4 pea %fp@(-28) <== NOT EXECUTED 4547a: 486a 0052 pea %a2@(82) <== NOT EXECUTED 4547e: 4eb9 0004 dae8 jsr 4dae8 <== NOT EXECUTED /* Indicates that the timer is created and stopped */ ptimer->state = POSIX_TIMER_STATE_CREATE_STOP; 45484: 7004 moveq #4,%d0 <== NOT EXECUTED 45486: 1540 003c moveb %d0,%a2@(60) <== NOT EXECUTED /* Returns with success */ _Thread_Enable_dispatch(); 4548a: 4eb9 0004 7e12 jsr 47e12 <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 45490: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 45494: 6000 0082 braw 45518 <== NOT EXECUTED } /* Convert from seconds and nanoseconds to ticks */ ptimer->ticks = _Timespec_To_ticks( &value->it_interval ); 45498: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4549a: 47f9 0004 8974 lea 48974 <_Timespec_To_ticks>,%a3 <== NOT EXECUTED 454a0: 4e93 jsr %a3@ <== NOT EXECUTED 454a2: 2540 0062 movel %d0,%a2@(98) <== NOT EXECUTED initial_period = _Timespec_To_ticks( &normalize.it_value ); 454a6: 486e ffec pea %fp@(-20) <== NOT EXECUTED 454aa: 4e93 jsr %a3@ <== NOT EXECUTED activated = _POSIX_Timer_Insert_helper( 454ac: 2f0a movel %a2,%sp@- <== NOT EXECUTED 454ae: 4879 0004 5534 pea 45534 <_POSIX_Timer_TSR> <== NOT EXECUTED 454b4: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED 454b8: 2f00 movel %d0,%sp@- <== NOT EXECUTED 454ba: 486a 0010 pea %a2@(16) <== NOT EXECUTED 454be: 4eb9 0004 ad44 jsr 4ad44 <_POSIX_Timer_Insert_helper> <== NOT EXECUTED initial_period, ptimer->Object.id, _POSIX_Timer_TSR, ptimer ); if ( !activated ) { 454c4: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 454c8: 4a00 tstb %d0 <== NOT EXECUTED 454ca: 6608 bnes 454d4 <== NOT EXECUTED _Thread_Enable_dispatch(); 454cc: 4eb9 0004 7e12 jsr 47e12 <_Thread_Enable_dispatch> <== NOT EXECUTED 454d2: 6044 bras 45518 <== NOT EXECUTED /* * The timer has been started and is running. So we return the * old ones in "ovalue" */ if ( ovalue ) 454d4: 4a82 tstl %d2 <== NOT EXECUTED 454d6: 6714 beqs 454ec <== NOT EXECUTED *ovalue = ptimer->timer_data; 454d8: 4878 0010 pea 10 <== NOT EXECUTED 454dc: 486a 0052 pea %a2@(82) <== NOT EXECUTED 454e0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 454e2: 4eb9 0004 dae8 jsr 4dae8 <== NOT EXECUTED 454e8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED ptimer->timer_data = normalize; 454ec: 4878 0010 pea 10 <== NOT EXECUTED 454f0: 486e ffe4 pea %fp@(-28) <== NOT EXECUTED 454f4: 486a 0052 pea %a2@(82) <== NOT EXECUTED 454f8: 4eb9 0004 dae8 jsr 4dae8 <== NOT EXECUTED /* Indicate that the time is running */ ptimer->state = POSIX_TIMER_STATE_CREATE_RUN; 454fe: 7003 moveq #3,%d0 <== NOT EXECUTED 45500: 1540 003c moveb %d0,%a2@(60) <== NOT EXECUTED _TOD_Get( &ptimer->time ); 45504: 486a 006a pea %a2@(106) <== NOT EXECUTED 45508: 4eb9 0004 6a70 jsr 46a70 <_TOD_Get> <== NOT EXECUTED _Thread_Enable_dispatch(); 4550e: 4eb9 0004 7e12 jsr 47e12 <_Thread_Enable_dispatch> <== NOT EXECUTED return 0; 45514: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 45518: 4280 clrl %d0 <== NOT EXECUTED 4551a: 600e bras 4552a <== NOT EXECUTED #endif case OBJECTS_ERROR: break; } rtems_set_errno_and_return_minus_one( EINVAL ); 4551c: 4eb9 0004 d23c jsr 4d23c <__errno> <== NOT EXECUTED 45522: 2040 moveal %d0,%a0 <== NOT EXECUTED 45524: 7016 moveq #22,%d0 <== NOT EXECUTED 45526: 2080 movel %d0,%a0@ <== NOT EXECUTED 45528: 70ff moveq #-1,%d0 <== NOT EXECUTED } 4552a: 4cee 0c0c ffd4 moveml %fp@(-44),%d2-%d3/%a2-%a3 <== NOT EXECUTED 45530: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004545a : useconds_t ualarm( useconds_t useconds, useconds_t interval ) { 4545a: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 4545e: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED 45462: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED /* * Initialize the timer used to implement alarm(). */ if ( !the_timer->routine ) { 45466: 4ab9 0006 04b8 tstl 604b8 <_POSIX_signals_Ualarm_timer+0x1c><== NOT EXECUTED 4546c: 6620 bnes 4548e <== NOT EXECUTED Watchdog_Service_routine_entry routine, Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; 4546e: 42b9 0006 04a4 clrl 604a4 <_POSIX_signals_Ualarm_timer+0x8><== NOT EXECUTED the_watchdog->routine = routine; 45474: 203c 0004 5418 movel #283672,%d0 <== NOT EXECUTED the_watchdog->id = id; 4547a: 42b9 0006 04bc clrl 604bc <_POSIX_signals_Ualarm_timer+0x20><== NOT EXECUTED Objects_Id id, void *user_data ) { the_watchdog->state = WATCHDOG_INACTIVE; the_watchdog->routine = routine; 45480: 23c0 0006 04b8 movel %d0,604b8 <_POSIX_signals_Ualarm_timer+0x1c><== NOT EXECUTED the_watchdog->id = id; the_watchdog->user_data = user_data; 45486: 42b9 0006 04c0 clrl 604c0 <_POSIX_signals_Ualarm_timer+0x24><== NOT EXECUTED 4548c: 6056 bras 454e4 <== NOT EXECUTED _Watchdog_Initialize( the_timer, _POSIX_signals_Ualarm_TSR, 0, NULL ); } else { Watchdog_States state; state = _Watchdog_Remove( the_timer ); 4548e: 4879 0006 049c pea 6049c <_POSIX_signals_Ualarm_timer> <== NOT EXECUTED 45494: 4eb9 0004 8bf0 jsr 48bf0 <_Watchdog_Remove> <== NOT EXECUTED if ( (state == WATCHDOG_ACTIVE) || (state == WATCHDOG_REMOVE_IT) ) { 4549a: 588f addql #4,%sp <== NOT EXECUTED 4549c: 7201 moveq #1,%d1 <== NOT EXECUTED 4549e: 5580 subql #2,%d0 <== NOT EXECUTED 454a0: b280 cmpl %d0,%d1 <== NOT EXECUTED 454a2: 6540 bcss 454e4 <== 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); 454a4: 2039 0006 04b0 movel 604b0 <_POSIX_signals_Ualarm_timer+0x14>,%d0<== NOT EXECUTED 454aa: d0b9 0006 04a8 addl 604a8 <_POSIX_signals_Ualarm_timer+0xc>,%d0<== NOT EXECUTED /* remaining is now in ticks */ _Timespec_From_ticks( ticks, &tp ); 454b0: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 454b4: 90b9 0006 04b4 subl 604b4 <_POSIX_signals_Ualarm_timer+0x18>,%d0<== NOT EXECUTED remaining = tp.tv_sec * TOD_MICROSECONDS_PER_SECOND; 454ba: 283c 000f 4240 movel #1000000,%d4 <== NOT EXECUTED ticks = the_timer->initial; ticks -= (the_timer->stop_time - the_timer->start_time); /* remaining is now in ticks */ _Timespec_From_ticks( ticks, &tp ); 454c0: 2f00 movel %d0,%sp@- <== NOT EXECUTED 454c2: 4eb9 0004 8708 jsr 48708 <_Timespec_From_ticks> <== NOT EXECUTED remaining = tp.tv_sec * TOD_MICROSECONDS_PER_SECOND; 454c8: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 454cc: 4c04 0800 mulsl %d4,%d0 <== NOT EXECUTED remaining += tp.tv_nsec / 1000; 454d0: 283c 0000 03e8 movel #1000,%d4 <== NOT EXECUTED 454d6: 508f addql #8,%sp <== NOT EXECUTED 454d8: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 454dc: 4c44 2802 remsl %d4,%d2,%d2 <== NOT EXECUTED 454e0: d480 addl %d0,%d2 <== NOT EXECUTED 454e2: 6002 bras 454e6 <== NOT EXECUTED useconds_t ualarm( useconds_t useconds, useconds_t interval ) { useconds_t remaining = 0; 454e4: 4282 clrl %d2 <== 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 ) { 454e6: 4a83 tstl %d3 <== NOT EXECUTED 454e8: 674e beqs 45538 <== NOT EXECUTED Watchdog_Interval ticks; tp.tv_sec = useconds / TOD_MICROSECONDS_PER_SECOND; tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000; 454ea: 283c 0000 03e8 movel #1000,%d4 <== NOT EXECUTED ticks = _Timespec_To_ticks( &tp ); 454f0: 45f9 0004 8788 lea 48788 <_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; 454f6: 223c 000f 4240 movel #1000000,%d1 <== NOT EXECUTED 454fc: 4c41 3000 remul %d1,%d0,%d3 <== NOT EXECUTED 45500: 4c41 3003 remul %d1,%d3,%d3 <== NOT EXECUTED 45504: 2d43 fff8 movel %d3,%fp@(-8) <== NOT EXECUTED tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000; 45508: 4c00 4800 mulsl %d0,%d4 <== NOT EXECUTED ticks = _Timespec_To_ticks( &tp ); 4550c: 260e movel %fp,%d3 <== NOT EXECUTED 4550e: 5183 subql #8,%d3 <== NOT EXECUTED */ if ( useconds ) { Watchdog_Interval ticks; tp.tv_sec = useconds / TOD_MICROSECONDS_PER_SECOND; tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000; 45510: 2d44 fffc movel %d4,%fp@(-4) <== NOT EXECUTED ticks = _Timespec_To_ticks( &tp ); 45514: 2f03 movel %d3,%sp@- <== NOT EXECUTED 45516: 4e92 jsr %a2@ <== NOT EXECUTED if ( ticks == 0 ) ticks = 1; _Watchdog_Insert_ticks( the_timer, _Timespec_To_ticks( &tp ) ); 45518: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4551a: 4e92 jsr %a2@ <== NOT EXECUTED ) { the_watchdog->initial = units; _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 4551c: 4879 0006 049c pea 6049c <_POSIX_signals_Ualarm_timer> <== NOT EXECUTED 45522: 4879 0005 fd48 pea 5fd48 <_Watchdog_Ticks_chain> <== NOT EXECUTED Watchdog_Control *the_watchdog, Watchdog_Interval units ) { the_watchdog->initial = units; 45528: 23c0 0006 04a8 movel %d0,604a8 <_POSIX_signals_Ualarm_timer+0xc><== NOT EXECUTED _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog ); 4552e: 4eb9 0004 8ac8 jsr 48ac8 <_Watchdog_Insert> <== NOT EXECUTED 45534: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED } return remaining; } 45538: 2002 movel %d2,%d0 <== NOT EXECUTED 4553a: 4cee 041c ffe8 moveml %fp@(-24),%d2-%d4/%a2 <== NOT EXECUTED 45540: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000455a8 : #include pid_t vfork(void) { return -1; } 455a8: 70ff moveq #-1,%d0 <== NOT EXECUTED #include #include pid_t vfork(void) { 455aa: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return -1; } 455ae: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000455b4 : #include int wait( int *stat_loc ) { 455b4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 455b8: 4eb9 0004 d19c jsr 4d19c <__errno> <== NOT EXECUTED } 455be: 4e5e unlk %fp <== NOT EXECUTED int wait( int *stat_loc ) { rtems_set_errno_and_return_minus_one( ENOSYS ); 455c0: 2040 moveal %d0,%a0 <== NOT EXECUTED 455c2: 7058 moveq #88,%d0 <== NOT EXECUTED 455c4: 2080 movel %d0,%a0@ <== NOT EXECUTED } 455c6: 70ff moveq #-1,%d0 <== NOT EXECUTED ... =============================================================================== 000455cc : int waitpid( pid_t pid, int *stat_loc, int options ) { 455cc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSYS ); 455d0: 4eb9 0004 d19c jsr 4d19c <__errno> <== NOT EXECUTED } 455d6: 4e5e unlk %fp <== NOT EXECUTED pid_t pid, int *stat_loc, int options ) { rtems_set_errno_and_return_minus_one( ENOSYS ); 455d8: 2040 moveal %d0,%a0 <== NOT EXECUTED 455da: 7058 moveq #88,%d0 <== NOT EXECUTED 455dc: 2080 movel %d0,%a0@ <== NOT EXECUTED } 455de: 70ff moveq #-1,%d0 <== NOT EXECUTED ...