=============================================================================== 40004310 : void RTEMS_Malloc_Initialize( const Heap_Area *areas, size_t area_count, Heap_Initialization_or_extend_handler extend ) { 40004310: 9d e3 bf a0 save %sp, -96, %sp Heap_Control *heap = RTEMS_Malloc_Heap; if ( !rtems_configuration_get_unified_work_area() ) { 40004314: 03 10 00 3c sethi %hi(0x4000f000), %g1 40004318: c2 08 62 0d ldub [ %g1 + 0x20d ], %g1 ! 4000f20d 4000431c: 80 a0 60 00 cmp %g1, 0 40004320: 12 80 00 19 bne 40004384 <== NEVER TAKEN 40004324: 80 a6 60 00 cmp %i1, 0 Heap_Initialization_or_extend_handler init_or_extend = _Heap_Initialize; uintptr_t page_size = CPU_HEAP_ALIGNMENT; size_t i; for (i = 0; i < area_count; ++i) { 40004328: 02 80 00 19 be 4000438c <== NEVER TAKEN 4000432c: 03 10 00 43 sethi %hi(0x40010c00), %g1 Heap_Control *heap = RTEMS_Malloc_Heap; 40004330: f8 00 61 ac ld [ %g1 + 0x1ac ], %i4 ! 40010dac 40004334: b3 2e 60 03 sll %i1, 3, %i1 Heap_Initialization_or_extend_handler init_or_extend = _Heap_Initialize; 40004338: 37 10 00 19 sethi %hi(0x40006400), %i3 4000433c: b2 06 00 19 add %i0, %i1, %i1 40004340: b6 16 e1 68 or %i3, 0x168, %i3 40004344: ba 10 00 1b mov %i3, %i5 const Heap_Area *area = &areas [i]; uintptr_t space_available = (*init_or_extend)( 40004348: d4 06 20 04 ld [ %i0 + 4 ], %o2 4000434c: d2 06 00 00 ld [ %i0 ], %o1 40004350: 96 10 20 08 mov 8, %o3 40004354: 9f c7 40 00 call %i5 40004358: 90 10 00 1c mov %i4, %o0 area->begin, area->size, page_size ); if ( space_available > 0 ) { 4000435c: 80 a2 20 00 cmp %o0, 0 40004360: 32 80 00 02 bne,a 40004368 <== ALWAYS TAKEN 40004364: ba 10 00 1a mov %i2, %i5 40004368: b0 06 20 08 add %i0, 8, %i0 for (i = 0; i < area_count; ++i) { 4000436c: 80 a6 00 19 cmp %i0, %i1 40004370: 32 bf ff f7 bne,a 4000434c <== NEVER TAKEN 40004374: d4 06 20 04 ld [ %i0 + 4 ], %o2 <== NOT EXECUTED init_or_extend = extend; } } if ( init_or_extend == _Heap_Initialize ) { 40004378: 80 a7 40 1b cmp %i5, %i3 4000437c: 02 80 00 04 be 4000438c <== NEVER TAKEN 40004380: 01 00 00 00 nop _Internal_error( INTERNAL_ERROR_NO_MEMORY_FOR_HEAP ); } } } 40004384: 81 c7 e0 08 ret 40004388: 81 e8 00 00 restore _Internal_error( INTERNAL_ERROR_NO_MEMORY_FOR_HEAP ); 4000438c: 40 00 09 40 call 4000688c <_Internal_error> <== NOT EXECUTED 40004390: 90 10 20 17 mov 0x17, %o0 <== NOT EXECUTED 40004394: 01 00 00 00 nop <== NOT EXECUTED =============================================================================== 40003f1c <_Console_simple_Read>: ssize_t _Console_simple_Read( rtems_libio_t *iop, void *buffer, size_t count ) { 40003f1c: 9d e3 bf a0 save %sp, -96, %sp <== NOT EXECUTED ssize_t n; buf = buffer; n = (ssize_t) count; for ( i = 0; i < n; ++i ) { 40003f20: 80 a6 a0 00 cmp %i2, 0 <== NOT EXECUTED 40003f24: 04 80 00 0c ble 40003f54 <_Console_simple_Read+0x38> <== NOT EXECUTED 40003f28: ba 10 20 00 clr %i5 <== NOT EXECUTED int c; do { c = getchark(); 40003f2c: 40 00 00 22 call 40003fb4 <== NOT EXECUTED 40003f30: 01 00 00 00 nop <== NOT EXECUTED } while (c == -1); 40003f34: 80 a2 3f ff cmp %o0, -1 <== NOT EXECUTED 40003f38: 02 bf ff fd be 40003f2c <_Console_simple_Read+0x10> <== NOT EXECUTED 40003f3c: 01 00 00 00 nop <== NOT EXECUTED buf[ i ] = (char) c; 40003f40: d0 2e 40 1d stb %o0, [ %i1 + %i5 ] <== NOT EXECUTED for ( i = 0; i < n; ++i ) { 40003f44: ba 07 60 01 inc %i5 <== NOT EXECUTED 40003f48: 80 a6 80 1d cmp %i2, %i5 <== NOT EXECUTED 40003f4c: 12 bf ff f8 bne 40003f2c <_Console_simple_Read+0x10> <== NOT EXECUTED 40003f50: 01 00 00 00 nop <== NOT EXECUTED } return n; } 40003f54: 81 c7 e0 08 ret <== NOT EXECUTED 40003f58: 91 e8 00 1a restore %g0, %i2, %o0 <== NOT EXECUTED =============================================================================== 400042dc <_Malloc_Deferred_free>: __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS)); 400042dc: 91 d0 20 09 ta 9 <== NOT EXECUTED old_last = tail->previous; 400042e0: 05 10 00 43 sethi %hi(0x40010c00), %g2 <== NOT EXECUTED 400042e4: 84 10 a1 d8 or %g2, 0x1d8, %g2 ! 40010dd8 <_Malloc_GC_list> <== NOT EXECUTED 400042e8: c6 00 a0 08 ld [ %g2 + 8 ], %g3 <== NOT EXECUTED the_node->next = tail; 400042ec: 88 00 a0 04 add %g2, 4, %g4 <== NOT EXECUTED 400042f0: c8 22 00 00 st %g4, [ %o0 ] <== NOT EXECUTED tail->previous = the_node; 400042f4: d0 20 a0 08 st %o0, [ %g2 + 8 ] <== NOT EXECUTED old_last->next = the_node; 400042f8: d0 20 c0 00 st %o0, [ %g3 ] <== NOT EXECUTED the_node->previous = old_last; 400042fc: c6 22 20 04 st %g3, [ %o0 + 4 ] <== NOT EXECUTED __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr)); 40004300: 91 d0 20 0a ta 0xa <== NOT EXECUTED 40004304: 01 00 00 00 nop <== NOT EXECUTED rtems_interrupt_lock_acquire( &_Malloc_GC_lock, &lock_context ); rtems_chain_initialize_node( node ); rtems_chain_append_unprotected( &_Malloc_GC_list, node ); rtems_interrupt_lock_release( &_Malloc_GC_lock, &lock_context ); } 40004308: 81 c3 e0 08 retl <== NOT EXECUTED 4000430c: 01 00 00 00 nop <== NOT EXECUTED =============================================================================== 40004190 <_Malloc_Process_deferred_frees>: return p; } void _Malloc_Process_deferred_frees( void ) { 40004190: 9d e3 bf a0 save %sp, -96, %sp <== NOT EXECUTED __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS)); 40004194: 91 d0 20 09 ta 9 <== NOT EXECUTED return _Chain_Immutable_head( the_chain )->next; 40004198: 3b 10 00 43 sethi %hi(0x40010c00), %i5 4000419c: d0 07 61 d8 ld [ %i5 + 0x1d8 ], %o0 ! 40010dd8 <_Malloc_GC_list> 400041a0: ba 17 61 d8 or %i5, 0x1d8, %i5 if ( !_Chain_Is_empty(the_chain)) 400041a4: b8 07 60 04 add %i5, 4, %i4 400041a8: 80 a2 00 1c cmp %o0, %i4 400041ac: 02 80 00 0e be 400041e4 <_Malloc_Process_deferred_frees+0x54> <== ALWAYS TAKEN 400041b0: 01 00 00 00 nop new_first = old_first->next; 400041b4: c4 02 00 00 ld [ %o0 ], %g2 <== NOT EXECUTED head->next = new_first; 400041b8: c4 27 40 00 st %g2, [ %i5 ] <== NOT EXECUTED new_first->previous = head; 400041bc: fa 20 a0 04 st %i5, [ %g2 + 4 ] <== NOT EXECUTED __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr)); 400041c0: 91 d0 20 0a ta 0xa <== NOT EXECUTED 400041c4: 01 00 00 00 nop <== NOT EXECUTED /* * If some free's have been deferred, then do them now. */ while ( ( to_be_freed = _Malloc_Get_deferred_free() ) != NULL ) { free( to_be_freed ); 400041c8: 7f ff ff 65 call 40003f5c <== NOT EXECUTED 400041cc: 01 00 00 00 nop <== NOT EXECUTED __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS)); 400041d0: 91 d0 20 09 ta 9 <== NOT EXECUTED return _Chain_Immutable_head( the_chain )->next; 400041d4: d0 07 40 00 ld [ %i5 ], %o0 <== NOT EXECUTED if ( !_Chain_Is_empty(the_chain)) 400041d8: 80 a2 00 1c cmp %o0, %i4 <== NOT EXECUTED 400041dc: 32 bf ff f7 bne,a 400041b8 <_Malloc_Process_deferred_frees+0x28> <== NOT EXECUTED 400041e0: c4 02 00 00 ld [ %o0 ], %g2 <== NOT EXECUTED __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr)); 400041e4: 91 d0 20 0a ta 0xa <== NOT EXECUTED 400041e8: 01 00 00 00 nop } } 400041ec: 81 c7 e0 08 ret 400041f0: 81 e8 00 00 restore =============================================================================== 40004154 <_Malloc_System_state>: _System_state_Current = state; } RTEMS_INLINE_ROUTINE System_state_Codes _System_state_Get ( void ) { return _System_state_Current; 40004154: 03 10 00 49 sethi %hi(0x40012400), %g1 <== NOT EXECUTED 40004158: c2 00 60 ec ld [ %g1 + 0xec ], %g1 ! 400124ec <_System_state_Current> <== NOT EXECUTED if ( _Thread_Dispatch_is_enabled() ) { return MALLOC_SYSTEM_STATE_NORMAL; } else { return MALLOC_SYSTEM_STATE_NO_ALLOCATION; } } else if ( _System_state_Is_before_multitasking( state ) ) { 4000415c: 84 18 60 01 xor %g1, 1, %g2 <== NOT EXECUTED return MALLOC_SYSTEM_STATE_NORMAL; } else { return MALLOC_SYSTEM_STATE_NO_PROTECTION; 40004160: 80 a0 00 02 cmp %g0, %g2 <== NOT EXECUTED 40004164: 90 40 20 00 addx %g0, 0, %o0 <== NOT EXECUTED if ( _System_state_Is_up( state ) ) { 40004168: 80 a0 60 02 cmp %g1, 2 <== NOT EXECUTED 4000416c: 02 80 00 04 be 4000417c <_Malloc_System_state+0x28> <== NOT EXECUTED 40004170: 01 00 00 00 nop <== NOT EXECUTED } } 40004174: 81 c3 e0 08 retl <== NOT EXECUTED 40004178: 01 00 00 00 nop <== NOT EXECUTED ISR_Level level; _ISR_Local_disable( level ); #endif enabled = _Thread_Dispatch_disable_level == 0; 4000417c: c2 01 a0 18 ld [ %g6 + 0x18 ], %g1 <== NOT EXECUTED return MALLOC_SYSTEM_STATE_NO_ALLOCATION; 40004180: 80 a0 00 01 cmp %g0, %g1 <== NOT EXECUTED 40004184: 90 40 20 00 addx %g0, 0, %o0 <== NOT EXECUTED } 40004188: 81 c3 e0 08 retl <== NOT EXECUTED 4000418c: 91 2a 20 01 sll %o0, 1, %o0 <== NOT EXECUTED =============================================================================== 40011174 <_exit>: extern void FINI_SYMBOL( void ); #endif void _exit(int status) { 40011174: 9d e3 bf a0 save %sp, -96, %sp <== NOT EXECUTED /* * If the toolset uses init/fini sections, then we need to * run the global destructors now. */ #if defined(FINI_SYMBOL) FINI_SYMBOL(); 40011178: 40 00 04 0c call 400121a8 <_fini> <== NOT EXECUTED 4001117c: 01 00 00 00 nop <== NOT EXECUTED #endif rtems_shutdown_executive(status); 40011180: 7f ff f3 5f call 4000defc <== NOT EXECUTED 40011184: 90 10 00 18 mov %i0, %o0 <== NOT EXECUTED 40011188: 01 00 00 00 nop <== NOT EXECUTED =============================================================================== 4000ef98 <_free_r>: struct _reent *ignored, void *ptr ) { (void) ignored; free( ptr ); 4000ef98: 90 10 00 09 mov %o1, %o0 <== NOT EXECUTED 4000ef9c: 82 13 c0 00 mov %o7, %g1 <== NOT EXECUTED 4000efa0: 7f ff d3 ef call 40003f5c <== NOT EXECUTED 4000efa4: 9e 10 40 00 mov %g1, %o7 <== NOT EXECUTED =============================================================================== 4000404c <_gettimeofday_r>: int _gettimeofday_r( struct _reent *ignored_reentrancy_stuff RTEMS_UNUSED, struct timeval *tp, void *__tz ) { 4000404c: 9d e3 bf a0 save %sp, -96, %sp <== NOT EXECUTED if ( !tp ) 40004050: 80 a6 60 00 cmp %i1, 0 <== NOT EXECUTED 40004054: 02 80 00 06 be 4000406c <_gettimeofday_r+0x20> <== NOT EXECUTED 40004058: 90 10 00 19 mov %i1, %o0 <== NOT EXECUTED 4000405c: 40 00 0d a3 call 400076e8 <_Timecounter_Microtime> <== NOT EXECUTED 40004060: b0 10 20 00 clr %i0 <== NOT EXECUTED struct timezone *tzp = __tz; return gettimeofday( tp, tzp ); } 40004064: 81 c7 e0 08 ret <== NOT EXECUTED 40004068: 81 e8 00 00 restore <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EFAULT ); 4000406c: 40 00 27 39 call 4000dd50 <__errno> <== NOT EXECUTED 40004070: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 40004074: 82 10 20 0e mov 0xe, %g1 <== NOT EXECUTED 40004078: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED 4000407c: 81 c7 e0 08 ret <== NOT EXECUTED 40004080: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 4000da38 : #include int close( int fd ) { 4000da38: 9d e3 bf a0 save %sp, -96, %sp <== NOT EXECUTED rtems_libio_t *iop; unsigned int flags; int rc; if ( (uint32_t) fd >= rtems_libio_number_iops ) { 4000da3c: 03 10 00 3c sethi %hi(0x4000f000), %g1 <== NOT EXECUTED 4000da40: c2 00 63 80 ld [ %g1 + 0x380 ], %g1 ! 4000f380 <== NOT EXECUTED 4000da44: 80 a6 00 01 cmp %i0, %g1 <== NOT EXECUTED 4000da48: 1a 80 00 1b bcc 4000dab4 <== NOT EXECUTED 4000da4c: 01 00 00 00 nop <== NOT EXECUTED 4000da50: b7 2e 20 01 sll %i0, 1, %i3 <== NOT EXECUTED 4000da54: b0 06 c0 18 add %i3, %i0, %i0 <== NOT EXECUTED 4000da58: 37 10 00 48 sethi %hi(0x40012000), %i3 <== NOT EXECUTED 4000da5c: b9 2e 20 04 sll %i0, 4, %i4 <== NOT EXECUTED 4000da60: b6 16 e0 f0 or %i3, 0xf0, %i3 <== NOT EXECUTED 4000da64: b8 06 c0 1c add %i3, %i4, %i4 <== NOT EXECUTED 4000da68: c4 07 20 08 ld [ %i4 + 8 ], %g2 <== NOT EXECUTED unsigned int actual; (void) succ; (void) fail; _ISR_Local_disable( level ); actual = *obj; 4000da6c: 10 80 00 0f b 4000daa8 <== NOT EXECUTED 4000da70: ba 10 00 1c mov %i4, %i5 <== NOT EXECUTED __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS)); 4000da74: 91 d0 20 09 ta 9 <== NOT EXECUTED 4000da78: c6 07 60 08 ld [ %i5 + 8 ], %g3 <== NOT EXECUTED success = ( actual == *expected ); if ( success ) { 4000da7c: 80 a1 00 03 cmp %g4, %g3 <== NOT EXECUTED 4000da80: 12 80 00 03 bne 4000da8c <== NOT EXECUTED 4000da84: 84 08 ae ff and %g2, 0xeff, %g2 <== NOT EXECUTED *obj = desired; 4000da88: c4 27 60 08 st %g2, [ %i5 + 8 ] <== NOT EXECUTED __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr)); 4000da8c: 91 d0 20 0a ta 0xa <== NOT EXECUTED 4000da90: 01 00 00 00 nop <== NOT EXECUTED desired, ATOMIC_ORDER_ACQ_REL, ATOMIC_ORDER_RELAXED ); if ( success ) { 4000da94: 80 a1 00 03 cmp %g4, %g3 <== NOT EXECUTED 4000da98: 02 80 00 0d be 4000dacc <== NOT EXECUTED 4000da9c: 80 88 f0 00 btst -4096, %g3 <== NOT EXECUTED break; } if ( ( flags & ~( LIBIO_FLAGS_REFERENCE_INC - 1U ) ) != 0 ) { 4000daa0: 12 80 00 16 bne 4000daf8 <== NOT EXECUTED 4000daa4: 84 10 00 03 mov %g3, %g2 <== NOT EXECUTED if ( ( flags & LIBIO_FLAGS_OPEN ) == 0 ) { 4000daa8: 80 88 a1 00 btst 0x100, %g2 <== NOT EXECUTED 4000daac: 12 bf ff f2 bne 4000da74 <== NOT EXECUTED 4000dab0: 88 08 af ff and %g2, 0xfff, %g4 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EBADF ); 4000dab4: 40 00 00 a7 call 4000dd50 <__errno> <== NOT EXECUTED 4000dab8: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 4000dabc: 82 10 20 09 mov 9, %g1 <== NOT EXECUTED 4000dac0: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED 4000dac4: 81 c7 e0 08 ret <== NOT EXECUTED 4000dac8: 81 e8 00 00 restore <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EBUSY ); } } rc = (*iop->pathinfo.handlers->close_h)( iop ); 4000dacc: b1 2e 20 04 sll %i0, 4, %i0 <== NOT EXECUTED 4000dad0: b6 06 c0 18 add %i3, %i0, %i3 <== NOT EXECUTED 4000dad4: c2 06 e0 1c ld [ %i3 + 0x1c ], %g1 <== NOT EXECUTED 4000dad8: c2 00 60 04 ld [ %g1 + 4 ], %g1 <== NOT EXECUTED 4000dadc: 9f c0 40 00 call %g1 <== NOT EXECUTED 4000dae0: 90 10 00 1c mov %i4, %o0 <== NOT EXECUTED 4000dae4: b0 10 00 08 mov %o0, %i0 <== NOT EXECUTED rtems_libio_free( iop ); 4000dae8: 7f ff f8 79 call 4000bccc <== NOT EXECUTED 4000daec: 90 10 00 1c mov %i4, %o0 <== NOT EXECUTED return rc; } 4000daf0: 81 c7 e0 08 ret <== NOT EXECUTED 4000daf4: 81 e8 00 00 restore <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EBUSY ); 4000daf8: 40 00 00 96 call 4000dd50 <__errno> <== NOT EXECUTED 4000dafc: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 4000db00: 82 10 20 10 mov 0x10, %g1 <== NOT EXECUTED 4000db04: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED 4000db08: 81 c7 e0 08 ret <== NOT EXECUTED 4000db0c: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 40003f5c : #include void free( void *ptr ) { 40003f5c: 9d e3 bf a0 save %sp, -96, %sp <== NOT EXECUTED if ( !ptr ) 40003f60: ba 96 20 00 orcc %i0, 0, %i5 <== NOT EXECUTED 40003f64: 02 80 00 0d be 40003f98 <== NOT EXECUTED 40003f68: 01 00 00 00 nop <== NOT EXECUTED return; /* * Do not attempt to free memory if in a critical section or ISR. */ if ( _Malloc_System_state() != MALLOC_SYSTEM_STATE_NORMAL ) { 40003f6c: 40 00 00 7a call 40004154 <_Malloc_System_state> <== NOT EXECUTED 40003f70: 01 00 00 00 nop <== NOT EXECUTED 40003f74: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 40003f78: 12 80 00 0a bne 40003fa0 <== NOT EXECUTED 40003f7c: 03 10 00 43 sethi %hi(0x40010c00), %g1 <== NOT EXECUTED _Malloc_Deferred_free(ptr); return; } if ( !_Protected_heap_Free( RTEMS_Malloc_Heap, ptr ) ) { 40003f80: d0 00 61 ac ld [ %g1 + 0x1ac ], %o0 ! 40010dac <== NOT EXECUTED 40003f84: 40 00 0f 7b call 40007d70 <_Protected_heap_Free> <== NOT EXECUTED 40003f88: 92 10 00 1d mov %i5, %o1 <== NOT EXECUTED 40003f8c: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 40003f90: 02 80 00 06 be 40003fa8 <== NOT EXECUTED 40003f94: 92 10 00 1d mov %i5, %o1 <== NOT EXECUTED rtems_fatal( RTEMS_FATAL_SOURCE_INVALID_HEAP_FREE, (rtems_fatal_code) ptr ); } } 40003f98: 81 c7 e0 08 ret <== NOT EXECUTED 40003f9c: 81 e8 00 00 restore <== NOT EXECUTED _Malloc_Deferred_free(ptr); 40003fa0: 40 00 00 cf call 400042dc <_Malloc_Deferred_free> <== NOT EXECUTED 40003fa4: 81 e8 00 00 restore <== NOT EXECUTED 40003fa8: 40 00 0a 26 call 40006840 <_Terminate> <== NOT EXECUTED 40003fac: 90 10 20 0c mov 0xc, %o0 <== NOT EXECUTED 40003fb0: 01 00 00 00 nop <== NOT EXECUTED =============================================================================== 4000bb20 : #include #include int ftruncate( int fd, off_t length ) { 4000bb20: 9d e3 bf a0 save %sp, -96, %sp <== NOT EXECUTED int rv = 0; if ( length >= 0 ) { 4000bb24: 80 a6 60 00 cmp %i1, 0 <== NOT EXECUTED 4000bb28: 06 80 00 39 bl 4000bc0c <== NOT EXECUTED 4000bb2c: 03 10 00 3c sethi %hi(0x4000f000), %g1 <== NOT EXECUTED rtems_libio_t *iop; LIBIO_GET_IOP_WITH_ACCESS( fd, iop, LIBIO_FLAGS_WRITE, EINVAL ); 4000bb30: c2 00 63 80 ld [ %g1 + 0x380 ], %g1 ! 4000f380 <== NOT EXECUTED 4000bb34: 80 a6 00 01 cmp %i0, %g1 <== NOT EXECUTED 4000bb38: 1a 80 00 1f bcc 4000bbb4 <== NOT EXECUTED 4000bb3c: bb 2e 20 01 sll %i0, 1, %i5 <== NOT EXECUTED return &rtems_libio_iops[ fd ]; 4000bb40: ba 07 40 18 add %i5, %i0, %i5 <== NOT EXECUTED 4000bb44: 31 10 00 48 sethi %hi(0x40012000), %i0 <== NOT EXECUTED 4000bb48: bb 2f 60 04 sll %i5, 4, %i5 <== NOT EXECUTED 4000bb4c: b0 16 20 f0 or %i0, 0xf0, %i0 <== NOT EXECUTED 4000bb50: ba 07 40 18 add %i5, %i0, %i5 <== NOT EXECUTED __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS)); 4000bb54: 91 d0 20 09 ta 9 <== NOT EXECUTED val = *obj; 4000bb58: c4 07 60 08 ld [ %i5 + 8 ], %g2 <== NOT EXECUTED *obj = val + arg; 4000bb5c: 86 20 b0 00 sub %g2, -4096, %g3 <== NOT EXECUTED 4000bb60: c6 27 60 08 st %g3, [ %i5 + 8 ] <== NOT EXECUTED __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr)); 4000bb64: 91 d0 20 0a ta 0xa <== NOT EXECUTED 4000bb68: 01 00 00 00 nop <== NOT EXECUTED 4000bb6c: 82 08 a1 04 and %g2, 0x104, %g1 <== NOT EXECUTED 4000bb70: 80 a0 61 04 cmp %g1, 0x104 <== NOT EXECUTED 4000bb74: 12 80 00 16 bne 4000bbcc <== NOT EXECUTED 4000bb78: 92 10 00 19 mov %i1, %o1 <== NOT EXECUTED rv = (*iop->pathinfo.handlers->ftruncate_h)( iop, length ); 4000bb7c: c2 07 60 1c ld [ %i5 + 0x1c ], %g1 <== NOT EXECUTED 4000bb80: c2 00 60 1c ld [ %g1 + 0x1c ], %g1 <== NOT EXECUTED 4000bb84: 94 10 00 1a mov %i2, %o2 <== NOT EXECUTED 4000bb88: 9f c0 40 00 call %g1 <== NOT EXECUTED 4000bb8c: 90 10 00 1d mov %i5, %o0 <== NOT EXECUTED 4000bb90: b0 10 00 08 mov %o0, %i0 <== NOT EXECUTED __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS)); 4000bb94: 91 d0 20 09 ta 9 <== NOT EXECUTED *obj = val - arg; 4000bb98: c4 07 60 08 ld [ %i5 + 8 ], %g2 <== NOT EXECUTED 4000bb9c: 84 00 b0 00 add %g2, -4096, %g2 <== NOT EXECUTED 4000bba0: c4 27 60 08 st %g2, [ %i5 + 8 ] <== NOT EXECUTED __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr)); 4000bba4: 91 d0 20 0a ta 0xa <== NOT EXECUTED 4000bba8: 01 00 00 00 nop <== NOT EXECUTED 4000bbac: 81 c7 e0 08 ret <== NOT EXECUTED 4000bbb0: 81 e8 00 00 restore <== NOT EXECUTED LIBIO_GET_IOP_WITH_ACCESS( fd, iop, LIBIO_FLAGS_WRITE, EINVAL ); 4000bbb4: 40 00 08 67 call 4000dd50 <__errno> <== NOT EXECUTED 4000bbb8: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 4000bbbc: 82 10 20 09 mov 9, %g1 <== NOT EXECUTED 4000bbc0: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED 4000bbc4: 81 c7 e0 08 ret <== NOT EXECUTED 4000bbc8: 81 e8 00 00 restore <== NOT EXECUTED __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS)); 4000bbcc: 91 d0 20 09 ta 9 <== NOT EXECUTED 4000bbd0: c6 07 60 08 ld [ %i5 + 8 ], %g3 <== NOT EXECUTED 4000bbd4: 86 00 f0 00 add %g3, -4096, %g3 <== NOT EXECUTED 4000bbd8: c6 27 60 08 st %g3, [ %i5 + 8 ] <== NOT EXECUTED __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr)); 4000bbdc: 91 d0 20 0a ta 0xa <== NOT EXECUTED 4000bbe0: 01 00 00 00 nop <== NOT EXECUTED 4000bbe4: 84 08 a1 00 and %g2, 0x100, %g2 <== NOT EXECUTED 4000bbe8: 80 a0 00 02 cmp %g0, %g2 <== NOT EXECUTED 4000bbec: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 4000bbf0: 40 00 08 58 call 4000dd50 <__errno> <== NOT EXECUTED 4000bbf4: ba 60 20 00 subx %g0, 0, %i5 <== NOT EXECUTED 4000bbf8: ba 0f 60 0d and %i5, 0xd, %i5 <== NOT EXECUTED 4000bbfc: ba 07 60 09 add %i5, 9, %i5 <== NOT EXECUTED 4000bc00: fa 22 00 00 st %i5, [ %o0 ] <== NOT EXECUTED 4000bc04: 81 c7 e0 08 ret <== NOT EXECUTED 4000bc08: 81 e8 00 00 restore <== NOT EXECUTED rtems_libio_iop_drop( iop ); } else { errno = EINVAL; 4000bc0c: 40 00 08 51 call 4000dd50 <__errno> <== NOT EXECUTED 4000bc10: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 4000bc14: 82 10 20 16 mov 0x16, %g1 <== NOT EXECUTED 4000bc18: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED rv = -1; } return rv; } 4000bc1c: 81 c7 e0 08 ret <== NOT EXECUTED 4000bc20: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 40003fb4 : #include #include int getchark(void) { 40003fb4: 9d e3 bf a0 save %sp, -96, %sp <== NOT EXECUTED if ( BSP_poll_char ) 40003fb8: 03 10 00 44 sethi %hi(0x40011000), %g1 <== NOT EXECUTED 40003fbc: d0 00 61 80 ld [ %g1 + 0x180 ], %o0 ! 40011180 <== NOT EXECUTED 40003fc0: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 40003fc4: 02 80 00 06 be 40003fdc <== NOT EXECUTED 40003fc8: 01 00 00 00 nop <== NOT EXECUTED return (*BSP_poll_char)(); 40003fcc: 9f c2 00 00 call %o0 <== NOT EXECUTED 40003fd0: 01 00 00 00 nop <== NOT EXECUTED 40003fd4: 81 c7 e0 08 ret <== NOT EXECUTED 40003fd8: 91 e8 00 08 restore %g0, %o0, %o0 <== NOT EXECUTED return -1; } 40003fdc: 81 c7 e0 08 ret <== NOT EXECUTED 40003fe0: 91 e8 3f ff restore %g0, -1, %o0 <== NOT EXECUTED =============================================================================== 4000d284 : * 4.1.1 Get Process and Parent Process IDs, P1003.1b-1993, p. 83 */ pid_t getpid( void ) { return _Objects_Local_node; } 4000d284: 81 c3 e0 08 retl <== NOT EXECUTED 4000d288: 90 10 20 01 mov 1, %o0 <== NOT EXECUTED =============================================================================== 40004014 : */ int gettimeofday( struct timeval *__restrict tp, void *__restrict __tz RTEMS_UNUSED ) { 40004014: 9d e3 bf a0 save %sp, -96, %sp /* struct timezone* tzp = (struct timezone*) __tz; */ if ( !tp ) 40004018: 80 a6 20 00 cmp %i0, 0 4000401c: 02 80 00 06 be 40004034 <== NEVER TAKEN 40004020: 90 10 00 18 mov %i0, %o0 RTEMS_INLINE_ROUTINE void _TOD_Get_timeval( struct timeval *time ) { _Timecounter_Microtime( time ); 40004024: 40 00 0d b1 call 400076e8 <_Timecounter_Microtime> 40004028: b0 10 20 00 clr %i0 * with Eric Norum, this is how GNU/Linux, Solaris, and MacOS X * do it. This puts us in good company. */ return 0; } 4000402c: 81 c7 e0 08 ret 40004030: 81 e8 00 00 restore rtems_set_errno_and_return_minus_one( EFAULT ); 40004034: 40 00 27 47 call 4000dd50 <__errno> <== NOT EXECUTED 40004038: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 4000403c: 82 10 20 0e mov 0xe, %g1 <== NOT EXECUTED 40004040: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED 40004044: 81 c7 e0 08 ret <== NOT EXECUTED 40004048: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 40004398 : #include "malloc_p.h" void *malloc( size_t size ) { 40004398: 9d e3 bf a0 save %sp, -96, %sp void *return_this; /* * Validate the parameters */ if ( !size ) 4000439c: 80 a6 20 00 cmp %i0, 0 400043a0: 02 80 00 0a be 400043c8 <== NEVER TAKEN 400043a4: 90 10 00 18 mov %i0, %o0 return (void *) 0; return_this = rtems_heap_allocate_aligned_with_boundary( size, 0, 0 ); 400043a8: 94 10 20 00 clr %o2 400043ac: 7f ff ff 92 call 400041f4 400043b0: 92 10 20 00 clr %o1 if ( !return_this ) { 400043b4: b0 92 20 00 orcc %o0, 0, %i0 400043b8: 02 80 00 06 be 400043d0 <== NEVER TAKEN 400043bc: 01 00 00 00 nop errno = ENOMEM; return (void *) 0; } return return_this; } 400043c0: 81 c7 e0 08 ret 400043c4: 81 e8 00 00 restore 400043c8: 81 c7 e0 08 ret <== NOT EXECUTED 400043cc: 91 e8 20 00 restore %g0, 0, %o0 <== NOT EXECUTED errno = ENOMEM; 400043d0: 40 00 26 60 call 4000dd50 <__errno> <== NOT EXECUTED 400043d4: 01 00 00 00 nop <== NOT EXECUTED 400043d8: 82 10 20 0c mov 0xc, %g1 ! c <_TLS_Alignment+0xb> <== NOT EXECUTED 400043dc: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED return (void *) 0; 400043e0: 81 c7 e0 08 ret <== NOT EXECUTED 400043e4: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 400044b0 : * This routine is not defined in the POSIX 1003.1b standard but is * commonly supported on most UNIX and POSIX systems. It is the * foundation for creating file system objects. */ int mknod( const char *path, mode_t mode, dev_t dev ) { 400044b0: 9d e3 bf 68 save %sp, -152, %sp int rv = 0; rtems_filesystem_eval_path_context_t ctx; int eval_flags = RTEMS_FS_FOLLOW_LINK | RTEMS_FS_MAKE | RTEMS_FS_EXCLUSIVE | (S_ISDIR(mode) ? RTEMS_FS_ACCEPT_RESIDUAL_DELIMITERS : 0); 400044b4: 03 00 00 3c sethi %hi(0xf000), %g1 400044b8: 05 00 00 10 sethi %hi(0x4000), %g2 400044bc: 82 0e 40 01 and %i1, %g1, %g1 400044c0: 80 a0 40 02 cmp %g1, %g2 400044c4: 02 80 00 03 be 400044d0 <== ALWAYS TAKEN 400044c8: 94 10 20 f8 mov 0xf8, %o2 400044cc: 94 10 20 78 mov 0x78, %o2 <== NOT EXECUTED const rtems_filesystem_location_info_t *currentloc = 400044d0: 92 10 00 18 mov %i0, %o1 400044d4: 40 00 03 5e call 4000524c 400044d8: 90 07 bf c8 add %fp, -56, %o0 rtems_filesystem_eval_path_start( &ctx, path, eval_flags ); rv = rtems_filesystem_mknod( 400044dc: d4 07 bf d4 ld [ %fp + -44 ], %o2 400044e0: d2 07 bf d0 ld [ %fp + -48 ], %o1 400044e4: 98 10 00 1a mov %i2, %o4 400044e8: 9a 10 00 1b mov %i3, %o5 400044ec: 7f ff ff c6 call 40004404 400044f0: 96 10 00 19 mov %i1, %o3 400044f4: b0 10 00 08 mov %o0, %i0 rtems_filesystem_eval_path_get_tokenlen( &ctx ), mode, dev ); rtems_filesystem_eval_path_cleanup( &ctx ); 400044f8: 40 00 03 61 call 4000527c 400044fc: 90 07 bf c8 add %fp, -56, %o0 return rv; } 40004500: 81 c7 e0 08 ret 40004504: 81 e8 00 00 restore =============================================================================== 40004508 : const char *target, const char *filesystemtype, rtems_filesystem_options_t options, const void *data ) { 40004508: 9d e3 bf 50 save %sp, -176, %sp int rv = 0; if ( 4000450c: 80 a6 e0 01 cmp %i3, 1 40004510: 18 80 00 b2 bgu 400047d8 <== NEVER TAKEN 40004514: 01 00 00 00 nop options == RTEMS_FILESYSTEM_READ_ONLY || options == RTEMS_FILESYSTEM_READ_WRITE ) { rtems_filesystem_fsmount_me_t fsmount_me_h = 40004518: 40 00 1e 36 call 4000bdf0 4000451c: 90 10 00 1a mov %i2, %o0 rtems_filesystem_get_mount_handler( filesystemtype ); if ( fsmount_me_h != NULL ) { 40004520: a2 92 20 00 orcc %o0, 0, %l1 40004524: 02 80 00 ad be 400047d8 <== NEVER TAKEN 40004528: 80 a6 60 00 cmp %i1, 0 const char *target = target_or_null != NULL ? target_or_null : "/"; 4000452c: 02 80 00 78 be 4000470c <== ALWAYS TAKEN 40004530: 90 10 00 19 mov %i1, %o0 40004534: 40 00 27 57 call 4000e290 <== NOT EXECUTED 40004538: a6 10 00 19 mov %i1, %l3 <== NOT EXECUTED 4000453c: a4 02 20 01 add %o0, 1, %l2 <== NOT EXECUTED size_t filesystemtype_size = strlen( filesystemtype ) + 1; 40004540: 40 00 27 54 call 4000e290 40004544: 90 10 00 1a mov %i2, %o0 strlen( source_or_null ) + 1 : 0; 40004548: 80 a6 20 00 cmp %i0, 0 size_t filesystemtype_size = strlen( filesystemtype ) + 1; 4000454c: a8 02 20 01 add %o0, 1, %l4 strlen( source_or_null ) + 1 : 0; 40004550: 02 80 00 61 be 400046d4 <== ALWAYS TAKEN 40004554: ba 02 20 65 add %o0, 0x65, %i5 40004558: 40 00 27 4e call 4000e290 <== NOT EXECUTED 4000455c: 90 10 00 18 mov %i0, %o0 <== NOT EXECUTED size_t size = sizeof( rtems_filesystem_mount_table_entry_t ) 40004560: 92 07 40 12 add %i5, %l2, %o1 <== NOT EXECUTED strlen( source_or_null ) + 1 : 0; 40004564: a0 02 20 01 add %o0, 1, %l0 <== NOT EXECUTED rtems_filesystem_mount_table_entry_t *mt_entry = calloc( 1, size ); 40004568: 90 10 20 01 mov 1, %o0 <== NOT EXECUTED 4000456c: 7f ff fe 31 call 40003e30 <== NOT EXECUTED 40004570: 92 02 40 10 add %o1, %l0, %o1 <== NOT EXECUTED if ( mt_entry != NULL ) { 40004574: ba 92 20 00 orcc %o0, 0, %i5 <== NOT EXECUTED 40004578: 12 80 00 08 bne 40004598 <== NOT EXECUTED 4000457c: 84 07 60 64 add %i5, 0x64, %g2 <== NOT EXECUTED if ( rv != 0 ) { free( mt_entry ); } } else { errno = ENOMEM; 40004580: 40 00 25 f4 call 4000dd50 <__errno> <== NOT EXECUTED 40004584: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 40004588: 82 10 20 0c mov 0xc, %g1 <== NOT EXECUTED 4000458c: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED 40004590: 81 c7 e0 08 ret <== NOT EXECUTED 40004594: 81 e8 00 00 restore <== NOT EXECUTED memcpy( str, filesystemtype, filesystemtype_size ); 40004598: 92 10 00 1a mov %i2, %o1 <== NOT EXECUTED 4000459c: 94 10 00 14 mov %l4, %o2 <== NOT EXECUTED 400045a0: 40 00 26 1a call 4000de08 <== NOT EXECUTED 400045a4: 90 10 00 02 mov %g2, %o0 <== NOT EXECUTED mt_entry->type = str; 400045a8: d0 27 60 34 st %o0, [ %i5 + 0x34 ] <== NOT EXECUTED str += filesystemtype_size; 400045ac: 84 02 00 14 add %o0, %l4, %g2 <== NOT EXECUTED memcpy( str, source_or_null, source_size ); 400045b0: 94 10 00 10 mov %l0, %o2 <== NOT EXECUTED 400045b4: 92 10 00 18 mov %i0, %o1 <== NOT EXECUTED 400045b8: 40 00 26 14 call 4000de08 <== NOT EXECUTED 400045bc: 90 10 00 02 mov %g2, %o0 <== NOT EXECUTED mt_entry->dev = str; 400045c0: d0 27 60 38 st %o0, [ %i5 + 0x38 ] <== NOT EXECUTED rtems_filesystem_global_location_t *mt_fs_root = 400045c4: b4 07 60 40 add %i5, 0x40, %i2 <== NOT EXECUTED str += source_size; 400045c8: a0 02 00 10 add %o0, %l0, %l0 <== NOT EXECUTED memcpy( str, target, target_size ); 400045cc: 94 10 00 12 mov %l2, %o2 400045d0: 92 10 00 13 mov %l3, %o1 400045d4: 40 00 26 0d call 4000de08 400045d8: 90 10 00 10 mov %l0, %o0 mt_entry->mounted = true; 400045dc: 82 10 20 01 mov 1, %g1 400045e0: c2 2f 60 28 stb %g1, [ %i5 + 0x28 ] mt_entry->pathconf_limits_and_options = &rtems_filesystem_default_pathconf; 400045e4: 03 10 00 3d sethi %hi(0x4000f400), %g1 400045e8: 82 10 62 b8 or %g1, 0x2b8, %g1 ! 4000f6b8 mt_entry->target = str; 400045ec: e0 27 60 30 st %l0, [ %i5 + 0x30 ] void *starting_address, size_t number_nodes, size_t node_size ) { _Chain_Initialize( 400045f0: 96 10 20 24 mov 0x24, %o3 mt_entry->pathconf_limits_and_options = &rtems_filesystem_default_pathconf; 400045f4: c2 27 60 2c st %g1, [ %i5 + 0x2c ] mt_fs_root->reference_count = 1; 400045f8: 82 10 20 01 mov 1, %g1 mt_entry->mt_fs_root = mt_fs_root; 400045fc: f4 27 60 24 st %i2, [ %i5 + 0x24 ] 40004600: 94 10 20 01 mov 1, %o2 mt_fs_root->reference_count = 1; 40004604: c2 27 60 58 st %g1, [ %i5 + 0x58 ] 40004608: 92 10 00 1a mov %i2, %o1 mt_fs_root->location.mt_entry = mt_entry; 4000460c: fa 27 60 54 st %i5, [ %i5 + 0x54 ] 40004610: 90 07 60 14 add %i5, 0x14, %o0 40004614: 40 00 06 ae call 400060cc <_Chain_Initialize> 40004618: b6 0e e0 01 and %i3, 1, %i3 mt_entry->writeable = options == RTEMS_FILESYSTEM_READ_WRITE; 4000461c: f6 2f 60 29 stb %i3, [ %i5 + 0x29 ] rv = (*fsmount_me_h)( mt_entry, data ); 40004620: 92 10 00 1c mov %i4, %o1 40004624: 9f c4 40 00 call %l1 40004628: 90 10 00 1d mov %i5, %o0 if ( rv == 0 ) { 4000462c: b0 92 20 00 orcc %o0, 0, %i0 40004630: 12 80 00 25 bne 400046c4 <== NEVER TAKEN 40004634: 80 a6 60 00 cmp %i1, 0 if ( target != NULL ) { 40004638: 02 80 00 48 be 40004758 <== ALWAYS TAKEN 4000463c: 94 10 20 1f mov 0x1f, %o2 rtems_filesystem_location_info_t *currentloc = 40004640: 92 10 00 19 mov %i1, %o1 <== NOT EXECUTED 40004644: 40 00 03 02 call 4000524c <== NOT EXECUTED 40004648: 90 07 bf c8 add %fp, -56, %o0 <== NOT EXECUTED const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry; 4000464c: c2 02 20 14 ld [ %o0 + 0x14 ], %g1 <== NOT EXECUTED return (*mt_entry->ops->are_nodes_equal_h)( 40004650: c4 00 60 0c ld [ %g1 + 0xc ], %g2 <== NOT EXECUTED 40004654: c4 00 a0 10 ld [ %g2 + 0x10 ], %g2 <== NOT EXECUTED 40004658: 9f c0 80 00 call %g2 <== NOT EXECUTED 4000465c: d2 00 60 24 ld [ %g1 + 0x24 ], %o1 <== NOT EXECUTED if ( !rtems_filesystem_location_is_instance_root( currentloc ) ) { 40004660: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 40004664: 12 80 00 63 bne 400047f0 <== NOT EXECUTED 40004668: 92 07 bf e0 add %fp, -32, %o1 <== NOT EXECUTED rtems_filesystem_location_copy_and_detach( 4000466c: 40 00 04 4e call 400057a4 <== NOT EXECUTED 40004670: 90 07 bf b0 add %fp, -80, %o0 <== NOT EXECUTED mt_point_node = rtems_filesystem_location_transform_to_global( &targetloc ); 40004674: 40 00 04 77 call 40005850 <== NOT EXECUTED 40004678: 90 07 bf b0 add %fp, -80, %o0 <== NOT EXECUTED rv = (*mt_point_node->location.mt_entry->ops->mount_h)( mt_entry ); 4000467c: c2 02 20 14 ld [ %o0 + 0x14 ], %g1 <== NOT EXECUTED 40004680: c2 00 60 0c ld [ %g1 + 0xc ], %g1 <== NOT EXECUTED mt_entry->mt_point_node = mt_point_node; 40004684: d0 27 60 20 st %o0, [ %i5 + 0x20 ] <== NOT EXECUTED mt_point_node = rtems_filesystem_location_transform_to_global( &targetloc ); 40004688: b8 10 00 08 mov %o0, %i4 <== NOT EXECUTED rv = (*mt_point_node->location.mt_entry->ops->mount_h)( mt_entry ); 4000468c: c2 00 60 2c ld [ %g1 + 0x2c ], %g1 <== NOT EXECUTED 40004690: 9f c0 40 00 call %g1 <== NOT EXECUTED 40004694: 90 10 00 1d mov %i5, %o0 <== NOT EXECUTED if ( rv == 0 ) { 40004698: b0 92 20 00 orcc %o0, 0, %i0 <== NOT EXECUTED 4000469c: 02 80 00 20 be 4000471c <== NOT EXECUTED 400046a0: 90 10 00 1c mov %i4, %o0 <== NOT EXECUTED rtems_filesystem_global_location_release( mt_point_node, true ); 400046a4: 40 00 03 fb call 40005690 <== NOT EXECUTED 400046a8: 92 10 20 01 mov 1, %o1 <== NOT EXECUTED rtems_filesystem_eval_path_cleanup( &ctx ); 400046ac: 40 00 02 f4 call 4000527c <== NOT EXECUTED 400046b0: 90 07 bf c8 add %fp, -56, %o0 <== NOT EXECUTED (*mt_entry->ops->fsunmount_me_h)( mt_entry ); 400046b4: c2 07 60 0c ld [ %i5 + 0xc ], %g1 <== NOT EXECUTED 400046b8: c2 00 60 34 ld [ %g1 + 0x34 ], %g1 <== NOT EXECUTED 400046bc: 9f c0 40 00 call %g1 <== NOT EXECUTED 400046c0: 90 10 00 1d mov %i5, %o0 <== NOT EXECUTED free( mt_entry ); 400046c4: 7f ff fe 26 call 40003f5c <== NOT EXECUTED 400046c8: 90 10 00 1d mov %i5, %o0 <== NOT EXECUTED errno = EINVAL; rv = -1; } return rv; } 400046cc: 81 c7 e0 08 ret <== NOT EXECUTED 400046d0: 81 e8 00 00 restore <== NOT EXECUTED rtems_filesystem_mount_table_entry_t *mt_entry = calloc( 1, size ); 400046d4: 92 07 40 12 add %i5, %l2, %o1 400046d8: 7f ff fd d6 call 40003e30 400046dc: 90 10 20 01 mov 1, %o0 if ( mt_entry != NULL ) { 400046e0: ba 92 20 00 orcc %o0, 0, %i5 400046e4: 02 bf ff a7 be 40004580 <== NEVER TAKEN 400046e8: 84 07 60 64 add %i5, 0x64, %g2 memcpy( str, filesystemtype, filesystemtype_size ); 400046ec: 92 10 00 1a mov %i2, %o1 400046f0: 94 10 00 14 mov %l4, %o2 400046f4: 90 10 00 02 mov %g2, %o0 400046f8: 40 00 25 c4 call 4000de08 400046fc: b4 07 60 40 add %i5, 0x40, %i2 str += filesystemtype_size; 40004700: a0 02 00 14 add %o0, %l4, %l0 mt_entry->type = str; 40004704: 10 bf ff b2 b 400045cc 40004708: d0 27 60 34 st %o0, [ %i5 + 0x34 ] const char *target = target_or_null != NULL ? target_or_null : "/"; 4000470c: 27 10 00 3c sethi %hi(0x4000f000), %l3 40004710: a4 10 20 02 mov 2, %l2 40004714: 10 bf ff 8b b 40004540 40004718: a6 14 e2 f0 or %l3, 0x2f0, %l3 rtems_libio_lock(); 4000471c: 7f ff fe 84 call 4000412c <== NOT EXECUTED 40004720: 01 00 00 00 nop <== NOT EXECUTED old_last = tail->previous; 40004724: 03 10 00 43 sethi %hi(0x40010c00), %g1 <== NOT EXECUTED 40004728: 82 10 61 e4 or %g1, 0x1e4, %g1 ! 40010de4 <== NOT EXECUTED 4000472c: c4 00 60 08 ld [ %g1 + 8 ], %g2 <== NOT EXECUTED the_node->next = tail; 40004730: 86 00 60 04 add %g1, 4, %g3 <== NOT EXECUTED tail->previous = the_node; 40004734: fa 20 60 08 st %i5, [ %g1 + 8 ] <== NOT EXECUTED the_node->next = tail; 40004738: c6 27 40 00 st %g3, [ %i5 ] <== NOT EXECUTED old_last->next = the_node; 4000473c: fa 20 80 00 st %i5, [ %g2 ] <== NOT EXECUTED rtems_libio_unlock(); 40004740: 7f ff fe 80 call 40004140 <== NOT EXECUTED 40004744: c4 27 60 04 st %g2, [ %i5 + 4 ] <== NOT EXECUTED rtems_filesystem_eval_path_cleanup( &ctx ); 40004748: 40 00 02 cd call 4000527c <== NOT EXECUTED 4000474c: 90 07 bf c8 add %fp, -56, %o0 <== NOT EXECUTED 40004750: 81 c7 e0 08 ret <== NOT EXECUTED 40004754: 81 e8 00 00 restore <== NOT EXECUTED rtems_libio_lock(); 40004758: 7f ff fe 75 call 4000412c 4000475c: 01 00 00 00 nop return _Chain_Immutable_head( the_chain )->next; 40004760: 03 10 00 43 sethi %hi(0x40010c00), %g1 if ( rtems_chain_is_empty( &rtems_filesystem_mount_table ) ) { 40004764: c4 00 61 e4 ld [ %g1 + 0x1e4 ], %g2 ! 40010de4 40004768: 82 10 61 e4 or %g1, 0x1e4, %g1 4000476c: 86 00 60 04 add %g1, 4, %g3 40004770: 80 a0 80 03 cmp %g2, %g3 40004774: 12 80 00 27 bne 40004810 <== NEVER TAKEN 40004778: 01 00 00 00 nop old_last = tail->previous; 4000477c: c6 00 60 08 ld [ %g1 + 8 ], %g3 the_node->next = tail; 40004780: c4 27 40 00 st %g2, [ %i5 ] rtems_filesystem_global_location_obtain( &mt_entry->mt_fs_root ); 40004784: b8 07 60 24 add %i5, 0x24, %i4 tail->previous = the_node; 40004788: fa 20 60 08 st %i5, [ %g1 + 8 ] old_last->next = the_node; 4000478c: fa 20 c0 00 st %i5, [ %g3 ] rtems_libio_unlock(); 40004790: 7f ff fe 6c call 40004140 40004794: c6 27 60 04 st %g3, [ %i5 + 4 ] rtems_filesystem_global_location_t *new_fs_root = 40004798: 40 00 03 84 call 400055a8 4000479c: 90 10 00 1c mov %i4, %o0 400047a0: b6 10 00 08 mov %o0, %i3 rtems_filesystem_global_location_t *new_fs_current = 400047a4: 40 00 03 81 call 400055a8 400047a8: 90 10 00 1c mov %i4, %o0 &rtems_filesystem_root, 400047ac: 40 00 00 fa call 40004b94 400047b0: ba 10 00 08 mov %o0, %i5 rtems_filesystem_global_location_assign( 400047b4: 92 10 00 1b mov %i3, %o1 400047b8: 40 00 03 d0 call 400056f8 400047bc: 90 02 20 04 add %o0, 4, %o0 &rtems_filesystem_current, 400047c0: 40 00 00 f5 call 40004b94 400047c4: 01 00 00 00 nop rtems_filesystem_global_location_assign( 400047c8: 40 00 03 cc call 400056f8 400047cc: 92 10 00 1d mov %i5, %o1 400047d0: 81 c7 e0 08 ret 400047d4: 81 e8 00 00 restore errno = EINVAL; 400047d8: 40 00 25 5e call 4000dd50 <__errno> <== NOT EXECUTED 400047dc: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 400047e0: 82 10 20 16 mov 0x16, %g1 <== NOT EXECUTED 400047e4: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED return rv; 400047e8: 81 c7 e0 08 ret <== NOT EXECUTED 400047ec: 81 e8 00 00 restore <== NOT EXECUTED rtems_filesystem_eval_path_error( &ctx, EBUSY ); 400047f0: 90 07 bf c8 add %fp, -56, %o0 <== NOT EXECUTED 400047f4: 40 00 01 db call 40004f60 <== NOT EXECUTED 400047f8: 92 10 20 10 mov 0x10, %o1 <== NOT EXECUTED rv = -1; 400047fc: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED rtems_filesystem_eval_path_cleanup( &ctx ); 40004800: 40 00 02 9f call 4000527c <== NOT EXECUTED 40004804: 90 07 bf c8 add %fp, -56, %o0 <== NOT EXECUTED (*mt_entry->ops->fsunmount_me_h)( mt_entry ); 40004808: 10 bf ff ac b 400046b8 <== NOT EXECUTED 4000480c: c2 07 60 0c ld [ %i5 + 0xc ], %g1 <== NOT EXECUTED errno = EINVAL; 40004810: 40 00 25 50 call 4000dd50 <__errno> <== NOT EXECUTED 40004814: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 40004818: 82 10 20 16 mov 0x16, %g1 <== NOT EXECUTED 4000481c: 7f ff fe 49 call 40004140 <== NOT EXECUTED 40004820: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED (*mt_entry->ops->fsunmount_me_h)( mt_entry ); 40004824: 10 bf ff a5 b 400046b8 <== NOT EXECUTED 40004828: c2 07 60 0c ld [ %i5 + 0xc ], %g1 <== NOT EXECUTED =============================================================================== 40004928 : /** * POSIX 1003.1 5.3.1 - Open a File */ int open( const char *path, int oflag, ... ) { 40004928: 9d e3 bf 00 save %sp, -256, %sp mode_t mode = 0; rtems_libio_t *iop = NULL; va_start( ap, oflag ); mode = va_arg( ap, mode_t ); 4000492c: 82 07 a0 50 add %fp, 0x50, %g1 va_start( ap, oflag ); 40004930: fa 27 a0 58 st %i5, [ %fp + 0x58 ] 40004934: f4 27 a0 4c st %i2, [ %fp + 0x4c ] 40004938: f6 27 a0 50 st %i3, [ %fp + 0x50 ] 4000493c: f8 27 a0 54 st %i4, [ %fp + 0x54 ] iop = rtems_libio_allocate(); 40004940: 40 00 1c ce call 4000bc78 40004944: c2 27 bf 64 st %g1, [ %fp + -156 ] if ( iop != NULL ) { 40004948: ba 92 20 00 orcc %o0, 0, %i5 4000494c: 02 80 00 76 be 40004b24 <== NEVER TAKEN 40004950: 82 06 60 01 add %i1, 1, %g1 bool make = (oflag & O_CREAT) == O_CREAT; 40004954: 86 0e 62 00 and %i1, 0x200, %g3 bool read_access = (rwflag & _FREAD) == _FREAD; 40004958: 94 08 60 01 and %g1, 1, %o2 bool exclusive = (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL); 4000495c: 84 0e 6a 00 and %i1, 0xa00, %g2 | (read_access ? RTEMS_FS_PERMS_READ : 0) 40004960: 94 02 bf ff add %o2, -1, %o2 | (write_access ? RTEMS_FS_PERMS_WRITE : 0) 40004964: b8 88 60 02 andcc %g1, 2, %i4 | (read_access ? RTEMS_FS_PERMS_READ : 0) 40004968: 94 0a bf fc and %o2, -4, %o2 | (write_access ? RTEMS_FS_PERMS_WRITE : 0) 4000496c: 02 80 00 03 be 40004978 40004970: 94 02 a0 1c add %o2, 0x1c, %o2 40004974: 94 12 a0 02 or %o2, 2, %o2 | (make ? RTEMS_FS_MAKE : 0) 40004978: 80 a0 e0 00 cmp %g3, 0 4000497c: 32 80 00 02 bne,a 40004984 <== NEVER TAKEN 40004980: 94 12 a0 20 or %o2, 0x20, %o2 <== NOT EXECUTED | (exclusive ? RTEMS_FS_EXCLUSIVE : 0); 40004984: 80 a0 aa 00 cmp %g2, 0xa00 40004988: 22 80 00 02 be,a 40004990 <== NEVER TAKEN 4000498c: 94 12 a0 40 or %o2, 0x40, %o2 <== NOT EXECUTED rtems_filesystem_eval_path_start( &ctx, path, eval_flags ); 40004990: 92 10 00 18 mov %i0, %o1 40004994: 40 00 02 2e call 4000524c 40004998: 90 07 bf 68 add %fp, -152, %o0 4000499c: f6 07 bf 74 ld [ %fp + -140 ], %i3 if ( rtems_filesystem_eval_path_has_token( &ctx ) ) { 400049a0: 80 a6 e0 00 cmp %i3, 0 400049a4: 12 80 00 45 bne 40004ab8 <== NEVER TAKEN 400049a8: 80 a7 20 00 cmp %i4, 0 if ( write_access ) { 400049ac: 02 80 00 0e be 400049e4 400049b0: c2 07 bf 90 ld [ %fp + -112 ], %g1 const rtems_filesystem_location_info_t *loc ) { struct stat st; st.st_mode = 0; 400049b4: c0 27 bf ac clr [ %fp + -84 ] (void) ( *loc->handlers->fstat_h )( loc, &st ); 400049b8: 92 07 bf a0 add %fp, -96, %o1 400049bc: c2 00 60 18 ld [ %g1 + 0x18 ], %g1 400049c0: 9f c0 40 00 call %g1 400049c4: 90 07 bf 80 add %fp, -128, %o0 if ( S_ISDIR( type ) ) { 400049c8: 05 00 00 3c sethi %hi(0xf000), %g2 400049cc: c2 07 bf ac ld [ %fp + -84 ], %g1 400049d0: 82 08 40 02 and %g1, %g2, %g1 400049d4: 05 00 00 10 sethi %hi(0x4000), %g2 400049d8: 80 a0 40 02 cmp %g1, %g2 400049dc: 02 80 00 4e be 40004b14 <== NEVER TAKEN 400049e0: 92 10 20 15 mov 0x15, %o1 rtems_filesystem_location_copy_and_detach( 400049e4: 92 07 bf 80 add %fp, -128, %o1 400049e8: 40 00 03 6f call 400057a4 400049ec: 90 07 60 0c add %i5, 0xc, %o0 rtems_filesystem_eval_path_cleanup( &ctx ); 400049f0: 40 00 02 23 call 4000527c 400049f4: 90 07 bf 68 add %fp, -152, %o0 _Atomic_Store_uint( 400049f8: 40 00 1c 93 call 4000bc44 400049fc: 90 10 00 19 mov %i1, %o0 rv = (*iop->pathinfo.handlers->open_h)( iop, path, oflag, mode ); 40004a00: c2 07 60 1c ld [ %i5 + 0x1c ], %g1 #elif defined(_RTEMS_SCORE_CPUSTDATOMIC_USE_STDATOMIC) atomic_store_explicit( obj, desired, order ); #else (void) order; RTEMS_COMPILER_MEMORY_BARRIER(); *obj = desired; 40004a04: d0 27 60 08 st %o0, [ %i5 + 8 ] 40004a08: 92 10 00 18 mov %i0, %o1 40004a0c: c2 00 40 00 ld [ %g1 ], %g1 40004a10: 96 10 00 1a mov %i2, %o3 40004a14: 94 10 00 19 mov %i1, %o2 40004a18: 9f c0 40 00 call %g1 40004a1c: 90 10 00 1d mov %i5, %o0 if ( rv == 0 ) { 40004a20: b0 92 20 00 orcc %o0, 0, %i0 40004a24: 12 80 00 13 bne 40004a70 <== NEVER TAKEN 40004a28: 80 a6 20 00 cmp %i0, 0 <== NOT EXECUTED int fd = rtems_libio_iop_to_descriptor( iop ); 40004a2c: 31 10 00 48 sethi %hi(0x40012000), %i0 <== NOT EXECUTED 40004a30: 03 2a aa aa sethi %hi(0xaaaaa800), %g1 <== NOT EXECUTED 40004a34: b0 16 20 f0 or %i0, 0xf0, %i0 <== NOT EXECUTED 40004a38: 82 10 62 ab or %g1, 0x2ab, %g1 <== NOT EXECUTED 40004a3c: b0 27 40 18 sub %i5, %i0, %i0 <== NOT EXECUTED 40004a40: b1 3e 20 04 sra %i0, 4, %i0 <== NOT EXECUTED 40004a44: b0 5e 00 01 smul %i0, %g1, %i0 <== NOT EXECUTED __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS)); 40004a48: 91 d0 20 09 ta 9 <== NOT EXECUTED ISR_Level level; (void) order; _ISR_Local_disable( level ); val = *obj; *obj = val | arg; 40004a4c: c4 07 60 08 ld [ %i5 + 8 ], %g2 <== NOT EXECUTED 40004a50: 84 10 a1 00 or %g2, 0x100, %g2 <== NOT EXECUTED 40004a54: c4 27 60 08 st %g2, [ %i5 + 8 ] <== NOT EXECUTED __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr)); 40004a58: 91 d0 20 0a ta 0xa <== NOT EXECUTED 40004a5c: 01 00 00 00 nop if ( truncate ) { 40004a60: 80 8e 64 00 btst 0x400, %i1 40004a64: 12 80 00 07 bne 40004a80 <== NEVER TAKEN 40004a68: 92 10 20 00 clr %o1 if ( rv < 0 ) { 40004a6c: 80 a6 20 00 cmp %i0, 0 40004a70: 06 80 00 0e bl 40004aa8 <== NEVER TAKEN 40004a74: 01 00 00 00 nop } va_end( ap ); return rv; } 40004a78: 81 c7 e0 08 ret 40004a7c: 81 e8 00 00 restore rv = ftruncate( fd, 0 ); 40004a80: 94 10 20 00 clr %o2 <== NOT EXECUTED 40004a84: 40 00 1c 27 call 4000bb20 <== NOT EXECUTED 40004a88: 90 10 00 18 mov %i0, %o0 <== NOT EXECUTED if ( rv != 0 ) { 40004a8c: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 40004a90: 02 bf ff f7 be 40004a6c <== NOT EXECUTED 40004a94: 90 10 00 1d mov %i5, %o0 <== NOT EXECUTED (*iop->pathinfo.handlers->close_h)( iop ); 40004a98: c2 07 60 1c ld [ %i5 + 0x1c ], %g1 <== NOT EXECUTED 40004a9c: c2 00 60 04 ld [ %g1 + 4 ], %g1 <== NOT EXECUTED 40004aa0: 9f c0 40 00 call %g1 <== NOT EXECUTED 40004aa4: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED rtems_libio_free( iop ); 40004aa8: 40 00 1c 89 call 4000bccc <== NOT EXECUTED 40004aac: 90 10 00 1d mov %i5, %o0 <== NOT EXECUTED 40004ab0: 81 c7 e0 08 ret <== NOT EXECUTED 40004ab4: 81 e8 00 00 restore <== NOT EXECUTED 40004ab8: e0 07 bf 70 ld [ %fp + -144 ], %l0 <== NOT EXECUTED rv = rtems_filesystem_mknod( 40004abc: 98 10 20 00 clr %o4 <== NOT EXECUTED 40004ac0: 9a 10 20 00 clr %o5 <== NOT EXECUTED 40004ac4: 17 00 00 20 sethi %hi(0x8000), %o3 <== NOT EXECUTED 40004ac8: 94 10 00 1b mov %i3, %o2 <== NOT EXECUTED 40004acc: 96 16 80 0b or %i2, %o3, %o3 <== NOT EXECUTED 40004ad0: 92 10 00 10 mov %l0, %o1 <== NOT EXECUTED 40004ad4: 7f ff fe 4c call 40004404 <== NOT EXECUTED 40004ad8: 90 07 bf 80 add %fp, -128, %o0 <== NOT EXECUTED if ( rv == 0 ) { 40004adc: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 40004ae0: 02 80 00 06 be 40004af8 <== NOT EXECUTED 40004ae4: 92 10 20 00 clr %o1 <== NOT EXECUTED rtems_filesystem_eval_path_error( ctx, 0 ); 40004ae8: 40 00 01 1e call 40004f60 <== NOT EXECUTED 40004aec: 90 07 bf 68 add %fp, -152, %o0 <== NOT EXECUTED if ( write_access ) { 40004af0: 10 bf ff af b 400049ac <== NOT EXECUTED 40004af4: 80 a7 20 00 cmp %i4, 0 <== NOT EXECUTED ctx->flags = flags; 40004af8: c0 27 bf 78 clr [ %fp + -136 ] <== NOT EXECUTED rtems_filesystem_eval_path_continue( ctx ); 40004afc: 90 07 bf 68 add %fp, -152, %o0 <== NOT EXECUTED ctx->path = path; 40004b00: e0 27 bf 68 st %l0, [ %fp + -152 ] <== NOT EXECUTED 40004b04: 40 00 01 5f call 40005080 <== NOT EXECUTED 40004b08: f6 27 bf 6c st %i3, [ %fp + -148 ] <== NOT EXECUTED if ( write_access ) { 40004b0c: 10 bf ff a8 b 400049ac <== NOT EXECUTED 40004b10: 80 a7 20 00 cmp %i4, 0 <== NOT EXECUTED rtems_filesystem_eval_path_error( &ctx, EISDIR ); 40004b14: 40 00 01 13 call 40004f60 <== NOT EXECUTED 40004b18: 90 07 bf 68 add %fp, -152, %o0 <== NOT EXECUTED rtems_filesystem_location_copy_and_detach( 40004b1c: 10 bf ff b3 b 400049e8 <== NOT EXECUTED 40004b20: 92 07 bf 80 add %fp, -128, %o1 <== NOT EXECUTED errno = ENFILE; 40004b24: 40 00 24 8b call 4000dd50 <__errno> <== NOT EXECUTED 40004b28: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 40004b2c: 82 10 20 17 mov 0x17, %g1 <== NOT EXECUTED 40004b30: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED } 40004b34: 81 c7 e0 08 ret <== NOT EXECUTED 40004b38: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 40004b3c : /** * Kernel printf function requiring minimal infrastructure. */ int printk(const char *fmt, ...) { 40004b3c: 9d e3 bf 98 save %sp, -104, %sp <== NOT EXECUTED va_list ap; /* points to each unnamed argument in turn */ int len; va_start(ap, fmt); /* make ap point to 1st unnamed arg */ 40004b40: 82 07 a0 48 add %fp, 0x48, %g1 <== NOT EXECUTED 40004b44: f2 27 a0 48 st %i1, [ %fp + 0x48 ] <== NOT EXECUTED len = vprintk(fmt, ap); 40004b48: 92 10 00 01 mov %g1, %o1 <== NOT EXECUTED va_start(ap, fmt); /* make ap point to 1st unnamed arg */ 40004b4c: f4 27 a0 4c st %i2, [ %fp + 0x4c ] <== NOT EXECUTED len = vprintk(fmt, ap); 40004b50: 90 10 00 18 mov %i0, %o0 <== NOT EXECUTED va_start(ap, fmt); /* make ap point to 1st unnamed arg */ 40004b54: f6 27 a0 50 st %i3, [ %fp + 0x50 ] <== NOT EXECUTED 40004b58: f8 27 a0 54 st %i4, [ %fp + 0x54 ] <== NOT EXECUTED 40004b5c: fa 27 a0 58 st %i5, [ %fp + 0x58 ] <== NOT EXECUTED len = vprintk(fmt, ap); 40004b60: 40 00 03 e6 call 40005af8 <== NOT EXECUTED 40004b64: c2 27 bf fc st %g1, [ %fp + -4 ] <== NOT EXECUTED va_end(ap); /* clean up when done */ return len; } 40004b68: 81 c7 e0 08 ret <== NOT EXECUTED 40004b6c: 91 e8 00 08 restore %g0, %o0, %o0 <== NOT EXECUTED =============================================================================== 4000d984 : uint32_t rtems_assoc_local_by_remote( const rtems_assoc_t *ap, uint32_t remote_value ) { 4000d984: 9d e3 bf a0 save %sp, -96, %sp const rtems_assoc_t *nap; nap = rtems_assoc_ptr_by_remote(ap, remote_value); 4000d988: 90 10 00 18 mov %i0, %o0 4000d98c: 92 10 00 19 mov %i1, %o1 4000d990: 40 00 00 07 call 4000d9ac 4000d994: b0 10 20 00 clr %i0 if (nap) 4000d998: 80 a2 20 00 cmp %o0, 0 4000d99c: 32 80 00 02 bne,a 4000d9a4 <== ALWAYS TAKEN 4000d9a0: f0 02 20 04 ld [ %o0 + 4 ], %i0 return nap->local_value; return 0; } 4000d9a4: 81 c7 e0 08 ret 4000d9a8: 81 e8 00 00 restore =============================================================================== 4000d938 : uint32_t rtems_assoc_local_by_remote_bitfield( const rtems_assoc_t *ap, uint32_t remote_value ) { 4000d938: 9d e3 bf a0 save %sp, -96, %sp 4000d93c: b8 10 20 20 mov 0x20, %i4 uint32_t b; uint32_t local_value = 0; 4000d940: b6 10 20 00 clr %i3 for (b = 1; b; b <<= 1) { 4000d944: 10 80 00 04 b 4000d954 4000d948: ba 10 20 01 mov 1, %i5 4000d94c: 02 80 00 0c be 4000d97c 4000d950: bb 2f 60 01 sll %i5, 1, %i5 if (b & remote_value) 4000d954: 80 8e 40 1d btst %i1, %i5 4000d958: 22 bf ff fd be,a 4000d94c <== ALWAYS TAKEN 4000d95c: b8 87 3f ff addcc %i4, -1, %i4 local_value |= rtems_assoc_local_by_remote(ap, b); 4000d960: 92 10 00 1d mov %i5, %o1 <== NOT EXECUTED 4000d964: 40 00 00 08 call 4000d984 <== NOT EXECUTED 4000d968: 90 10 00 18 mov %i0, %o0 <== NOT EXECUTED for (b = 1; b; b <<= 1) { 4000d96c: bb 2f 60 01 sll %i5, 1, %i5 <== NOT EXECUTED 4000d970: b8 87 3f ff addcc %i4, -1, %i4 <== NOT EXECUTED 4000d974: 12 bf ff f8 bne 4000d954 <== NOT EXECUTED 4000d978: b6 16 c0 08 or %i3, %o0, %i3 <== NOT EXECUTED } return local_value; } 4000d97c: 81 c7 e0 08 ret 4000d980: 91 e8 00 1b restore %g0, %i3, %o0 =============================================================================== 4000d9ac : const rtems_assoc_t *rtems_assoc_ptr_by_remote( const rtems_assoc_t *ap, uint32_t remote_value ) { 4000d9ac: 9d e3 bf a0 save %sp, -96, %sp const rtems_assoc_t *default_ap = 0; if (rtems_assoc_is_default(ap)) 4000d9b0: d0 06 00 00 ld [ %i0 ], %o0 { 4000d9b4: ba 10 00 18 mov %i0, %i5 if (rtems_assoc_is_default(ap)) 4000d9b8: 80 a2 20 00 cmp %o0, 0 4000d9bc: 02 80 00 16 be 4000da14 <== NEVER TAKEN 4000d9c0: b0 10 20 00 clr %i0 4000d9c4: 13 10 00 3e sethi %hi(0x4000f800), %o1 4000d9c8: 40 00 01 d7 call 4000e124 4000d9cc: 92 12 63 20 or %o1, 0x320, %o1 ! 4000fb20 4000d9d0: 80 a2 20 00 cmp %o0, 0 4000d9d4: 22 80 00 12 be,a 4000da1c <== NEVER TAKEN 4000d9d8: c4 07 60 0c ld [ %i5 + 0xc ], %g2 <== NOT EXECUTED default_ap = ap++; for ( ; ap->name; ap++) if (ap->remote_value == remote_value) 4000d9dc: c2 07 60 08 ld [ %i5 + 8 ], %g1 4000d9e0: 80 a6 40 01 cmp %i1, %g1 4000d9e4: 32 80 00 08 bne,a 4000da04 4000d9e8: ba 07 60 0c add %i5, 0xc, %i5 for ( ; ap->name; ap++) 4000d9ec: 81 c7 e0 08 ret 4000d9f0: 91 e8 00 1d restore %g0, %i5, %o0 if (ap->remote_value == remote_value) 4000d9f4: 80 a0 40 19 cmp %g1, %i1 4000d9f8: 22 80 00 07 be,a 4000da14 <== ALWAYS TAKEN 4000d9fc: b0 10 00 1d mov %i5, %i0 for ( ; ap->name; ap++) 4000da00: ba 07 60 0c add %i5, 0xc, %i5 <== NOT EXECUTED 4000da04: c2 07 40 00 ld [ %i5 ], %g1 4000da08: 80 a0 60 00 cmp %g1, 0 4000da0c: 32 bf ff fa bne,a 4000d9f4 <== ALWAYS TAKEN 4000da10: c2 07 60 08 ld [ %i5 + 8 ], %g1 4000da14: 81 c7 e0 08 ret 4000da18: 81 e8 00 00 restore default_ap = ap++; 4000da1c: 82 07 60 0c add %i5, 0xc, %g1 <== NOT EXECUTED for ( ; ap->name; ap++) 4000da20: b0 10 00 1d mov %i5, %i0 <== NOT EXECUTED 4000da24: 80 a0 a0 00 cmp %g2, 0 <== NOT EXECUTED 4000da28: 12 bf ff ed bne 4000d9dc <== NOT EXECUTED 4000da2c: ba 10 00 01 mov %g1, %i5 <== NOT EXECUTED 4000da30: 81 c7 e0 08 ret <== NOT EXECUTED 4000da34: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 40004b94 : { 40004b94: 9d e3 bf a0 save %sp, -96, %sp void *ptr = pthread_getspecific(rtems_current_user_env_key); 40004b98: 03 10 00 49 sethi %hi(0x40012400), %g1 40004b9c: 40 00 04 04 call 40005bac 40004ba0: d0 00 60 94 ld [ %g1 + 0x94 ], %o0 ! 40012494 if (ptr == NULL) { 40004ba4: b0 92 20 00 orcc %o0, 0, %i0 40004ba8: 22 80 00 04 be,a 40004bb8 <== ALWAYS TAKEN 40004bac: 31 10 00 43 sethi %hi(0x40010c00), %i0 } 40004bb0: 81 c7 e0 08 ret <== NOT EXECUTED 40004bb4: 81 e8 00 00 restore <== NOT EXECUTED 40004bb8: 81 c7 e0 08 ret 40004bbc: 91 ee 21 f0 restore %i0, 0x1f0, %o0 =============================================================================== 4000bf04 : int rtems_deviceio_close( rtems_libio_t *iop, rtems_device_major_number major, rtems_device_minor_number minor ) { 4000bf04: 9d e3 bf 90 save %sp, -112, %sp <== NOT EXECUTED args.iop = iop; args.flags = 0; args.mode = 0; status = rtems_io_close( major, minor, &args ); 4000bf08: 94 07 bf f4 add %fp, -12, %o2 <== NOT EXECUTED 4000bf0c: 92 10 00 1a mov %i2, %o1 <== NOT EXECUTED args.iop = iop; 4000bf10: f0 27 bf f4 st %i0, [ %fp + -12 ] <== NOT EXECUTED status = rtems_io_close( major, minor, &args ); 4000bf14: 90 10 00 19 mov %i1, %o0 <== NOT EXECUTED args.flags = 0; 4000bf18: c0 27 bf f8 clr [ %fp + -8 ] <== NOT EXECUTED status = rtems_io_close( major, minor, &args ); 4000bf1c: 40 00 02 5f call 4000c898 <== NOT EXECUTED 4000bf20: c0 27 bf fc clr [ %fp + -4 ] <== NOT EXECUTED return rtems_status_code_to_errno( status ); 4000bf24: 40 00 02 47 call 4000c840 <== NOT EXECUTED 4000bf28: 01 00 00 00 nop <== NOT EXECUTED } 4000bf2c: 81 c7 e0 08 ret <== NOT EXECUTED 4000bf30: 91 e8 00 08 restore %g0, %o0, %o0 <== NOT EXECUTED =============================================================================== 4000c014 : ioctl_command_t command, void *buffer, rtems_device_major_number major, rtems_device_minor_number minor ) { 4000c014: 9d e3 bf 90 save %sp, -112, %sp <== NOT EXECUTED rtems_status_code status; rtems_libio_ioctl_args_t args; args.iop = iop; 4000c018: f0 27 bf f0 st %i0, [ %fp + -16 ] <== NOT EXECUTED args.command = command; args.buffer = buffer; status = rtems_io_control( major, minor, &args ); 4000c01c: 94 07 bf f0 add %fp, -16, %o2 <== NOT EXECUTED args.command = command; 4000c020: f2 27 bf f4 st %i1, [ %fp + -12 ] <== NOT EXECUTED status = rtems_io_control( major, minor, &args ); 4000c024: 92 10 00 1c mov %i4, %o1 <== NOT EXECUTED args.buffer = buffer; 4000c028: f4 27 bf f8 st %i2, [ %fp + -8 ] <== NOT EXECUTED status = rtems_io_control( major, minor, &args ); 4000c02c: 40 00 02 33 call 4000c8f8 <== NOT EXECUTED 4000c030: 90 10 00 1b mov %i3, %o0 <== NOT EXECUTED if ( status == RTEMS_SUCCESSFUL ) { 4000c034: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 4000c038: 12 80 00 05 bne 4000c04c <== NOT EXECUTED 4000c03c: 01 00 00 00 nop <== NOT EXECUTED return args.ioctl_return; 4000c040: f0 07 bf fc ld [ %fp + -4 ], %i0 <== NOT EXECUTED 4000c044: 81 c7 e0 08 ret <== NOT EXECUTED 4000c048: 81 e8 00 00 restore <== NOT EXECUTED } else { return rtems_status_code_to_errno(status); 4000c04c: 40 00 01 fd call 4000c840 <== NOT EXECUTED 4000c050: 01 00 00 00 nop <== NOT EXECUTED } } 4000c054: 81 c7 e0 08 ret <== NOT EXECUTED 4000c058: 91 e8 00 08 restore %g0, %o0, %o0 <== NOT EXECUTED =============================================================================== 4000bed0 : int oflag, mode_t mode, rtems_device_major_number major, rtems_device_minor_number minor ) { 4000bed0: 9d e3 bf 90 save %sp, -112, %sp <== NOT EXECUTED rtems_status_code status; rtems_libio_open_close_args_t args; args.iop = iop; args.flags = iop->flags; 4000bed4: c2 06 20 08 ld [ %i0 + 8 ], %g1 <== NOT EXECUTED args.mode = mode; status = rtems_io_open( major, minor, &args ); 4000bed8: 94 07 bf f4 add %fp, -12, %o2 <== NOT EXECUTED 4000bedc: 92 10 00 1d mov %i5, %o1 <== NOT EXECUTED args.iop = iop; 4000bee0: f0 27 bf f4 st %i0, [ %fp + -12 ] <== NOT EXECUTED status = rtems_io_open( major, minor, &args ); 4000bee4: 90 10 00 1c mov %i4, %o0 <== NOT EXECUTED args.flags = iop->flags; 4000bee8: c2 27 bf f8 st %g1, [ %fp + -8 ] <== NOT EXECUTED status = rtems_io_open( major, minor, &args ); 4000beec: 40 00 02 b2 call 4000c9b4 <== NOT EXECUTED 4000bef0: f6 27 bf fc st %i3, [ %fp + -4 ] <== NOT EXECUTED return rtems_status_code_to_errno( status ); 4000bef4: 40 00 02 53 call 4000c840 <== NOT EXECUTED 4000bef8: 01 00 00 00 nop <== NOT EXECUTED } 4000befc: 81 c7 e0 08 ret <== NOT EXECUTED 4000bf00: 91 e8 00 08 restore %g0, %o0, %o0 <== NOT EXECUTED =============================================================================== 4000bf34 : void *buf, size_t nbyte, rtems_device_major_number major, rtems_device_minor_number minor ) { 4000bf34: 9d e3 bf 80 save %sp, -128, %sp <== NOT EXECUTED rtems_status_code status; rtems_libio_rw_args_t args; args.iop = iop; args.offset = iop->offset; 4000bf38: c4 1e 00 00 ldd [ %i0 ], %g2 <== NOT EXECUTED args.buffer = buf; args.count = nbyte; args.flags = iop->flags; 4000bf3c: c2 06 20 08 ld [ %i0 + 8 ], %g1 <== NOT EXECUTED args.iop = iop; 4000bf40: f0 27 bf e0 st %i0, [ %fp + -32 ] <== NOT EXECUTED args.bytes_moved = 0; status = rtems_io_read( major, minor, &args ); 4000bf44: 94 07 bf e0 add %fp, -32, %o2 <== NOT EXECUTED args.offset = iop->offset; 4000bf48: c4 3f bf e8 std %g2, [ %fp + -24 ] <== NOT EXECUTED status = rtems_io_read( major, minor, &args ); 4000bf4c: 92 10 00 1c mov %i4, %o1 <== NOT EXECUTED args.buffer = buf; 4000bf50: f2 27 bf f0 st %i1, [ %fp + -16 ] <== NOT EXECUTED status = rtems_io_read( major, minor, &args ); 4000bf54: 90 10 00 1b mov %i3, %o0 <== NOT EXECUTED args.count = nbyte; 4000bf58: f4 27 bf f4 st %i2, [ %fp + -12 ] <== NOT EXECUTED { 4000bf5c: ba 10 00 18 mov %i0, %i5 <== NOT EXECUTED args.flags = iop->flags; 4000bf60: c2 27 bf f8 st %g1, [ %fp + -8 ] <== NOT EXECUTED status = rtems_io_read( major, minor, &args ); 4000bf64: 40 00 02 ac call 4000ca14 <== NOT EXECUTED 4000bf68: c0 27 bf fc clr [ %fp + -4 ] <== NOT EXECUTED if ( status == RTEMS_SUCCESSFUL ) { 4000bf6c: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 4000bf70: 12 80 00 09 bne 4000bf94 <== NOT EXECUTED 4000bf74: 01 00 00 00 nop <== NOT EXECUTED iop->offset += args.bytes_moved; 4000bf78: f4 1f 40 00 ldd [ %i5 ], %i2 <== NOT EXECUTED 4000bf7c: f0 07 bf fc ld [ %fp + -4 ], %i0 <== NOT EXECUTED 4000bf80: 86 86 c0 18 addcc %i3, %i0, %g3 <== NOT EXECUTED 4000bf84: 84 46 a0 00 addx %i2, 0, %g2 <== NOT EXECUTED 4000bf88: c4 3f 40 00 std %g2, [ %i5 ] <== NOT EXECUTED return (ssize_t) args.bytes_moved; 4000bf8c: 81 c7 e0 08 ret <== NOT EXECUTED 4000bf90: 81 e8 00 00 restore <== NOT EXECUTED } else { return rtems_status_code_to_errno( status ); 4000bf94: 40 00 02 2b call 4000c840 <== NOT EXECUTED 4000bf98: 01 00 00 00 nop <== NOT EXECUTED } } 4000bf9c: 81 c7 e0 08 ret <== NOT EXECUTED 4000bfa0: 91 e8 00 08 restore %g0, %o0, %o0 <== NOT EXECUTED =============================================================================== 4000bfa4 : const void *buf, size_t nbyte, rtems_device_major_number major, rtems_device_minor_number minor ) { 4000bfa4: 9d e3 bf 80 save %sp, -128, %sp <== NOT EXECUTED rtems_status_code status; rtems_libio_rw_args_t args; args.iop = iop; args.offset = iop->offset; 4000bfa8: c4 1e 00 00 ldd [ %i0 ], %g2 <== NOT EXECUTED args.buffer = RTEMS_DECONST( void *, buf ); args.count = nbyte; args.flags = iop->flags; 4000bfac: c2 06 20 08 ld [ %i0 + 8 ], %g1 <== NOT EXECUTED args.iop = iop; 4000bfb0: f0 27 bf e0 st %i0, [ %fp + -32 ] <== NOT EXECUTED args.bytes_moved = 0; status = rtems_io_write( major, minor, &args ); 4000bfb4: 94 07 bf e0 add %fp, -32, %o2 <== NOT EXECUTED args.offset = iop->offset; 4000bfb8: c4 3f bf e8 std %g2, [ %fp + -24 ] <== NOT EXECUTED status = rtems_io_write( major, minor, &args ); 4000bfbc: 92 10 00 1c mov %i4, %o1 <== NOT EXECUTED args.buffer = RTEMS_DECONST( void *, buf ); 4000bfc0: f2 27 bf f0 st %i1, [ %fp + -16 ] <== NOT EXECUTED status = rtems_io_write( major, minor, &args ); 4000bfc4: 90 10 00 1b mov %i3, %o0 <== NOT EXECUTED args.count = nbyte; 4000bfc8: f4 27 bf f4 st %i2, [ %fp + -12 ] <== NOT EXECUTED { 4000bfcc: ba 10 00 18 mov %i0, %i5 <== NOT EXECUTED args.flags = iop->flags; 4000bfd0: c2 27 bf f8 st %g1, [ %fp + -8 ] <== NOT EXECUTED status = rtems_io_write( major, minor, &args ); 4000bfd4: 40 00 02 a8 call 4000ca74 <== NOT EXECUTED 4000bfd8: c0 27 bf fc clr [ %fp + -4 ] <== NOT EXECUTED if ( status == RTEMS_SUCCESSFUL ) { 4000bfdc: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 4000bfe0: 12 80 00 09 bne 4000c004 <== NOT EXECUTED 4000bfe4: 01 00 00 00 nop <== NOT EXECUTED iop->offset += args.bytes_moved; 4000bfe8: f4 1f 40 00 ldd [ %i5 ], %i2 <== NOT EXECUTED 4000bfec: f0 07 bf fc ld [ %fp + -4 ], %i0 <== NOT EXECUTED 4000bff0: 86 86 c0 18 addcc %i3, %i0, %g3 <== NOT EXECUTED 4000bff4: 84 46 a0 00 addx %i2, 0, %g2 <== NOT EXECUTED 4000bff8: c4 3f 40 00 std %g2, [ %i5 ] <== NOT EXECUTED return (ssize_t) args.bytes_moved; 4000bffc: 81 c7 e0 08 ret <== NOT EXECUTED 4000c000: 81 e8 00 00 restore <== NOT EXECUTED } else { return rtems_status_code_to_errno( status ); 4000c004: 40 00 02 0f call 4000c840 <== NOT EXECUTED 4000c008: 01 00 00 00 nop <== NOT EXECUTED } } 4000c00c: 81 c7 e0 08 ret <== NOT EXECUTED 4000c010: 91 e8 00 08 restore %g0, %o0, %o0 <== NOT EXECUTED =============================================================================== 40004c20 : int flags, mode_t object_mode, uid_t object_uid, gid_t object_gid ) { 40004c20: 9d e3 bf a0 save %sp, -96, %sp const rtems_user_env_t *uenv = rtems_current_user_env_get(); 40004c24: 7f ff ff dc call 40004b94 40004c28: b0 0e 20 07 and %i0, 7, %i0 mode_t access_flags = flags & RTEMS_FS_PERMS_RWX; uid_t task_uid = uenv->euid; if (task_uid == 0 || task_uid == object_uid) { 40004c2c: c2 12 20 10 lduh [ %o0 + 0x10 ], %g1 40004c30: 80 a0 60 00 cmp %g1, 0 40004c34: 02 80 00 24 be 40004cc4 <== ALWAYS TAKEN 40004c38: 80 a0 40 1a cmp %g1, %i2 40004c3c: 22 80 00 23 be,a 40004cc8 <== NOT EXECUTED 40004c40: b1 2e 20 06 sll %i0, 6, %i0 <== NOT EXECUTED access_flags <<= RTEMS_FS_USR_SHIFT; } else { gid_t task_gid = uenv->egid; if ( task_gid == 0 40004c44: c2 12 20 12 lduh [ %o0 + 0x12 ], %g1 <== NOT EXECUTED if ( 40004c48: 80 a0 60 00 cmp %g1, 0 <== NOT EXECUTED 40004c4c: 02 80 00 18 be 40004cac <== NOT EXECUTED 40004c50: 80 a0 40 1b cmp %g1, %i3 <== NOT EXECUTED 40004c54: 22 80 00 17 be,a 40004cb0 <== NOT EXECUTED 40004c58: b1 2e 20 03 sll %i0, 3, %i0 <== NOT EXECUTED for (i = 0; i < uenv->ngroups; ++i) { 40004c5c: c6 02 20 24 ld [ %o0 + 0x24 ], %g3 <== NOT EXECUTED 40004c60: 80 a0 e0 00 cmp %g3, 0 <== NOT EXECUTED 40004c64: 22 80 00 14 be,a 40004cb4 <== NOT EXECUTED 40004c68: b0 2e 00 19 andn %i0, %i1, %i0 <== NOT EXECUTED if (uenv->groups[i] == object_gid) { 40004c6c: c2 12 20 28 lduh [ %o0 + 0x28 ], %g1 <== NOT EXECUTED 40004c70: 80 a0 40 1b cmp %g1, %i3 <== NOT EXECUTED 40004c74: 02 80 00 0e be 40004cac <== NOT EXECUTED 40004c78: 90 02 20 2a add %o0, 0x2a, %o0 <== NOT EXECUTED for (i = 0; i < uenv->ngroups; ++i) { 40004c7c: 10 80 00 06 b 40004c94 <== NOT EXECUTED 40004c80: 82 10 20 00 clr %g1 <== NOT EXECUTED if (uenv->groups[i] == object_gid) { 40004c84: c4 12 3f fe lduh [ %o0 + -2 ], %g2 <== NOT EXECUTED 40004c88: 80 a0 80 1b cmp %g2, %i3 <== NOT EXECUTED 40004c8c: 22 80 00 09 be,a 40004cb0 <== NOT EXECUTED 40004c90: b1 2e 20 03 sll %i0, 3, %i0 <== NOT EXECUTED for (i = 0; i < uenv->ngroups; ++i) { 40004c94: 82 00 60 01 inc %g1 <== NOT EXECUTED 40004c98: 80 a0 40 03 cmp %g1, %g3 <== NOT EXECUTED 40004c9c: 12 bf ff fa bne 40004c84 <== NOT EXECUTED 40004ca0: 90 02 20 02 add %o0, 2, %o0 <== NOT EXECUTED } else { access_flags <<= RTEMS_FS_OTH_SHIFT; } } return (access_flags & object_mode) == access_flags; 40004ca4: 10 80 00 04 b 40004cb4 <== NOT EXECUTED 40004ca8: b0 2e 00 19 andn %i0, %i1, %i0 <== NOT EXECUTED access_flags <<= RTEMS_FS_GRP_SHIFT; 40004cac: b1 2e 20 03 sll %i0, 3, %i0 <== NOT EXECUTED return (access_flags & object_mode) == access_flags; 40004cb0: b0 2e 00 19 andn %i0, %i1, %i0 <== NOT EXECUTED } 40004cb4: 80 a0 00 18 cmp %g0, %i0 <== NOT EXECUTED 40004cb8: b0 60 3f ff subx %g0, -1, %i0 <== NOT EXECUTED 40004cbc: 81 c7 e0 08 ret <== NOT EXECUTED 40004cc0: 81 e8 00 00 restore <== NOT EXECUTED access_flags <<= RTEMS_FS_USR_SHIFT; 40004cc4: b1 2e 20 06 sll %i0, 6, %i0 return (access_flags & object_mode) == access_flags; 40004cc8: b0 2e 00 19 andn %i0, %i1, %i0 } 40004ccc: 80 a0 00 18 cmp %g0, %i0 40004cd0: b0 60 3f ff subx %g0, -1, %i0 40004cd4: 81 c7 e0 08 ret 40004cd8: 81 e8 00 00 restore =============================================================================== 4000f6b8 : 4000f6b8: 00 00 00 05 00 00 00 80 00 00 00 07 00 00 00 ff ................ 4000f6c8: 00 00 00 ff 00 00 04 00 00 00 00 00 00 00 00 00 ................ 4000f6d8: 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 ................ 4000f6e8: 2e 00 00 00 00 00 00 00 2e 2e 00 00 ............ =============================================================================== 40005484 : } void rtems_filesystem_do_unmount( rtems_filesystem_mount_table_entry_t *mt_entry ) { 40005484: 9d e3 bf a0 save %sp, -96, %sp <== NOT EXECUTED rtems_libio_lock(); 40005488: 7f ff fb 29 call 4000412c <== NOT EXECUTED 4000548c: 01 00 00 00 nop <== NOT EXECUTED next = the_node->next; 40005490: c4 06 00 00 ld [ %i0 ], %g2 <== NOT EXECUTED previous = the_node->previous; 40005494: c2 06 20 04 ld [ %i0 + 4 ], %g1 <== NOT EXECUTED next->previous = previous; 40005498: c2 20 a0 04 st %g1, [ %g2 + 4 ] <== NOT EXECUTED rtems_libio_unlock(); 4000549c: 7f ff fb 29 call 40004140 <== NOT EXECUTED 400054a0: c4 20 40 00 st %g2, [ %g1 ] <== NOT EXECUTED release_with_count(global_loc, 1); 400054a4: d0 06 20 20 ld [ %i0 + 0x20 ], %o0 <== NOT EXECUTED 400054a8: 40 00 00 14 call 400054f8 <== NOT EXECUTED 400054ac: 92 10 20 01 mov 1, %o1 <== NOT EXECUTED rtems_filesystem_mt_lock(); rtems_chain_extract_unprotected(&mt_entry->mt_node); rtems_filesystem_mt_unlock(); rtems_filesystem_global_location_release(mt_entry->mt_point_node, false); (*mt_entry->ops->fsunmount_me_h)(mt_entry); 400054b0: c2 06 20 0c ld [ %i0 + 0xc ], %g1 <== NOT EXECUTED 400054b4: c2 00 60 34 ld [ %g1 + 0x34 ], %g1 <== NOT EXECUTED 400054b8: 9f c0 40 00 call %g1 <== NOT EXECUTED 400054bc: 90 10 00 18 mov %i0, %o0 <== NOT EXECUTED if (mt_entry->unmount_task != 0) { 400054c0: d0 06 20 3c ld [ %i0 + 0x3c ], %o0 <== NOT EXECUTED 400054c4: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 400054c8: 02 80 00 07 be 400054e4 <== NOT EXECUTED 400054cc: 01 00 00 00 nop <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE rtems_status_code rtems_event_transient_send( rtems_id id ) { return rtems_event_system_send( id, RTEMS_EVENT_SYSTEM_TRANSIENT ); 400054d0: 40 00 02 94 call 40005f20 <== NOT EXECUTED 400054d4: 13 20 00 00 sethi %hi(0x80000000), %o1 <== NOT EXECUTED rtems_status_code sc = rtems_event_transient_send(mt_entry->unmount_task); if (sc != RTEMS_SUCCESSFUL) { 400054d8: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 400054dc: 32 80 00 04 bne,a 400054ec <== NOT EXECUTED 400054e0: 11 37 ab 6f sethi %hi(0xdeadbc00), %o0 <== NOT EXECUTED rtems_fatal_error_occurred(0xdeadbeef); } } free(mt_entry); 400054e4: 7f ff fa 9e call 40003f5c <== NOT EXECUTED 400054e8: 81 e8 00 00 restore <== NOT EXECUTED rtems_fatal_error_occurred(0xdeadbeef); 400054ec: 40 00 02 bb call 40005fd8 <== NOT EXECUTED 400054f0: 90 12 22 ef or %o0, 0x2ef, %o0 <== NOT EXECUTED 400054f4: 01 00 00 00 nop <== NOT EXECUTED =============================================================================== 40004cdc : int eval_flags, mode_t node_mode, uid_t node_uid, gid_t node_gid ) { 40004cdc: 9d e3 bf a0 save %sp, -96, %sp bool access_ok = rtems_filesystem_check_access( 40004ce0: 96 10 00 1c mov %i4, %o3 40004ce4: 94 10 00 1b mov %i3, %o2 40004ce8: 92 10 00 1a mov %i2, %o1 40004cec: 7f ff ff cd call 40004c20 40004cf0: 90 10 00 19 mov %i1, %o0 node_mode, node_uid, node_gid ); if (!access_ok) { 40004cf4: ba 92 20 00 orcc %o0, 0, %i5 40004cf8: 12 80 00 04 bne 40004d08 <== ALWAYS TAKEN 40004cfc: 92 10 20 0d mov 0xd, %o1 rtems_filesystem_eval_path_error(ctx, EACCES); 40004d00: 40 00 00 98 call 40004f60 <== NOT EXECUTED 40004d04: 90 10 00 18 mov %i0, %o0 <== NOT EXECUTED } return access_ok; } 40004d08: 81 c7 e0 08 ret 40004d0c: 91 e8 00 1d restore %g0, %i5, %o0 =============================================================================== 40005080 : { 40005080: 9d e3 bf a0 save %sp, -96, %sp while (ctx->pathlen > 0) { 40005084: c2 06 20 04 ld [ %i0 + 4 ], %g1 40005088: 80 a0 60 00 cmp %g1, 0 4000508c: 22 80 00 0c be,a 400050bc <== NEVER TAKEN 40005090: c2 06 20 0c ld [ %i0 + 0xc ], %g1 <== NOT EXECUTED (*ctx->currentloc.mt_entry->ops->eval_path_h)(ctx); 40005094: c2 06 20 2c ld [ %i0 + 0x2c ], %g1 40005098: c2 00 60 0c ld [ %g1 + 0xc ], %g1 4000509c: c2 00 60 08 ld [ %g1 + 8 ], %g1 400050a0: 9f c0 40 00 call %g1 400050a4: 90 10 00 18 mov %i0, %o0 while (ctx->pathlen > 0) { 400050a8: c2 06 20 04 ld [ %i0 + 4 ], %g1 400050ac: 80 a0 60 00 cmp %g1, 0 400050b0: 32 bf ff fa bne,a 40005098 <== NEVER TAKEN 400050b4: c2 06 20 2c ld [ %i0 + 0x2c ], %g1 <== NOT EXECUTED if (rtems_filesystem_eval_path_has_token(ctx)) { 400050b8: c2 06 20 0c ld [ %i0 + 0xc ], %g1 400050bc: 80 a0 60 00 cmp %g1, 0 400050c0: 02 80 00 07 be 400050dc 400050c4: f2 06 20 10 ld [ %i0 + 0x10 ], %i1 if (make) { 400050c8: 80 8e 60 20 btst 0x20, %i1 400050cc: 02 80 00 08 be 400050ec <== NEVER TAKEN 400050d0: b2 10 20 02 mov 2, %i1 check_access(ctx, ctx->flags); 400050d4: 7f ff ff b9 call 40004fb8 400050d8: 81 e8 00 00 restore if (!exclusive) { 400050dc: 80 8e 60 40 btst 0x40, %i1 400050e0: 02 bf ff fd be 400050d4 <== ALWAYS TAKEN 400050e4: 01 00 00 00 nop rtems_filesystem_eval_path_error(ctx, EEXIST); 400050e8: b2 10 20 11 mov 0x11, %i1 ! 11 <_TLS_Alignment+0x10> <== NOT EXECUTED 400050ec: 7f ff ff 9d call 40004f60 <== NOT EXECUTED 400050f0: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 400058fc : void rtems_filesystem_eval_path_eat_delimiter( rtems_filesystem_eval_path_context_t *ctx ) { const char *current = ctx->path; 400058fc: c2 02 00 00 ld [ %o0 ], %g1 <== NOT EXECUTED const char *end = current + ctx->pathlen; 40005900: c4 02 20 04 ld [ %o0 + 4 ], %g2 <== NOT EXECUTED 40005904: 86 00 40 02 add %g1, %g2, %g3 <== NOT EXECUTED while (current != end && rtems_filesystem_is_delimiter(*current)) { 40005908: 80 a0 40 03 cmp %g1, %g3 <== NOT EXECUTED 4000590c: 22 80 00 17 be,a 40005968 <== NOT EXECUTED 40005910: 84 10 20 00 clr %g2 <== NOT EXECUTED return c == '/' || c == '\\'; 40005914: c8 48 40 00 ldsb [ %g1 ], %g4 <== NOT EXECUTED 40005918: 80 a1 20 2f cmp %g4, 0x2f <== NOT EXECUTED 4000591c: 02 80 00 04 be 4000592c <== NOT EXECUTED 40005920: 80 a1 20 5c cmp %g4, 0x5c <== NOT EXECUTED 40005924: 32 80 00 11 bne,a 40005968 <== NOT EXECUTED 40005928: 86 10 00 01 mov %g1, %g3 <== NOT EXECUTED ++current; 4000592c: 82 00 60 01 inc %g1 <== NOT EXECUTED while (current != end && rtems_filesystem_is_delimiter(*current)) { 40005930: 80 a0 c0 01 cmp %g3, %g1 <== NOT EXECUTED 40005934: 02 80 00 0d be 40005968 <== NOT EXECUTED 40005938: 84 10 20 00 clr %g2 <== NOT EXECUTED 4000593c: c4 48 40 00 ldsb [ %g1 ], %g2 <== NOT EXECUTED 40005940: 80 a0 a0 2f cmp %g2, 0x2f <== NOT EXECUTED 40005944: 02 bf ff fa be 4000592c <== NOT EXECUTED 40005948: 80 a0 a0 5c cmp %g2, 0x5c <== NOT EXECUTED 4000594c: 22 bf ff f9 be,a 40005930 <== NOT EXECUTED 40005950: 82 00 60 01 inc %g1 <== NOT EXECUTED 40005954: 84 20 c0 01 sub %g3, %g1, %g2 <== NOT EXECUTED ++current; 40005958: 86 10 00 01 mov %g1, %g3 <== NOT EXECUTED } ctx->path = current; ctx->pathlen = (size_t) (end - current); 4000595c: c4 22 20 04 st %g2, [ %o0 + 4 ] <== NOT EXECUTED } 40005960: 81 c3 e0 08 retl <== NOT EXECUTED 40005964: c6 22 00 00 st %g3, [ %o0 ] <== NOT EXECUTED ctx->path = current; 40005968: c6 22 00 00 st %g3, [ %o0 ] <== NOT EXECUTED } 4000596c: 81 c3 e0 08 retl <== NOT EXECUTED 40005970: c4 22 20 04 st %g2, [ %o0 + 4 ] <== NOT EXECUTED =============================================================================== 40004f60 : { 40004f60: 9d e3 bf a0 save %sp, -96, %sp <== NOT EXECUTED ctx->path = NULL; 40004f64: c0 26 00 00 clr [ %i0 ] <== NOT EXECUTED if (!rtems_filesystem_location_is_null(&ctx->currentloc)) { 40004f68: 03 10 00 3d sethi %hi(0x4000f400), %g1 <== NOT EXECUTED ctx->pathlen = 0; 40004f6c: c0 26 20 04 clr [ %i0 + 4 ] <== NOT EXECUTED if (!rtems_filesystem_location_is_null(&ctx->currentloc)) { 40004f70: 82 10 63 40 or %g1, 0x340, %g1 <== NOT EXECUTED ctx->token = NULL; 40004f74: c0 26 20 08 clr [ %i0 + 8 ] <== NOT EXECUTED ctx->tokenlen = 0; 40004f78: c0 26 20 0c clr [ %i0 + 0xc ] <== NOT EXECUTED if (!rtems_filesystem_location_is_null(&ctx->currentloc)) { 40004f7c: c4 06 20 28 ld [ %i0 + 0x28 ], %g2 <== NOT EXECUTED 40004f80: 80 a0 80 01 cmp %g2, %g1 <== NOT EXECUTED 40004f84: 02 80 00 0b be 40004fb0 <== NOT EXECUTED 40004f88: 80 a6 60 00 cmp %i1, 0 <== NOT EXECUTED if (eno != 0) { 40004f8c: 12 80 00 04 bne 40004f9c <== NOT EXECUTED 40004f90: 01 00 00 00 nop <== NOT EXECUTED rtems_filesystem_location_detach(&ctx->currentloc); 40004f94: 40 00 01 23 call 40005420 <== NOT EXECUTED 40004f98: 91 ee 20 18 restore %i0, 0x18, %o0 <== NOT EXECUTED errno = eno; 40004f9c: 40 00 23 6d call 4000dd50 <__errno> <== NOT EXECUTED 40004fa0: b0 06 20 18 add %i0, 0x18, %i0 <== NOT EXECUTED 40004fa4: f2 22 00 00 st %i1, [ %o0 ] <== NOT EXECUTED rtems_filesystem_location_detach(&ctx->currentloc); 40004fa8: 40 00 01 1e call 40005420 <== NOT EXECUTED 40004fac: 81 e8 00 00 restore <== NOT EXECUTED } 40004fb0: 81 c7 e0 08 ret <== NOT EXECUTED 40004fb4: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 40004d10 : void rtems_filesystem_eval_path_generic( rtems_filesystem_eval_path_context_t *ctx, void *arg, const rtems_filesystem_eval_path_generic_config *config ) { 40004d10: 9d e3 bf a0 save %sp, -96, %sp } else { /* This is the root file system */ status = (*config->eval_token)(ctx, arg, ".", 1); } } else { status = (*config->eval_token)(ctx, arg, "..", 2); 40004d14: 21 10 00 3d sethi %hi(0x4000f400), %l0 { 40004d18: ba 10 00 18 mov %i0, %i5 return &ctx->currentloc; 40004d1c: a2 06 20 18 add %i0, 0x18, %l1 status = (*config->eval_token)(ctx, arg, "..", 2); 40004d20: a0 14 22 f0 or %l0, 0x2f0, %l0 status = (*config->eval_token)(ctx, arg, ".", 1); 40004d24: 31 10 00 3d sethi %hi(0x4000f400), %i0 40004d28: b0 16 22 e8 or %i0, 0x2e8, %i0 ! 4000f6e8 rtems_filesystem_eval_path_next_token(ctx); 40004d2c: 40 00 03 12 call 40005974 40004d30: 90 10 00 1d mov %i5, %o0 *tokenlen = ctx->tokenlen; 40004d34: f8 07 60 0c ld [ %i5 + 0xc ], %i4 if (tokenlen > 0) { 40004d38: 80 a7 20 00 cmp %i4, 0 40004d3c: 02 80 00 19 be 40004da0 <== NEVER TAKEN 40004d40: f6 07 60 08 ld [ %i5 + 8 ], %i3 if ((*config->is_directory)(ctx, arg)) { 40004d44: c2 06 80 00 ld [ %i2 ], %g1 40004d48: 92 10 00 19 mov %i1, %o1 40004d4c: 9f c0 40 00 call %g1 40004d50: 90 10 00 1d mov %i5, %o0 40004d54: 80 a2 20 00 cmp %o0, 0 40004d58: 02 80 00 60 be 40004ed8 <== NEVER TAKEN 40004d5c: 80 a7 20 01 cmp %i4, 1 return tokenlen == 1 && token [0] == '.'; 40004d60: 02 80 00 12 be 40004da8 <== NEVER TAKEN 40004d64: 80 a7 20 02 cmp %i4, 2 return tokenlen == 2 && token [0] == '.' && token [1] == '.'; 40004d68: 22 80 00 33 be,a 40004e34 <== NEVER TAKEN 40004d6c: c2 4e c0 00 ldsb [ %i3 ], %g1 <== NOT EXECUTED } } else { status = (*config->eval_token)(ctx, arg, token, tokenlen); 40004d70: c2 06 a0 04 ld [ %i2 + 4 ], %g1 40004d74: 96 10 00 1c mov %i4, %o3 40004d78: 94 10 00 1b mov %i3, %o2 40004d7c: 92 10 00 19 mov %i1, %o1 40004d80: 9f c0 40 00 call %g1 40004d84: 90 10 00 1d mov %i5, %o0 } if (status == RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_NO_ENTRY) { 40004d88: 80 a2 20 02 cmp %o0, 2 40004d8c: 22 80 00 19 be,a 40004df0 40004d90: c2 07 60 04 ld [ %i5 + 4 ], %g1 while (status == RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_CONTINUE) { 40004d94: 80 a2 20 00 cmp %o0, 0 40004d98: 02 bf ff e5 be 40004d2c 40004d9c: 01 00 00 00 nop 40004da0: 81 c7 e0 08 ret 40004da4: 81 e8 00 00 restore return tokenlen == 1 && token [0] == '.'; 40004da8: c2 4e c0 00 ldsb [ %i3 ], %g1 <== NOT EXECUTED 40004dac: 80 a0 60 2e cmp %g1, 0x2e <== NOT EXECUTED 40004db0: 32 bf ff f1 bne,a 40004d74 <== NOT EXECUTED 40004db4: c2 06 a0 04 ld [ %i2 + 4 ], %g1 <== NOT EXECUTED if (rtems_filesystem_eval_path_has_path(ctx)) { 40004db8: c2 07 60 04 ld [ %i5 + 4 ], %g1 <== NOT EXECUTED 40004dbc: 80 a0 60 00 cmp %g1, 0 <== NOT EXECUTED 40004dc0: 22 80 00 40 be,a 40004ec0 <== NOT EXECUTED 40004dc4: c2 07 60 10 ld [ %i5 + 0x10 ], %g1 <== NOT EXECUTED status = (*config->eval_token)(ctx, arg, ".", 1); 40004dc8: c2 06 a0 04 ld [ %i2 + 4 ], %g1 <== NOT EXECUTED 40004dcc: 96 10 20 01 mov 1, %o3 <== NOT EXECUTED 40004dd0: 94 10 00 18 mov %i0, %o2 <== NOT EXECUTED 40004dd4: 92 10 00 19 mov %i1, %o1 <== NOT EXECUTED 40004dd8: 9f c0 40 00 call %g1 <== NOT EXECUTED 40004ddc: 90 10 00 1d mov %i5, %o0 <== NOT EXECUTED if (status == RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_NO_ENTRY) { 40004de0: 80 a2 20 02 cmp %o0, 2 <== NOT EXECUTED 40004de4: 12 bf ff ed bne 40004d98 <== NOT EXECUTED 40004de8: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED if (rtems_filesystem_eval_path_has_path(ctx)) { 40004dec: c2 07 60 04 ld [ %i5 + 4 ], %g1 <== NOT EXECUTED 40004df0: 80 a0 60 00 cmp %g1, 0 40004df4: 12 80 00 04 bne 40004e04 <== NEVER TAKEN 40004df8: 01 00 00 00 nop } } else { status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_DONE; } } } 40004dfc: 81 c7 e0 08 ret 40004e00: 81 e8 00 00 restore rtems_filesystem_eval_path_eat_delimiter(ctx); 40004e04: 40 00 02 be call 400058fc <== NOT EXECUTED 40004e08: 90 10 00 1d mov %i5, %o0 <== NOT EXECUTED (eval_flags & RTEMS_FS_ACCEPT_RESIDUAL_DELIMITERS) == 0 40004e0c: c2 07 60 10 ld [ %i5 + 0x10 ], %g1 <== NOT EXECUTED if ( 40004e10: 80 88 60 80 btst 0x80, %g1 <== NOT EXECUTED 40004e14: 02 80 00 06 be 40004e2c <== NOT EXECUTED 40004e18: b2 10 20 02 mov 2, %i1 <== NOT EXECUTED || rtems_filesystem_eval_path_has_path(ctx) 40004e1c: c2 07 60 04 ld [ %i5 + 4 ], %g1 <== NOT EXECUTED 40004e20: 80 a0 60 00 cmp %g1, 0 <== NOT EXECUTED 40004e24: 02 bf ff f6 be 40004dfc <== NOT EXECUTED 40004e28: 01 00 00 00 nop <== NOT EXECUTED rtems_filesystem_eval_path_error(ctx, ENOENT); 40004e2c: 40 00 00 4d call 40004f60 <== NOT EXECUTED 40004e30: 91 e8 00 1d restore %g0, %i5, %o0 <== NOT EXECUTED return tokenlen == 2 && token [0] == '.' && token [1] == '.'; 40004e34: 80 a0 60 2e cmp %g1, 0x2e <== NOT EXECUTED 40004e38: 32 bf ff cf bne,a 40004d74 <== NOT EXECUTED 40004e3c: c2 06 a0 04 ld [ %i2 + 4 ], %g1 <== NOT EXECUTED 40004e40: c2 4e e0 01 ldsb [ %i3 + 1 ], %g1 <== NOT EXECUTED 40004e44: 80 a0 60 2e cmp %g1, 0x2e <== NOT EXECUTED 40004e48: 32 bf ff cb bne,a 40004d74 <== NOT EXECUTED 40004e4c: c2 06 a0 04 ld [ %i2 + 4 ], %g1 <== NOT EXECUTED const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry; 40004e50: c2 07 60 2c ld [ %i5 + 0x2c ], %g1 <== NOT EXECUTED 40004e54: d2 07 60 30 ld [ %i5 + 0x30 ], %o1 <== NOT EXECUTED 40004e58: c4 00 60 0c ld [ %g1 + 0xc ], %g2 <== NOT EXECUTED && (*mt_entry->ops->are_nodes_equal_h)( loc, rootloc ); 40004e5c: c6 02 60 14 ld [ %o1 + 0x14 ], %g3 <== NOT EXECUTED 40004e60: 80 a0 40 03 cmp %g1, %g3 <== NOT EXECUTED 40004e64: 12 80 00 0a bne 40004e8c <== NOT EXECUTED 40004e68: c4 00 a0 10 ld [ %g2 + 0x10 ], %g2 <== NOT EXECUTED 40004e6c: 9f c0 80 00 call %g2 <== NOT EXECUTED 40004e70: 90 10 00 11 mov %l1, %o0 <== NOT EXECUTED 40004e74: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 40004e78: 32 bf ff d5 bne,a 40004dcc <== NOT EXECUTED 40004e7c: c2 06 a0 04 ld [ %i2 + 4 ], %g1 <== NOT EXECUTED 40004e80: c2 07 60 2c ld [ %i5 + 0x2c ], %g1 <== NOT EXECUTED 40004e84: c4 00 60 0c ld [ %g1 + 0xc ], %g2 <== NOT EXECUTED 40004e88: c4 00 a0 10 ld [ %g2 + 0x10 ], %g2 <== NOT EXECUTED return (*mt_entry->ops->are_nodes_equal_h)( loc, mt_fs_root ); 40004e8c: d2 00 60 24 ld [ %g1 + 0x24 ], %o1 <== NOT EXECUTED 40004e90: 9f c0 80 00 call %g2 <== NOT EXECUTED 40004e94: 90 10 00 11 mov %l1, %o0 <== NOT EXECUTED } else if (is_fs_root(currentloc)) { 40004e98: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 40004e9c: 12 80 00 12 bne 40004ee4 <== NOT EXECUTED 40004ea0: 96 10 20 02 mov 2, %o3 <== NOT EXECUTED status = (*config->eval_token)(ctx, arg, "..", 2); 40004ea4: c2 06 a0 04 ld [ %i2 + 4 ], %g1 <== NOT EXECUTED 40004ea8: 94 10 00 10 mov %l0, %o2 <== NOT EXECUTED 40004eac: 92 10 00 19 mov %i1, %o1 <== NOT EXECUTED 40004eb0: 9f c0 40 00 call %g1 <== NOT EXECUTED 40004eb4: 90 10 00 1d mov %i5, %o0 <== NOT EXECUTED if (status == RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_NO_ENTRY) { 40004eb8: 10 bf ff b5 b 40004d8c <== NOT EXECUTED 40004ebc: 80 a2 20 02 cmp %o0, 2 <== NOT EXECUTED if ((eval_flags & RTEMS_FS_REJECT_TERMINAL_DOT) == 0) { 40004ec0: 80 88 61 00 btst 0x100, %g1 <== NOT EXECUTED 40004ec4: 22 bf ff c2 be,a 40004dcc <== NOT EXECUTED 40004ec8: c2 06 a0 04 ld [ %i2 + 4 ], %g1 <== NOT EXECUTED rtems_filesystem_eval_path_error(ctx, EINVAL); 40004ecc: b2 10 20 16 mov 0x16, %i1 <== NOT EXECUTED 40004ed0: 40 00 00 24 call 40004f60 <== NOT EXECUTED 40004ed4: 91 e8 00 1d restore %g0, %i5, %o0 <== NOT EXECUTED rtems_filesystem_eval_path_error(ctx, ENOTDIR); 40004ed8: b2 10 20 14 mov 0x14, %i1 <== NOT EXECUTED 40004edc: 40 00 00 21 call 40004f60 <== NOT EXECUTED 40004ee0: 91 e8 00 1d restore %g0, %i5, %o0 <== NOT EXECUTED if (currentloc->mt_entry->mt_point_node != NULL) { 40004ee4: c2 07 60 2c ld [ %i5 + 0x2c ], %g1 <== NOT EXECUTED 40004ee8: c4 00 60 20 ld [ %g1 + 0x20 ], %g2 <== NOT EXECUTED 40004eec: 80 a0 a0 00 cmp %g2, 0 <== NOT EXECUTED 40004ef0: 22 bf ff b7 be,a 40004dcc <== NOT EXECUTED 40004ef4: c2 06 a0 04 ld [ %i2 + 4 ], %g1 <== NOT EXECUTED size_t tokenlen = ctx->tokenlen; 40004ef8: c8 07 60 0c ld [ %i5 + 0xc ], %g4 <== NOT EXECUTED ctx->path -= tokenlen; 40004efc: c6 07 40 00 ld [ %i5 ], %g3 <== NOT EXECUTED ctx->pathlen += tokenlen; 40004f00: c4 07 60 04 ld [ %i5 + 4 ], %g2 <== NOT EXECUTED ctx->path -= tokenlen; 40004f04: 86 20 c0 04 sub %g3, %g4, %g3 <== NOT EXECUTED ctx->pathlen += tokenlen; 40004f08: 84 00 80 04 add %g2, %g4, %g2 <== NOT EXECUTED ctx->path -= tokenlen; 40004f0c: c6 27 40 00 st %g3, [ %i5 ] <== NOT EXECUTED rtems_filesystem_eval_path_restart( 40004f10: b2 00 60 20 add %g1, 0x20, %i1 <== NOT EXECUTED ctx->pathlen += tokenlen; 40004f14: c4 27 60 04 st %g2, [ %i5 + 4 ] <== NOT EXECUTED ctx->tokenlen = 0; 40004f18: c0 27 60 0c clr [ %i5 + 0xc ] <== NOT EXECUTED 40004f1c: 40 00 00 e7 call 400052b8 <== NOT EXECUTED 40004f20: 91 e8 00 1d restore %g0, %i5, %o0 <== NOT EXECUTED =============================================================================== 40005974 : const char *current = ctx->path; 40005974: c2 02 00 00 ld [ %o0 ], %g1 const char *end = current + ctx->pathlen; 40005978: c6 02 20 04 ld [ %o0 + 4 ], %g3 4000597c: 86 00 40 03 add %g1, %g3, %g3 while (current != end && rtems_filesystem_is_delimiter(*current)) { 40005980: 80 a0 40 03 cmp %g1, %g3 40005984: 32 80 00 09 bne,a 400059a8 <== ALWAYS TAKEN 40005988: c4 48 40 00 ldsb [ %g1 ], %g2 4000598c: 10 80 00 20 b 40005a0c <== NOT EXECUTED 40005990: 9a 10 20 00 clr %o5 <== NOT EXECUTED ++current; 40005994: 82 00 60 01 inc %g1 while (current != end && rtems_filesystem_is_delimiter(*current)) { 40005998: 80 a0 c0 01 cmp %g3, %g1 4000599c: 22 80 00 22 be,a 40005a24 <== NEVER TAKEN 400059a0: 82 10 00 03 mov %g3, %g1 <== NOT EXECUTED 400059a4: c4 48 40 00 ldsb [ %g1 ], %g2 400059a8: 80 a0 a0 2f cmp %g2, 0x2f 400059ac: 02 bf ff fa be 40005994 400059b0: 80 a0 a0 5c cmp %g2, 0x5c 400059b4: 22 bf ff f9 be,a 40005998 <== NEVER TAKEN 400059b8: 82 00 60 01 inc %g1 <== NOT EXECUTED ctx->path = current; 400059bc: c2 22 00 00 st %g1, [ %o0 ] ctx->pathlen = (size_t) (end - current); 400059c0: 9a 20 c0 01 sub %g3, %g1, %o5 400059c4: da 22 20 04 st %o5, [ %o0 + 4 ] 400059c8: c4 48 40 00 ldsb [ %g1 ], %g2 { const char *begin = ctx->path; const char *end = begin + ctx->pathlen; const char *current = begin; while (current != end && !rtems_filesystem_is_delimiter(*current)) { 400059cc: 80 a0 a0 5c cmp %g2, 0x5c 400059d0: 02 80 00 1f be 40005a4c <== NEVER TAKEN 400059d4: 80 a0 a0 2f cmp %g2, 0x2f 400059d8: 02 80 00 1e be 40005a50 <== NEVER TAKEN 400059dc: 88 10 00 0d mov %o5, %g4 400059e0: 10 80 00 07 b 400059fc 400059e4: 84 10 00 01 mov %g1, %g2 400059e8: 80 a1 20 2f cmp %g4, 0x2f 400059ec: 02 80 00 10 be 40005a2c 400059f0: 80 a1 20 5c cmp %g4, 0x5c 400059f4: 02 80 00 0f be 40005a30 <== NEVER TAKEN 400059f8: 88 20 c0 02 sub %g3, %g2, %g4 ++current; 400059fc: 84 00 a0 01 inc %g2 while (current != end && !rtems_filesystem_is_delimiter(*current)) { 40005a00: 80 a0 80 03 cmp %g2, %g3 40005a04: 32 bf ff f9 bne,a 400059e8 40005a08: c8 48 80 00 ldsb [ %g2 ], %g4 while (current != end && rtems_filesystem_is_delimiter(*current)) { 40005a0c: 88 10 20 00 clr %g4 } ctx->path = current; 40005a10: c6 22 00 00 st %g3, [ %o0 ] ctx->pathlen = (size_t) (end - current); 40005a14: c8 22 20 04 st %g4, [ %o0 + 4 ] ctx->token = begin; 40005a18: c2 22 20 08 st %g1, [ %o0 + 8 ] rtems_filesystem_eval_path_context_t *ctx ) { rtems_filesystem_eval_path_eat_delimiter(ctx); next_token(ctx); } 40005a1c: 81 c3 e0 08 retl 40005a20: da 22 20 0c st %o5, [ %o0 + 0xc ] while (current != end && rtems_filesystem_is_delimiter(*current)) { 40005a24: 10 bf ff fa b 40005a0c <== NOT EXECUTED 40005a28: 9a 10 20 00 clr %o5 <== NOT EXECUTED 40005a2c: 88 20 c0 02 sub %g3, %g2, %g4 40005a30: 9a 20 80 01 sub %g2, %g1, %o5 ++current; 40005a34: 86 10 00 02 mov %g2, %g3 ctx->pathlen = (size_t) (end - current); 40005a38: c8 22 20 04 st %g4, [ %o0 + 4 ] ctx->path = current; 40005a3c: c6 22 00 00 st %g3, [ %o0 ] ctx->token = begin; 40005a40: c2 22 20 08 st %g1, [ %o0 + 8 ] } 40005a44: 81 c3 e0 08 retl 40005a48: da 22 20 0c st %o5, [ %o0 + 0xc ] while (current != end && !rtems_filesystem_is_delimiter(*current)) { 40005a4c: 88 10 00 0d mov %o5, %g4 <== NOT EXECUTED 40005a50: 86 10 00 01 mov %g1, %g3 <== NOT EXECUTED 40005a54: 10 bf ff ef b 40005a10 <== NOT EXECUTED 40005a58: 9a 10 20 00 clr %o5 <== NOT EXECUTED =============================================================================== 4000531c : { 4000531c: 9d e3 bf a0 save %sp, -96, %sp <== NOT EXECUTED if (pathlen > 0) { 40005320: 80 a6 a0 00 cmp %i2, 0 <== NOT EXECUTED 40005324: 02 80 00 22 be 400053ac <== NOT EXECUTED 40005328: ba 10 00 18 mov %i0, %i5 <== NOT EXECUTED if (ctx->recursionlevel < RTEMS_FILESYSTEM_SYMLOOP_MAX) { 4000532c: c2 06 20 14 ld [ %i0 + 0x14 ], %g1 <== NOT EXECUTED 40005330: 80 a0 60 1f cmp %g1, 0x1f <== NOT EXECUTED 40005334: 14 80 00 20 bg 400053b4 <== NOT EXECUTED 40005338: 01 00 00 00 nop <== NOT EXECUTED return c == '/' || c == '\\'; 4000533c: c4 4e 40 00 ldsb [ %i1 ], %g2 <== NOT EXECUTED const char *saved_path = ctx->path; 40005340: f6 06 00 00 ld [ %i0 ], %i3 <== NOT EXECUTED if (rtems_filesystem_is_delimiter(path [0])) { 40005344: 80 a0 a0 2f cmp %g2, 0x2f <== NOT EXECUTED 40005348: 02 80 00 1d be 400053bc <== NOT EXECUTED 4000534c: f8 06 20 04 ld [ %i0 + 4 ], %i4 <== NOT EXECUTED 40005350: 80 a0 a0 5c cmp %g2, 0x5c <== NOT EXECUTED 40005354: 02 80 00 1b be 400053c0 <== NOT EXECUTED 40005358: 92 07 60 30 add %i5, 0x30, %o1 <== NOT EXECUTED ++ctx->recursionlevel; 4000535c: 82 00 60 01 inc %g1 <== NOT EXECUTED ctx->path = path; 40005360: f2 27 40 00 st %i1, [ %i5 ] <== NOT EXECUTED ctx->pathlen = pathlen; 40005364: f4 27 60 04 st %i2, [ %i5 + 4 ] <== NOT EXECUTED ++ctx->recursionlevel; 40005368: c2 27 60 14 st %g1, [ %i5 + 0x14 ] <== NOT EXECUTED (*ctx->currentloc.mt_entry->ops->eval_path_h)(ctx); 4000536c: c2 07 60 2c ld [ %i5 + 0x2c ], %g1 <== NOT EXECUTED 40005370: c2 00 60 0c ld [ %g1 + 0xc ], %g1 <== NOT EXECUTED 40005374: c2 00 60 08 ld [ %g1 + 8 ], %g1 <== NOT EXECUTED 40005378: 9f c0 40 00 call %g1 <== NOT EXECUTED 4000537c: 90 10 00 1d mov %i5, %o0 <== NOT EXECUTED while (ctx->pathlen > 0) { 40005380: c2 07 60 04 ld [ %i5 + 4 ], %g1 <== NOT EXECUTED 40005384: 80 a0 60 00 cmp %g1, 0 <== NOT EXECUTED 40005388: 32 bf ff fa bne,a 40005370 <== NOT EXECUTED 4000538c: c2 07 60 2c ld [ %i5 + 0x2c ], %g1 <== NOT EXECUTED --ctx->recursionlevel; 40005390: c2 07 60 14 ld [ %i5 + 0x14 ], %g1 <== NOT EXECUTED 40005394: 82 00 7f ff add %g1, -1, %g1 <== NOT EXECUTED ctx->path = saved_path; 40005398: f6 27 40 00 st %i3, [ %i5 ] <== NOT EXECUTED --ctx->recursionlevel; 4000539c: c2 27 60 14 st %g1, [ %i5 + 0x14 ] <== NOT EXECUTED ctx->pathlen = saved_pathlen; 400053a0: f8 27 60 04 st %i4, [ %i5 + 4 ] <== NOT EXECUTED } 400053a4: 81 c7 e0 08 ret <== NOT EXECUTED 400053a8: 81 e8 00 00 restore <== NOT EXECUTED rtems_filesystem_eval_path_error(ctx, ENOENT); 400053ac: 7f ff fe ed call 40004f60 <== NOT EXECUTED 400053b0: 93 e8 20 02 restore %g0, 2, %o1 <== NOT EXECUTED rtems_filesystem_eval_path_error(ctx, ELOOP); 400053b4: 7f ff fe eb call 40004f60 <== NOT EXECUTED 400053b8: 93 e8 20 5c restore %g0, 0x5c, %o1 <== NOT EXECUTED rtems_filesystem_eval_path_restart(ctx, &ctx->rootloc); 400053bc: 92 07 60 30 add %i5, 0x30, %o1 <== NOT EXECUTED 400053c0: 7f ff ff be call 400052b8 <== NOT EXECUTED 400053c4: 90 10 00 1d mov %i5, %o0 <== NOT EXECUTED 400053c8: 10 bf ff e5 b 4000535c <== NOT EXECUTED 400053cc: c2 07 60 14 ld [ %i5 + 0x14 ], %g1 <== NOT EXECUTED =============================================================================== 400052b8 : void rtems_filesystem_eval_path_restart( rtems_filesystem_eval_path_context_t *ctx, rtems_filesystem_global_location_t **newstartloc_ptr ) { 400052b8: 9d e3 bf a0 save %sp, -96, %sp <== NOT EXECUTED 400052bc: ba 10 00 18 mov %i0, %i5 <== NOT EXECUTED free_location(&ctx->currentloc); 400052c0: b0 06 20 18 add %i0, 0x18, %i0 <== NOT EXECUTED 400052c4: 7f ff ff 18 call 40004f24 <== NOT EXECUTED 400052c8: 90 10 00 18 mov %i0, %o0 <== NOT EXECUTED 400052cc: c2 07 60 34 ld [ %i5 + 0x34 ], %g1 <== NOT EXECUTED 400052d0: d0 00 60 14 ld [ %g1 + 0x14 ], %o0 <== NOT EXECUTED 400052d4: c2 02 20 0c ld [ %o0 + 0xc ], %g1 <== NOT EXECUTED 400052d8: c2 00 60 04 ld [ %g1 + 4 ], %g1 <== NOT EXECUTED 400052dc: 9f c0 40 00 call %g1 <== NOT EXECUTED 400052e0: 01 00 00 00 nop <== NOT EXECUTED rtems_filesystem_instance_unlock(&ctx->startloc->location); rtems_filesystem_global_location_assign( 400052e4: 40 00 00 b1 call 400055a8 <== NOT EXECUTED 400052e8: 90 10 00 19 mov %i1, %o0 <== NOT EXECUTED 400052ec: 92 10 00 08 mov %o0, %o1 <== NOT EXECUTED 400052f0: 40 00 01 02 call 400056f8 <== NOT EXECUTED 400052f4: 90 07 60 34 add %i5, 0x34, %o0 <== NOT EXECUTED 400052f8: c2 07 60 34 ld [ %i5 + 0x34 ], %g1 <== NOT EXECUTED 400052fc: d0 00 60 14 ld [ %g1 + 0x14 ], %o0 <== NOT EXECUTED (*mt_entry->ops->lock_h)( mt_entry ); 40005300: c2 02 20 0c ld [ %o0 + 0xc ], %g1 <== NOT EXECUTED 40005304: c2 00 40 00 ld [ %g1 ], %g1 <== NOT EXECUTED 40005308: 9f c0 40 00 call %g1 <== NOT EXECUTED 4000530c: 01 00 00 00 nop <== NOT EXECUTED &ctx->startloc, rtems_filesystem_global_location_obtain(newstartloc_ptr) ); rtems_filesystem_instance_lock(&ctx->startloc->location); rtems_filesystem_location_clone(&ctx->currentloc, &ctx->startloc->location); 40005310: f2 07 60 34 ld [ %i5 + 0x34 ], %i1 <== NOT EXECUTED 40005314: 40 00 19 de call 4000ba8c <== NOT EXECUTED 40005318: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 400050f4 : { 400050f4: 9d e3 bf 98 save %sp, -104, %sp memset(ctx, 0, sizeof(*ctx)); 400050f8: 94 10 20 30 mov 0x30, %o2 400050fc: 92 10 20 00 clr %o1 40005100: 40 00 23 7e call 4000def8 40005104: 90 06 20 08 add %i0, 8, %o0 ctx->path = path; 40005108: f2 26 00 00 st %i1, [ %i0 ] if (ctx->pathlen > 0) { 4000510c: 80 a6 a0 00 cmp %i2, 0 ctx->pathlen = pathlen; 40005110: f4 26 20 04 st %i2, [ %i0 + 4 ] if (ctx->pathlen > 0) { 40005114: 02 80 00 1d be 40005188 <== NEVER TAKEN 40005118: f6 26 20 10 st %i3, [ %i0 + 0x10 ] char c = ctx->path [0]; 4000511c: f6 0e 40 00 ldub [ %i1 ], %i3 ctx->rootloc = rtems_filesystem_global_location_obtain(global_root_ptr); 40005120: 40 00 01 22 call 400055a8 40005124: 90 10 00 1c mov %i4, %o0 return c == '/' || c == '\\'; 40005128: 83 2e e0 18 sll %i3, 0x18, %g1 4000512c: 83 38 60 18 sra %g1, 0x18, %g1 if (rtems_filesystem_is_delimiter(c)) { 40005130: 80 a0 60 2f cmp %g1, 0x2f 40005134: 02 80 00 2f be 400051f0 <== ALWAYS TAKEN 40005138: d0 26 20 30 st %o0, [ %i0 + 0x30 ] 4000513c: 80 a0 60 5c cmp %g1, 0x5c <== NOT EXECUTED 40005140: 22 80 00 2d be,a 400051f4 <== NOT EXECUTED 40005144: c4 06 00 00 ld [ %i0 ], %g2 <== NOT EXECUTED ctx->startloc = rtems_filesystem_global_location_obtain( 40005148: 40 00 01 18 call 400055a8 <== NOT EXECUTED 4000514c: 90 10 00 1d mov %i5, %o0 <== NOT EXECUTED 40005150: d0 26 20 34 st %o0, [ %i0 + 0x34 ] <== NOT EXECUTED 40005154: d0 02 20 14 ld [ %o0 + 0x14 ], %o0 <== NOT EXECUTED (*mt_entry->ops->lock_h)( mt_entry ); 40005158: c2 02 20 0c ld [ %o0 + 0xc ], %g1 <== NOT EXECUTED 4000515c: c2 00 40 00 ld [ %g1 ], %g1 <== NOT EXECUTED 40005160: 9f c0 40 00 call %g1 <== NOT EXECUTED 40005164: ba 06 20 18 add %i0, 0x18, %i5 <== NOT EXECUTED rtems_filesystem_location_clone( 40005168: d2 06 20 34 ld [ %i0 + 0x34 ], %o1 <== NOT EXECUTED 4000516c: 40 00 1a 48 call 4000ba8c <== NOT EXECUTED 40005170: 90 10 00 1d mov %i5, %o0 <== NOT EXECUTED rtems_filesystem_eval_path_continue(ctx); 40005174: 90 10 00 18 mov %i0, %o0 <== NOT EXECUTED 40005178: 7f ff ff c2 call 40005080 <== NOT EXECUTED 4000517c: b0 10 00 1d mov %i5, %i0 <== NOT EXECUTED } 40005180: 81 c7 e0 08 ret <== NOT EXECUTED 40005184: 81 e8 00 00 restore <== NOT EXECUTED rtems_filesystem_global_location_t *global_loc = NULL; 40005188: c0 27 bf fc clr [ %fp + -4 ] <== NOT EXECUTED return rtems_filesystem_global_location_obtain( &global_loc ); 4000518c: 40 00 01 07 call 400055a8 <== NOT EXECUTED 40005190: 90 07 bf fc add %fp, -4, %o0 <== NOT EXECUTED ctx->rootloc = rtems_filesystem_global_location_obtain_null(); 40005194: d0 26 20 30 st %o0, [ %i0 + 0x30 ] <== NOT EXECUTED 40005198: 90 07 bf fc add %fp, -4, %o0 <== NOT EXECUTED 4000519c: 40 00 01 03 call 400055a8 <== NOT EXECUTED 400051a0: c0 27 bf fc clr [ %fp + -4 ] <== NOT EXECUTED ctx->startloc = rtems_filesystem_global_location_obtain_null(); 400051a4: d0 26 20 34 st %o0, [ %i0 + 0x34 ] <== NOT EXECUTED errno = ENOENT; 400051a8: 40 00 22 ea call 4000dd50 <__errno> <== NOT EXECUTED 400051ac: ba 06 20 18 add %i0, 0x18, %i5 <== NOT EXECUTED 400051b0: 82 10 20 02 mov 2, %g1 <== NOT EXECUTED 400051b4: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED 400051b8: d0 06 20 34 ld [ %i0 + 0x34 ], %o0 <== NOT EXECUTED 400051bc: d0 02 20 14 ld [ %o0 + 0x14 ], %o0 <== NOT EXECUTED (*mt_entry->ops->lock_h)( mt_entry ); 400051c0: c2 02 20 0c ld [ %o0 + 0xc ], %g1 <== NOT EXECUTED 400051c4: c2 00 40 00 ld [ %g1 ], %g1 <== NOT EXECUTED 400051c8: 9f c0 40 00 call %g1 <== NOT EXECUTED 400051cc: 01 00 00 00 nop <== NOT EXECUTED rtems_filesystem_location_clone( 400051d0: d2 06 20 34 ld [ %i0 + 0x34 ], %o1 <== NOT EXECUTED 400051d4: 40 00 1a 2e call 4000ba8c <== NOT EXECUTED 400051d8: 90 10 00 1d mov %i5, %o0 <== NOT EXECUTED rtems_filesystem_eval_path_continue(ctx); 400051dc: 90 10 00 18 mov %i0, %o0 <== NOT EXECUTED 400051e0: 7f ff ff a8 call 40005080 <== NOT EXECUTED 400051e4: b0 10 00 1d mov %i5, %i0 <== NOT EXECUTED } 400051e8: 81 c7 e0 08 ret <== NOT EXECUTED 400051ec: 81 e8 00 00 restore <== NOT EXECUTED ++ctx->path; 400051f0: c4 06 00 00 ld [ %i0 ], %g2 --ctx->pathlen; 400051f4: c2 06 20 04 ld [ %i0 + 4 ], %g1 ++ctx->path; 400051f8: 84 00 a0 01 inc %g2 --ctx->pathlen; 400051fc: 82 00 7f ff add %g1, -1, %g1 ++ctx->path; 40005200: c4 26 00 00 st %g2, [ %i0 ] ctx->startloc = rtems_filesystem_global_location_obtain( 40005204: 90 06 20 30 add %i0, 0x30, %o0 --ctx->pathlen; 40005208: c2 26 20 04 st %g1, [ %i0 + 4 ] ctx->startloc = rtems_filesystem_global_location_obtain( 4000520c: 40 00 00 e7 call 400055a8 40005210: ba 06 20 18 add %i0, 0x18, %i5 40005214: d0 26 20 34 st %o0, [ %i0 + 0x34 ] 40005218: d0 02 20 14 ld [ %o0 + 0x14 ], %o0 4000521c: c2 02 20 0c ld [ %o0 + 0xc ], %g1 40005220: c2 00 40 00 ld [ %g1 ], %g1 40005224: 9f c0 40 00 call %g1 40005228: 01 00 00 00 nop rtems_filesystem_location_clone( 4000522c: d2 06 20 34 ld [ %i0 + 0x34 ], %o1 40005230: 40 00 1a 17 call 4000ba8c 40005234: 90 10 00 1d mov %i5, %o0 rtems_filesystem_eval_path_continue(ctx); 40005238: 90 10 00 18 mov %i0, %o0 4000523c: 7f ff ff 91 call 40005080 40005240: b0 10 00 1d mov %i5, %i0 } 40005244: 81 c7 e0 08 ret 40005248: 81 e8 00 00 restore =============================================================================== 4000bdf0 : rtems_filesystem_fsmount_me_t rtems_filesystem_get_mount_handler( const char *type ) { 4000bdf0: 9d e3 bf 98 save %sp, -104, %sp 4000bdf4: 82 10 00 18 mov %i0, %g1 find_arg fa = { 4000bdf8: c0 27 bf fc clr [ %fp + -4 ] 4000bdfc: b0 10 20 00 clr %i0 .type = type, .mount_h = NULL }; if ( type != NULL ) { 4000be00: 80 a0 60 00 cmp %g1, 0 4000be04: 02 80 00 07 be 4000be20 <== NEVER TAKEN 4000be08: c2 27 bf f8 st %g1, [ %fp + -8 ] rtems_filesystem_iterate( find_handler, &fa ); 4000be0c: 92 07 bf f8 add %fp, -8, %o1 4000be10: 11 10 00 2f sethi %hi(0x4000bc00), %o0 4000be14: 7f ff ff cb call 4000bd40 4000be18: 90 12 21 0c or %o0, 0x10c, %o0 ! 4000bd0c 4000be1c: f0 07 bf fc ld [ %fp + -4 ], %i0 } return fa.mount_h; } 4000be20: 81 c7 e0 08 ret 4000be24: 81 e8 00 00 restore =============================================================================== 400056f8 : { 400056f8: 84 10 00 08 mov %o0, %g2 <== NOT EXECUTED __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS)); 400056fc: 91 d0 20 09 ta 9 <== NOT EXECUTED lhs_global_loc = *lhs_global_loc_ptr; 40005700: d0 02 00 00 ld [ %o0 ], %o0 <== NOT EXECUTED *lhs_global_loc_ptr = rhs_global_loc; 40005704: d2 20 80 00 st %o1, [ %g2 ] <== NOT EXECUTED __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr)); 40005708: 91 d0 20 0a ta 0xa <== NOT EXECUTED 4000570c: 01 00 00 00 nop rtems_filesystem_global_location_release(lhs_global_loc, true); 40005710: 92 10 20 01 mov 1, %o1 ! 1 <_TLS_Alignment> 40005714: 82 13 c0 00 mov %o7, %g1 40005718: 7f ff ff de call 40005690 4000571c: 9e 10 40 00 mov %g1, %o7 =============================================================================== 400055a8 : { 400055a8: 9d e3 bf 98 save %sp, -104, %sp if (deferred_released_global_locations != NULL) { 400055ac: 3b 10 00 47 sethi %hi(0x40011c00), %i5 400055b0: c2 07 62 c4 ld [ %i5 + 0x2c4 ], %g1 ! 40011ec4 400055b4: 80 a0 60 00 cmp %g1, 0 400055b8: 02 80 00 1e be 40005630 400055bc: 01 00 00 00 nop 400055c0: ba 17 62 c4 or %i5, 0x2c4, %i5 <== NOT EXECUTED __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS)); 400055c4: 91 d0 20 09 ta 9 <== NOT EXECUTED current = deferred_released_global_locations; 400055c8: d0 07 40 00 ld [ %i5 ], %o0 if (current != NULL) { 400055cc: 80 a2 20 00 cmp %o0, 0 400055d0: 02 80 00 07 be 400055ec <== NEVER TAKEN 400055d4: 92 10 20 00 clr %o1 <== NOT EXECUTED deferred_released_global_locations = current->deferred_released_next; 400055d8: c4 02 20 1c ld [ %o0 + 0x1c ], %g2 <== NOT EXECUTED count = current->deferred_released_count; 400055dc: d2 02 20 20 ld [ %o0 + 0x20 ], %o1 <== NOT EXECUTED deferred_released_global_locations = current->deferred_released_next; 400055e0: c4 27 40 00 st %g2, [ %i5 ] <== NOT EXECUTED current->deferred_released_next = NULL; 400055e4: c0 22 20 1c clr [ %o0 + 0x1c ] <== NOT EXECUTED current->deferred_released_count = 0; 400055e8: c0 22 20 20 clr [ %o0 + 0x20 ] <== NOT EXECUTED __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr)); 400055ec: 91 d0 20 0a ta 0xa <== NOT EXECUTED 400055f0: 01 00 00 00 nop if (current != NULL) { 400055f4: 80 a2 20 00 cmp %o0, 0 400055f8: 02 80 00 0e be 40005630 <== NEVER TAKEN 400055fc: 01 00 00 00 nop release_with_count(current, count); 40005600: 7f ff ff be call 400054f8 40005604: 01 00 00 00 nop __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS)); 40005608: 91 d0 20 09 ta 9 <== NOT EXECUTED current = deferred_released_global_locations; 4000560c: d0 07 40 00 ld [ %i5 ], %o0 if (current != NULL) { 40005610: 80 a2 20 00 cmp %o0, 0 40005614: 12 bf ff f1 bne 400055d8 <== NEVER TAKEN 40005618: 92 10 20 00 clr %o1 <== NOT EXECUTED __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr)); 4000561c: 91 d0 20 0a ta 0xa <== NOT EXECUTED 40005620: 01 00 00 00 nop if (current != NULL) { 40005624: 80 a2 20 00 cmp %o0, 0 40005628: 12 bf ff f6 bne 40005600 <== NEVER TAKEN 4000562c: 01 00 00 00 nop <== NOT EXECUTED __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS)); 40005630: 91 d0 20 09 ta 9 <== NOT EXECUTED global_loc = *global_loc_ptr; 40005634: f0 06 00 00 ld [ %i0 ], %i0 if (global_loc == NULL || !global_loc->location.mt_entry->mounted) { 40005638: 80 a6 20 00 cmp %i0, 0 4000563c: 02 80 00 07 be 40005658 <== NEVER TAKEN 40005640: 01 00 00 00 nop 40005644: c4 06 20 14 ld [ %i0 + 0x14 ], %g2 40005648: c4 08 a0 28 ldub [ %g2 + 0x28 ], %g2 4000564c: 80 a0 a0 00 cmp %g2, 0 40005650: 32 80 00 0a bne,a 40005678 <== ALWAYS TAKEN 40005654: c4 06 20 18 ld [ %i0 + 0x18 ], %g2 errno = ENXIO; 40005658: 40 00 21 be call 4000dd50 <__errno> <== NOT EXECUTED 4000565c: c2 27 bf fc st %g1, [ %fp + -4 ] <== NOT EXECUTED 40005660: 84 10 20 06 mov 6, %g2 <== NOT EXECUTED 40005664: c4 22 00 00 st %g2, [ %o0 ] <== NOT EXECUTED global_loc = &rtems_filesystem_global_location_null; 40005668: 31 10 00 43 sethi %hi(0x40010c00), %i0 <== NOT EXECUTED 4000566c: c2 07 bf fc ld [ %fp + -4 ], %g1 <== NOT EXECUTED 40005670: b0 16 22 38 or %i0, 0x238, %i0 <== NOT EXECUTED ++global_loc->reference_count; 40005674: c4 06 20 18 ld [ %i0 + 0x18 ], %g2 <== NOT EXECUTED 40005678: 84 00 a0 01 inc %g2 <== NOT EXECUTED 4000567c: c4 26 20 18 st %g2, [ %i0 + 0x18 ] <== NOT EXECUTED __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr)); 40005680: 91 d0 20 0a ta 0xa <== NOT EXECUTED 40005684: 01 00 00 00 nop } 40005688: 81 c7 e0 08 ret 4000568c: 81 e8 00 00 restore =============================================================================== 40005690 : if (!deferred) { 40005690: 80 a2 60 00 cmp %o1, 0 40005694: 22 80 00 16 be,a 400056ec 40005698: 92 10 20 01 mov 1, %o1 __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS)); 4000569c: 91 d0 20 09 ta 9 <== NOT EXECUTED if (global_loc->deferred_released_count == 0) { 400056a0: c6 02 20 20 ld [ %o0 + 0x20 ], %g3 400056a4: 80 a0 e0 00 cmp %g3, 0 400056a8: 22 80 00 08 be,a 400056c8 400056ac: 07 10 00 47 sethi %hi(0x40011c00), %g3 ++global_loc->deferred_released_count; 400056b0: 86 00 e0 01 inc %g3 <== NOT EXECUTED 400056b4: c6 22 20 20 st %g3, [ %o0 + 0x20 ] <== NOT EXECUTED __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr)); 400056b8: 91 d0 20 0a ta 0xa <== NOT EXECUTED 400056bc: 01 00 00 00 nop } 400056c0: 81 c3 e0 08 retl 400056c4: 01 00 00 00 nop rtems_filesystem_global_location_t *head = 400056c8: c8 00 e2 c4 ld [ %g3 + 0x2c4 ], %g4 <== NOT EXECUTED global_loc->deferred_released_next = head; 400056cc: c8 22 20 1c st %g4, [ %o0 + 0x1c ] <== NOT EXECUTED global_loc->deferred_released_count = 1; 400056d0: 88 10 20 01 mov 1, %g4 <== NOT EXECUTED deferred_released_global_locations = global_loc; 400056d4: d0 20 e2 c4 st %o0, [ %g3 + 0x2c4 ] <== NOT EXECUTED global_loc->deferred_released_count = 1; 400056d8: c8 22 20 20 st %g4, [ %o0 + 0x20 ] <== NOT EXECUTED 400056dc: 91 d0 20 0a ta 0xa <== NOT EXECUTED 400056e0: 01 00 00 00 nop } 400056e4: 81 c3 e0 08 retl 400056e8: 01 00 00 00 nop release_with_count(global_loc, 1); 400056ec: 82 13 c0 00 mov %o7, %g1 400056f0: 7f ff ff 82 call 400054f8 400056f4: 9e 10 40 00 mov %g1, %o7 =============================================================================== 40003e5c : /* * Default mode for created files. */ void rtems_filesystem_initialize( void ) { 40003e5c: 9d e3 bf a0 save %sp, -96, %sp int rv = 0; const rtems_filesystem_mount_configuration *root_config = &rtems_filesystem_root_configuration; rv = mount( 40003e60: 05 10 00 3c sethi %hi(0x4000f000), %g2 40003e64: 82 10 a2 f4 or %g2, 0x2f4, %g1 ! 4000f2f4 40003e68: d0 00 a2 f4 ld [ %g2 + 0x2f4 ], %o0 40003e6c: d8 00 60 10 ld [ %g1 + 0x10 ], %o4 40003e70: d6 00 60 0c ld [ %g1 + 0xc ], %o3 40003e74: d4 00 60 08 ld [ %g1 + 8 ], %o2 40003e78: 40 00 01 a4 call 40004508 40003e7c: d2 00 60 04 ld [ %g1 + 4 ], %o1 root_config->target, root_config->filesystemtype, root_config->options, root_config->data ); if ( rv != 0 ) 40003e80: 80 a2 20 00 cmp %o0, 0 40003e84: 12 80 00 0a bne 40003eac <== NEVER TAKEN 40003e88: 92 10 21 ed mov 0x1ed, %o1 * Traditionally RTEMS devices are under "/dev" so install this directory. * * If the mkdir() fails, we can't print anything so just fatal error. */ rv = mkdir( "/dev", S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH ); 40003e8c: 11 10 00 3d sethi %hi(0x4000f400), %o0 40003e90: 40 00 01 56 call 400043e8 40003e94: 90 12 22 48 or %o0, 0x248, %o0 ! 4000f648 if ( rv != 0 ) 40003e98: 80 a2 20 00 cmp %o0, 0 40003e9c: 12 80 00 07 bne 40003eb8 <== NEVER TAKEN 40003ea0: 11 2a f3 40 sethi %hi(0xabcd0000), %o0 * it will be mounted onto is created. Moreover, if it is going to * use a device, then it is REALLY unfair to attempt this * before device drivers are initialized. So we return via a base * filesystem image and nothing auto-mounted at this point. */ } 40003ea4: 81 c7 e0 08 ret 40003ea8: 81 e8 00 00 restore rtems_fatal_error_occurred( 0xABCD0002 ); 40003eac: 11 2a f3 40 sethi %hi(0xabcd0000), %o0 <== NOT EXECUTED 40003eb0: 40 00 08 4a call 40005fd8 <== NOT EXECUTED 40003eb4: 90 12 20 02 or %o0, 2, %o0 ! abcd0002 <== NOT EXECUTED rtems_fatal_error_occurred( 0xABCD0003 ); 40003eb8: 40 00 08 48 call 40005fd8 <== NOT EXECUTED 40003ebc: 90 12 20 03 or %o0, 3, %o0 <== NOT EXECUTED 40003ec0: 01 00 00 00 nop <== NOT EXECUTED =============================================================================== 4000bd40 : { 4000bd40: 9d e3 bf a0 save %sp, -96, %sp while ( table_entry->type && !stop ) { 4000bd44: 3b 10 00 3c sethi %hi(0x4000f000), %i5 4000bd48: c2 07 63 70 ld [ %i5 + 0x370 ], %g1 ! 4000f370 4000bd4c: 80 a0 60 00 cmp %g1, 0 4000bd50: 12 80 00 06 bne 4000bd68 <== ALWAYS TAKEN 4000bd54: ba 17 63 70 or %i5, 0x370, %i5 4000bd58: 30 80 00 0f b,a 4000bd94 <== NOT EXECUTED 4000bd5c: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 4000bd60: 32 80 00 22 bne,a 4000bde8 <== NOT EXECUTED 4000bd64: b8 0f 20 ff and %i4, 0xff, %i4 <== NOT EXECUTED stop = (*routine)( table_entry, routine_arg ); 4000bd68: 90 10 00 1d mov %i5, %o0 4000bd6c: 9f c6 00 00 call %i0 4000bd70: 92 10 00 19 mov %i1, %o1 ++table_entry; 4000bd74: ba 07 60 08 add %i5, 8, %i5 while ( table_entry->type && !stop ) { 4000bd78: c2 07 40 00 ld [ %i5 ], %g1 4000bd7c: 80 a0 60 00 cmp %g1, 0 4000bd80: 12 bf ff f7 bne 4000bd5c <== NEVER TAKEN 4000bd84: b8 10 00 08 mov %o0, %i4 if ( !stop ) { 4000bd88: b8 8a 20 ff andcc %o0, 0xff, %i4 4000bd8c: 12 80 00 17 bne 4000bde8 <== ALWAYS TAKEN 4000bd90: 01 00 00 00 nop rtems_libio_lock(); 4000bd94: 7f ff e0 e6 call 4000412c <== NOT EXECUTED 4000bd98: 37 10 00 43 sethi %hi(0x40010c00), %i3 <== NOT EXECUTED return _Chain_Immutable_head( the_chain )->next; 4000bd9c: fa 06 e3 cc ld [ %i3 + 0x3cc ], %i5 ! 40010fcc <== NOT EXECUTED 4000bda0: b6 16 e3 cc or %i3, 0x3cc, %i3 <== NOT EXECUTED for ( 4000bda4: b6 06 e0 04 add %i3, 4, %i3 <== NOT EXECUTED 4000bda8: 80 a7 40 1b cmp %i5, %i3 <== NOT EXECUTED 4000bdac: 12 80 00 06 bne 4000bdc4 <== NOT EXECUTED 4000bdb0: b8 10 20 00 clr %i4 <== NOT EXECUTED 4000bdb4: 30 80 00 0b b,a 4000bde0 <== NOT EXECUTED !rtems_chain_is_tail( chain, node ) && !stop; 4000bdb8: 80 a2 20 00 cmp %o0, 0 <== NOT EXECUTED 4000bdbc: 12 80 00 09 bne 4000bde0 <== NOT EXECUTED 4000bdc0: 01 00 00 00 nop <== NOT EXECUTED stop = (*routine)( &fsn->entry, routine_arg ); 4000bdc4: 90 07 60 08 add %i5, 8, %o0 <== NOT EXECUTED 4000bdc8: 9f c6 00 00 call %i0 <== NOT EXECUTED 4000bdcc: 92 10 00 19 mov %i1, %o1 <== NOT EXECUTED 4000bdd0: fa 07 40 00 ld [ %i5 ], %i5 <== NOT EXECUTED for ( 4000bdd4: 80 a7 40 1b cmp %i5, %i3 <== NOT EXECUTED 4000bdd8: 12 bf ff f8 bne 4000bdb8 <== NOT EXECUTED 4000bddc: b8 10 00 08 mov %o0, %i4 <== NOT EXECUTED rtems_libio_unlock(); 4000bde0: 7f ff e0 d8 call 40004140 <== NOT EXECUTED 4000bde4: b8 0f 20 ff and %i4, 0xff, %i4 <== NOT EXECUTED } 4000bde8: 81 c7 e0 08 ret 4000bdec: 91 e8 00 1c restore %g0, %i4, %o0 =============================================================================== 4000ba8c : void rtems_filesystem_location_clone( rtems_filesystem_location_info_t *clone, const rtems_filesystem_location_info_t *master ) { 4000ba8c: 9d e3 bf a0 save %sp, -96, %sp int rv = 0; clone = rtems_filesystem_location_copy( clone, master ); 4000ba90: 92 10 00 19 mov %i1, %o1 4000ba94: 7f ff e6 4f call 400053d0 4000ba98: 90 10 00 18 mov %i0, %o0 rv = (*clone->mt_entry->ops->clonenod_h)( clone ); 4000ba9c: c2 02 20 14 ld [ %o0 + 0x14 ], %g1 4000baa0: c2 00 60 0c ld [ %g1 + 0xc ], %g1 4000baa4: c2 00 60 24 ld [ %g1 + 0x24 ], %g1 4000baa8: 9f c0 40 00 call %g1 4000baac: ba 10 00 08 mov %o0, %i5 if ( rv != 0 ) { 4000bab0: 80 a2 20 00 cmp %o0, 0 4000bab4: 12 80 00 04 bne 4000bac4 <== NEVER TAKEN 4000bab8: 90 10 00 1d mov %i5, %o0 rtems_filesystem_location_remove_from_mt_entry( clone ); rtems_filesystem_location_initialize_to_null( clone ); } } 4000babc: 81 c7 e0 08 ret 4000bac0: 81 e8 00 00 restore return rtems_filesystem_location_copy( 4000bac4: 33 10 00 43 sethi %hi(0x40010c00), %i1 <== NOT EXECUTED rtems_filesystem_location_remove_from_mt_entry( clone ); 4000bac8: 7f ff e7 16 call 40005720 <== NOT EXECUTED 4000bacc: b0 10 00 1d mov %i5, %i0 <== NOT EXECUTED 4000bad0: 7f ff e6 40 call 400053d0 <== NOT EXECUTED 4000bad4: 93 ee 62 38 restore %i1, 0x238, %o1 <== NOT EXECUTED =============================================================================== 400053d0 : rtems_filesystem_location_info_t *rtems_filesystem_location_copy( rtems_filesystem_location_info_t *dst, const rtems_filesystem_location_info_t *src ) { dst->node_access = src->node_access; 400053d0: da 02 60 08 ld [ %o1 + 8 ], %o5 <== NOT EXECUTED dst->node_access_2 = src->node_access_2; 400053d4: c8 02 60 0c ld [ %o1 + 0xc ], %g4 <== NOT EXECUTED dst->handlers = src->handlers; 400053d8: c6 02 60 10 ld [ %o1 + 0x10 ], %g3 <== NOT EXECUTED dst->mt_entry = src->mt_entry; 400053dc: c2 02 60 14 ld [ %o1 + 0x14 ], %g1 <== NOT EXECUTED 400053e0: c2 22 20 14 st %g1, [ %o0 + 0x14 ] <== NOT EXECUTED dst->node_access = src->node_access; 400053e4: da 22 20 08 st %o5, [ %o0 + 8 ] <== NOT EXECUTED dst->node_access_2 = src->node_access_2; 400053e8: c8 22 20 0c st %g4, [ %o0 + 0xc ] <== NOT EXECUTED dst->handlers = src->handlers; 400053ec: c6 22 20 10 st %g3, [ %o0 + 0x10 ] <== NOT EXECUTED __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS)); 400053f0: 91 d0 20 09 ta 9 <== NOT EXECUTED &loc->mt_entry->location_chain, 400053f4: c6 02 20 14 ld [ %o0 + 0x14 ], %g3 <== NOT EXECUTED old_last = tail->previous; 400053f8: c8 00 e0 1c ld [ %g3 + 0x1c ], %g4 <== NOT EXECUTED return &the_chain->Tail.Node; 400053fc: 9a 00 e0 18 add %g3, 0x18, %o5 <== NOT EXECUTED the_node->next = tail; 40005400: da 22 00 00 st %o5, [ %o0 ] <== NOT EXECUTED tail->previous = the_node; 40005404: d0 20 e0 1c st %o0, [ %g3 + 0x1c ] <== NOT EXECUTED old_last->next = the_node; 40005408: d0 21 00 00 st %o0, [ %g4 ] <== NOT EXECUTED the_node->previous = old_last; 4000540c: c8 22 20 04 st %g4, [ %o0 + 4 ] <== NOT EXECUTED __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr)); 40005410: 91 d0 20 0a ta 0xa <== NOT EXECUTED 40005414: 01 00 00 00 nop rtems_chain_initialize_node(&dst->mt_entry_node); rtems_filesystem_location_add_to_mt_entry(dst); return dst; } 40005418: 81 c3 e0 08 retl 4000541c: 01 00 00 00 nop =============================================================================== 400057a4 : { 400057a4: 9d e3 bf a0 save %sp, -96, %sp <== NOT EXECUTED dst->node_access = src->node_access; 400057a8: c8 06 60 08 ld [ %i1 + 8 ], %g4 <== NOT EXECUTED dst->node_access_2 = src->node_access_2; 400057ac: c6 06 60 0c ld [ %i1 + 0xc ], %g3 <== NOT EXECUTED dst->handlers = src->handlers; 400057b0: c4 06 60 10 ld [ %i1 + 0x10 ], %g2 <== NOT EXECUTED dst->mt_entry = src->mt_entry; 400057b4: c2 06 60 14 ld [ %i1 + 0x14 ], %g1 <== NOT EXECUTED 400057b8: c2 26 20 14 st %g1, [ %i0 + 0x14 ] <== NOT EXECUTED dst->node_access = src->node_access; 400057bc: c8 26 20 08 st %g4, [ %i0 + 8 ] <== NOT EXECUTED dst->node_access_2 = src->node_access_2; 400057c0: c6 26 20 0c st %g3, [ %i0 + 0xc ] <== NOT EXECUTED dst->handlers = src->handlers; 400057c4: c4 26 20 10 st %g2, [ %i0 + 0x10 ] <== NOT EXECUTED __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS)); 400057c8: 91 d0 20 09 ta 9 <== NOT EXECUTED &loc->mt_entry->location_chain, 400057cc: c4 06 20 14 ld [ %i0 + 0x14 ], %g2 <== NOT EXECUTED old_last = tail->previous; 400057d0: c6 00 a0 1c ld [ %g2 + 0x1c ], %g3 <== NOT EXECUTED return &the_chain->Tail.Node; 400057d4: 88 00 a0 18 add %g2, 0x18, %g4 <== NOT EXECUTED the_node->next = tail; 400057d8: c8 26 00 00 st %g4, [ %i0 ] <== NOT EXECUTED tail->previous = the_node; 400057dc: f0 20 a0 1c st %i0, [ %g2 + 0x1c ] <== NOT EXECUTED old_last->next = the_node; 400057e0: f0 20 c0 00 st %i0, [ %g3 ] <== NOT EXECUTED the_node->previous = old_last; 400057e4: c6 26 20 04 st %g3, [ %i0 + 4 ] <== NOT EXECUTED __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr)); 400057e8: 91 d0 20 0a ta 0xa <== NOT EXECUTED 400057ec: 01 00 00 00 nop rtems_filesystem_location_remove_from_mt_entry(detach); 400057f0: 7f ff ff cc call 40005720 400057f4: 90 10 00 19 mov %i1, %o0 dst->node_access = src->node_access; 400057f8: 03 10 00 43 sethi %hi(0x40010c00), %g1 <== NOT EXECUTED 400057fc: 82 10 62 38 or %g1, 0x238, %g1 ! 40010e38 <== NOT EXECUTED 40005800: c4 00 60 08 ld [ %g1 + 8 ], %g2 <== NOT EXECUTED 40005804: c4 26 60 08 st %g2, [ %i1 + 8 ] <== NOT EXECUTED dst->node_access_2 = src->node_access_2; 40005808: c4 00 60 0c ld [ %g1 + 0xc ], %g2 <== NOT EXECUTED 4000580c: c4 26 60 0c st %g2, [ %i1 + 0xc ] <== NOT EXECUTED dst->handlers = src->handlers; 40005810: c4 00 60 10 ld [ %g1 + 0x10 ], %g2 <== NOT EXECUTED dst->mt_entry = src->mt_entry; 40005814: c2 00 60 14 ld [ %g1 + 0x14 ], %g1 <== NOT EXECUTED 40005818: c2 26 60 14 st %g1, [ %i1 + 0x14 ] <== NOT EXECUTED dst->handlers = src->handlers; 4000581c: c4 26 60 10 st %g2, [ %i1 + 0x10 ] <== NOT EXECUTED __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS)); 40005820: 91 d0 20 09 ta 9 <== NOT EXECUTED 40005824: c4 06 60 14 ld [ %i1 + 0x14 ], %g2 <== NOT EXECUTED old_last = tail->previous; 40005828: c6 00 a0 1c ld [ %g2 + 0x1c ], %g3 <== NOT EXECUTED return &the_chain->Tail.Node; 4000582c: 88 00 a0 18 add %g2, 0x18, %g4 <== NOT EXECUTED the_node->next = tail; 40005830: c8 26 40 00 st %g4, [ %i1 ] <== NOT EXECUTED tail->previous = the_node; 40005834: f2 20 a0 1c st %i1, [ %g2 + 0x1c ] <== NOT EXECUTED old_last->next = the_node; 40005838: f2 20 c0 00 st %i1, [ %g3 ] <== NOT EXECUTED the_node->previous = old_last; 4000583c: c6 26 60 04 st %g3, [ %i1 + 4 ] <== NOT EXECUTED __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr)); 40005840: 91 d0 20 0a ta 0xa <== NOT EXECUTED 40005844: 01 00 00 00 nop } 40005848: 81 c7 e0 08 ret 4000584c: 81 e8 00 00 restore =============================================================================== 40005420 : void rtems_filesystem_location_detach( rtems_filesystem_location_info_t *detach ) { 40005420: 9d e3 bf a0 save %sp, -96, %sp <== NOT EXECUTED rtems_filesystem_location_free(detach); 40005424: 40 00 19 ad call 4000bad8 <== NOT EXECUTED 40005428: 90 10 00 18 mov %i0, %o0 <== NOT EXECUTED dst->node_access = src->node_access; 4000542c: 03 10 00 43 sethi %hi(0x40010c00), %g1 <== NOT EXECUTED 40005430: 82 10 62 38 or %g1, 0x238, %g1 ! 40010e38 <== NOT EXECUTED 40005434: c4 00 60 08 ld [ %g1 + 8 ], %g2 <== NOT EXECUTED 40005438: c4 26 20 08 st %g2, [ %i0 + 8 ] <== NOT EXECUTED dst->node_access_2 = src->node_access_2; 4000543c: c4 00 60 0c ld [ %g1 + 0xc ], %g2 <== NOT EXECUTED 40005440: c4 26 20 0c st %g2, [ %i0 + 0xc ] <== NOT EXECUTED dst->handlers = src->handlers; 40005444: c4 00 60 10 ld [ %g1 + 0x10 ], %g2 <== NOT EXECUTED dst->mt_entry = src->mt_entry; 40005448: c2 00 60 14 ld [ %g1 + 0x14 ], %g1 <== NOT EXECUTED 4000544c: c2 26 20 14 st %g1, [ %i0 + 0x14 ] <== NOT EXECUTED dst->handlers = src->handlers; 40005450: c4 26 20 10 st %g2, [ %i0 + 0x10 ] <== NOT EXECUTED __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS)); 40005454: 91 d0 20 09 ta 9 <== NOT EXECUTED 40005458: c4 06 20 14 ld [ %i0 + 0x14 ], %g2 <== NOT EXECUTED old_last = tail->previous; 4000545c: c6 00 a0 1c ld [ %g2 + 0x1c ], %g3 <== NOT EXECUTED return &the_chain->Tail.Node; 40005460: 88 00 a0 18 add %g2, 0x18, %g4 <== NOT EXECUTED the_node->next = tail; 40005464: c8 26 00 00 st %g4, [ %i0 ] <== NOT EXECUTED tail->previous = the_node; 40005468: f0 20 a0 1c st %i0, [ %g2 + 0x1c ] <== NOT EXECUTED old_last->next = the_node; 4000546c: f0 20 c0 00 st %i0, [ %g3 ] <== NOT EXECUTED the_node->previous = old_last; 40005470: c6 26 20 04 st %g3, [ %i0 + 4 ] <== NOT EXECUTED __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr)); 40005474: 91 d0 20 0a ta 0xa <== NOT EXECUTED 40005478: 01 00 00 00 nop <== NOT EXECUTED rtems_filesystem_location_initialize_to_null(detach); } 4000547c: 81 c7 e0 08 ret <== NOT EXECUTED 40005480: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 4000bad8 : #endif #include void rtems_filesystem_location_free( rtems_filesystem_location_info_t *loc ) { 4000bad8: 9d e3 bf a0 save %sp, -96, %sp <== NOT EXECUTED 4000badc: d0 06 20 14 ld [ %i0 + 0x14 ], %o0 <== NOT EXECUTED (*mt_entry->ops->lock_h)( mt_entry ); 4000bae0: c2 02 20 0c ld [ %o0 + 0xc ], %g1 <== NOT EXECUTED 4000bae4: c2 00 40 00 ld [ %g1 ], %g1 <== NOT EXECUTED 4000bae8: 9f c0 40 00 call %g1 <== NOT EXECUTED 4000baec: 01 00 00 00 nop <== NOT EXECUTED rtems_filesystem_instance_lock( loc ); (*loc->mt_entry->ops->freenod_h)( loc ); 4000baf0: c2 06 20 14 ld [ %i0 + 0x14 ], %g1 <== NOT EXECUTED 4000baf4: c2 00 60 0c ld [ %g1 + 0xc ], %g1 <== NOT EXECUTED 4000baf8: c2 00 60 28 ld [ %g1 + 0x28 ], %g1 <== NOT EXECUTED 4000bafc: 9f c0 40 00 call %g1 <== NOT EXECUTED 4000bb00: 90 10 00 18 mov %i0, %o0 <== NOT EXECUTED 4000bb04: d0 06 20 14 ld [ %i0 + 0x14 ], %o0 <== NOT EXECUTED (*mt_entry->ops->unlock_h)( mt_entry ); 4000bb08: c2 02 20 0c ld [ %o0 + 0xc ], %g1 <== NOT EXECUTED 4000bb0c: c2 00 60 04 ld [ %g1 + 4 ], %g1 <== NOT EXECUTED 4000bb10: 9f c0 40 00 call %g1 <== NOT EXECUTED 4000bb14: 01 00 00 00 nop <== NOT EXECUTED rtems_filesystem_instance_unlock( loc ); rtems_filesystem_location_remove_from_mt_entry( loc ); 4000bb18: 7f ff e7 02 call 40005720 <== NOT EXECUTED 4000bb1c: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 40005720 : __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS)); 40005720: 91 d0 20 09 ta 9 <== NOT EXECUTED previous = the_node->previous; 40005724: c6 02 20 04 ld [ %o0 + 4 ], %g3 next = the_node->next; 40005728: c8 02 00 00 ld [ %o0 ], %g4 next->previous = previous; 4000572c: c6 21 20 04 st %g3, [ %g4 + 4 ] do_unmount = rtems_filesystem_is_ready_for_unmount(loc->mt_entry); 40005730: c4 02 20 14 ld [ %o0 + 0x14 ], %g2 previous->next = next; 40005734: c8 20 c0 00 st %g4, [ %g3 ] 40005738: c6 08 a0 28 ldub [ %g2 + 0x28 ], %g3 4000573c: 80 a0 e0 00 cmp %g3, 0 40005740: 12 80 00 07 bne 4000575c <== ALWAYS TAKEN 40005744: 01 00 00 00 nop && rtems_chain_has_only_one_node( &mt_entry->location_chain ) 40005748: c8 00 a0 14 ld [ %g2 + 0x14 ], %g4 <== NOT EXECUTED 4000574c: c6 00 a0 1c ld [ %g2 + 0x1c ], %g3 <== NOT EXECUTED 40005750: 80 a1 00 03 cmp %g4, %g3 <== NOT EXECUTED 40005754: 22 80 00 06 be,a 4000576c <== NOT EXECUTED 40005758: c6 00 a0 24 ld [ %g2 + 0x24 ], %g3 <== NOT EXECUTED __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr)); 4000575c: 91 d0 20 0a ta 0xa <== NOT EXECUTED 40005760: 01 00 00 00 nop } 40005764: 81 c3 e0 08 retl 40005768: 01 00 00 00 nop && mt_entry->mt_fs_root->reference_count == 1; 4000576c: c6 00 e0 18 ld [ %g3 + 0x18 ], %g3 <== NOT EXECUTED 40005770: 80 a0 e0 01 cmp %g3, 1 <== NOT EXECUTED 40005774: 12 bf ff fa bne 4000575c <== NOT EXECUTED 40005778: 86 00 a0 14 add %g2, 0x14, %g3 <== NOT EXECUTED return &the_chain->Tail.Node; 4000577c: 88 00 a0 18 add %g2, 0x18, %g4 <== NOT EXECUTED head->previous = NULL; 40005780: c0 20 a0 18 clr [ %g2 + 0x18 ] <== NOT EXECUTED head->next = tail; 40005784: c8 20 a0 14 st %g4, [ %g2 + 0x14 ] <== NOT EXECUTED tail->previous = head; 40005788: c6 20 a0 1c st %g3, [ %g2 + 0x1c ] <== NOT EXECUTED 4000578c: 91 d0 20 0a ta 0xa <== NOT EXECUTED 40005790: 01 00 00 00 nop <== NOT EXECUTED rtems_filesystem_do_unmount(loc->mt_entry); 40005794: d0 02 20 14 ld [ %o0 + 0x14 ], %o0 <== NOT EXECUTED 40005798: 82 13 c0 00 mov %o7, %g1 <== NOT EXECUTED 4000579c: 7f ff ff 3a call 40005484 <== NOT EXECUTED 400057a0: 9e 10 40 00 mov %g1, %o7 <== NOT EXECUTED =============================================================================== 40005850 : { 40005850: 9d e3 bf 98 save %sp, -104, %sp <== NOT EXECUTED rtems_filesystem_global_location_t *global_loc = malloc(sizeof(*global_loc)); 40005854: 7f ff fa d1 call 40004398 <== NOT EXECUTED 40005858: 90 10 20 24 mov 0x24, %o0 <== NOT EXECUTED if (global_loc != NULL) { 4000585c: ba 92 20 00 orcc %o0, 0, %i5 <== NOT EXECUTED 40005860: 02 80 00 1c be 400058d0 <== NOT EXECUTED 40005864: b8 10 20 01 mov 1, %i4 <== NOT EXECUTED dst->node_access = src->node_access; 40005868: c8 06 20 08 ld [ %i0 + 8 ], %g4 <== NOT EXECUTED dst->node_access_2 = src->node_access_2; 4000586c: c6 06 20 0c ld [ %i0 + 0xc ], %g3 <== NOT EXECUTED dst->handlers = src->handlers; 40005870: c4 06 20 10 ld [ %i0 + 0x10 ], %g2 <== NOT EXECUTED dst->mt_entry = src->mt_entry; 40005874: c2 06 20 14 ld [ %i0 + 0x14 ], %g1 <== NOT EXECUTED global_loc->deferred_released_next = NULL; 40005878: c0 27 60 1c clr [ %i5 + 0x1c ] <== NOT EXECUTED global_loc->reference_count = 1; 4000587c: f8 27 60 18 st %i4, [ %i5 + 0x18 ] <== NOT EXECUTED global_loc->deferred_released_count = 0; 40005880: c0 27 60 20 clr [ %i5 + 0x20 ] <== NOT EXECUTED dst->node_access = src->node_access; 40005884: c8 27 60 08 st %g4, [ %i5 + 8 ] <== NOT EXECUTED dst->node_access_2 = src->node_access_2; 40005888: c6 27 60 0c st %g3, [ %i5 + 0xc ] <== NOT EXECUTED dst->handlers = src->handlers; 4000588c: c4 27 60 10 st %g2, [ %i5 + 0x10 ] <== NOT EXECUTED dst->mt_entry = src->mt_entry; 40005890: c2 27 60 14 st %g1, [ %i5 + 0x14 ] <== NOT EXECUTED __asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS)); 40005894: 91 d0 20 09 ta 9 <== NOT EXECUTED 40005898: c4 07 60 14 ld [ %i5 + 0x14 ], %g2 <== NOT EXECUTED old_last = tail->previous; 4000589c: c6 00 a0 1c ld [ %g2 + 0x1c ], %g3 <== NOT EXECUTED return &the_chain->Tail.Node; 400058a0: 88 00 a0 18 add %g2, 0x18, %g4 <== NOT EXECUTED the_node->next = tail; 400058a4: c8 27 40 00 st %g4, [ %i5 ] <== NOT EXECUTED tail->previous = the_node; 400058a8: fa 20 a0 1c st %i5, [ %g2 + 0x1c ] <== NOT EXECUTED old_last->next = the_node; 400058ac: fa 20 c0 00 st %i5, [ %g3 ] <== NOT EXECUTED the_node->previous = old_last; 400058b0: c6 27 60 04 st %g3, [ %i5 + 4 ] <== NOT EXECUTED __asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr)); 400058b4: 91 d0 20 0a ta 0xa <== NOT EXECUTED 400058b8: 01 00 00 00 nop <== NOT EXECUTED rtems_filesystem_location_remove_from_mt_entry(loc); 400058bc: 90 10 00 18 mov %i0, %o0 <== NOT EXECUTED 400058c0: 7f ff ff 98 call 40005720 <== NOT EXECUTED 400058c4: b0 10 00 1d mov %i5, %i0 <== NOT EXECUTED } 400058c8: 81 c7 e0 08 ret <== NOT EXECUTED 400058cc: 81 e8 00 00 restore <== NOT EXECUTED rtems_filesystem_location_free(loc); 400058d0: 40 00 18 82 call 4000bad8 <== NOT EXECUTED 400058d4: 90 10 00 18 mov %i0, %o0 <== NOT EXECUTED return rtems_filesystem_global_location_obtain( &global_loc ); 400058d8: 90 07 bf fc add %fp, -4, %o0 <== NOT EXECUTED 400058dc: 7f ff ff 33 call 400055a8 <== NOT EXECUTED 400058e0: c0 27 bf fc clr [ %fp + -4 ] <== NOT EXECUTED errno = ENOMEM; 400058e4: 40 00 21 1b call 4000dd50 <__errno> <== NOT EXECUTED 400058e8: ba 10 00 08 mov %o0, %i5 <== NOT EXECUTED 400058ec: 82 10 20 0c mov 0xc, %g1 <== NOT EXECUTED 400058f0: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED } 400058f4: 81 c7 e0 08 ret <== NOT EXECUTED 400058f8: 91 e8 00 1d restore %g0, %i5, %o0 <== NOT EXECUTED =============================================================================== 40004404 : const char *name, size_t namelen, mode_t mode, dev_t dev ) { 40004404: 9d e3 bf a0 save %sp, -96, %sp int rv = 0; mode &= ~rtems_filesystem_umask; 40004408: 40 00 01 e3 call 40004b94 4000440c: 01 00 00 00 nop 40004410: d6 02 20 08 ld [ %o0 + 8 ], %o3 40004414: 96 2e c0 0b andn %i3, %o3, %o3 switch (mode & S_IFMT) { 40004418: 03 00 00 3c sethi %hi(0xf000), %g1 4000441c: 05 00 00 10 sethi %hi(0x4000), %g2 40004420: 82 0a c0 01 and %o3, %g1, %g1 40004424: 80 a0 40 02 cmp %g1, %g2 40004428: 22 80 00 0c be,a 40004458 <== ALWAYS TAKEN 4000442c: c2 06 20 14 ld [ %i0 + 0x14 ], %g1 40004430: 08 80 00 14 bleu 40004480 <== NOT EXECUTED 40004434: 05 00 00 04 sethi %hi(0x1000), %g2 <== NOT EXECUTED 40004438: 05 00 00 18 sethi %hi(0x6000), %g2 <== NOT EXECUTED 4000443c: 80 a0 40 02 cmp %g1, %g2 <== NOT EXECUTED 40004440: 02 80 00 05 be 40004454 <== NOT EXECUTED 40004444: 05 00 00 20 sethi %hi(0x8000), %g2 <== NOT EXECUTED 40004448: 80 a0 40 02 cmp %g1, %g2 <== NOT EXECUTED 4000444c: 12 80 00 13 bne 40004498 <== NOT EXECUTED 40004450: 01 00 00 00 nop <== NOT EXECUTED rv = -1; break; } if ( rv == 0 ) { const rtems_filesystem_operations_table *ops = parentloc->mt_entry->ops; 40004454: c2 06 20 14 ld [ %i0 + 0x14 ], %g1 <== NOT EXECUTED rv = (*ops->mknod_h)( parentloc, name, namelen, mode, dev ); 40004458: c2 00 60 0c ld [ %g1 + 0xc ], %g1 4000445c: c2 00 60 14 ld [ %g1 + 0x14 ], %g1 40004460: 98 10 00 1c mov %i4, %o4 40004464: 9a 10 00 1d mov %i5, %o5 40004468: 94 10 00 1a mov %i2, %o2 4000446c: 92 10 00 19 mov %i1, %o1 40004470: 9f c0 40 00 call %g1 40004474: 90 10 00 18 mov %i0, %o0 40004478: 81 c7 e0 08 ret 4000447c: 91 e8 00 08 restore %g0, %o0, %o0 switch (mode & S_IFMT) { 40004480: 80 a0 40 02 cmp %g1, %g2 <== NOT EXECUTED 40004484: 02 bf ff f4 be 40004454 <== NOT EXECUTED 40004488: 05 00 00 08 sethi %hi(0x2000), %g2 <== NOT EXECUTED 4000448c: 80 a0 40 02 cmp %g1, %g2 <== NOT EXECUTED 40004490: 22 bf ff f2 be,a 40004458 <== NOT EXECUTED 40004494: c2 06 20 14 ld [ %i0 + 0x14 ], %g1 <== NOT EXECUTED errno = EINVAL; 40004498: 40 00 26 2e call 4000dd50 <__errno> <== NOT EXECUTED 4000449c: b0 10 3f ff mov -1, %i0 <== NOT EXECUTED 400044a0: 82 10 20 16 mov 0x16, %g1 <== NOT EXECUTED 400044a4: c2 22 00 00 st %g1, [ %o0 ] <== NOT EXECUTED } return rv; } 400044a8: 81 c7 e0 08 ret <== NOT EXECUTED 400044ac: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 4000f740 : 4000f740: 40 00 5a 5c 40 00 b4 cc 40 00 b7 20 40 00 b7 b8 @.Z\@...@.. @... 4000f750: 40 00 b5 54 40 00 b6 d8 40 00 5a 64 40 00 b5 38 @..T@...@.Zd@..8 4000f760: 40 00 b4 f8 40 00 b4 f8 40 00 b4 e8 40 00 b7 18 @...@...@...@... 4000f770: 40 00 b5 70 40 00 b7 3c 40 00 b7 d4 40 00 b6 f4 @..p@..<@...@... =============================================================================== 400041f4 : void *rtems_heap_allocate_aligned_with_boundary( size_t size, uintptr_t alignment, uintptr_t boundary ) { 400041f4: 9d e3 bf a0 save %sp, -96, %sp 400041f8: 03 10 00 49 sethi %hi(0x40012400), %g1 400041fc: c2 00 60 ec ld [ %g1 + 0xec ], %g1 ! 400124ec <_System_state_Current> Heap_Control *heap = RTEMS_Malloc_Heap; 40004200: 05 10 00 43 sethi %hi(0x40010c00), %g2 if ( _System_state_Is_up( state ) ) { 40004204: 80 a0 60 02 cmp %g1, 2 40004208: 02 80 00 21 be 4000428c <== NEVER TAKEN 4000420c: f8 00 a1 ac ld [ %g2 + 0x1ac ], %i4 } else if ( _System_state_Is_before_multitasking( state ) ) { 40004210: 80 a0 60 01 cmp %g1, 1 40004214: 02 80 00 22 be 4000429c 40004218: 96 10 00 1a mov %i2, %o3 boundary ); _RTEMS_Unlock_allocator(); break; case MALLOC_SYSTEM_STATE_NO_PROTECTION: p = _Heap_Allocate_aligned_with_boundary( 4000421c: 94 10 00 19 mov %i1, %o2 40004220: 92 10 00 18 mov %i0, %o1 40004224: 40 00 07 f3 call 400061f0 <_Heap_Allocate_aligned_with_boundary> 40004228: 90 10 00 1c mov %i4, %o0 4000422c: ba 10 00 08 mov %o0, %i5 * Do not attempt to allocate memory if not in correct system state. */ return NULL; } if ( p == NULL && alignment == 0 && boundary == 0 ) { 40004230: 80 a7 60 00 cmp %i5, 0 40004234: 12 80 00 0b bne 40004260 <== ALWAYS TAKEN 40004238: 80 a6 60 00 cmp %i1, 0 4000423c: 12 80 00 09 bne 40004260 <== NOT EXECUTED 40004240: 80 a6 a0 00 cmp %i2, 0 <== NOT EXECUTED 40004244: 12 80 00 23 bne 400042d0 <== NOT EXECUTED 40004248: 03 10 00 3c sethi %hi(0x4000f000), %g1 <== NOT EXECUTED p = (*rtems_malloc_extend_handler)( heap, size ); 4000424c: c2 00 62 98 ld [ %g1 + 0x298 ], %g1 ! 4000f298 <== NOT EXECUTED 40004250: 92 10 00 18 mov %i0, %o1 <== NOT EXECUTED 40004254: 9f c0 40 00 call %g1 <== NOT EXECUTED 40004258: 90 10 00 1c mov %i4, %o0 <== NOT EXECUTED 4000425c: ba 10 00 08 mov %o0, %i5 <== NOT EXECUTED } /* * If the user wants us to dirty the allocated memory, then do it. */ if ( p != NULL && rtems_malloc_dirty_helper != NULL ) 40004260: 80 a7 60 00 cmp %i5, 0 40004264: 02 80 00 1b be 400042d0 <== NEVER TAKEN 40004268: 03 10 00 44 sethi %hi(0x40011000), %g1 4000426c: c2 00 62 24 ld [ %g1 + 0x224 ], %g1 ! 40011224 40004270: 80 a0 60 00 cmp %g1, 0 40004274: 02 80 00 04 be 40004284 <== ALWAYS TAKEN 40004278: 92 10 00 18 mov %i0, %o1 (*rtems_malloc_dirty_helper)( p, size ); 4000427c: 9f c0 40 00 call %g1 <== NOT EXECUTED 40004280: 90 10 00 1d mov %i5, %o0 <== NOT EXECUTED return p; } 40004284: 81 c7 e0 08 ret 40004288: 91 e8 00 1d restore %g0, %i5, %o0 4000428c: c2 01 a0 18 ld [ %g6 + 0x18 ], %g1 <== NOT EXECUTED if ( _Thread_Dispatch_is_enabled() ) { 40004290: 80 a0 60 00 cmp %g1, 0 <== NOT EXECUTED 40004294: 32 80 00 10 bne,a 400042d4 <== NOT EXECUTED 40004298: ba 10 20 00 clr %i5 <== NOT EXECUTED _RTEMS_Lock_allocator(); 4000429c: 40 00 07 6a call 40006044 <_RTEMS_Lock_allocator> 400042a0: 01 00 00 00 nop _Malloc_Process_deferred_frees(); 400042a4: 7f ff ff bb call 40004190 <_Malloc_Process_deferred_frees> 400042a8: 01 00 00 00 nop p = _Heap_Allocate_aligned_with_boundary( 400042ac: 96 10 00 1a mov %i2, %o3 400042b0: 94 10 00 19 mov %i1, %o2 400042b4: 92 10 00 18 mov %i0, %o1 400042b8: 40 00 07 ce call 400061f0 <_Heap_Allocate_aligned_with_boundary> 400042bc: 90 10 00 1c mov %i4, %o0 _RTEMS_Unlock_allocator(); 400042c0: 40 00 07 66 call 40006058 <_RTEMS_Unlock_allocator> 400042c4: ba 10 00 08 mov %o0, %i5 break; 400042c8: 10 bf ff db b 40004234 400042cc: 80 a7 60 00 cmp %i5, 0 return NULL; 400042d0: ba 10 20 00 clr %i5 <== NOT EXECUTED } 400042d4: 81 c7 e0 08 ret <== NOT EXECUTED 400042d8: 91 e8 00 1d restore %g0, %i5, %o0 <== NOT EXECUTED =============================================================================== 40004be8 : Heap_Control *heap RTEMS_UNUSED, size_t alloc_size RTEMS_UNUSED ) { return NULL; } 40004be8: 81 c3 e0 08 retl <== NOT EXECUTED 40004bec: 90 10 20 00 clr %o0 ! 0 <== NOT EXECUTED =============================================================================== 4000bc78 : return fcntl_flags; } rtems_libio_t *rtems_libio_allocate( void ) { 4000bc78: 9d e3 bf a0 save %sp, -96, %sp rtems_libio_t *iop; rtems_libio_lock(); 4000bc7c: 7f ff e1 2c call 4000412c 4000bc80: 01 00 00 00 nop iop = rtems_libio_iop_free_head; 4000bc84: 03 10 00 49 sethi %hi(0x40012400), %g1 4000bc88: f0 00 60 90 ld [ %g1 + 0x90 ], %i0 ! 40012490 if ( iop != NULL ) { 4000bc8c: 80 a6 20 00 cmp %i0, 0 4000bc90: 02 80 00 06 be 4000bca8 <== NEVER TAKEN 4000bc94: 86 10 60 90 or %g1, 0x90, %g3 void *next; next = iop->data1; 4000bc98: c4 06 20 28 ld [ %i0 + 0x28 ], %g2 rtems_libio_iop_free_head = next; if ( next == NULL ) { 4000bc9c: 80 a0 a0 00 cmp %g2, 0 4000bca0: 02 80 00 06 be 4000bcb8 4000bca4: c4 20 60 90 st %g2, [ %g1 + 0x90 ] rtems_libio_iop_free_tail = &rtems_libio_iop_free_head; } } rtems_libio_unlock(); 4000bca8: 7f ff e1 26 call 40004140 4000bcac: 01 00 00 00 nop return iop; } 4000bcb0: 81 c7 e0 08 ret 4000bcb4: 81 e8 00 00 restore rtems_libio_iop_free_tail = &rtems_libio_iop_free_head; 4000bcb8: 03 10 00 43 sethi %hi(0x40010c00), %g1 rtems_libio_unlock(); 4000bcbc: 7f ff e1 21 call 40004140 4000bcc0: c6 20 61 b8 st %g3, [ %g1 + 0x1b8 ] ! 40010db8 } 4000bcc4: 81 c7 e0 08 ret 4000bcc8: 81 e8 00 00 restore =============================================================================== 4000bc24 : #include #include void rtems_libio_exit(void) { 4000bc24: 9d e3 bf a0 save %sp, -96, %sp <== NOT EXECUTED (void)close(0); 4000bc28: 40 00 07 84 call 4000da38 <== NOT EXECUTED 4000bc2c: 90 10 20 00 clr %o0 <== NOT EXECUTED (void)close(1); (void)close(2); 4000bc30: b0 10 20 02 mov 2, %i0 <== NOT EXECUTED (void)close(1); 4000bc34: 40 00 07 81 call 4000da38 <== NOT EXECUTED 4000bc38: 90 10 20 01 mov 1, %o0 <== NOT EXECUTED (void)close(2); 4000bc3c: 40 00 07 7f call 4000da38 <== NOT EXECUTED 4000bc40: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 4000bccc : void rtems_libio_free( rtems_libio_t *iop ) { 4000bccc: 9d e3 bf a0 save %sp, -96, %sp <== NOT EXECUTED rtems_filesystem_location_free( &iop->pathinfo ); 4000bcd0: 7f ff ff 82 call 4000bad8 <== NOT EXECUTED 4000bcd4: 90 06 20 0c add %i0, 0xc, %o0 <== NOT EXECUTED rtems_libio_lock(); 4000bcd8: 7f ff e1 15 call 4000412c <== NOT EXECUTED 4000bcdc: 01 00 00 00 nop <== NOT EXECUTED iop = memset( iop, 0, sizeof( *iop ) ); 4000bce0: 94 10 20 30 mov 0x30, %o2 ! 30 <_TLS_Alignment+0x2f> <== NOT EXECUTED 4000bce4: 92 10 20 00 clr %o1 <== NOT EXECUTED 4000bce8: 40 00 08 84 call 4000def8 <== NOT EXECUTED 4000bcec: 90 10 00 18 mov %i0, %o0 <== NOT EXECUTED *rtems_libio_iop_free_tail = iop; 4000bcf0: 03 10 00 43 sethi %hi(0x40010c00), %g1 <== NOT EXECUTED 4000bcf4: c4 00 61 b8 ld [ %g1 + 0x1b8 ], %g2 ! 40010db8 <== NOT EXECUTED 4000bcf8: d0 20 80 00 st %o0, [ %g2 ] <== NOT EXECUTED rtems_libio_iop_free_tail = &iop->data1; 4000bcfc: 90 02 20 28 add %o0, 0x28, %o0 <== NOT EXECUTED 4000bd00: d0 20 61 b8 st %o0, [ %g1 + 0x1b8 ] <== NOT EXECUTED rtems_libio_unlock(); 4000bd04: 7f ff e1 0f call 40004140 <== NOT EXECUTED 4000bd08: 81 e8 00 00 restore <== NOT EXECUTED =============================================================================== 40004bc0 : if (!uses_global_env) { 40004bc0: 03 10 00 43 sethi %hi(0x40010c00), %g1 <== NOT EXECUTED 40004bc4: 82 10 61 f0 or %g1, 0x1f0, %g1 ! 40010df0 <== NOT EXECUTED 40004bc8: 80 a0 40 08 cmp %g1, %o0 <== NOT EXECUTED 40004bcc: 02 80 00 05 be 40004be0 <== NOT EXECUTED 40004bd0: 01 00 00 00 nop <== NOT EXECUTED 40004bd4: 82 13 c0 00 mov %o7, %g1 <== NOT EXECUTED 40004bd8: 7f ff ff e6 call 40004b70 <== NOT EXECUTED 40004bdc: 9e 10 40 00 mov %g1, %o7 <== NOT EXECUTED } } 40004be0: 81 c3 e0 08 retl <== NOT EXECUTED 40004be4: 01 00 00 00 nop <== NOT EXECUTED =============================================================================== 400048b0 : /* * This is a replaceable stub which opens the console, if present. */ void rtems_libio_post_driver(void) { 400048b0: 9d e3 bf a0 save %sp, -96, %sp /* * Attempt to open /dev/console. */ if ( open( CONSOLE_DEVICE_NAME, O_RDONLY, 0 ) != STDIN_FILENO ) { 400048b4: 94 10 20 00 clr %o2 400048b8: 92 10 20 00 clr %o1 400048bc: 3b 10 00 3d sethi %hi(0x4000f400), %i5 400048c0: 40 00 00 1a call 40004928 400048c4: 90 17 62 50 or %i5, 0x250, %o0 ! 4000f650 400048c8: 80 a2 20 00 cmp %o0, 0 400048cc: 02 80 00 04 be 400048dc <== ALWAYS TAKEN 400048d0: 94 10 20 00 clr %o2 if ( open( CONSOLE_DEVICE_NAME, O_WRONLY, 0 ) != STDERR_FILENO ) { _Internal_error( INTERNAL_ERROR_LIBIO_STDERR_FD_OPEN_FAILED ); } atexit(rtems_libio_exit); } 400048d4: 81 c7 e0 08 ret <== NOT EXECUTED 400048d8: 81 e8 00 00 restore <== NOT EXECUTED if ( open( CONSOLE_DEVICE_NAME, O_WRONLY, 0 ) != STDOUT_FILENO ) { 400048dc: 92 10 20 01 mov 1, %o1 400048e0: 40 00 00 12 call 40004928 400048e4: 90 17 62 50 or %i5, 0x250, %o0 400048e8: 80 a2 20 01 cmp %o0, 1 400048ec: 12 80 00 0a bne 40004914 <== NEVER TAKEN 400048f0: 94 10 20 00 clr %o2 if ( open( CONSOLE_DEVICE_NAME, O_WRONLY, 0 ) != STDERR_FILENO ) { 400048f4: 92 10 20 01 mov 1, %o1 400048f8: 40 00 00 0c call 40004928 400048fc: 90 17 62 50 or %i5, 0x250, %o0 40004900: 80 a2 20 02 cmp %o0, 2 40004904: 12 80 00 06 bne 4000491c <== NEVER TAKEN 40004908: 31 10 00 2f sethi %hi(0x4000bc00), %i0 <== NOT EXECUTED atexit(rtems_libio_exit); 4000490c: 40 00 25 0a call 4000dd34 <== NOT EXECUTED 40004910: 91 ee 20 24 restore %i0, 0x24, %o0 _Internal_error( INTERNAL_ERROR_LIBIO_STDOUT_FD_OPEN_FAILED ); 40004914: 40 00 07 de call 4000688c <_Internal_error> <== NOT EXECUTED 40004918: 90 10 20 24 mov 0x24, %o0 <== NOT EXECUTED _Internal_error( INTERNAL_ERROR_LIBIO_STDERR_FD_OPEN_FAILED ); 4000491c: 40 00 07 dc call 4000688c <_Internal_error> <== NOT EXECUTED 40004920: 90 10 20 25 mov 0x25, %o0 <== NOT EXECUTED 40004924: 01 00 00 00 nop <== NOT EXECUTED =============================================================================== 4000be80 : int rtems_printf( const rtems_printer *printer, const char *format, ... ) { 4000be80: 9d e3 bf 98 save %sp, -104, %sp int len = 0; if ( rtems_print_printer_valid( printer ) ) { va_list ap; va_start( ap, format ); 4000be84: f4 27 a0 4c st %i2, [ %fp + 0x4c ] { 4000be88: 82 10 00 18 mov %i0, %g1 va_start( ap, format ); 4000be8c: f6 27 a0 50 st %i3, [ %fp + 0x50 ] int len = 0; 4000be90: b0 10 20 00 clr %i0 va_start( ap, format ); 4000be94: f8 27 a0 54 st %i4, [ %fp + 0x54 ] 4000be98: 80 a0 60 00 cmp %g1, 0 4000be9c: 02 80 00 0b be 4000bec8 <== NEVER TAKEN 4000bea0: fa 27 a0 58 st %i5, [ %fp + 0x58 ] 4000bea4: c4 00 60 04 ld [ %g1 + 4 ], %g2 4000bea8: 80 a0 a0 00 cmp %g2, 0 4000beac: 02 80 00 07 be 4000bec8 <== NEVER TAKEN 4000beb0: 94 07 a0 4c add %fp, 0x4c, %o2 len = printer->printer( printer->context, format, ap ); 4000beb4: d0 00 40 00 ld [ %g1 ], %o0 4000beb8: 92 10 00 19 mov %i1, %o1 4000bebc: 9f c0 80 00 call %g2 4000bec0: d4 27 bf fc st %o2, [ %fp + -4 ] 4000bec4: b0 10 00 08 mov %o0, %i0 va_end( ap ); } return len; } 4000bec8: 81 c7 e0 08 ret 4000becc: 81 e8 00 00 restore =============================================================================== 4000be44 : int rtems_vprintf( const rtems_printer *printer, const char *format, va_list ap ) { 4000be44: 9d e3 bf a0 save %sp, -96, %sp 4000be48: 82 10 00 18 mov %i0, %g1 * * @return true The printer is valid else false is returned. */ static inline bool rtems_print_printer_valid(const rtems_printer *printer) { return printer != NULL && printer->printer != NULL; 4000be4c: 80 a0 60 00 cmp %g1, 0 4000be50: 02 80 00 0a be 4000be78 <== NEVER TAKEN 4000be54: b0 10 20 00 clr %i0 4000be58: c4 00 60 04 ld [ %g1 + 4 ], %g2 4000be5c: 80 a0 a0 00 cmp %g2, 0 4000be60: 02 80 00 06 be 4000be78 <== NEVER TAKEN 4000be64: 94 10 00 1a mov %i2, %o2 int len = 0; if ( rtems_print_printer_valid( printer ) ) { len = printer->printer( printer->context, format, ap ); 4000be68: d0 00 40 00 ld [ %g1 ], %o0 4000be6c: 9f c0 80 00 call %g2 4000be70: 92 10 00 19 mov %i1, %o1 4000be74: b0 10 00 08 mov %o0, %i0 } return len; } 4000be78: 81 c7 e0 08 ret 4000be7c: 81 e8 00 00 restore