=============================================================================== 400070cc <_IO_Initialize_all_drivers>: #include bool _IO_All_drivers_initialized; void _IO_Initialize_all_drivers( void ) { 400070cc: 9d e3 bf a0 save %sp, -96, %sp rtems_device_major_number major; _IO_All_drivers_initialized = true; 400070d0: 03 10 00 4e sethi %hi(0x40013800), %g1 400070d4: 84 10 20 01 mov 1, %g2 400070d8: c4 28 61 a4 stb %g2, [ %g1 + 0x1a4 ] for ( major=0 ; major < _IO_Number_of_drivers ; major ++ ) 400070dc: 03 10 00 40 sethi %hi(0x40010000), %g1 400070e0: f8 00 61 00 ld [ %g1 + 0x100 ], %i4 ! 40010100 <_IO_Number_of_drivers> 400070e4: 80 a7 20 00 cmp %i4, 0 400070e8: 02 80 00 0a be 40007110 <_IO_Initialize_all_drivers+0x44> <== NEVER TAKEN 400070ec: ba 10 20 00 clr %i5 (void) rtems_io_initialize( major, 0, NULL ); 400070f0: 90 10 00 1d mov %i5, %o0 400070f4: 94 10 20 00 clr %o2 400070f8: 40 00 1c b7 call 4000e3d4 400070fc: 92 10 20 00 clr %o1 for ( major=0 ; major < _IO_Number_of_drivers ; major ++ ) 40007100: ba 07 60 01 inc %i5 40007104: 80 a7 40 1c cmp %i5, %i4 40007108: 12 bf ff fb bne 400070f4 <_IO_Initialize_all_drivers+0x28> <== NEVER TAKEN 4000710c: 90 10 00 1d mov %i5, %o0 } 40007110: 81 c7 e0 08 ret 40007114: 81 e8 00 00 restore =============================================================================== 40010904 <_Objects_Information_table>: 40010904: 00 00 00 00 40 01 30 58 40 01 30 2c 40 01 2f f8 ....@.0X@.0,@./. 40010914: 00 00 00 00 5f 41 6c 6c 6f 63 61 74 6f 72 00 00 ...._Allocator.. 40010924: 00 00 00 00 28 66 6d 74 20 6e 75 6c 6c 29 0a 00 ....(fmt null).. 40010934: 00 00 00 00 28 6e 75 6c 6c 29 00 ....(null). =============================================================================== 400070ac : #include void rtems_fatal_error_occurred( uint32_t the_error ) { 400070ac: 9d e3 bf a0 save %sp, -96, %sp <== NOT EXECUTED _Terminate( INTERNAL_ERROR_RTEMS_API, the_error ); 400070b0: 90 10 20 01 mov 1, %o0 <== NOT EXECUTED 400070b4: 40 00 02 3f call 400079b0 <_Terminate> <== NOT EXECUTED 400070b8: 92 10 00 18 mov %i0, %o1 <== NOT EXECUTED 400070bc: 01 00 00 00 nop <== NOT EXECUTED =============================================================================== 400070c0 : #include #include const char *rtems_get_version_string(void) { return _RTEMS_version; 400070c0: 11 10 00 43 sethi %hi(0x40010c00), %o0 <== NOT EXECUTED } 400070c4: 81 c3 e0 08 retl <== NOT EXECUTED 400070c8: 90 12 21 e0 or %o0, 0x1e0, %o0 ! 40010de0 <_RTEMS_version> <== NOT EXECUTED =============================================================================== 40007060 : RTEMS_SYSINIT_DEVICE_DRIVERS, RTEMS_SYSINIT_ORDER_MIDDLE ); void rtems_initialize_executive(void) { 40007060: 9d e3 bf a0 save %sp, -96, %sp RTEMS_INLINE_ROUTINE uintptr_t _Linker_set_Obfuscate( const void *ptr ) { uintptr_t addr; addr = (uintptr_t) ptr; 40007064: 3b 10 00 43 sethi %hi(0x40010c00), %i5 const rtems_sysinit_item *item; /* Invoke the registered system initialization handlers */ RTEMS_LINKER_SET_FOREACH( _Sysinit, item ) { 40007068: 39 10 00 43 sethi %hi(0x40010c00), %i4 RTEMS_OBFUSCATE_VARIABLE( addr ); 4000706c: ba 17 62 40 or %i5, 0x240, %i5 40007070: b8 17 22 88 or %i4, 0x288, %i4 40007074: 80 a7 40 1c cmp %i5, %i4 40007078: 02 80 00 09 be 4000709c <== NEVER TAKEN 4000707c: 03 10 00 4e sethi %hi(0x40013800), %g1 ( *item->handler )(); 40007080: c2 07 40 00 ld [ %i5 ], %g1 40007084: 9f c0 40 00 call %g1 40007088: ba 07 60 04 add %i5, 4, %i5 RTEMS_LINKER_SET_FOREACH( _Sysinit, item ) { 4000708c: 80 a7 40 1c cmp %i5, %i4 40007090: 32 bf ff fd bne,a 40007084 40007094: c2 07 40 00 ld [ %i5 ], %g1 _System_state_Current = state; 40007098: 03 10 00 4e sethi %hi(0x40013800), %g1 4000709c: 84 10 20 02 mov 2, %g2 _System_state_Set( SYSTEM_STATE_UP ); _SMP_Request_start_multitasking(); _Thread_Start_multitasking(); 400070a0: 40 00 15 46 call 4000c5b8 <_Thread_Start_multitasking> 400070a4: c4 20 61 b0 st %g2, [ %g1 + 0x1b0 ] 400070a8: 01 00 00 00 nop <== NOT EXECUTED =============================================================================== 4000e314 : rtems_status_code rtems_io_close( rtems_device_major_number major, rtems_device_minor_number minor, void *argument ) { 4000e314: 9d e3 bf a0 save %sp, -96, %sp rtems_device_driver_entry callout; if ( major >= _IO_Number_of_drivers ) 4000e318: 03 10 00 40 sethi %hi(0x40010000), %g1 4000e31c: c2 00 61 00 ld [ %g1 + 0x100 ], %g1 ! 40010100 <_IO_Number_of_drivers> { 4000e320: 90 10 00 18 mov %i0, %o0 if ( major >= _IO_Number_of_drivers ) 4000e324: 80 a0 40 08 cmp %g1, %o0 4000e328: 08 80 00 11 bleu 4000e36c <== ALWAYS TAKEN 4000e32c: b0 10 20 0a mov 0xa, %i0 return RTEMS_INVALID_NUMBER; callout = _IO_Driver_address_table[major].close_entry; 4000e330: 83 2a 20 01 sll %o0, 1, %g1 <== NOT EXECUTED 4000e334: 82 00 40 08 add %g1, %o0, %g1 <== NOT EXECUTED 4000e338: 85 28 60 03 sll %g1, 3, %g2 <== NOT EXECUTED 4000e33c: 03 10 00 48 sethi %hi(0x40012000), %g1 <== NOT EXECUTED 4000e340: 82 10 63 40 or %g1, 0x340, %g1 ! 40012340 <_IO_Driver_address_table> <== NOT EXECUTED 4000e344: 82 00 40 02 add %g1, %g2, %g1 <== NOT EXECUTED 4000e348: c2 00 60 08 ld [ %g1 + 8 ], %g1 <== NOT EXECUTED return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4000e34c: 80 a0 60 00 cmp %g1, 0 <== NOT EXECUTED 4000e350: 02 80 00 06 be 4000e368 <== NOT EXECUTED 4000e354: 94 10 00 1a mov %i2, %o2 <== NOT EXECUTED 4000e358: 9f c0 40 00 call %g1 <== NOT EXECUTED 4000e35c: 92 10 00 19 mov %i1, %o1 <== NOT EXECUTED 4000e360: 81 c7 e0 08 ret <== NOT EXECUTED 4000e364: 91 e8 00 08 restore %g0, %o0, %o0 <== NOT EXECUTED 4000e368: b0 10 20 00 clr %i0 <== NOT EXECUTED } 4000e36c: 81 c7 e0 08 ret 4000e370: 81 e8 00 00 restore =============================================================================== 4000e374 : rtems_status_code rtems_io_control( rtems_device_major_number major, rtems_device_minor_number minor, void *argument ) { 4000e374: 9d e3 bf a0 save %sp, -96, %sp rtems_device_driver_entry callout; if ( major >= _IO_Number_of_drivers ) 4000e378: 03 10 00 40 sethi %hi(0x40010000), %g1 4000e37c: c2 00 61 00 ld [ %g1 + 0x100 ], %g1 ! 40010100 <_IO_Number_of_drivers> { 4000e380: 90 10 00 18 mov %i0, %o0 if ( major >= _IO_Number_of_drivers ) 4000e384: 80 a0 40 08 cmp %g1, %o0 4000e388: 08 80 00 11 bleu 4000e3cc <== ALWAYS TAKEN 4000e38c: b0 10 20 0a mov 0xa, %i0 return RTEMS_INVALID_NUMBER; callout = _IO_Driver_address_table[major].control_entry; 4000e390: 83 2a 20 01 sll %o0, 1, %g1 <== NOT EXECUTED 4000e394: 82 00 40 08 add %g1, %o0, %g1 <== NOT EXECUTED 4000e398: 85 28 60 03 sll %g1, 3, %g2 <== NOT EXECUTED 4000e39c: 03 10 00 48 sethi %hi(0x40012000), %g1 <== NOT EXECUTED 4000e3a0: 82 10 63 40 or %g1, 0x340, %g1 ! 40012340 <_IO_Driver_address_table> <== NOT EXECUTED 4000e3a4: 82 00 40 02 add %g1, %g2, %g1 <== NOT EXECUTED 4000e3a8: c2 00 60 14 ld [ %g1 + 0x14 ], %g1 <== NOT EXECUTED return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4000e3ac: 80 a0 60 00 cmp %g1, 0 <== NOT EXECUTED 4000e3b0: 02 80 00 06 be 4000e3c8 <== NOT EXECUTED 4000e3b4: 94 10 00 1a mov %i2, %o2 <== NOT EXECUTED 4000e3b8: 9f c0 40 00 call %g1 <== NOT EXECUTED 4000e3bc: 92 10 00 19 mov %i1, %o1 <== NOT EXECUTED 4000e3c0: 81 c7 e0 08 ret <== NOT EXECUTED 4000e3c4: 91 e8 00 08 restore %g0, %o0, %o0 <== NOT EXECUTED 4000e3c8: b0 10 20 00 clr %i0 <== NOT EXECUTED } 4000e3cc: 81 c7 e0 08 ret 4000e3d0: 81 e8 00 00 restore =============================================================================== 4000e430 : rtems_status_code rtems_io_open( rtems_device_major_number major, rtems_device_minor_number minor, void *argument ) { 4000e430: 9d e3 bf a0 save %sp, -96, %sp rtems_device_driver_entry callout; if ( major >= _IO_Number_of_drivers ) 4000e434: 03 10 00 40 sethi %hi(0x40010000), %g1 4000e438: c2 00 61 00 ld [ %g1 + 0x100 ], %g1 ! 40010100 <_IO_Number_of_drivers> { 4000e43c: 90 10 00 18 mov %i0, %o0 if ( major >= _IO_Number_of_drivers ) 4000e440: 80 a0 40 08 cmp %g1, %o0 4000e444: 08 80 00 11 bleu 4000e488 <== ALWAYS TAKEN 4000e448: b0 10 20 0a mov 0xa, %i0 return RTEMS_INVALID_NUMBER; callout = _IO_Driver_address_table[major].open_entry; 4000e44c: 83 2a 20 01 sll %o0, 1, %g1 <== NOT EXECUTED 4000e450: 82 00 40 08 add %g1, %o0, %g1 <== NOT EXECUTED 4000e454: 85 28 60 03 sll %g1, 3, %g2 <== NOT EXECUTED 4000e458: 03 10 00 48 sethi %hi(0x40012000), %g1 <== NOT EXECUTED 4000e45c: 82 10 63 40 or %g1, 0x340, %g1 ! 40012340 <_IO_Driver_address_table> <== NOT EXECUTED 4000e460: 82 00 40 02 add %g1, %g2, %g1 <== NOT EXECUTED 4000e464: c2 00 60 04 ld [ %g1 + 4 ], %g1 <== NOT EXECUTED return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4000e468: 80 a0 60 00 cmp %g1, 0 <== NOT EXECUTED 4000e46c: 02 80 00 06 be 4000e484 <== NOT EXECUTED 4000e470: 94 10 00 1a mov %i2, %o2 <== NOT EXECUTED 4000e474: 9f c0 40 00 call %g1 <== NOT EXECUTED 4000e478: 92 10 00 19 mov %i1, %o1 <== NOT EXECUTED 4000e47c: 81 c7 e0 08 ret <== NOT EXECUTED 4000e480: 91 e8 00 08 restore %g0, %o0, %o0 <== NOT EXECUTED 4000e484: b0 10 20 00 clr %i0 <== NOT EXECUTED } 4000e488: 81 c7 e0 08 ret 4000e48c: 81 e8 00 00 restore =============================================================================== 4000e490 : rtems_status_code rtems_io_read( rtems_device_major_number major, rtems_device_minor_number minor, void *argument ) { 4000e490: 9d e3 bf a0 save %sp, -96, %sp rtems_device_driver_entry callout; if ( major >= _IO_Number_of_drivers ) 4000e494: 03 10 00 40 sethi %hi(0x40010000), %g1 4000e498: c2 00 61 00 ld [ %g1 + 0x100 ], %g1 ! 40010100 <_IO_Number_of_drivers> { 4000e49c: 90 10 00 18 mov %i0, %o0 if ( major >= _IO_Number_of_drivers ) 4000e4a0: 80 a0 40 08 cmp %g1, %o0 4000e4a4: 08 80 00 11 bleu 4000e4e8 <== ALWAYS TAKEN 4000e4a8: b0 10 20 0a mov 0xa, %i0 return RTEMS_INVALID_NUMBER; callout = _IO_Driver_address_table[major].read_entry; 4000e4ac: 83 2a 20 01 sll %o0, 1, %g1 <== NOT EXECUTED 4000e4b0: 82 00 40 08 add %g1, %o0, %g1 <== NOT EXECUTED 4000e4b4: 85 28 60 03 sll %g1, 3, %g2 <== NOT EXECUTED 4000e4b8: 03 10 00 48 sethi %hi(0x40012000), %g1 <== NOT EXECUTED 4000e4bc: 82 10 63 40 or %g1, 0x340, %g1 ! 40012340 <_IO_Driver_address_table> <== NOT EXECUTED 4000e4c0: 82 00 40 02 add %g1, %g2, %g1 <== NOT EXECUTED 4000e4c4: c2 00 60 0c ld [ %g1 + 0xc ], %g1 <== NOT EXECUTED return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4000e4c8: 80 a0 60 00 cmp %g1, 0 <== NOT EXECUTED 4000e4cc: 02 80 00 06 be 4000e4e4 <== NOT EXECUTED 4000e4d0: 94 10 00 1a mov %i2, %o2 <== NOT EXECUTED 4000e4d4: 9f c0 40 00 call %g1 <== NOT EXECUTED 4000e4d8: 92 10 00 19 mov %i1, %o1 <== NOT EXECUTED 4000e4dc: 81 c7 e0 08 ret <== NOT EXECUTED 4000e4e0: 91 e8 00 08 restore %g0, %o0, %o0 <== NOT EXECUTED 4000e4e4: b0 10 20 00 clr %i0 <== NOT EXECUTED } 4000e4e8: 81 c7 e0 08 ret 4000e4ec: 81 e8 00 00 restore =============================================================================== 4000e4f0 : rtems_status_code rtems_io_write( rtems_device_major_number major, rtems_device_minor_number minor, void *argument ) { 4000e4f0: 9d e3 bf a0 save %sp, -96, %sp rtems_device_driver_entry callout; if ( major >= _IO_Number_of_drivers ) 4000e4f4: 03 10 00 40 sethi %hi(0x40010000), %g1 4000e4f8: c2 00 61 00 ld [ %g1 + 0x100 ], %g1 ! 40010100 <_IO_Number_of_drivers> { 4000e4fc: 90 10 00 18 mov %i0, %o0 if ( major >= _IO_Number_of_drivers ) 4000e500: 80 a0 40 08 cmp %g1, %o0 4000e504: 08 80 00 11 bleu 4000e548 <== ALWAYS TAKEN 4000e508: b0 10 20 0a mov 0xa, %i0 return RTEMS_INVALID_NUMBER; callout = _IO_Driver_address_table[major].write_entry; 4000e50c: 83 2a 20 01 sll %o0, 1, %g1 <== NOT EXECUTED 4000e510: 82 00 40 08 add %g1, %o0, %g1 <== NOT EXECUTED 4000e514: 85 28 60 03 sll %g1, 3, %g2 <== NOT EXECUTED 4000e518: 03 10 00 48 sethi %hi(0x40012000), %g1 <== NOT EXECUTED 4000e51c: 82 10 63 40 or %g1, 0x340, %g1 ! 40012340 <_IO_Driver_address_table> <== NOT EXECUTED 4000e520: 82 00 40 02 add %g1, %g2, %g1 <== NOT EXECUTED 4000e524: c2 00 60 10 ld [ %g1 + 0x10 ], %g1 <== NOT EXECUTED return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; 4000e528: 80 a0 60 00 cmp %g1, 0 <== NOT EXECUTED 4000e52c: 02 80 00 06 be 4000e544 <== NOT EXECUTED 4000e530: 94 10 00 1a mov %i2, %o2 <== NOT EXECUTED 4000e534: 9f c0 40 00 call %g1 <== NOT EXECUTED 4000e538: 92 10 00 19 mov %i1, %o1 <== NOT EXECUTED 4000e53c: 81 c7 e0 08 ret <== NOT EXECUTED 4000e540: 91 e8 00 08 restore %g0, %o0, %o0 <== NOT EXECUTED 4000e544: b0 10 20 00 clr %i0 <== NOT EXECUTED } 4000e548: 81 c7 e0 08 ret 4000e54c: 81 e8 00 00 restore =============================================================================== 4000e300 : #include #include void rtems_shutdown_executive( uint32_t result ) { 4000e300: 9d e3 bf a0 save %sp, -96, %sp _Terminate( RTEMS_FATAL_SOURCE_EXIT, result ); 4000e304: 90 10 20 05 mov 5, %o0 4000e308: 7f ff e5 aa call 400079b0 <_Terminate> 4000e30c: 92 10 00 18 mov %i0, %o1 4000e310: 01 00 00 00 nop <== NOT EXECUTED =============================================================================== 400088f8 : rtems_timecounter_simple *tc, uint32_t frequency_in_hz, uint32_t counter_ticks_per_clock_tick, timecounter_get_t *get_timecount ) { 400088f8: 9d e3 bf a0 save %sp, -96, %sp uint32_t mask; uint64_t scaler; int i; for ( i = 0; i < 32; ++i ) { if ( power_of_two >= counter_ticks_per_clock_tick ) { 400088fc: 80 a6 a0 01 cmp %i2, 1 40008900: 08 80 00 28 bleu 400089a0 <== NEVER TAKEN 40008904: b8 10 00 18 mov %i0, %i4 40008908: 82 10 20 1f mov 0x1f, %g1 break; } power_of_two *= 2; 4000890c: 10 80 00 05 b 40008920 40008910: 90 10 20 02 mov 2, %o0 for ( i = 0; i < 32; ++i ) { 40008914: 82 80 7f ff addcc %g1, -1, %g1 40008918: 02 80 00 1c be 40008988 <== NEVER TAKEN 4000891c: 90 10 00 02 mov %g2, %o0 if ( power_of_two >= counter_ticks_per_clock_tick ) { 40008920: 80 a6 80 08 cmp %i2, %o0 40008924: 18 bf ff fc bgu 40008914 40008928: 85 2a 20 01 sll %o0, 1, %g2 4000892c: 21 20 00 00 sethi %hi(0x80000000), %l0 40008930: ba 00 bf ff add %g2, -1, %i5 40008934: a0 2a 00 10 andn %o0, %l0, %l0 } mask = ( 2 * power_of_two ) - 1; scaler = ( (uint64_t) power_of_two << 32 ) / counter_ticks_per_clock_tick; 40008938: 94 10 20 00 clr %o2 4000893c: 96 10 00 1a mov %i2, %o3 40008940: 40 00 26 d5 call 40012494 <__udivdi3> 40008944: 92 10 20 00 clr %o1 tc->scaler = scaler; tc->real_interval = counter_ticks_per_clock_tick; tc->binary_interval = ( mask + 1 ) / 2; tc->tc.tc_get_timecount = get_timecount; tc->tc.tc_counter_mask = mask; tc->tc.tc_frequency = (uint32_t) ( ( frequency_in_hz * scaler ) >> 32 ); 40008948: 82 5e 40 08 smul %i1, %o0, %g1 4000894c: 86 56 40 09 umul %i1, %o1, %g3 40008950: 85 40 00 00 rd %y, %g2 tc->scaler = scaler; 40008954: d0 27 20 30 st %o0, [ %i4 + 0x30 ] tc->tc.tc_frequency = (uint32_t) ( ( frequency_in_hz * scaler ) >> 32 ); 40008958: 84 00 40 02 add %g1, %g2, %g2 tc->scaler = scaler; 4000895c: d2 27 20 34 st %o1, [ %i4 + 0x34 ] tc->tc.tc_quality = RTEMS_TIMECOUNTER_QUALITY_CLOCK_DRIVER; 40008960: 82 10 20 64 mov 0x64, %g1 tc->real_interval = counter_ticks_per_clock_tick; 40008964: f4 27 20 38 st %i2, [ %i4 + 0x38 ] tc->binary_interval = ( mask + 1 ) / 2; 40008968: e0 27 20 3c st %l0, [ %i4 + 0x3c ] tc->tc.tc_get_timecount = get_timecount; 4000896c: f6 27 00 00 st %i3, [ %i4 ] tc->tc.tc_counter_mask = mask; 40008970: fa 27 20 08 st %i5, [ %i4 + 8 ] tc->tc.tc_frequency = (uint32_t) ( ( frequency_in_hz * scaler ) >> 32 ); 40008974: c4 27 20 14 st %g2, [ %i4 + 0x14 ] 40008978: c0 27 20 10 clr [ %i4 + 0x10 ] tc->tc.tc_quality = RTEMS_TIMECOUNTER_QUALITY_CLOCK_DRIVER; 4000897c: c2 27 20 1c st %g1, [ %i4 + 0x1c ] _Timecounter_Install( &tc->tc ); 40008980: 40 00 07 ae call 4000a838 <_Timecounter_Install> 40008984: 91 e8 00 1c restore %g0, %i4, %o0 40008988: 85 28 a0 01 sll %g2, 1, %g2 <== NOT EXECUTED 4000898c: 21 1f ff ff sethi %hi(0x7ffffc00), %l0 <== NOT EXECUTED 40008990: ba 00 bf ff add %g2, -1, %i5 <== NOT EXECUTED 40008994: a0 14 23 ff or %l0, 0x3ff, %l0 <== NOT EXECUTED 40008998: 10 bf ff e8 b 40008938 <== NOT EXECUTED 4000899c: a0 0a 00 10 and %o0, %l0, %l0 <== NOT EXECUTED if ( power_of_two >= counter_ticks_per_clock_tick ) { 400089a0: ba 10 20 01 mov 1, %i5 <== NOT EXECUTED 400089a4: a0 10 20 01 mov 1, %l0 <== NOT EXECUTED 400089a8: 10 bf ff e4 b 40008938 <== NOT EXECUTED 400089ac: 90 10 20 01 mov 1, %o0 <== NOT EXECUTED