RTEMS-5
Annotated Report
Fri Aug 10 17:01:41 2018
40004efc <RTEMS_Malloc_Initialize>:
void RTEMS_Malloc_Initialize(
const Heap_Area *areas,
size_t area_count,
Heap_Initialization_or_extend_handler extend
)
{
40004efc: 9d e3 bf a0 save %sp, -96, %sp
Heap_Control *heap = RTEMS_Malloc_Heap;
if ( !rtems_configuration_get_unified_work_area() ) {
40004f00: 03 10 00 43 sethi %hi(0x40010c00), %g1
40004f04: c2 08 60 69 ldub [ %g1 + 0x69 ], %g1 ! 40010c69 <Configuration+0x31>
40004f08: 80 a0 60 00 cmp %g1, 0
40004f0c: 12 80 00 19 bne 40004f70 <RTEMS_Malloc_Initialize+0x74>
40004f10: 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) {
40004f14: 02 80 00 19 be 40004f78 <RTEMS_Malloc_Initialize+0x7c>
40004f18: 03 10 00 4b sethi %hi(0x40012c00), %g1
Heap_Control *heap = RTEMS_Malloc_Heap;
40004f1c: f8 00 63 64 ld [ %g1 + 0x364 ], %i4 ! 40012f64 <RTEMS_Malloc_Heap>
40004f20: b3 2e 60 03 sll %i1, 3, %i1
Heap_Initialization_or_extend_handler init_or_extend = _Heap_Initialize;
40004f24: 37 10 00 1e sethi %hi(0x40007800), %i3
40004f28: b2 06 00 19 add %i0, %i1, %i1
40004f2c: b6 16 e2 cc or %i3, 0x2cc, %i3
40004f30: ba 10 00 1b mov %i3, %i5
const Heap_Area *area = &areas [i];
uintptr_t space_available = (*init_or_extend)(
40004f34: d4 06 20 04 ld [ %i0 + 4 ], %o2
40004f38: d2 06 00 00 ld [ %i0 ], %o1
40004f3c: 96 10 20 08 mov 8, %o3
40004f40: 9f c7 40 00 call %i5
40004f44: 90 10 00 1c mov %i4, %o0
area->begin,
area->size,
page_size
);
if ( space_available > 0 ) {
40004f48: 80 a2 20 00 cmp %o0, 0
40004f4c: 32 80 00 02 bne,a 40004f54 <RTEMS_Malloc_Initialize+0x58>
<== ALWAYS TAKEN
40004f50: ba 10 00 1a mov %i2, %i5
40004f54: b0 06 20 08 add %i0, 8, %i0
for (i = 0; i < area_count; ++i) {
40004f58: 80 a6 00 19 cmp %i0, %i1
40004f5c: 32 bf ff f7 bne,a 40004f38 <RTEMS_Malloc_Initialize+0x3c>
<== NEVER TAKEN
40004f60: d4 06 20 04 ld [ %i0 + 4 ], %o2
<== NOT EXECUTED
init_or_extend = extend;
}
}
if ( init_or_extend == _Heap_Initialize ) {
40004f64: 80 a7 40 1b cmp %i5, %i3
40004f68: 02 80 00 04 be 40004f78 <RTEMS_Malloc_Initialize+0x7c>
<== NEVER TAKEN
40004f6c: 01 00 00 00 nop
_Internal_error( INTERNAL_ERROR_NO_MEMORY_FOR_HEAP );
}
}
}
40004f70: 81 c7 e0 08 ret
40004f74: 81 e8 00 00 restore
_Internal_error( INTERNAL_ERROR_NO_MEMORY_FOR_HEAP );
40004f78: 40 00 0b 9e call 40007df0 <_Internal_error>
40004f7c: 90 10 20 17 mov 0x17, %o0
40004f80: 01 00 00 00 nop
<== NOT EXECUTED
40004b08 <_Console_simple_Read>:
ssize_t _Console_simple_Read(
rtems_libio_t *iop,
void *buffer,
size_t count
)
{
40004b08: 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 ) {
40004b0c: 80 a6 a0 00 cmp %i2, 0
<== NOT EXECUTED
40004b10: 04 80 00 0c ble 40004b40 <_Console_simple_Read+0x38>
<== NOT EXECUTED
40004b14: ba 10 20 00 clr %i5
<== NOT EXECUTED
int c;
do {
c = getchark();
40004b18: 40 00 00 22 call 40004ba0 <getchark>
<== NOT EXECUTED
40004b1c: 01 00 00 00 nop
<== NOT EXECUTED
} while (c == -1);
40004b20: 80 a2 3f ff cmp %o0, -1
<== NOT EXECUTED
40004b24: 02 bf ff fd be 40004b18 <_Console_simple_Read+0x10>
<== NOT EXECUTED
40004b28: 01 00 00 00 nop
<== NOT EXECUTED
buf[ i ] = (char) c;
40004b2c: d0 2e 40 1d stb %o0, [ %i1 + %i5 ]
<== NOT EXECUTED
for ( i = 0; i < n; ++i ) {
40004b30: ba 07 60 01 inc %i5
<== NOT EXECUTED
40004b34: 80 a6 80 1d cmp %i2, %i5
<== NOT EXECUTED
40004b38: 12 bf ff f8 bne 40004b18 <_Console_simple_Read+0x10>
<== NOT EXECUTED
40004b3c: 01 00 00 00 nop
<== NOT EXECUTED
}
return n;
}
40004b40: 81 c7 e0 08 ret
<== NOT EXECUTED
40004b44: 91 e8 00 1a restore %g0, %i2, %o0
<== NOT EXECUTED
40005008 <_Console_simple_task_Initialize>:
}
}
void _Console_simple_task_Initialize( void )
{
40005008: 9d e3 bf a0 save %sp, -96, %sp
static __inline void
_Mutex_Initialize_named(struct _Mutex_Control *_mutex, const char *_name)
{
struct _Mutex_Control _init = _MUTEX_NAMED_INITIALIZER(_name);
*_mutex = _init;
4000500c: 03 10 00 76 sethi %hi(0x4001d800), %g1
40005010: b4 10 63 e0 or %g1, 0x3e0, %i2 ! 4001dbe0 <_Console_simple_task_Instance>
40005014: c0 20 63 e0 clr [ %g1 + 0x3e0 ]
40005018: 03 10 00 6a sethi %hi(0x4001a800), %g1
4000501c: c0 26 a0 04 clr [ %i2 + 4 ]
40005020: 82 10 61 a0 or %g1, 0x1a0, %g1
40005024: c0 26 a0 08 clr [ %i2 + 8 ]
cons = &_Console_simple_task_Instance;
rtems_interrupt_lock_initialize( &cons->buf_lock, "Console" );
rtems_mutex_init( &cons->output_mutex, "Console" );
IMFS_make_generic_node(
40005028: 96 10 00 1a mov %i2, %o3
4000502c: c2 26 a0 10 st %g1, [ %i2 + 0x10 ]
40005030: 15 10 00 6a sethi %hi(0x4001a800), %o2
40005034: c0 26 a0 0c clr [ %i2 + 0xc ]
40005038: 94 12 a1 b8 or %o2, 0x1b8, %o2
4000503c: 13 00 00 08 sethi %hi(0x2000), %o1
40005040: 11 10 00 6a sethi %hi(0x4001a800), %o0
40005044: 92 12 61 ff or %o1, 0x1ff, %o1
40005048: 40 00 27 6a call 4000edf0 <IMFS_make_generic_node>
4000504c: 90 12 21 a8 or %o0, 0x1a8, %o0
cons
);
rtems_task_create(
rtems_build_name('C', 'O', 'N', 'S'),
RTEMS_MAXIMUM_PRIORITY - 1,
40005050: 03 10 00 68 sethi %hi(0x4001a000), %g1
rtems_task_create(
40005054: d2 00 63 14 ld [ %g1 + 0x314 ], %o1 ! 4001a314 <_Scheduler_Table+0x44>
40005058: 9a 06 a0 14 add %i2, 0x14, %o5
4000505c: 98 10 20 00 clr %o4
40005060: 96 10 20 00 clr %o3
40005064: 15 00 00 04 sethi %hi(0x1000), %o2
40005068: 92 02 7f ff add %o1, -1, %o1
4000506c: 11 10 d3 d3 sethi %hi(0x434f4c00), %o0
40005070: 40 00 09 ab call 4000771c <rtems_task_create>
40005074: 90 12 22 53 or %o0, 0x253, %o0 ! 434f4e53 <RAM_END+0x30f4e53>
RTEMS_DEFAULT_ATTRIBUTES,
RTEMS_DEFAULT_MODES,
&cons->task
);
rtems_task_start(
40005078: f0 06 a0 14 ld [ %i2 + 0x14 ], %i0
<== NOT EXECUTED
4000507c: 33 10 00 13 sethi %hi(0x40004c00), %i1
<== NOT EXECUTED
40005080: 40 00 0a f7 call 40007c5c <rtems_task_start>
<== NOT EXECUTED
40005084: 93 ee 62 fc restore %i1, 0x2fc, %o1
40004ec8 <_Malloc_Deferred_free>:
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40004ec8: 91 d0 20 09 ta 9
<== NOT EXECUTED
old_last = tail->previous;
40004ecc: 05 10 00 4b sethi %hi(0x40012c00), %g2
<== NOT EXECUTED
40004ed0: 84 10 a3 90 or %g2, 0x390, %g2 ! 40012f90 <_Malloc_GC_list>
<== NOT EXECUTED
40004ed4: c6 00 a0 08 ld [ %g2 + 8 ], %g3
<== NOT EXECUTED
the_node->next = tail;
40004ed8: 88 00 a0 04 add %g2, 4, %g4
<== NOT EXECUTED
40004edc: c8 22 00 00 st %g4, [ %o0 ]
<== NOT EXECUTED
tail->previous = the_node;
40004ee0: d0 20 a0 08 st %o0, [ %g2 + 8 ]
<== NOT EXECUTED
old_last->next = the_node;
40004ee4: d0 20 c0 00 st %o0, [ %g3 ]
<== NOT EXECUTED
the_node->previous = old_last;
40004ee8: c6 22 20 04 st %g3, [ %o0 + 4 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40004eec: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40004ef0: 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 );
}
40004ef4: 81 c3 e0 08 retl
<== NOT EXECUTED
40004ef8: 01 00 00 00 nop
<== NOT EXECUTED
40004d7c <_Malloc_Process_deferred_frees>:
return p;
}
void _Malloc_Process_deferred_frees( void )
{
40004d7c: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40004d80: 91 d0 20 09 ta 9
<== NOT EXECUTED
return _Chain_Immutable_head( the_chain )->next;
40004d84: 3b 10 00 4b sethi %hi(0x40012c00), %i5
40004d88: d0 07 63 90 ld [ %i5 + 0x390 ], %o0 ! 40012f90 <_Malloc_GC_list>
40004d8c: ba 17 63 90 or %i5, 0x390, %i5
if ( !_Chain_Is_empty(the_chain))
40004d90: b8 07 60 04 add %i5, 4, %i4
40004d94: 80 a2 00 1c cmp %o0, %i4
40004d98: 02 80 00 0e be 40004dd0 <_Malloc_Process_deferred_frees+0x54>
<== ALWAYS TAKEN
40004d9c: 01 00 00 00 nop
new_first = old_first->next;
40004da0: c4 02 00 00 ld [ %o0 ], %g2
<== NOT EXECUTED
head->next = new_first;
40004da4: c4 27 40 00 st %g2, [ %i5 ]
<== NOT EXECUTED
new_first->previous = head;
40004da8: fa 20 a0 04 st %i5, [ %g2 + 4 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40004dac: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40004db0: 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 );
40004db4: 7f ff ff 65 call 40004b48 <free>
<== NOT EXECUTED
40004db8: 01 00 00 00 nop
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40004dbc: 91 d0 20 09 ta 9
<== NOT EXECUTED
return _Chain_Immutable_head( the_chain )->next;
40004dc0: d0 07 40 00 ld [ %i5 ], %o0
<== NOT EXECUTED
if ( !_Chain_Is_empty(the_chain))
40004dc4: 80 a2 00 1c cmp %o0, %i4
<== NOT EXECUTED
40004dc8: 32 bf ff f7 bne,a 40004da4 <_Malloc_Process_deferred_frees+0x28>
<== NOT EXECUTED
40004dcc: c4 02 00 00 ld [ %o0 ], %g2
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40004dd0: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40004dd4: 01 00 00 00 nop
}
}
40004dd8: 81 c7 e0 08 ret
40004ddc: 81 e8 00 00 restore
40004d40 <_Malloc_System_state>:
40004d40: 03 10 00 52 sethi %hi(0x40014800), %g1
40004d44: c2 00 60 6c ld [ %g1 + 0x6c ], %g1 ! 4001486c <_System_state_Current>
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 ) ) {
40004d48: 84 18 60 01 xor %g1, 1, %g2
return MALLOC_SYSTEM_STATE_NORMAL;
} else {
return MALLOC_SYSTEM_STATE_NO_PROTECTION;
40004d4c: 80 a0 00 02 cmp %g0, %g2
40004d50: 90 40 20 00 addx %g0, 0, %o0
if ( _System_state_Is_up( state ) ) {
40004d54: 80 a0 60 02 cmp %g1, 2
40004d58: 02 80 00 04 be 40004d68 <_Malloc_System_state+0x28>
<== ALWAYS TAKEN
40004d5c: 01 00 00 00 nop
}
}
40004d60: 81 c3 e0 08 retl
<== NOT EXECUTED
40004d64: 01 00 00 00 nop
<== NOT EXECUTED
40004d68: c2 01 a0 18 ld [ %g6 + 0x18 ], %g1
return MALLOC_SYSTEM_STATE_NO_ALLOCATION;
40004d6c: 80 a0 00 01 cmp %g0, %g1
40004d70: 90 40 20 00 addx %g0, 0, %o0
}
40004d74: 81 c3 e0 08 retl
40004d78: 91 2a 20 01 sll %o0, 1, %o0
40012ab8 <_close_r>:
int _close_r(
struct _reent *ptr RTEMS_UNUSED,
int fd
)
{
return close( fd );
40012ab8: 90 10 00 09 mov %o1, %o0
<== NOT EXECUTED
40012abc: 82 13 c0 00 mov %o7, %g1
<== NOT EXECUTED
40012ac0: 7f ff ff c8 call 400129e0 <close>
<== NOT EXECUTED
40012ac4: 9e 10 40 00 mov %g1, %o7
<== NOT EXECUTED
40010ea4 <_exit>:
extern void FINI_SYMBOL( void );
#endif
void _exit(int status)
{
40010ea4: 9d e3 bf a0 save %sp, -96, %sp
/*
* If the toolset uses init/fini sections, then we need to
* run the global destructors now.
*/
#if defined(FINI_SYMBOL)
FINI_SYMBOL();
40010ea8: 40 00 05 de call 40012620 <_fini>
40010eac: 01 00 00 00 nop
#endif
rtems_shutdown_executive(status);
40010eb0: 7f ff f8 33 call 4000ef7c <rtems_shutdown_executive>
40010eb4: 90 10 00 18 mov %i0, %o0
40010eb8: 01 00 00 00 nop
<== NOT EXECUTED
40004c38 <_gettimeofday_r>:
int _gettimeofday_r(
struct _reent *ignored_reentrancy_stuff RTEMS_UNUSED,
struct timeval *tp,
void *__tz
)
{
40004c38: 9d e3 bf a0 save %sp, -96, %sp
if ( !tp )
40004c3c: 80 a6 60 00 cmp %i1, 0
40004c40: 02 80 00 06 be 40004c58 <_gettimeofday_r+0x20>
<== NEVER TAKEN
40004c44: 90 10 00 19 mov %i1, %o0
40004c48: 40 00 10 e6 call 40008fe0 <_Timecounter_Microtime>
40004c4c: b0 10 20 00 clr %i0
struct timezone *tzp = __tz;
return gettimeofday( tp, tzp );
}
40004c50: 81 c7 e0 08 ret
40004c54: 81 e8 00 00 restore
rtems_set_errno_and_return_minus_one( EFAULT );
40004c58: 40 00 2a 20 call 4000f4d8 <__errno>
<== NOT EXECUTED
40004c5c: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
40004c60: 82 10 20 0e mov 0xe, %g1
<== NOT EXECUTED
40004c64: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
40004c68: 81 c7 e0 08 ret
<== NOT EXECUTED
40004c6c: 81 e8 00 00 restore
<== NOT EXECUTED
4001c3c0 <_lseek_r>:
struct _reent *ptr RTEMS_UNUSED,
int fd,
off_t offset,
int whence
)
{
4001c3c0: 86 10 00 0b mov %o3, %g3
<== NOT EXECUTED
return lseek( fd, offset, whence );
4001c3c4: 90 10 00 09 mov %o1, %o0
<== NOT EXECUTED
4001c3c8: 96 10 00 0c mov %o4, %o3
<== NOT EXECUTED
4001c3cc: 92 10 00 0a mov %o2, %o1
<== NOT EXECUTED
4001c3d0: 94 10 00 03 mov %g3, %o2
<== NOT EXECUTED
4001c3d4: 82 13 c0 00 mov %o7, %g1
<== NOT EXECUTED
4001c3d8: 7f ff ff ca call 4001c300 <lseek>
<== NOT EXECUTED
4001c3dc: 9e 10 40 00 mov %g1, %o7
<== NOT EXECUTED
4001c4d8 <_read_r>:
struct _reent *ptr RTEMS_UNUSED,
int fd,
void *buf,
size_t nbytes
)
{
4001c4d8: 82 10 00 0a mov %o2, %g1
<== NOT EXECUTED
return read( fd, buf, nbytes );
4001c4dc: 90 10 00 09 mov %o1, %o0
<== NOT EXECUTED
4001c4e0: 94 10 00 0b mov %o3, %o2
<== NOT EXECUTED
4001c4e4: 92 10 00 01 mov %g1, %o1
<== NOT EXECUTED
4001c4e8: 82 13 c0 00 mov %o7, %g1
<== NOT EXECUTED
4001c4ec: 7f ff ff c1 call 4001c3f0 <read>
<== NOT EXECUTED
4001c4f0: 9e 10 40 00 mov %g1, %o7
<== NOT EXECUTED
4001c4f4 <_realloc_r>:
void *_realloc_r(
struct _reent *ignored,
void *ptr,
size_t size
)
{
4001c4f4: 90 10 00 09 mov %o1, %o0
<== NOT EXECUTED
(void) ignored;
return realloc( ptr, size );
4001c4f8: 92 10 00 0a mov %o2, %o1
<== NOT EXECUTED
4001c4fc: 82 13 c0 00 mov %o7, %g1
<== NOT EXECUTED
4001c500: 40 00 00 09 call 4001c524 <realloc>
<== NOT EXECUTED
4001c504: 9e 10 40 00 mov %g1, %o7
<== NOT EXECUTED
400129f0 <cfsetispeed>:
*/
int cfsetispeed(
struct termios *tp,
speed_t speed
)
{
400129f0: 9d e3 bf a0 save %sp, -96, %sp
if ( rtems_termios_baud_to_index( speed ) == -1 )
400129f4: 7f ff d0 d6 call 40006d4c <rtems_termios_baud_to_index>
400129f8: 90 10 00 19 mov %i1, %o0
400129fc: 80 a2 3f ff cmp %o0, -1
40012a00: 02 80 00 07 be 40012a1c <cfsetispeed+0x2c>
<== NEVER TAKEN
40012a04: ba 10 00 08 mov %o0, %i5
rtems_set_errno_and_return_minus_one( EINVAL );
tp->c_ispeed = speed;
40012a08: f2 26 20 24 st %i1, [ %i0 + 0x24 ]
return 0;
40012a0c: ba 10 20 00 clr %i5
}
40012a10: b0 10 00 1d mov %i5, %i0
40012a14: 81 c7 e0 08 ret
40012a18: 81 e8 00 00 restore
rtems_set_errno_and_return_minus_one( EINVAL );
40012a1c: 40 00 02 c7 call 40013538 <__errno>
<== NOT EXECUTED
40012a20: b0 10 00 1d mov %i5, %i0
<== NOT EXECUTED
40012a24: 82 10 20 16 mov 0x16, %g1
<== NOT EXECUTED
40012a28: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
40012a2c: 81 c7 e0 08 ret
<== NOT EXECUTED
40012a30: 81 e8 00 00 restore
<== NOT EXECUTED
40012a34 <cfsetospeed>:
*/
int cfsetospeed(
struct termios *tp,
speed_t speed
)
{
40012a34: 9d e3 bf a0 save %sp, -96, %sp
if ( rtems_termios_baud_to_index( speed ) == -1 )
40012a38: 7f ff d0 c5 call 40006d4c <rtems_termios_baud_to_index>
40012a3c: 90 10 00 19 mov %i1, %o0
40012a40: 80 a2 3f ff cmp %o0, -1
40012a44: 02 80 00 07 be 40012a60 <cfsetospeed+0x2c>
<== NEVER TAKEN
40012a48: ba 10 00 08 mov %o0, %i5
rtems_set_errno_and_return_minus_one( EINVAL );
tp->c_ospeed = speed;
40012a4c: f2 26 20 28 st %i1, [ %i0 + 0x28 ]
return 0;
40012a50: ba 10 20 00 clr %i5
}
40012a54: b0 10 00 1d mov %i5, %i0
40012a58: 81 c7 e0 08 ret
40012a5c: 81 e8 00 00 restore
rtems_set_errno_and_return_minus_one( EINVAL );
40012a60: 40 00 02 b6 call 40013538 <__errno>
<== NOT EXECUTED
40012a64: b0 10 00 1d mov %i5, %i0
<== NOT EXECUTED
40012a68: 82 10 20 16 mov 0x16, %g1
<== NOT EXECUTED
40012a6c: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
40012a70: 81 c7 e0 08 ret
<== NOT EXECUTED
40012a74: 81 e8 00 00 restore
<== NOT EXECUTED
40004edc <cfsetspeed>:
int cfsetspeed(
struct termios *tp,
speed_t speed
)
{
40004edc: 9d e3 bf a0 save %sp, -96, %sp
if ( rtems_termios_baud_to_index( speed ) == -1 )
40004ee0: 40 00 07 9b call 40006d4c <rtems_termios_baud_to_index>
40004ee4: 90 10 00 19 mov %i1, %o0
40004ee8: 80 a2 3f ff cmp %o0, -1
40004eec: 02 80 00 0c be 40004f1c <cfsetspeed+0x40>
<== NEVER TAKEN
40004ef0: ba 10 00 08 mov %o0, %i5
rtems_set_errno_and_return_minus_one( EINVAL );
cfsetispeed( tp, speed );
40004ef4: 92 10 00 19 mov %i1, %o1
40004ef8: 40 00 36 be call 400129f0 <cfsetispeed>
40004efc: 90 10 00 18 mov %i0, %o0
cfsetospeed( tp, speed );
return 0;
40004f00: ba 10 20 00 clr %i5
cfsetospeed( tp, speed );
40004f04: 92 10 00 19 mov %i1, %o1
40004f08: 40 00 36 cb call 40012a34 <cfsetospeed>
40004f0c: 90 10 00 18 mov %i0, %o0
}
40004f10: b0 10 00 1d mov %i5, %i0
40004f14: 81 c7 e0 08 ret
40004f18: 81 e8 00 00 restore
rtems_set_errno_and_return_minus_one( EINVAL );
40004f1c: 40 00 39 87 call 40013538 <__errno>
<== NOT EXECUTED
40004f20: b0 10 00 1d mov %i5, %i0
<== NOT EXECUTED
40004f24: 82 10 20 16 mov 0x16, %g1
<== NOT EXECUTED
40004f28: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
40004f2c: 81 c7 e0 08 ret
<== NOT EXECUTED
40004f30: 81 e8 00 00 restore
<== NOT EXECUTED
4000f3e4 <close>:
#include <rtems/libio_.h>
int close(
int fd
)
{
4000f3e4: 9d e3 bf a0 save %sp, -96, %sp
rtems_libio_t *iop;
unsigned int flags;
int rc;
if ( (uint32_t) fd >= rtems_libio_number_iops ) {
4000f3e8: 03 10 00 43 sethi %hi(0x40010c00), %g1
4000f3ec: c2 00 62 00 ld [ %g1 + 0x200 ], %g1 ! 40010e00 <rtems_libio_number_iops>
4000f3f0: 80 a6 00 01 cmp %i0, %g1
4000f3f4: 1a 80 00 1b bcc 4000f460 <close+0x7c>
<== NEVER TAKEN
4000f3f8: 01 00 00 00 nop
4000f3fc: b7 2e 20 01 sll %i0, 1, %i3
4000f400: b0 06 c0 18 add %i3, %i0, %i0
4000f404: 37 10 00 51 sethi %hi(0x40014400), %i3
4000f408: b9 2e 20 04 sll %i0, 4, %i4
4000f40c: b6 16 e0 48 or %i3, 0x48, %i3
4000f410: b8 06 c0 1c add %i3, %i4, %i4
4000f414: c4 07 20 08 ld [ %i4 + 8 ], %g2
unsigned int actual;
(void) succ;
(void) fail;
_ISR_Local_disable( level );
actual = *obj;
4000f418: 10 80 00 0f b 4000f454 <close+0x70>
4000f41c: ba 10 00 1c mov %i4, %i5
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4000f420: 91 d0 20 09 ta 9
<== NOT EXECUTED
4000f424: c6 07 60 08 ld [ %i5 + 8 ], %g3
success = ( actual == *expected );
if ( success ) {
4000f428: 80 a1 00 03 cmp %g4, %g3
4000f42c: 12 80 00 03 bne 4000f438 <close+0x54>
4000f430: 84 08 ae ff and %g2, 0xeff, %g2
*obj = desired;
4000f434: c4 27 60 08 st %g2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4000f438: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4000f43c: 01 00 00 00 nop
desired,
ATOMIC_ORDER_ACQ_REL,
ATOMIC_ORDER_RELAXED
);
if ( success ) {
4000f440: 80 a1 00 03 cmp %g4, %g3
4000f444: 02 80 00 0d be 4000f478 <close+0x94>
4000f448: 80 88 f0 00 btst -4096, %g3
break;
}
if ( ( flags & ~( LIBIO_FLAGS_REFERENCE_INC - 1U ) ) != 0 ) {
4000f44c: 12 80 00 16 bne 4000f4a4 <close+0xc0>
<== NEVER TAKEN
4000f450: 84 10 00 03 mov %g3, %g2
if ( ( flags & LIBIO_FLAGS_OPEN ) == 0 ) {
4000f454: 80 88 a1 00 btst 0x100, %g2
4000f458: 12 bf ff f2 bne 4000f420 <close+0x3c>
<== ALWAYS TAKEN
4000f45c: 88 08 af ff and %g2, 0xfff, %g4
rtems_set_errno_and_return_minus_one( EBADF );
4000f460: 40 00 00 1e call 4000f4d8 <__errno>
<== NOT EXECUTED
4000f464: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
4000f468: 82 10 20 09 mov 9, %g1
<== NOT EXECUTED
4000f46c: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
4000f470: 81 c7 e0 08 ret
<== NOT EXECUTED
4000f474: 81 e8 00 00 restore
<== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EBUSY );
}
}
rc = (*iop->pathinfo.handlers->close_h)( iop );
4000f478: b1 2e 20 04 sll %i0, 4, %i0
4000f47c: b6 06 c0 18 add %i3, %i0, %i3
4000f480: c2 06 e0 1c ld [ %i3 + 0x1c ], %g1
4000f484: c2 00 60 04 ld [ %g1 + 4 ], %g1
4000f488: 9f c0 40 00 call %g1
4000f48c: 90 10 00 1c mov %i4, %o0
4000f490: b0 10 00 08 mov %o0, %i0
rtems_libio_free( iop );
4000f494: 7f ff fb 75 call 4000e268 <rtems_libio_free>
4000f498: 90 10 00 1c mov %i4, %o0
return rc;
}
4000f49c: 81 c7 e0 08 ret
4000f4a0: 81 e8 00 00 restore
rtems_set_errno_and_return_minus_one( EBUSY );
4000f4a4: 40 00 00 0d call 4000f4d8 <__errno>
<== NOT EXECUTED
4000f4a8: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
4000f4ac: 82 10 20 10 mov 0x10, %g1
<== NOT EXECUTED
4000f4b0: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
4000f4b4: 81 c7 e0 08 ret
<== NOT EXECUTED
4000f4b8: 81 e8 00 00 restore
<== NOT EXECUTED
40004d04 <fcntl>:
int fcntl(
int fd,
int cmd,
...
)
{
40004d04: 9d e3 bf 98 save %sp, -104, %sp
int ret;
va_list ap;
va_start( ap, cmd );
40004d08: 86 07 a0 4c add %fp, 0x4c, %g3
40004d0c: f4 27 a0 4c st %i2, [ %fp + 0x4c ]
LIBIO_GET_IOP( fd, iop );
40004d10: 09 10 00 41 sethi %hi(0x40010400), %g4
va_start( ap, cmd );
40004d14: f6 27 a0 50 st %i3, [ %fp + 0x50 ]
40004d18: f8 27 a0 54 st %i4, [ %fp + 0x54 ]
40004d1c: fa 27 a0 58 st %i5, [ %fp + 0x58 ]
LIBIO_GET_IOP( fd, iop );
40004d20: c2 01 22 10 ld [ %g4 + 0x210 ], %g1
40004d24: 80 a6 00 01 cmp %i0, %g1
40004d28: 1a 80 00 df bcc 400050a4 <fcntl+0x3a0>
<== NEVER TAKEN
40004d2c: c6 27 bf fc st %g3, [ %fp + -4 ]
<== NOT EXECUTED
40004d30: 83 2e 20 01 sll %i0, 1, %g1
<== NOT EXECUTED
40004d34: 39 10 00 4d sethi %hi(0x40013400), %i4
<== NOT EXECUTED
40004d38: a0 00 40 18 add %g1, %i0, %l0
<== NOT EXECUTED
40004d3c: b8 17 20 c0 or %i4, 0xc0, %i4
<== NOT EXECUTED
40004d40: b7 2c 20 04 sll %l0, 4, %i3
<== NOT EXECUTED
40004d44: ba 07 00 1b add %i4, %i3, %i5
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40004d48: 91 d0 20 09 ta 9
<== NOT EXECUTED
val = *obj;
40004d4c: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
*obj = val + arg;
40004d50: b4 20 b0 00 sub %g2, -4096, %i2
<== NOT EXECUTED
40004d54: f4 27 60 08 st %i2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40004d58: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40004d5c: 01 00 00 00 nop
40004d60: 80 88 a1 00 btst 0x100, %g2
40004d64: 02 80 00 d6 be 400050bc <fcntl+0x3b8>
40004d68: 80 a6 60 14 cmp %i1, 0x14
switch ( cmd ) {
40004d6c: 18 80 00 b7 bgu 40005048 <fcntl+0x344>
<== NEVER TAKEN
40004d70: 85 2e 60 02 sll %i1, 2, %g2
40004d74: 03 10 00 13 sethi %hi(0x40004c00), %g1
40004d78: 82 10 60 b0 or %g1, 0xb0, %g1 ! 40004cb0 <_Console_simple_Read+0x40>
40004d7c: c2 00 40 02 ld [ %g1 + %g2 ], %g1
40004d80: 81 c0 40 00 jmp %g1
40004d84: 01 00 00 00 nop
errno = ENOTSUP;
40004d88: 40 00 29 17 call 4000f1e4 <__errno>
<== NOT EXECUTED
40004d8c: b0 10 3f ff mov -1, %i0 ! ffffffff <RAM_END+0xbfbfffff>
<== NOT EXECUTED
40004d90: 82 10 20 86 mov 0x86, %g1
<== NOT EXECUTED
40004d94: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40004d98: 91 d0 20 09 ta 9
<== NOT EXECUTED
*obj = val - arg;
40004d9c: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
40004da0: 84 00 b0 00 add %g2, -4096, %g2
<== NOT EXECUTED
40004da4: c4 27 60 08 st %g2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40004da8: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40004dac: 01 00 00 00 nop
ret = vfcntl(fd,cmd,ap);
va_end(ap);
return ret;
}
40004db0: 81 c7 e0 08 ret
40004db4: 81 e8 00 00 restore
flags = rtems_libio_fcntl_flags( va_arg( ap, int ) );
40004db8: 40 00 01 50 call 400052f8 <rtems_libio_fcntl_flags>
40004dbc: d0 00 c0 00 ld [ %g3 ], %o0
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40004dc0: 91 d0 20 09 ta 9
<== NOT EXECUTED
*obj = val & arg;
40004dc4: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
40004dc8: 84 08 bd fe and %g2, -514, %g2
<== NOT EXECUTED
40004dcc: c4 27 60 08 st %g2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40004dd0: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40004dd4: 01 00 00 00 nop
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40004dd8: 91 d0 20 09 ta 9
<== NOT EXECUTED
*obj = val | arg;
40004ddc: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
rtems_libio_iop_flags_set( iop, flags & mask );
40004de0: 90 0a 22 01 and %o0, 0x201, %o0
<== NOT EXECUTED
40004de4: 90 10 80 08 or %g2, %o0, %o0
<== NOT EXECUTED
40004de8: d0 27 60 08 st %o0, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40004dec: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40004df0: 01 00 00 00 nop
int ret = 0;
40004df4: b0 10 20 00 clr %i0 ! 0 <PROM_START>
int err = (*iop->pathinfo.handlers->fcntl_h)( iop, cmd );
40004df8: 83 2c 20 04 sll %l0, 4, %g1
40004dfc: b8 07 00 01 add %i4, %g1, %i4
40004e00: c2 07 20 1c ld [ %i4 + 0x1c ], %g1
40004e04: c2 00 60 28 ld [ %g1 + 0x28 ], %g1
40004e08: 92 10 00 19 mov %i1, %o1
40004e0c: 9f c0 40 00 call %g1
40004e10: 90 10 00 1d mov %i5, %o0
if (err) {
40004e14: b8 92 20 00 orcc %o0, 0, %i4
40004e18: 02 bf ff e0 be 40004d98 <fcntl+0x94>
<== ALWAYS TAKEN
40004e1c: 01 00 00 00 nop
errno = err;
40004e20: 40 00 28 f1 call 4000f1e4 <__errno>
<== NOT EXECUTED
40004e24: b0 10 3f ff mov -1, %i0 ! ffffffff <RAM_END+0xbfbfffff>
<== NOT EXECUTED
40004e28: f8 22 00 00 st %i4, [ %o0 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40004e2c: 91 d0 20 09 ta 9
<== NOT EXECUTED
*obj = val - arg;
40004e30: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
40004e34: 84 00 b0 00 add %g2, -4096, %g2
<== NOT EXECUTED
40004e38: c4 27 60 08 st %g2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40004e3c: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40004e40: 01 00 00 00 nop
<== NOT EXECUTED
}
40004e44: 81 c7 e0 08 ret
<== NOT EXECUTED
40004e48: 81 e8 00 00 restore
<== NOT EXECUTED
fd2 = va_arg( ap, int );
40004e4c: e6 00 c0 00 ld [ %g3 ], %l3
<== NOT EXECUTED
if ( (uint32_t) fd2 >= rtems_libio_number_iops ) {
40004e50: c2 01 22 10 ld [ %g4 + 0x210 ], %g1
<== NOT EXECUTED
40004e54: 80 a4 c0 01 cmp %l3, %g1
<== NOT EXECUTED
40004e58: 1a 80 00 a5 bcc 400050ec <fcntl+0x3e8>
<== NOT EXECUTED
40004e5c: b5 2c e0 01 sll %l3, 1, %i2
<== NOT EXECUTED
40004e60: b4 06 80 13 add %i2, %l3, %i2
<== NOT EXECUTED
40004e64: a3 2e a0 04 sll %i2, 4, %l1
<== NOT EXECUTED
40004e68: a4 07 00 11 add %i4, %l1, %l2
<== NOT EXECUTED
if (iop != iop2)
40004e6c: 80 a7 40 12 cmp %i5, %l2
<== NOT EXECUTED
40004e70: 02 bf ff e2 be 40004df8 <fcntl+0xf4>
<== NOT EXECUTED
40004e74: b0 10 20 00 clr %i0
<== NOT EXECUTED
40004e78: c2 04 a0 08 ld [ %l2 + 8 ], %g1
<== NOT EXECUTED
if ((rtems_libio_iop_flags( iop2 ) & LIBIO_FLAGS_OPEN) != 0) {
40004e7c: 80 88 61 00 btst 0x100, %g1
<== NOT EXECUTED
40004e80: 22 80 00 0a be,a 40004ea8 <fcntl+0x1a4>
<== NOT EXECUTED
40004e84: d0 07 60 08 ld [ %i5 + 8 ], %o0
<== NOT EXECUTED
rv = (*iop2->pathinfo.handlers->close_h)( iop2 );
40004e88: c2 04 a0 1c ld [ %l2 + 0x1c ], %g1
<== NOT EXECUTED
40004e8c: c2 00 60 04 ld [ %g1 + 4 ], %g1
<== NOT EXECUTED
40004e90: 9f c0 40 00 call %g1
<== NOT EXECUTED
40004e94: 90 10 00 12 mov %l2, %o0
<== NOT EXECUTED
if (rv == 0) {
40004e98: b0 92 20 00 orcc %o0, 0, %i0
<== NOT EXECUTED
40004e9c: 12 80 00 5d bne 40005010 <fcntl+0x30c>
<== NOT EXECUTED
40004ea0: 80 a6 20 00 cmp %i0, 0
<== NOT EXECUTED
40004ea4: d0 07 60 08 ld [ %i5 + 8 ], %o0
<== NOT EXECUTED
oflag = rtems_libio_to_fcntl_flags( rtems_libio_iop_flags( iop ) );
40004ea8: 40 00 01 21 call 4000532c <rtems_libio_to_fcntl_flags>
<== NOT EXECUTED
40004eac: 01 00 00 00 nop
<== NOT EXECUTED
rtems_libio_iop_flags_set( iop2, rtems_libio_fcntl_flags( oflag ) );
40004eb0: 40 00 01 12 call 400052f8 <rtems_libio_fcntl_flags>
<== NOT EXECUTED
40004eb4: b0 10 00 08 mov %o0, %i0
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40004eb8: 91 d0 20 09 ta 9
<== NOT EXECUTED
*obj = val | arg;
40004ebc: c4 04 a0 08 ld [ %l2 + 8 ], %g2
<== NOT EXECUTED
40004ec0: 90 10 80 08 or %g2, %o0, %o0
<== NOT EXECUTED
40004ec4: d0 24 a0 08 st %o0, [ %l2 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40004ec8: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40004ecc: 01 00 00 00 nop
<== NOT EXECUTED
40004ed0: d0 07 60 20 ld [ %i5 + 0x20 ], %o0
<== NOT EXECUTED
(*mt_entry->ops->lock_h)( mt_entry );
40004ed4: c2 02 20 0c ld [ %o0 + 0xc ], %g1
<== NOT EXECUTED
40004ed8: c2 00 40 00 ld [ %g1 ], %g1
<== NOT EXECUTED
40004edc: 9f c0 40 00 call %g1
<== NOT EXECUTED
40004ee0: b5 2e a0 04 sll %i2, 4, %i2
<== NOT EXECUTED
rtems_filesystem_location_clone( &iop2->pathinfo, &iop->pathinfo );
40004ee4: 92 06 e0 0c add %i3, 0xc, %o1
<== NOT EXECUTED
40004ee8: 90 04 60 0c add %l1, 0xc, %o0
<== NOT EXECUTED
40004eec: 92 07 00 09 add %i4, %o1, %o1
<== NOT EXECUTED
40004ef0: 40 00 23 94 call 4000dd40 <rtems_filesystem_location_clone>
<== NOT EXECUTED
40004ef4: 90 07 00 08 add %i4, %o0, %o0
<== NOT EXECUTED
40004ef8: d0 07 60 20 ld [ %i5 + 0x20 ], %o0
<== NOT EXECUTED
(*mt_entry->ops->unlock_h)( mt_entry );
40004efc: c2 02 20 0c ld [ %o0 + 0xc ], %g1
<== NOT EXECUTED
40004f00: c2 00 60 04 ld [ %g1 + 4 ], %g1
<== NOT EXECUTED
40004f04: 9f c0 40 00 call %g1
<== NOT EXECUTED
40004f08: b4 07 00 1a add %i4, %i2, %i2
<== NOT EXECUTED
rv = (*iop2->pathinfo.handlers->open_h)( iop2, NULL, oflag, 0 );
40004f0c: c2 06 a0 1c ld [ %i2 + 0x1c ], %g1
<== NOT EXECUTED
40004f10: c2 00 40 00 ld [ %g1 ], %g1
<== NOT EXECUTED
40004f14: 94 10 00 18 mov %i0, %o2
<== NOT EXECUTED
40004f18: 96 10 20 00 clr %o3
<== NOT EXECUTED
40004f1c: 92 10 20 00 clr %o1
<== NOT EXECUTED
40004f20: 9f c0 40 00 call %g1
<== NOT EXECUTED
40004f24: 90 10 00 12 mov %l2, %o0
<== NOT EXECUTED
if ( rv == 0 ) {
40004f28: b0 92 20 00 orcc %o0, 0, %i0
<== NOT EXECUTED
40004f2c: 22 80 00 38 be,a 4000500c <fcntl+0x308>
<== NOT EXECUTED
40004f30: b0 10 00 13 mov %l3, %i0
<== NOT EXECUTED
if (ret >= 0) {
40004f34: 10 80 00 37 b 40005010 <fcntl+0x30c>
<== NOT EXECUTED
40004f38: 80 a6 20 00 cmp %i0, 0
<== NOT EXECUTED
40004f3c: d0 07 60 08 ld [ %i5 + 8 ], %o0
<== NOT EXECUTED
oflag = rtems_libio_to_fcntl_flags( rtems_libio_iop_flags( iop ) );
40004f40: 40 00 00 fb call 4000532c <rtems_libio_to_fcntl_flags>
<== NOT EXECUTED
40004f44: 01 00 00 00 nop
<== NOT EXECUTED
diop = rtems_libio_allocate();
40004f48: 40 00 01 0c call 40005378 <rtems_libio_allocate>
<== NOT EXECUTED
40004f4c: a2 10 00 08 mov %o0, %l1
<== NOT EXECUTED
if (diop != NULL) {
40004f50: b4 92 20 00 orcc %o0, 0, %i2
<== NOT EXECUTED
40004f54: 02 bf ff 91 be 40004d98 <fcntl+0x94>
<== NOT EXECUTED
40004f58: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
40004f5c: d0 07 60 20 ld [ %i5 + 0x20 ], %o0
<== NOT EXECUTED
(*mt_entry->ops->lock_h)( mt_entry );
40004f60: c2 02 20 0c ld [ %o0 + 0xc ], %g1
<== NOT EXECUTED
40004f64: c2 00 40 00 ld [ %g1 ], %g1
<== NOT EXECUTED
40004f68: 9f c0 40 00 call %g1
<== NOT EXECUTED
40004f6c: 01 00 00 00 nop
<== NOT EXECUTED
rtems_filesystem_location_clone( &diop->pathinfo, &iop->pathinfo );
40004f70: 90 06 a0 0c add %i2, 0xc, %o0
<== NOT EXECUTED
40004f74: 92 06 e0 0c add %i3, 0xc, %o1
<== NOT EXECUTED
40004f78: 40 00 23 72 call 4000dd40 <rtems_filesystem_location_clone>
<== NOT EXECUTED
40004f7c: 92 07 00 09 add %i4, %o1, %o1
<== NOT EXECUTED
40004f80: d0 07 60 20 ld [ %i5 + 0x20 ], %o0
<== NOT EXECUTED
(*mt_entry->ops->unlock_h)( mt_entry );
40004f84: c2 02 20 0c ld [ %o0 + 0xc ], %g1
<== NOT EXECUTED
40004f88: c2 00 60 04 ld [ %g1 + 4 ], %g1
<== NOT EXECUTED
40004f8c: 9f c0 40 00 call %g1
<== NOT EXECUTED
40004f90: 01 00 00 00 nop
<== NOT EXECUTED
rv = (*diop->pathinfo.handlers->open_h)( diop, NULL, oflag, 0 );
40004f94: c2 06 a0 1c ld [ %i2 + 0x1c ], %g1
<== NOT EXECUTED
40004f98: c2 00 40 00 ld [ %g1 ], %g1
<== NOT EXECUTED
40004f9c: 96 10 20 00 clr %o3
<== NOT EXECUTED
40004fa0: 94 10 00 11 mov %l1, %o2
<== NOT EXECUTED
40004fa4: 92 10 20 00 clr %o1
<== NOT EXECUTED
40004fa8: 9f c0 40 00 call %g1
<== NOT EXECUTED
40004fac: 90 10 00 1a mov %i2, %o0
<== NOT EXECUTED
if ( rv == 0 ) {
40004fb0: b0 92 20 00 orcc %o0, 0, %i0
<== NOT EXECUTED
40004fb4: 02 80 00 32 be 4000507c <fcntl+0x378>
<== NOT EXECUTED
40004fb8: 01 00 00 00 nop
<== NOT EXECUTED
rtems_libio_free( diop );
40004fbc: 40 00 01 04 call 400053cc <rtems_libio_free>
<== NOT EXECUTED
40004fc0: 90 10 00 1a mov %i2, %o0
<== NOT EXECUTED
if (ret >= 0) {
40004fc4: 10 80 00 13 b 40005010 <fcntl+0x30c>
<== NOT EXECUTED
40004fc8: 80 a6 20 00 cmp %i0, 0
<== NOT EXECUTED
if ( va_arg( ap, int ) )
40004fcc: f0 00 c0 00 ld [ %g3 ], %i0
<== NOT EXECUTED
40004fd0: 80 a6 20 00 cmp %i0, 0
<== NOT EXECUTED
40004fd4: 02 80 00 22 be 4000505c <fcntl+0x358>
<== NOT EXECUTED
40004fd8: 01 00 00 00 nop
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40004fdc: 91 d0 20 09 ta 9
<== NOT EXECUTED
40004fe0: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
40004fe4: 84 10 a8 00 or %g2, 0x800, %g2
<== NOT EXECUTED
40004fe8: c4 27 60 08 st %g2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40004fec: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40004ff0: 01 00 00 00 nop
<== NOT EXECUTED
int ret = 0;
40004ff4: 10 bf ff 81 b 40004df8 <fcntl+0xf4>
<== NOT EXECUTED
40004ff8: b0 10 20 00 clr %i0 ! 0 <PROM_START>
<== NOT EXECUTED
40004ffc: d0 07 60 08 ld [ %i5 + 8 ], %o0
<== NOT EXECUTED
ret = rtems_libio_to_fcntl_flags( rtems_libio_iop_flags( iop ) );
40005000: 40 00 00 cb call 4000532c <rtems_libio_to_fcntl_flags>
<== NOT EXECUTED
40005004: 01 00 00 00 nop
<== NOT EXECUTED
40005008: b0 10 00 08 mov %o0, %i0
<== NOT EXECUTED
if (ret >= 0) {
4000500c: 80 a6 20 00 cmp %i0, 0
<== NOT EXECUTED
40005010: 16 bf ff 7b bge 40004dfc <fcntl+0xf8>
<== NOT EXECUTED
40005014: 83 2c 20 04 sll %l0, 4, %g1
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40005018: 91 d0 20 09 ta 9
<== NOT EXECUTED
*obj = val - arg;
4000501c: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
40005020: 84 00 b0 00 add %g2, -4096, %g2
<== NOT EXECUTED
40005024: c4 27 60 08 st %g2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40005028: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4000502c: 01 00 00 00 nop
<== NOT EXECUTED
}
40005030: 81 c7 e0 08 ret
<== NOT EXECUTED
40005034: 81 e8 00 00 restore
<== NOT EXECUTED
40005038: f0 07 60 08 ld [ %i5 + 8 ], %i0
<== NOT EXECUTED
ret = ((rtems_libio_iop_flags(iop) & LIBIO_FLAGS_CLOSE_ON_EXEC) != 0);
4000503c: b1 36 20 0b srl %i0, 0xb, %i0
<== NOT EXECUTED
40005040: 10 bf ff 6e b 40004df8 <fcntl+0xf4>
<== NOT EXECUTED
40005044: b0 0e 20 01 and %i0, 1, %i0
<== NOT EXECUTED
errno = EINVAL;
40005048: 40 00 28 67 call 4000f1e4 <__errno>
<== NOT EXECUTED
4000504c: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
40005050: 82 10 20 16 mov 0x16, %g1
<== NOT EXECUTED
40005054: 10 bf ff 51 b 40004d98 <fcntl+0x94>
<== NOT EXECUTED
40005058: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4000505c: 91 d0 20 09 ta 9
<== NOT EXECUTED
*obj = val & arg;
40005060: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
40005064: 84 08 b7 ff and %g2, -2049, %g2
<== NOT EXECUTED
40005068: c4 27 60 08 st %g2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4000506c: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40005070: 01 00 00 00 nop
<== NOT EXECUTED
int err = (*iop->pathinfo.handlers->fcntl_h)( iop, cmd );
40005074: 10 bf ff 62 b 40004dfc <fcntl+0xf8>
<== NOT EXECUTED
40005078: 83 2c 20 04 sll %l0, 4, %g1
<== NOT EXECUTED
rtems_libio_fcntl_flags( oflag )
4000507c: 40 00 00 9f call 400052f8 <rtems_libio_fcntl_flags>
<== NOT EXECUTED
40005080: 90 10 00 11 mov %l1, %o0
<== NOT EXECUTED
rv = rtems_libio_iop_to_descriptor( diop );
40005084: b0 26 80 1c sub %i2, %i4, %i0
<== NOT EXECUTED
_Atomic_Store_uint(
40005088: 90 12 21 00 or %o0, 0x100, %o0
<== NOT EXECUTED
4000508c: 83 3e 20 04 sra %i0, 4, %g1
<== NOT EXECUTED
*obj = desired;
40005090: d0 26 a0 08 st %o0, [ %i2 + 8 ]
<== NOT EXECUTED
40005094: 31 2a aa aa sethi %hi(0xaaaaa800), %i0
<== NOT EXECUTED
40005098: b0 16 22 ab or %i0, 0x2ab, %i0 ! aaaaaaab <RAM_END+0x6a6aaaab>
<== NOT EXECUTED
4000509c: 10 bf ff dc b 4000500c <fcntl+0x308>
<== NOT EXECUTED
400050a0: b0 58 40 18 smul %g1, %i0, %i0
<== NOT EXECUTED
LIBIO_GET_IOP( fd, iop );
400050a4: 40 00 28 50 call 4000f1e4 <__errno>
<== NOT EXECUTED
400050a8: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
400050ac: 82 10 20 09 mov 9, %g1
<== NOT EXECUTED
400050b0: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
400050b4: 81 c7 e0 08 ret
<== NOT EXECUTED
400050b8: 81 e8 00 00 restore
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
400050bc: 91 d0 20 09 ta 9
<== NOT EXECUTED
*obj = val - arg;
400050c0: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
400050c4: 84 00 b0 00 add %g2, -4096, %g2
<== NOT EXECUTED
400050c8: c4 27 60 08 st %g2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
400050cc: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
400050d0: 01 00 00 00 nop
400050d4: 40 00 28 44 call 4000f1e4 <__errno>
400050d8: b0 10 3f ff mov -1, %i0 ! ffffffff <RAM_END+0xbfbfffff>
400050dc: 82 10 20 09 mov 9, %g1
400050e0: c2 22 00 00 st %g1, [ %o0 ]
400050e4: 81 c7 e0 08 ret
400050e8: 81 e8 00 00 restore
rtems_set_errno_and_return_minus_one( EBADF );
400050ec: 40 00 28 3e call 4000f1e4 <__errno>
<== NOT EXECUTED
400050f0: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
400050f4: 82 10 20 09 mov 9, %g1
<== NOT EXECUTED
400050f8: 10 bf ff 28 b 40004d98 <fcntl+0x94>
<== NOT EXECUTED
400050fc: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
40004b48 <free>:
#include <stdlib.h>
void free(
void *ptr
)
{
40004b48: 9d e3 bf a0 save %sp, -96, %sp
if ( !ptr )
40004b4c: ba 96 20 00 orcc %i0, 0, %i5
40004b50: 02 80 00 0d be 40004b84 <free+0x3c>
40004b54: 01 00 00 00 nop
return;
/*
* Do not attempt to free memory if in a critical section or ISR.
*/
if ( _Malloc_System_state() != MALLOC_SYSTEM_STATE_NORMAL ) {
40004b58: 40 00 00 7a call 40004d40 <_Malloc_System_state>
40004b5c: 01 00 00 00 nop
40004b60: 80 a2 20 00 cmp %o0, 0
40004b64: 12 80 00 0a bne 40004b8c <free+0x44>
<== NEVER TAKEN
40004b68: 03 10 00 4b sethi %hi(0x40012c00), %g1
_Malloc_Deferred_free(ptr);
return;
}
if ( !_Protected_heap_Free( RTEMS_Malloc_Heap, ptr ) ) {
40004b6c: d0 00 63 64 ld [ %g1 + 0x364 ], %o0 ! 40012f64 <RTEMS_Malloc_Heap>
40004b70: 40 00 14 12 call 40009bb8 <_Protected_heap_Free>
40004b74: 92 10 00 1d mov %i5, %o1
40004b78: 80 a2 20 00 cmp %o0, 0
40004b7c: 02 80 00 06 be 40004b94 <free+0x4c>
40004b80: 92 10 00 1d mov %i5, %o1
rtems_fatal( RTEMS_FATAL_SOURCE_INVALID_HEAP_FREE, (rtems_fatal_code) ptr );
}
}
40004b84: 81 c7 e0 08 ret
40004b88: 81 e8 00 00 restore
_Malloc_Deferred_free(ptr);
40004b8c: 40 00 00 cf call 40004ec8 <_Malloc_Deferred_free>
<== NOT EXECUTED
40004b90: 81 e8 00 00 restore
<== NOT EXECUTED
40004b94: 40 00 0c 84 call 40007da4 <_Terminate>
40004b98: 90 10 20 0c mov 0xc, %o0
40004b9c: 01 00 00 00 nop
<== NOT EXECUTED
4001c1f4 <fstat>:
int fstat(
int fd,
struct stat *sbuf
)
{
4001c1f4: 9d e3 bf a0 save %sp, -96, %sp
int rv;
/*
* Check to see if we were passed a valid pointer.
*/
if ( !sbuf )
4001c1f8: 80 a6 60 00 cmp %i1, 0
4001c1fc: 02 80 00 32 be 4001c2c4 <fstat+0xd0>
<== NEVER TAKEN
4001c200: 03 10 00 73 sethi %hi(0x4001cc00), %g1
rtems_set_errno_and_return_minus_one( EFAULT );
/*
* Now process the stat() request.
*/
LIBIO_GET_IOP( fd, iop );
4001c204: c2 00 62 90 ld [ %g1 + 0x290 ], %g1 ! 4001ce90 <rtems_libio_number_iops>
4001c208: 80 a6 00 01 cmp %i0, %g1
4001c20c: 1a 80 00 28 bcc 4001c2ac <fstat+0xb8>
<== NEVER TAKEN
4001c210: 91 2e 20 01 sll %i0, 1, %o0
<== NOT EXECUTED
4001c214: 39 10 00 84 sethi %hi(0x40021000), %i4
<== NOT EXECUTED
4001c218: b0 02 00 18 add %o0, %i0, %i0
<== NOT EXECUTED
4001c21c: b8 17 23 c0 or %i4, 0x3c0, %i4
<== NOT EXECUTED
4001c220: b1 2e 20 04 sll %i0, 4, %i0
<== NOT EXECUTED
4001c224: ba 06 00 1c add %i0, %i4, %i5
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4001c228: 91 d0 20 09 ta 9
<== NOT EXECUTED
val = *obj;
4001c22c: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
*obj = val + arg;
4001c230: 86 20 b0 00 sub %g2, -4096, %g3
<== NOT EXECUTED
4001c234: c6 27 60 08 st %g3, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4001c238: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4001c23c: 01 00 00 00 nop
4001c240: 80 88 a1 00 btst 0x100, %g2
4001c244: 02 80 00 14 be 4001c294 <fstat+0xa0>
4001c248: 94 10 20 60 mov 0x60, %o2
/*
* Zero out the stat structure so the various support
* versions of stat don't have to.
*/
memset( sbuf, 0, sizeof(struct stat) );
4001c24c: 92 10 20 00 clr %o1
4001c250: 7f ff dc 31 call 40013314 <memset>
4001c254: 90 10 00 19 mov %i1, %o0
rv = (*iop->pathinfo.handlers->fstat_h)( &iop->pathinfo, sbuf );
4001c258: c2 07 60 1c ld [ %i5 + 0x1c ], %g1
4001c25c: c2 00 60 18 ld [ %g1 + 0x18 ], %g1
4001c260: 90 06 20 0c add %i0, 0xc, %o0
4001c264: 92 10 00 19 mov %i1, %o1
4001c268: 9f c0 40 00 call %g1
4001c26c: 90 07 00 08 add %i4, %o0, %o0
4001c270: b0 10 00 08 mov %o0, %i0
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4001c274: 91 d0 20 09 ta 9
<== NOT EXECUTED
*obj = val - arg;
4001c278: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
4001c27c: 84 00 b0 00 add %g2, -4096, %g2
<== NOT EXECUTED
4001c280: c4 27 60 08 st %g2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4001c284: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4001c288: 01 00 00 00 nop
rtems_libio_iop_drop( iop );
return rv;
}
4001c28c: 81 c7 e0 08 ret
4001c290: 81 e8 00 00 restore
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4001c294: 91 d0 20 09 ta 9
<== NOT EXECUTED
4001c298: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
4001c29c: 84 00 b0 00 add %g2, -4096, %g2
<== NOT EXECUTED
4001c2a0: c4 27 60 08 st %g2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4001c2a4: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4001c2a8: 01 00 00 00 nop
LIBIO_GET_IOP( fd, iop );
4001c2ac: 7f ff da 0e call 40012ae4 <__errno>
4001c2b0: b0 10 3f ff mov -1, %i0 ! ffffffff <RAM_END+0xbfbfffff>
4001c2b4: 82 10 20 09 mov 9, %g1
4001c2b8: c2 22 00 00 st %g1, [ %o0 ]
4001c2bc: 81 c7 e0 08 ret
4001c2c0: 81 e8 00 00 restore
rtems_set_errno_and_return_minus_one( EFAULT );
4001c2c4: 7f ff da 08 call 40012ae4 <__errno>
<== NOT EXECUTED
4001c2c8: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
4001c2cc: 82 10 20 0e mov 0xe, %g1
<== NOT EXECUTED
4001c2d0: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
4001c2d4: 81 c7 e0 08 ret
<== NOT EXECUTED
4001c2d8: 81 e8 00 00 restore
<== NOT EXECUTED
400050e0 <fsync>:
* POSIX 1003.1b 6.6.1 - Synchronize the State of a File
*/
int fsync(
int fd
)
{
400050e0: 9d e3 bf a0 save %sp, -96, %sp
rtems_libio_t *iop;
int rv;
LIBIO_GET_IOP( fd, iop );
400050e4: 03 10 00 68 sethi %hi(0x4001a000), %g1
400050e8: c2 00 63 b0 ld [ %g1 + 0x3b0 ], %g1 ! 4001a3b0 <rtems_libio_number_iops>
400050ec: 80 a6 00 01 cmp %i0, %g1
400050f0: 1a 80 00 23 bcc 4000517c <fsync+0x9c>
<== NEVER TAKEN
400050f4: bb 2e 20 01 sll %i0, 1, %i5
<== NOT EXECUTED
return &rtems_libio_iops[ fd ];
400050f8: ba 07 40 18 add %i5, %i0, %i5
<== NOT EXECUTED
400050fc: 31 10 00 79 sethi %hi(0x4001e400), %i0
<== NOT EXECUTED
40005100: bb 2f 60 04 sll %i5, 4, %i5
<== NOT EXECUTED
40005104: b0 16 22 58 or %i0, 0x258, %i0
<== NOT EXECUTED
40005108: ba 07 40 18 add %i5, %i0, %i5
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4000510c: 91 d0 20 09 ta 9
<== NOT EXECUTED
unsigned int val;
ISR_Level level;
(void) order;
_ISR_Local_disable( level );
val = *obj;
40005110: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
*obj = val + arg;
40005114: 86 20 b0 00 sub %g2, -4096, %g3
<== NOT EXECUTED
40005118: c6 27 60 08 st %g3, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4000511c: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40005120: 01 00 00 00 nop
40005124: 80 88 a1 00 btst 0x100, %g2
40005128: 02 80 00 0f be 40005164 <fsync+0x84>
<== NEVER TAKEN
4000512c: 01 00 00 00 nop
/*
* Now process the fsync().
*/
rv = (*iop->pathinfo.handlers->fsync_h)( iop );
40005130: c2 07 60 1c ld [ %i5 + 0x1c ], %g1
40005134: c2 00 60 20 ld [ %g1 + 0x20 ], %g1
40005138: 9f c0 40 00 call %g1
4000513c: 90 10 00 1d mov %i5, %o0
40005140: b0 10 00 08 mov %o0, %i0
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40005144: 91 d0 20 09 ta 9
<== NOT EXECUTED
ISR_Level level;
(void) order;
_ISR_Local_disable( level );
val = *obj;
*obj = val - arg;
40005148: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
4000514c: 84 00 b0 00 add %g2, -4096, %g2
<== NOT EXECUTED
40005150: c4 27 60 08 st %g2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40005154: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40005158: 01 00 00 00 nop
rtems_libio_iop_drop( iop );
return rv;
}
4000515c: 81 c7 e0 08 ret
40005160: 81 e8 00 00 restore
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40005164: 91 d0 20 09 ta 9
<== NOT EXECUTED
40005168: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
4000516c: 84 00 b0 00 add %g2, -4096, %g2
<== NOT EXECUTED
40005170: c4 27 60 08 st %g2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40005174: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40005178: 01 00 00 00 nop
<== NOT EXECUTED
LIBIO_GET_IOP( fd, iop );
4000517c: 40 00 2c 03 call 40010188 <__errno>
<== NOT EXECUTED
40005180: b0 10 3f ff mov -1, %i0 ! ffffffff <RAM_END+0xbfbfffff>
<== NOT EXECUTED
40005184: 82 10 20 09 mov 9, %g1
<== NOT EXECUTED
40005188: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
4000518c: 81 c7 e0 08 ret
<== NOT EXECUTED
40005190: 81 e8 00 00 restore
<== NOT EXECUTED
4000e0bc <ftruncate>:
#include <unistd.h>
#include <rtems/libio_.h>
int ftruncate( int fd, off_t length )
{
4000e0bc: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
int rv = 0;
if ( length >= 0 ) {
4000e0c0: 80 a6 60 00 cmp %i1, 0
<== NOT EXECUTED
4000e0c4: 06 80 00 39 bl 4000e1a8 <ftruncate+0xec>
<== NOT EXECUTED
4000e0c8: 03 10 00 43 sethi %hi(0x40010c00), %g1
<== NOT EXECUTED
rtems_libio_t *iop;
LIBIO_GET_IOP_WITH_ACCESS( fd, iop, LIBIO_FLAGS_WRITE, EINVAL );
4000e0cc: c2 00 62 00 ld [ %g1 + 0x200 ], %g1 ! 40010e00 <rtems_libio_number_iops>
<== NOT EXECUTED
4000e0d0: 80 a6 00 01 cmp %i0, %g1
<== NOT EXECUTED
4000e0d4: 1a 80 00 1f bcc 4000e150 <ftruncate+0x94>
<== NOT EXECUTED
4000e0d8: bb 2e 20 01 sll %i0, 1, %i5
<== NOT EXECUTED
return &rtems_libio_iops[ fd ];
4000e0dc: ba 07 40 18 add %i5, %i0, %i5
<== NOT EXECUTED
4000e0e0: 31 10 00 51 sethi %hi(0x40014400), %i0
<== NOT EXECUTED
4000e0e4: bb 2f 60 04 sll %i5, 4, %i5
<== NOT EXECUTED
4000e0e8: b0 16 20 48 or %i0, 0x48, %i0
<== NOT EXECUTED
4000e0ec: ba 07 40 18 add %i5, %i0, %i5
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4000e0f0: 91 d0 20 09 ta 9
<== NOT EXECUTED
val = *obj;
4000e0f4: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
*obj = val + arg;
4000e0f8: 86 20 b0 00 sub %g2, -4096, %g3
<== NOT EXECUTED
4000e0fc: c6 27 60 08 st %g3, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4000e100: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4000e104: 01 00 00 00 nop
<== NOT EXECUTED
4000e108: 82 08 a1 04 and %g2, 0x104, %g1
<== NOT EXECUTED
4000e10c: 80 a0 61 04 cmp %g1, 0x104
<== NOT EXECUTED
4000e110: 12 80 00 16 bne 4000e168 <ftruncate+0xac>
<== NOT EXECUTED
4000e114: 92 10 00 19 mov %i1, %o1
<== NOT EXECUTED
rv = (*iop->pathinfo.handlers->ftruncate_h)( iop, length );
4000e118: c2 07 60 1c ld [ %i5 + 0x1c ], %g1
<== NOT EXECUTED
4000e11c: c2 00 60 1c ld [ %g1 + 0x1c ], %g1
<== NOT EXECUTED
4000e120: 94 10 00 1a mov %i2, %o2
<== NOT EXECUTED
4000e124: 9f c0 40 00 call %g1
<== NOT EXECUTED
4000e128: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
4000e12c: b0 10 00 08 mov %o0, %i0
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4000e130: 91 d0 20 09 ta 9
<== NOT EXECUTED
*obj = val - arg;
4000e134: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
4000e138: 84 00 b0 00 add %g2, -4096, %g2
<== NOT EXECUTED
4000e13c: c4 27 60 08 st %g2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4000e140: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4000e144: 01 00 00 00 nop
<== NOT EXECUTED
4000e148: 81 c7 e0 08 ret
<== NOT EXECUTED
4000e14c: 81 e8 00 00 restore
<== NOT EXECUTED
LIBIO_GET_IOP_WITH_ACCESS( fd, iop, LIBIO_FLAGS_WRITE, EINVAL );
4000e150: 40 00 04 e2 call 4000f4d8 <__errno>
<== NOT EXECUTED
4000e154: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
4000e158: 82 10 20 09 mov 9, %g1
<== NOT EXECUTED
4000e15c: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
4000e160: 81 c7 e0 08 ret
<== NOT EXECUTED
4000e164: 81 e8 00 00 restore
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4000e168: 91 d0 20 09 ta 9
<== NOT EXECUTED
4000e16c: c6 07 60 08 ld [ %i5 + 8 ], %g3
<== NOT EXECUTED
4000e170: 86 00 f0 00 add %g3, -4096, %g3
<== NOT EXECUTED
4000e174: c6 27 60 08 st %g3, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4000e178: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4000e17c: 01 00 00 00 nop
<== NOT EXECUTED
4000e180: 84 08 a1 00 and %g2, 0x100, %g2
<== NOT EXECUTED
4000e184: 80 a0 00 02 cmp %g0, %g2
<== NOT EXECUTED
4000e188: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
4000e18c: 40 00 04 d3 call 4000f4d8 <__errno>
<== NOT EXECUTED
4000e190: ba 60 20 00 subx %g0, 0, %i5
<== NOT EXECUTED
4000e194: ba 0f 60 0d and %i5, 0xd, %i5
<== NOT EXECUTED
4000e198: ba 07 60 09 add %i5, 9, %i5
<== NOT EXECUTED
4000e19c: fa 22 00 00 st %i5, [ %o0 ]
<== NOT EXECUTED
4000e1a0: 81 c7 e0 08 ret
<== NOT EXECUTED
4000e1a4: 81 e8 00 00 restore
<== NOT EXECUTED
rtems_libio_iop_drop( iop );
} else {
errno = EINVAL;
4000e1a8: 40 00 04 cc call 4000f4d8 <__errno>
<== NOT EXECUTED
4000e1ac: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
4000e1b0: 82 10 20 16 mov 0x16, %g1
<== NOT EXECUTED
4000e1b4: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
rv = -1;
}
return rv;
}
4000e1b8: 81 c7 e0 08 ret
<== NOT EXECUTED
4000e1bc: 81 e8 00 00 restore
<== NOT EXECUTED
40004c00 <gettimeofday>:
*/
int gettimeofday(
struct timeval *__restrict tp,
void *__restrict __tz RTEMS_UNUSED
)
{
40004c00: 9d e3 bf a0 save %sp, -96, %sp
/* struct timezone* tzp = (struct timezone*) __tz; */
if ( !tp )
40004c04: 80 a6 20 00 cmp %i0, 0
40004c08: 02 80 00 06 be 40004c20 <gettimeofday+0x20>
<== NEVER TAKEN
40004c0c: 90 10 00 18 mov %i0, %o0
RTEMS_INLINE_ROUTINE void _TOD_Get_timeval(
struct timeval *time
)
{
_Timecounter_Microtime( time );
40004c10: 40 00 10 f4 call 40008fe0 <_Timecounter_Microtime>
40004c14: 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;
}
40004c18: 81 c7 e0 08 ret
40004c1c: 81 e8 00 00 restore
rtems_set_errno_and_return_minus_one( EFAULT );
40004c20: 40 00 2a 2e call 4000f4d8 <__errno>
<== NOT EXECUTED
40004c24: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
40004c28: 82 10 20 0e mov 0xe, %g1
<== NOT EXECUTED
40004c2c: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
40004c30: 81 c7 e0 08 ret
<== NOT EXECUTED
40004c34: 81 e8 00 00 restore
<== NOT EXECUTED
40012c10 <ioctl>:
int ioctl(
int fd,
ioctl_command_t command,
...
)
{
40012c10: 9d e3 bf 98 save %sp, -104, %sp
rtems_libio_t *iop;
void *buffer;
LIBIO_GET_IOP( fd, iop );
va_start(ap, command);
40012c14: f4 27 a0 4c st %i2, [ %fp + 0x4c ]
LIBIO_GET_IOP( fd, iop );
40012c18: 03 10 00 76 sethi %hi(0x4001d800), %g1
va_start(ap, command);
40012c1c: f6 27 a0 50 st %i3, [ %fp + 0x50 ]
40012c20: f8 27 a0 54 st %i4, [ %fp + 0x54 ]
LIBIO_GET_IOP( fd, iop );
40012c24: c2 00 61 38 ld [ %g1 + 0x138 ], %g1
40012c28: 80 a6 00 01 cmp %i0, %g1
40012c2c: 1a 80 00 27 bcc 40012cc8 <ioctl+0xb8>
<== NEVER TAKEN
40012c30: fa 27 a0 58 st %i5, [ %fp + 0x58 ]
<== NOT EXECUTED
40012c34: bb 2e 20 01 sll %i0, 1, %i5
<== NOT EXECUTED
40012c38: ba 07 40 18 add %i5, %i0, %i5
<== NOT EXECUTED
40012c3c: 31 10 00 86 sethi %hi(0x40021800), %i0
<== NOT EXECUTED
40012c40: bb 2f 60 04 sll %i5, 4, %i5
<== NOT EXECUTED
40012c44: b0 16 20 68 or %i0, 0x68, %i0
<== NOT EXECUTED
40012c48: ba 07 40 18 add %i5, %i0, %i5
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40012c4c: 91 d0 20 09 ta 9
<== NOT EXECUTED
val = *obj;
40012c50: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
*obj = val + arg;
40012c54: 86 20 b0 00 sub %g2, -4096, %g3
<== NOT EXECUTED
40012c58: c6 27 60 08 st %g3, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40012c5c: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40012c60: 01 00 00 00 nop
40012c64: 80 88 a1 00 btst 0x100, %g2
40012c68: 02 80 00 12 be 40012cb0 <ioctl+0xa0>
<== NEVER TAKEN
40012c6c: 84 07 a0 4c add %fp, 0x4c, %g2
buffer = va_arg(ap, void *);
/*
* Now process the ioctl().
*/
rc = (*iop->pathinfo.handlers->ioctl_h)( iop, command, buffer );
40012c70: c2 07 60 1c ld [ %i5 + 0x1c ], %g1
40012c74: c2 00 60 10 ld [ %g1 + 0x10 ], %g1
40012c78: d4 07 a0 4c ld [ %fp + 0x4c ], %o2
40012c7c: 92 10 00 19 mov %i1, %o1
va_start(ap, command);
40012c80: c4 27 bf fc st %g2, [ %fp + -4 ]
rc = (*iop->pathinfo.handlers->ioctl_h)( iop, command, buffer );
40012c84: 9f c0 40 00 call %g1
40012c88: 90 10 00 1d mov %i5, %o0
40012c8c: b0 10 00 08 mov %o0, %i0
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40012c90: 91 d0 20 09 ta 9
<== NOT EXECUTED
*obj = val - arg;
40012c94: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
40012c98: 84 00 b0 00 add %g2, -4096, %g2
<== NOT EXECUTED
40012c9c: c4 27 60 08 st %g2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40012ca0: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40012ca4: 01 00 00 00 nop
va_end( ap );
rtems_libio_iop_drop( iop );
return rc;
}
40012ca8: 81 c7 e0 08 ret
40012cac: 81 e8 00 00 restore
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40012cb0: 91 d0 20 09 ta 9
<== NOT EXECUTED
40012cb4: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
40012cb8: 84 00 b0 00 add %g2, -4096, %g2
<== NOT EXECUTED
40012cbc: c4 27 60 08 st %g2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40012cc0: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40012cc4: 01 00 00 00 nop
<== NOT EXECUTED
LIBIO_GET_IOP( fd, iop );
40012cc8: 40 00 02 1c call 40013538 <__errno>
<== NOT EXECUTED
40012ccc: b0 10 3f ff mov -1, %i0 ! ffffffff <RAM_END+0xbfbfffff>
<== NOT EXECUTED
40012cd0: 82 10 20 09 mov 9, %g1
<== NOT EXECUTED
40012cd4: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
40012cd8: 81 c7 e0 08 ret
<== NOT EXECUTED
40012cdc: 81 e8 00 00 restore
<== NOT EXECUTED
4001c300 <lseek>:
#include <unistd.h>
#include <rtems/libio_.h>
off_t lseek( int fd, off_t offset, int whence )
{
4001c300: 9d e3 bf a0 save %sp, -96, %sp
rtems_libio_t *iop;
off_t rv;
LIBIO_GET_IOP( fd, iop );
4001c304: 03 10 00 73 sethi %hi(0x4001cc00), %g1
4001c308: c2 00 62 90 ld [ %g1 + 0x290 ], %g1 ! 4001ce90 <rtems_libio_number_iops>
4001c30c: 80 a6 00 01 cmp %i0, %g1
4001c310: 1a 80 00 26 bcc 4001c3a8 <lseek+0xa8>
<== NEVER TAKEN
4001c314: bb 2e 20 01 sll %i0, 1, %i5
<== NOT EXECUTED
4001c318: ba 07 40 18 add %i5, %i0, %i5
<== NOT EXECUTED
4001c31c: 31 10 00 84 sethi %hi(0x40021000), %i0
<== NOT EXECUTED
4001c320: bb 2f 60 04 sll %i5, 4, %i5
<== NOT EXECUTED
4001c324: b0 16 23 c0 or %i0, 0x3c0, %i0
<== NOT EXECUTED
4001c328: ba 07 40 18 add %i5, %i0, %i5
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4001c32c: 91 d0 20 09 ta 9
<== NOT EXECUTED
val = *obj;
4001c330: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
*obj = val + arg;
4001c334: 86 20 b0 00 sub %g2, -4096, %g3
<== NOT EXECUTED
4001c338: c6 27 60 08 st %g3, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4001c33c: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4001c340: 01 00 00 00 nop
4001c344: 80 88 a1 00 btst 0x100, %g2
4001c348: 02 80 00 12 be 4001c390 <lseek+0x90>
<== NEVER TAKEN
4001c34c: 96 10 00 1b mov %i3, %o3
rv = (*iop->pathinfo.handlers->lseek_h)( iop, offset, whence );
4001c350: c2 07 60 1c ld [ %i5 + 0x1c ], %g1
4001c354: c2 00 60 14 ld [ %g1 + 0x14 ], %g1
4001c358: 92 10 00 19 mov %i1, %o1
4001c35c: 94 10 00 1a mov %i2, %o2
4001c360: 9f c0 40 00 call %g1
4001c364: 90 10 00 1d mov %i5, %o0
4001c368: b0 10 00 08 mov %o0, %i0
<== NOT EXECUTED
4001c36c: b2 10 00 09 mov %o1, %i1
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4001c370: 91 d0 20 09 ta 9
<== NOT EXECUTED
*obj = val - arg;
4001c374: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
4001c378: 84 00 b0 00 add %g2, -4096, %g2
<== NOT EXECUTED
4001c37c: c4 27 60 08 st %g2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4001c380: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4001c384: 01 00 00 00 nop
rtems_libio_iop_drop( iop );
return rv;
}
4001c388: 81 c7 e0 08 ret
4001c38c: 81 e8 00 00 restore
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4001c390: 91 d0 20 09 ta 9
<== NOT EXECUTED
4001c394: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
4001c398: 84 00 b0 00 add %g2, -4096, %g2
<== NOT EXECUTED
4001c39c: c4 27 60 08 st %g2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4001c3a0: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4001c3a4: 01 00 00 00 nop
<== NOT EXECUTED
LIBIO_GET_IOP( fd, iop );
4001c3a8: 7f ff d9 cf call 40012ae4 <__errno>
<== NOT EXECUTED
4001c3ac: b0 10 3f ff mov -1, %i0 ! ffffffff <RAM_END+0xbfbfffff>
<== NOT EXECUTED
4001c3b0: 82 10 20 09 mov 9, %g1
<== NOT EXECUTED
4001c3b4: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
4001c3b8: 81 c7 e0 08 ret
<== NOT EXECUTED
4001c3bc: 93 e8 3f ff restore %g0, -1, %o1
<== NOT EXECUTED
40004f84 <malloc>:
#include "malloc_p.h"
void *malloc(
size_t size
)
{
40004f84: 9d e3 bf a0 save %sp, -96, %sp
void *return_this;
/*
* Validate the parameters
*/
if ( !size )
40004f88: 80 a6 20 00 cmp %i0, 0
40004f8c: 02 80 00 0a be 40004fb4 <malloc+0x30>
<== NEVER TAKEN
40004f90: 90 10 00 18 mov %i0, %o0
return (void *) 0;
return_this = rtems_heap_allocate_aligned_with_boundary( size, 0, 0 );
40004f94: 94 10 20 00 clr %o2
40004f98: 7f ff ff 92 call 40004de0 <rtems_heap_allocate_aligned_with_boundary>
40004f9c: 92 10 20 00 clr %o1
if ( !return_this ) {
40004fa0: b0 92 20 00 orcc %o0, 0, %i0
40004fa4: 02 80 00 06 be 40004fbc <malloc+0x38>
40004fa8: 01 00 00 00 nop
errno = ENOMEM;
return (void *) 0;
}
return return_this;
}
40004fac: 81 c7 e0 08 ret
40004fb0: 81 e8 00 00 restore
40004fb4: 81 c7 e0 08 ret
<== NOT EXECUTED
40004fb8: 91 e8 20 00 restore %g0, 0, %o0
<== NOT EXECUTED
errno = ENOMEM;
40004fbc: 40 00 29 47 call 4000f4d8 <__errno>
40004fc0: 01 00 00 00 nop
40004fc4: 82 10 20 0c mov 0xc, %g1 ! c <_TLS_Alignment+0xb>
40004fc8: c2 22 00 00 st %g1, [ %o0 ]
return (void *) 0;
40004fcc: 81 c7 e0 08 ret
40004fd0: 81 e8 00 00 restore
400050f4 <mount>:
const char *target,
const char *filesystemtype,
rtems_filesystem_options_t options,
const void *data
)
{
400050f4: 9d e3 bf 50 save %sp, -176, %sp
int rv = 0;
if (
400050f8: 80 a6 e0 01 cmp %i3, 1
400050fc: 18 80 00 b2 bgu 400053c4 <mount+0x2d0>
40005100: 01 00 00 00 nop
options == RTEMS_FILESYSTEM_READ_ONLY
|| options == RTEMS_FILESYSTEM_READ_WRITE
) {
rtems_filesystem_fsmount_me_t fsmount_me_h =
40005104: 40 00 24 a2 call 4000e38c <rtems_filesystem_get_mount_handler>
40005108: 90 10 00 1a mov %i2, %o0
rtems_filesystem_get_mount_handler( filesystemtype );
if ( fsmount_me_h != NULL ) {
4000510c: a2 92 20 00 orcc %o0, 0, %l1
40005110: 02 80 00 ad be 400053c4 <mount+0x2d0>
<== NEVER TAKEN
40005114: 80 a6 60 00 cmp %i1, 0
const char *target = target_or_null != NULL ? target_or_null : "/";
40005118: 02 80 00 78 be 400052f8 <mount+0x204>
<== ALWAYS TAKEN
4000511c: 90 10 00 19 mov %i1, %o0
40005120: 40 00 2a 9d call 4000fb94 <strlen>
<== NOT EXECUTED
40005124: a6 10 00 19 mov %i1, %l3
<== NOT EXECUTED
40005128: a4 02 20 01 add %o0, 1, %l2
<== NOT EXECUTED
size_t filesystemtype_size = strlen( filesystemtype ) + 1;
4000512c: 40 00 2a 9a call 4000fb94 <strlen>
40005130: 90 10 00 1a mov %i2, %o0
strlen( source_or_null ) + 1 : 0;
40005134: 80 a6 20 00 cmp %i0, 0
size_t filesystemtype_size = strlen( filesystemtype ) + 1;
40005138: a8 02 20 01 add %o0, 1, %l4
strlen( source_or_null ) + 1 : 0;
4000513c: 02 80 00 61 be 400052c0 <mount+0x1cc>
<== ALWAYS TAKEN
40005140: ba 02 20 65 add %o0, 0x65, %i5
40005144: 40 00 2a 94 call 4000fb94 <strlen>
<== NOT EXECUTED
40005148: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
size_t size = sizeof( rtems_filesystem_mount_table_entry_t )
4000514c: 92 07 40 12 add %i5, %l2, %o1
<== NOT EXECUTED
strlen( source_or_null ) + 1 : 0;
40005150: a0 02 20 01 add %o0, 1, %l0
<== NOT EXECUTED
rtems_filesystem_mount_table_entry_t *mt_entry = calloc( 1, size );
40005154: 90 10 20 01 mov 1, %o0
<== NOT EXECUTED
40005158: 7f ff fe 31 call 40004a1c <calloc>
<== NOT EXECUTED
4000515c: 92 02 40 10 add %o1, %l0, %o1
<== NOT EXECUTED
if ( mt_entry != NULL ) {
40005160: ba 92 20 00 orcc %o0, 0, %i5
<== NOT EXECUTED
40005164: 12 80 00 08 bne 40005184 <mount+0x90>
<== NOT EXECUTED
40005168: 84 07 60 64 add %i5, 0x64, %g2
<== NOT EXECUTED
if ( rv != 0 ) {
free( mt_entry );
}
} else {
errno = ENOMEM;
4000516c: 40 00 28 db call 4000f4d8 <__errno>
<== NOT EXECUTED
40005170: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
40005174: 82 10 20 0c mov 0xc, %g1
<== NOT EXECUTED
40005178: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
4000517c: 81 c7 e0 08 ret
<== NOT EXECUTED
40005180: 81 e8 00 00 restore
<== NOT EXECUTED
memcpy( str, filesystemtype, filesystemtype_size );
40005184: 92 10 00 1a mov %i2, %o1
<== NOT EXECUTED
40005188: 94 10 00 14 mov %l4, %o2
<== NOT EXECUTED
4000518c: 40 00 29 60 call 4000f70c <memcpy>
<== NOT EXECUTED
40005190: 90 10 00 02 mov %g2, %o0
<== NOT EXECUTED
mt_entry->type = str;
40005194: d0 27 60 34 st %o0, [ %i5 + 0x34 ]
<== NOT EXECUTED
str += filesystemtype_size;
40005198: 84 02 00 14 add %o0, %l4, %g2
<== NOT EXECUTED
memcpy( str, source_or_null, source_size );
4000519c: 94 10 00 10 mov %l0, %o2
<== NOT EXECUTED
400051a0: 92 10 00 18 mov %i0, %o1
<== NOT EXECUTED
400051a4: 40 00 29 5a call 4000f70c <memcpy>
<== NOT EXECUTED
400051a8: 90 10 00 02 mov %g2, %o0
<== NOT EXECUTED
mt_entry->dev = str;
400051ac: d0 27 60 38 st %o0, [ %i5 + 0x38 ]
<== NOT EXECUTED
rtems_filesystem_global_location_t *mt_fs_root =
400051b0: b4 07 60 40 add %i5, 0x40, %i2
<== NOT EXECUTED
str += source_size;
400051b4: a0 02 00 10 add %o0, %l0, %l0
<== NOT EXECUTED
memcpy( str, target, target_size );
400051b8: 94 10 00 12 mov %l2, %o2
400051bc: 92 10 00 13 mov %l3, %o1
400051c0: 40 00 29 53 call 4000f70c <memcpy>
400051c4: 90 10 00 10 mov %l0, %o0
mt_entry->mounted = true;
400051c8: 82 10 20 01 mov 1, %g1
400051cc: c2 2f 60 28 stb %g1, [ %i5 + 0x28 ]
mt_entry->pathconf_limits_and_options = &rtems_filesystem_default_pathconf;
400051d0: 03 10 00 44 sethi %hi(0x40011000), %g1
400051d4: 82 10 62 30 or %g1, 0x230, %g1 ! 40011230 <rtems_filesystem_default_pathconf>
mt_entry->target = str;
400051d8: e0 27 60 30 st %l0, [ %i5 + 0x30 ]
void *starting_address,
size_t number_nodes,
size_t node_size
)
{
_Chain_Initialize(
400051dc: 96 10 20 24 mov 0x24, %o3
mt_entry->pathconf_limits_and_options = &rtems_filesystem_default_pathconf;
400051e0: c2 27 60 2c st %g1, [ %i5 + 0x2c ]
mt_fs_root->reference_count = 1;
400051e4: 82 10 20 01 mov 1, %g1
mt_entry->mt_fs_root = mt_fs_root;
400051e8: f4 27 60 24 st %i2, [ %i5 + 0x24 ]
400051ec: 94 10 20 01 mov 1, %o2
mt_fs_root->reference_count = 1;
400051f0: c2 27 60 58 st %g1, [ %i5 + 0x58 ]
400051f4: 92 10 00 1a mov %i2, %o1
mt_fs_root->location.mt_entry = mt_entry;
400051f8: fa 27 60 54 st %i5, [ %i5 + 0x54 ]
400051fc: 90 07 60 14 add %i5, 0x14, %o0
40005200: 40 00 08 d7 call 4000755c <_Chain_Initialize>
40005204: b6 0e e0 01 and %i3, 1, %i3
mt_entry->writeable = options == RTEMS_FILESYSTEM_READ_WRITE;
40005208: f6 2f 60 29 stb %i3, [ %i5 + 0x29 ]
rv = (*fsmount_me_h)( mt_entry, data );
4000520c: 92 10 00 1c mov %i4, %o1
40005210: 9f c4 40 00 call %l1
40005214: 90 10 00 1d mov %i5, %o0
if ( rv == 0 ) {
40005218: b0 92 20 00 orcc %o0, 0, %i0
4000521c: 12 80 00 25 bne 400052b0 <mount+0x1bc>
<== NEVER TAKEN
40005220: 80 a6 60 00 cmp %i1, 0
if ( target != NULL ) {
40005224: 02 80 00 48 be 40005344 <mount+0x250>
<== ALWAYS TAKEN
40005228: 94 10 20 1f mov 0x1f, %o2
rtems_filesystem_location_info_t *currentloc =
4000522c: 92 10 00 19 mov %i1, %o1
<== NOT EXECUTED
40005230: 40 00 03 02 call 40005e38 <rtems_filesystem_eval_path_start>
<== NOT EXECUTED
40005234: 90 07 bf c8 add %fp, -56, %o0
<== NOT EXECUTED
const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
40005238: c2 02 20 14 ld [ %o0 + 0x14 ], %g1
<== NOT EXECUTED
return (*mt_entry->ops->are_nodes_equal_h)(
4000523c: c4 00 60 0c ld [ %g1 + 0xc ], %g2
<== NOT EXECUTED
40005240: c4 00 a0 10 ld [ %g2 + 0x10 ], %g2
<== NOT EXECUTED
40005244: 9f c0 80 00 call %g2
<== NOT EXECUTED
40005248: d2 00 60 24 ld [ %g1 + 0x24 ], %o1
<== NOT EXECUTED
if ( !rtems_filesystem_location_is_instance_root( currentloc ) ) {
4000524c: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
40005250: 12 80 00 63 bne 400053dc <mount+0x2e8>
<== NOT EXECUTED
40005254: 92 07 bf e0 add %fp, -32, %o1
<== NOT EXECUTED
rtems_filesystem_location_copy_and_detach(
40005258: 40 00 04 4e call 40006390 <rtems_filesystem_location_copy_and_detach>
<== NOT EXECUTED
4000525c: 90 07 bf b0 add %fp, -80, %o0
<== NOT EXECUTED
mt_point_node = rtems_filesystem_location_transform_to_global( &targetloc );
40005260: 40 00 04 77 call 4000643c <rtems_filesystem_location_transform_to_global>
<== NOT EXECUTED
40005264: 90 07 bf b0 add %fp, -80, %o0
<== NOT EXECUTED
rv = (*mt_point_node->location.mt_entry->ops->mount_h)( mt_entry );
40005268: c2 02 20 14 ld [ %o0 + 0x14 ], %g1
<== NOT EXECUTED
4000526c: c2 00 60 0c ld [ %g1 + 0xc ], %g1
<== NOT EXECUTED
mt_entry->mt_point_node = mt_point_node;
40005270: d0 27 60 20 st %o0, [ %i5 + 0x20 ]
<== NOT EXECUTED
mt_point_node = rtems_filesystem_location_transform_to_global( &targetloc );
40005274: b8 10 00 08 mov %o0, %i4
<== NOT EXECUTED
rv = (*mt_point_node->location.mt_entry->ops->mount_h)( mt_entry );
40005278: c2 00 60 2c ld [ %g1 + 0x2c ], %g1
<== NOT EXECUTED
4000527c: 9f c0 40 00 call %g1
<== NOT EXECUTED
40005280: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
if ( rv == 0 ) {
40005284: b0 92 20 00 orcc %o0, 0, %i0
<== NOT EXECUTED
40005288: 02 80 00 20 be 40005308 <mount+0x214>
<== NOT EXECUTED
4000528c: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
rtems_filesystem_global_location_release( mt_point_node, true );
40005290: 40 00 03 fb call 4000627c <rtems_filesystem_global_location_release>
<== NOT EXECUTED
40005294: 92 10 20 01 mov 1, %o1
<== NOT EXECUTED
rtems_filesystem_eval_path_cleanup( &ctx );
40005298: 40 00 02 f4 call 40005e68 <rtems_filesystem_eval_path_cleanup>
<== NOT EXECUTED
4000529c: 90 07 bf c8 add %fp, -56, %o0
<== NOT EXECUTED
(*mt_entry->ops->fsunmount_me_h)( mt_entry );
400052a0: c2 07 60 0c ld [ %i5 + 0xc ], %g1
<== NOT EXECUTED
400052a4: c2 00 60 34 ld [ %g1 + 0x34 ], %g1
<== NOT EXECUTED
400052a8: 9f c0 40 00 call %g1
<== NOT EXECUTED
400052ac: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
free( mt_entry );
400052b0: 7f ff fe 26 call 40004b48 <free>
<== NOT EXECUTED
400052b4: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
errno = EINVAL;
rv = -1;
}
return rv;
}
400052b8: 81 c7 e0 08 ret
<== NOT EXECUTED
400052bc: 81 e8 00 00 restore
<== NOT EXECUTED
rtems_filesystem_mount_table_entry_t *mt_entry = calloc( 1, size );
400052c0: 92 07 40 12 add %i5, %l2, %o1
400052c4: 7f ff fd d6 call 40004a1c <calloc>
400052c8: 90 10 20 01 mov 1, %o0
if ( mt_entry != NULL ) {
400052cc: ba 92 20 00 orcc %o0, 0, %i5
400052d0: 02 bf ff a7 be 4000516c <mount+0x78>
<== NEVER TAKEN
400052d4: 84 07 60 64 add %i5, 0x64, %g2
memcpy( str, filesystemtype, filesystemtype_size );
400052d8: 92 10 00 1a mov %i2, %o1
400052dc: 94 10 00 14 mov %l4, %o2
400052e0: 90 10 00 02 mov %g2, %o0
400052e4: 40 00 29 0a call 4000f70c <memcpy>
400052e8: b4 07 60 40 add %i5, 0x40, %i2
str += filesystemtype_size;
400052ec: a0 02 00 14 add %o0, %l4, %l0
mt_entry->type = str;
400052f0: 10 bf ff b2 b 400051b8 <mount+0xc4>
400052f4: d0 27 60 34 st %o0, [ %i5 + 0x34 ]
const char *target = target_or_null != NULL ? target_or_null : "/";
400052f8: 27 10 00 43 sethi %hi(0x40010c00), %l3
400052fc: a4 10 20 02 mov 2, %l2
40005300: 10 bf ff 8b b 4000512c <mount+0x38>
40005304: a6 14 e1 70 or %l3, 0x170, %l3
rtems_libio_lock();
40005308: 7f ff fe 84 call 40004d18 <rtems_libio_lock>
<== NOT EXECUTED
4000530c: 01 00 00 00 nop
<== NOT EXECUTED
old_last = tail->previous;
40005310: 03 10 00 4b sethi %hi(0x40012c00), %g1
<== NOT EXECUTED
40005314: 82 10 63 9c or %g1, 0x39c, %g1 ! 40012f9c <rtems_filesystem_mount_table>
<== NOT EXECUTED
40005318: c4 00 60 08 ld [ %g1 + 8 ], %g2
<== NOT EXECUTED
the_node->next = tail;
4000531c: 86 00 60 04 add %g1, 4, %g3
<== NOT EXECUTED
tail->previous = the_node;
40005320: fa 20 60 08 st %i5, [ %g1 + 8 ]
<== NOT EXECUTED
the_node->next = tail;
40005324: c6 27 40 00 st %g3, [ %i5 ]
<== NOT EXECUTED
old_last->next = the_node;
40005328: fa 20 80 00 st %i5, [ %g2 ]
<== NOT EXECUTED
rtems_libio_unlock();
4000532c: 7f ff fe 80 call 40004d2c <rtems_libio_unlock>
<== NOT EXECUTED
40005330: c4 27 60 04 st %g2, [ %i5 + 4 ]
<== NOT EXECUTED
rtems_filesystem_eval_path_cleanup( &ctx );
40005334: 40 00 02 cd call 40005e68 <rtems_filesystem_eval_path_cleanup>
<== NOT EXECUTED
40005338: 90 07 bf c8 add %fp, -56, %o0
<== NOT EXECUTED
4000533c: 81 c7 e0 08 ret
<== NOT EXECUTED
40005340: 81 e8 00 00 restore
<== NOT EXECUTED
rtems_libio_lock();
40005344: 7f ff fe 75 call 40004d18 <rtems_libio_lock>
40005348: 01 00 00 00 nop
return _Chain_Immutable_head( the_chain )->next;
4000534c: 03 10 00 4b sethi %hi(0x40012c00), %g1
if ( rtems_chain_is_empty( &rtems_filesystem_mount_table ) ) {
40005350: c4 00 63 9c ld [ %g1 + 0x39c ], %g2 ! 40012f9c <rtems_filesystem_mount_table>
40005354: 82 10 63 9c or %g1, 0x39c, %g1
40005358: 86 00 60 04 add %g1, 4, %g3
4000535c: 80 a0 80 03 cmp %g2, %g3
40005360: 12 80 00 27 bne 400053fc <mount+0x308>
<== NEVER TAKEN
40005364: 01 00 00 00 nop
old_last = tail->previous;
40005368: c6 00 60 08 ld [ %g1 + 8 ], %g3
the_node->next = tail;
4000536c: c4 27 40 00 st %g2, [ %i5 ]
rtems_filesystem_global_location_obtain( &mt_entry->mt_fs_root );
40005370: b8 07 60 24 add %i5, 0x24, %i4
tail->previous = the_node;
40005374: fa 20 60 08 st %i5, [ %g1 + 8 ]
old_last->next = the_node;
40005378: fa 20 c0 00 st %i5, [ %g3 ]
rtems_libio_unlock();
4000537c: 7f ff fe 6c call 40004d2c <rtems_libio_unlock>
40005380: c6 27 60 04 st %g3, [ %i5 + 4 ]
rtems_filesystem_global_location_t *new_fs_root =
40005384: 40 00 03 84 call 40006194 <rtems_filesystem_global_location_obtain>
40005388: 90 10 00 1c mov %i4, %o0
4000538c: b6 10 00 08 mov %o0, %i3
rtems_filesystem_global_location_t *new_fs_current =
40005390: 40 00 03 81 call 40006194 <rtems_filesystem_global_location_obtain>
40005394: 90 10 00 1c mov %i4, %o0
&rtems_filesystem_root,
40005398: 40 00 00 fa call 40005780 <rtems_current_user_env_get>
4000539c: ba 10 00 08 mov %o0, %i5
rtems_filesystem_global_location_assign(
400053a0: 92 10 00 1b mov %i3, %o1
400053a4: 40 00 03 d0 call 400062e4 <rtems_filesystem_global_location_assign>
400053a8: 90 02 20 04 add %o0, 4, %o0
&rtems_filesystem_current,
400053ac: 40 00 00 f5 call 40005780 <rtems_current_user_env_get>
400053b0: 01 00 00 00 nop
rtems_filesystem_global_location_assign(
400053b4: 40 00 03 cc call 400062e4 <rtems_filesystem_global_location_assign>
400053b8: 92 10 00 1d mov %i5, %o1
400053bc: 81 c7 e0 08 ret
400053c0: 81 e8 00 00 restore
errno = EINVAL;
400053c4: 40 00 28 45 call 4000f4d8 <__errno>
400053c8: b0 10 3f ff mov -1, %i0
400053cc: 82 10 20 16 mov 0x16, %g1
400053d0: c2 22 00 00 st %g1, [ %o0 ]
return rv;
400053d4: 81 c7 e0 08 ret
400053d8: 81 e8 00 00 restore
rtems_filesystem_eval_path_error( &ctx, EBUSY );
400053dc: 90 07 bf c8 add %fp, -56, %o0
<== NOT EXECUTED
400053e0: 40 00 01 db call 40005b4c <rtems_filesystem_eval_path_error>
<== NOT EXECUTED
400053e4: 92 10 20 10 mov 0x10, %o1
<== NOT EXECUTED
rv = -1;
400053e8: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
rtems_filesystem_eval_path_cleanup( &ctx );
400053ec: 40 00 02 9f call 40005e68 <rtems_filesystem_eval_path_cleanup>
<== NOT EXECUTED
400053f0: 90 07 bf c8 add %fp, -56, %o0
<== NOT EXECUTED
(*mt_entry->ops->fsunmount_me_h)( mt_entry );
400053f4: 10 bf ff ac b 400052a4 <mount+0x1b0>
<== NOT EXECUTED
400053f8: c2 07 60 0c ld [ %i5 + 0xc ], %g1
<== NOT EXECUTED
errno = EINVAL;
400053fc: 40 00 28 37 call 4000f4d8 <__errno>
<== NOT EXECUTED
40005400: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
40005404: 82 10 20 16 mov 0x16, %g1
<== NOT EXECUTED
40005408: 7f ff fe 49 call 40004d2c <rtems_libio_unlock>
<== NOT EXECUTED
4000540c: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
(*mt_entry->ops->fsunmount_me_h)( mt_entry );
40005410: 10 bf ff a5 b 400052a4 <mount+0x1b0>
<== NOT EXECUTED
40005414: c2 07 60 0c ld [ %i5 + 0xc ], %g1
<== NOT EXECUTED
40004a2c <mount_and_make_target_path>:
const char *target,
const char *filesystemtype,
rtems_filesystem_options_t options,
const void *data
)
{
40004a2c: 9d e3 bf a0 save %sp, -96, %sp
int rv = -1;
if (target != NULL) {
40004a30: 90 96 60 00 orcc %i1, 0, %o0
40004a34: 02 80 00 0b be 40004a60 <mount_and_make_target_path+0x34>
40004a38: 01 00 00 00 nop
rv = rtems_mkdir(target, S_IRWXU | S_IRWXG | S_IRWXO);
40004a3c: 40 00 01 de call 400051b4 <rtems_mkdir>
40004a40: 92 10 21 ff mov 0x1ff, %o1 ! 1ff <SPARC_THREAD_CONTROL_FP_CONTEXT_OFFSET+0xaf>
if (rv == 0) {
40004a44: 80 a2 20 00 cmp %o0, 0
40004a48: 02 80 00 04 be 40004a58 <mount_and_make_target_path+0x2c>
<== ALWAYS TAKEN
40004a4c: 01 00 00 00 nop
} else {
errno = EINVAL;
}
return rv;
}
40004a50: 81 c7 e0 08 ret
40004a54: 91 e8 00 08 restore %g0, %o0, %o0
rv = mount(
40004a58: 40 00 00 08 call 40004a78 <mount>
<== NOT EXECUTED
40004a5c: 81 e8 00 00 restore
errno = EINVAL;
40004a60: 40 00 24 48 call 4000db80 <__errno>
40004a64: 01 00 00 00 nop
40004a68: 82 10 20 16 mov 0x16, %g1 ! 16 <_TLS_Alignment+0x15>
40004a6c: c2 22 00 00 st %g1, [ %o0 ]
return rv;
40004a70: 10 bf ff f8 b 40004a50 <mount_and_make_target_path+0x24>
40004a74: 90 10 3f ff mov -1, %o0
40005514 <open>:
/**
* POSIX 1003.1 5.3.1 - Open a File
*/
int open( const char *path, int oflag, ... )
{
40005514: 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 );
40005518: 82 07 a0 50 add %fp, 0x50, %g1
va_start( ap, oflag );
4000551c: fa 27 a0 58 st %i5, [ %fp + 0x58 ]
40005520: f4 27 a0 4c st %i2, [ %fp + 0x4c ]
40005524: f6 27 a0 50 st %i3, [ %fp + 0x50 ]
40005528: f8 27 a0 54 st %i4, [ %fp + 0x54 ]
iop = rtems_libio_allocate();
4000552c: 40 00 23 3a call 4000e214 <rtems_libio_allocate>
40005530: c2 27 bf 64 st %g1, [ %fp + -156 ]
if ( iop != NULL ) {
40005534: ba 92 20 00 orcc %o0, 0, %i5
40005538: 02 80 00 76 be 40005710 <open+0x1fc>
4000553c: 82 06 60 01 add %i1, 1, %g1
bool make = (oflag & O_CREAT) == O_CREAT;
40005540: 86 0e 62 00 and %i1, 0x200, %g3
bool read_access = (rwflag & _FREAD) == _FREAD;
40005544: 94 08 60 01 and %g1, 1, %o2
bool exclusive = (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL);
40005548: 84 0e 6a 00 and %i1, 0xa00, %g2
| (read_access ? RTEMS_FS_PERMS_READ : 0)
4000554c: 94 02 bf ff add %o2, -1, %o2
| (write_access ? RTEMS_FS_PERMS_WRITE : 0)
40005550: b8 88 60 02 andcc %g1, 2, %i4
| (read_access ? RTEMS_FS_PERMS_READ : 0)
40005554: 94 0a bf fc and %o2, -4, %o2
| (write_access ? RTEMS_FS_PERMS_WRITE : 0)
40005558: 02 80 00 03 be 40005564 <open+0x50>
4000555c: 94 02 a0 1c add %o2, 0x1c, %o2
40005560: 94 12 a0 02 or %o2, 2, %o2
| (make ? RTEMS_FS_MAKE : 0)
40005564: 80 a0 e0 00 cmp %g3, 0
40005568: 32 80 00 02 bne,a 40005570 <open+0x5c>
4000556c: 94 12 a0 20 or %o2, 0x20, %o2
| (exclusive ? RTEMS_FS_EXCLUSIVE : 0);
40005570: 80 a0 aa 00 cmp %g2, 0xa00
40005574: 22 80 00 02 be,a 4000557c <open+0x68>
<== NEVER TAKEN
40005578: 94 12 a0 40 or %o2, 0x40, %o2
<== NOT EXECUTED
rtems_filesystem_eval_path_start( &ctx, path, eval_flags );
4000557c: 92 10 00 18 mov %i0, %o1
40005580: 40 00 02 2e call 40005e38 <rtems_filesystem_eval_path_start>
40005584: 90 07 bf 68 add %fp, -152, %o0
40005588: f6 07 bf 74 ld [ %fp + -140 ], %i3
if ( rtems_filesystem_eval_path_has_token( &ctx ) ) {
4000558c: 80 a6 e0 00 cmp %i3, 0
40005590: 12 80 00 45 bne 400056a4 <open+0x190>
40005594: 80 a7 20 00 cmp %i4, 0
if ( write_access ) {
40005598: 02 80 00 0e be 400055d0 <open+0xbc>
4000559c: c2 07 bf 90 ld [ %fp + -112 ], %g1
const rtems_filesystem_location_info_t *loc
)
{
struct stat st;
st.st_mode = 0;
400055a0: c0 27 bf ac clr [ %fp + -84 ]
(void) ( *loc->handlers->fstat_h )( loc, &st );
400055a4: 92 07 bf a0 add %fp, -96, %o1
400055a8: c2 00 60 18 ld [ %g1 + 0x18 ], %g1
400055ac: 9f c0 40 00 call %g1
400055b0: 90 07 bf 80 add %fp, -128, %o0
if ( S_ISDIR( type ) ) {
400055b4: 05 00 00 3c sethi %hi(0xf000), %g2
400055b8: c2 07 bf ac ld [ %fp + -84 ], %g1
400055bc: 82 08 40 02 and %g1, %g2, %g1
400055c0: 05 00 00 10 sethi %hi(0x4000), %g2
400055c4: 80 a0 40 02 cmp %g1, %g2
400055c8: 02 80 00 4e be 40005700 <open+0x1ec>
<== NEVER TAKEN
400055cc: 92 10 20 15 mov 0x15, %o1
rtems_filesystem_location_copy_and_detach(
400055d0: 92 07 bf 80 add %fp, -128, %o1
400055d4: 40 00 03 6f call 40006390 <rtems_filesystem_location_copy_and_detach>
400055d8: 90 07 60 0c add %i5, 0xc, %o0
rtems_filesystem_eval_path_cleanup( &ctx );
400055dc: 40 00 02 23 call 40005e68 <rtems_filesystem_eval_path_cleanup>
400055e0: 90 07 bf 68 add %fp, -152, %o0
_Atomic_Store_uint(
400055e4: 40 00 22 ff call 4000e1e0 <rtems_libio_fcntl_flags>
400055e8: 90 10 00 19 mov %i1, %o0
rv = (*iop->pathinfo.handlers->open_h)( iop, path, oflag, mode );
400055ec: 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;
400055f0: d0 27 60 08 st %o0, [ %i5 + 8 ]
400055f4: 92 10 00 18 mov %i0, %o1
400055f8: c2 00 40 00 ld [ %g1 ], %g1
400055fc: 96 10 00 1a mov %i2, %o3
40005600: 94 10 00 19 mov %i1, %o2
40005604: 9f c0 40 00 call %g1
40005608: 90 10 00 1d mov %i5, %o0
if ( rv == 0 ) {
4000560c: b0 92 20 00 orcc %o0, 0, %i0
40005610: 12 80 00 13 bne 4000565c <open+0x148>
40005614: 80 a6 20 00 cmp %i0, 0
int fd = rtems_libio_iop_to_descriptor( iop );
40005618: 31 10 00 51 sethi %hi(0x40014400), %i0
4000561c: 03 2a aa aa sethi %hi(0xaaaaa800), %g1
40005620: b0 16 20 48 or %i0, 0x48, %i0
<== NOT EXECUTED
40005624: 82 10 62 ab or %g1, 0x2ab, %g1
<== NOT EXECUTED
40005628: b0 27 40 18 sub %i5, %i0, %i0
<== NOT EXECUTED
4000562c: b1 3e 20 04 sra %i0, 4, %i0
<== NOT EXECUTED
40005630: b0 5e 00 01 smul %i0, %g1, %i0
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40005634: 91 d0 20 09 ta 9
<== NOT EXECUTED
ISR_Level level;
(void) order;
_ISR_Local_disable( level );
val = *obj;
*obj = val | arg;
40005638: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
4000563c: 84 10 a1 00 or %g2, 0x100, %g2
<== NOT EXECUTED
40005640: c4 27 60 08 st %g2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40005644: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40005648: 01 00 00 00 nop
if ( truncate ) {
4000564c: 80 8e 64 00 btst 0x400, %i1
40005650: 12 80 00 07 bne 4000566c <open+0x158>
<== NEVER TAKEN
40005654: 92 10 20 00 clr %o1
if ( rv < 0 ) {
40005658: 80 a6 20 00 cmp %i0, 0
4000565c: 06 80 00 0e bl 40005694 <open+0x180>
40005660: 01 00 00 00 nop
}
va_end( ap );
return rv;
}
40005664: 81 c7 e0 08 ret
40005668: 81 e8 00 00 restore
rv = ftruncate( fd, 0 );
4000566c: 94 10 20 00 clr %o2
<== NOT EXECUTED
40005670: 40 00 22 93 call 4000e0bc <ftruncate>
<== NOT EXECUTED
40005674: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
if ( rv != 0 ) {
40005678: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
4000567c: 02 bf ff f7 be 40005658 <open+0x144>
<== NOT EXECUTED
40005680: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
(*iop->pathinfo.handlers->close_h)( iop );
40005684: c2 07 60 1c ld [ %i5 + 0x1c ], %g1
<== NOT EXECUTED
40005688: c2 00 60 04 ld [ %g1 + 4 ], %g1
<== NOT EXECUTED
4000568c: 9f c0 40 00 call %g1
<== NOT EXECUTED
40005690: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
rtems_libio_free( iop );
40005694: 40 00 22 f5 call 4000e268 <rtems_libio_free>
40005698: 90 10 00 1d mov %i5, %o0
4000569c: 81 c7 e0 08 ret
400056a0: 81 e8 00 00 restore
400056a4: e0 07 bf 70 ld [ %fp + -144 ], %l0
rv = rtems_filesystem_mknod(
400056a8: 98 10 20 00 clr %o4
400056ac: 9a 10 20 00 clr %o5
400056b0: 17 00 00 20 sethi %hi(0x8000), %o3
400056b4: 94 10 00 1b mov %i3, %o2
400056b8: 96 16 80 0b or %i2, %o3, %o3
400056bc: 92 10 00 10 mov %l0, %o1
400056c0: 7f ff fe 4c call 40004ff0 <rtems_filesystem_mknod>
400056c4: 90 07 bf 80 add %fp, -128, %o0
if ( rv == 0 ) {
400056c8: 80 a2 20 00 cmp %o0, 0
400056cc: 02 80 00 06 be 400056e4 <open+0x1d0>
<== ALWAYS TAKEN
400056d0: 92 10 20 00 clr %o1
rtems_filesystem_eval_path_error( ctx, 0 );
400056d4: 40 00 01 1e call 40005b4c <rtems_filesystem_eval_path_error>
<== NOT EXECUTED
400056d8: 90 07 bf 68 add %fp, -152, %o0
<== NOT EXECUTED
if ( write_access ) {
400056dc: 10 bf ff af b 40005598 <open+0x84>
<== NOT EXECUTED
400056e0: 80 a7 20 00 cmp %i4, 0
<== NOT EXECUTED
ctx->flags = flags;
400056e4: c0 27 bf 78 clr [ %fp + -136 ]
rtems_filesystem_eval_path_continue( ctx );
400056e8: 90 07 bf 68 add %fp, -152, %o0
ctx->path = path;
400056ec: e0 27 bf 68 st %l0, [ %fp + -152 ]
400056f0: 40 00 01 5f call 40005c6c <rtems_filesystem_eval_path_continue>
400056f4: f6 27 bf 6c st %i3, [ %fp + -148 ]
if ( write_access ) {
400056f8: 10 bf ff a8 b 40005598 <open+0x84>
400056fc: 80 a7 20 00 cmp %i4, 0
rtems_filesystem_eval_path_error( &ctx, EISDIR );
40005700: 40 00 01 13 call 40005b4c <rtems_filesystem_eval_path_error>
<== NOT EXECUTED
40005704: 90 07 bf 68 add %fp, -152, %o0
<== NOT EXECUTED
rtems_filesystem_location_copy_and_detach(
40005708: 10 bf ff b3 b 400055d4 <open+0xc0>
<== NOT EXECUTED
4000570c: 92 07 bf 80 add %fp, -128, %o1
<== NOT EXECUTED
errno = ENFILE;
40005710: 40 00 27 72 call 4000f4d8 <__errno>
40005714: b0 10 3f ff mov -1, %i0
40005718: 82 10 20 17 mov 0x17, %g1
4000571c: c2 22 00 00 st %g1, [ %o0 ]
}
40005720: 81 c7 e0 08 ret
40005724: 81 e8 00 00 restore
4001c3f0 <read>:
ssize_t read(
int fd,
void *buffer,
size_t count
)
{
4001c3f0: 9d e3 bf a0 save %sp, -96, %sp
rtems_libio_t *iop;
ssize_t n;
rtems_libio_check_buffer( buffer );
4001c3f4: 80 a6 60 00 cmp %i1, 0
4001c3f8: 02 80 00 32 be 4001c4c0 <read+0xd0>
<== NEVER TAKEN
4001c3fc: 80 a6 a0 00 cmp %i2, 0
rtems_libio_check_count( count );
4001c400: 02 80 00 22 be 4001c488 <read+0x98>
<== NEVER TAKEN
4001c404: 84 10 20 00 clr %g2
LIBIO_GET_IOP_WITH_ACCESS( fd, iop, LIBIO_FLAGS_READ, EBADF );
4001c408: 03 10 00 73 sethi %hi(0x4001cc00), %g1
4001c40c: c2 00 62 90 ld [ %g1 + 0x290 ], %g1 ! 4001ce90 <rtems_libio_number_iops>
4001c410: 80 a6 00 01 cmp %i0, %g1
4001c414: 1a 80 00 25 bcc 4001c4a8 <read+0xb8>
<== NEVER TAKEN
4001c418: bb 2e 20 01 sll %i0, 1, %i5
<== NOT EXECUTED
4001c41c: ba 07 40 18 add %i5, %i0, %i5
<== NOT EXECUTED
4001c420: 31 10 00 84 sethi %hi(0x40021000), %i0
<== NOT EXECUTED
4001c424: bb 2f 60 04 sll %i5, 4, %i5
<== NOT EXECUTED
4001c428: b0 16 23 c0 or %i0, 0x3c0, %i0
<== NOT EXECUTED
4001c42c: ba 07 40 18 add %i5, %i0, %i5
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4001c430: 91 d0 20 09 ta 9
<== NOT EXECUTED
val = *obj;
4001c434: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
*obj = val + arg;
4001c438: 86 20 b0 00 sub %g2, -4096, %g3
<== NOT EXECUTED
4001c43c: c6 27 60 08 st %g3, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4001c440: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4001c444: 01 00 00 00 nop
4001c448: 84 08 a1 02 and %g2, 0x102, %g2
4001c44c: 80 a0 a1 02 cmp %g2, 0x102
4001c450: 12 80 00 10 bne 4001c490 <read+0xa0>
<== NEVER TAKEN
4001c454: 94 10 00 1a mov %i2, %o2
/*
* Now process the read().
*/
n = (*iop->pathinfo.handlers->read_h)( iop, buffer, count );
4001c458: c2 07 60 1c ld [ %i5 + 0x1c ], %g1
4001c45c: c2 00 60 08 ld [ %g1 + 8 ], %g1
4001c460: 92 10 00 19 mov %i1, %o1
4001c464: 9f c0 40 00 call %g1
4001c468: 90 10 00 1d mov %i5, %o0
4001c46c: 84 10 00 08 mov %o0, %g2
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4001c470: 91 d0 20 09 ta 9
<== NOT EXECUTED
*obj = val - arg;
4001c474: c6 07 60 08 ld [ %i5 + 8 ], %g3
<== NOT EXECUTED
4001c478: 86 00 f0 00 add %g3, -4096, %g3
<== NOT EXECUTED
4001c47c: c6 27 60 08 st %g3, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4001c480: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4001c484: 01 00 00 00 nop
rtems_libio_iop_drop( iop );
return n;
}
4001c488: 81 c7 e0 08 ret
4001c48c: 91 e8 00 02 restore %g0, %g2, %o0
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4001c490: 91 d0 20 09 ta 9
<== NOT EXECUTED
4001c494: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
4001c498: 84 00 b0 00 add %g2, -4096, %g2
<== NOT EXECUTED
4001c49c: c4 27 60 08 st %g2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4001c4a0: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4001c4a4: 01 00 00 00 nop
<== NOT EXECUTED
LIBIO_GET_IOP_WITH_ACCESS( fd, iop, LIBIO_FLAGS_READ, EBADF );
4001c4a8: 7f ff d9 8f call 40012ae4 <__errno>
<== NOT EXECUTED
4001c4ac: 01 00 00 00 nop
<== NOT EXECUTED
4001c4b0: 82 10 20 09 mov 9, %g1 ! 9 <_TLS_Alignment+0x8>
<== NOT EXECUTED
4001c4b4: 84 10 3f ff mov -1, %g2
<== NOT EXECUTED
4001c4b8: 10 bf ff f4 b 4001c488 <read+0x98>
<== NOT EXECUTED
4001c4bc: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
rtems_libio_check_buffer( buffer );
4001c4c0: 7f ff d9 89 call 40012ae4 <__errno>
<== NOT EXECUTED
4001c4c4: 01 00 00 00 nop
<== NOT EXECUTED
4001c4c8: 82 10 20 16 mov 0x16, %g1 ! 16 <_TLS_Alignment+0x15>
<== NOT EXECUTED
4001c4cc: 84 10 3f ff mov -1, %g2
<== NOT EXECUTED
4001c4d0: 10 bf ff ee b 4001c488 <read+0x98>
<== NOT EXECUTED
4001c4d4: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
4001c524 <realloc>:
return new_ptr;
}
void *realloc( void *ptr, size_t size )
{
4001c524: 9d e3 bf 98 save %sp, -104, %sp
<== NOT EXECUTED
Heap_Control *heap;
Heap_Resize_status status;
uintptr_t old_size;
uintptr_t avail_size;
if ( size == 0 ) {
4001c528: 80 a6 60 00 cmp %i1, 0
<== NOT EXECUTED
4001c52c: 02 80 00 40 be 4001c62c <realloc+0x108>
<== NOT EXECUTED
4001c530: 80 a6 20 00 cmp %i0, 0
<== NOT EXECUTED
free( ptr );
return NULL;
}
if ( ptr == NULL ) {
4001c534: 02 80 00 34 be 4001c604 <realloc+0xe0>
<== NOT EXECUTED
4001c538: 03 10 00 7f sethi %hi(0x4001fc00), %g1
<== NOT EXECUTED
return malloc( size );
}
heap = RTEMS_Malloc_Heap;
switch ( _Malloc_System_state() ) {
4001c53c: 7f ff ae 76 call 40007f14 <_Malloc_System_state>
<== NOT EXECUTED
4001c540: fa 00 62 24 ld [ %g1 + 0x224 ], %i5 ! 4001fe24 <RTEMS_Malloc_Heap>
<== NOT EXECUTED
4001c544: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
4001c548: 02 80 00 21 be 4001c5cc <realloc+0xa8>
<== NOT EXECUTED
4001c54c: 01 00 00 00 nop
<== NOT EXECUTED
4001c550: 80 a2 20 01 cmp %o0, 1
<== NOT EXECUTED
4001c554: 32 80 00 2e bne,a 4001c60c <realloc+0xe8>
<== NOT EXECUTED
4001c558: ba 10 20 00 clr %i5
<== NOT EXECUTED
_Malloc_Process_deferred_frees();
status = _Heap_Resize_block( heap, ptr, size, &old_size, &avail_size );
_RTEMS_Unlock_allocator();
break;
case MALLOC_SYSTEM_STATE_NO_PROTECTION:
status = _Heap_Resize_block( heap, ptr, size, &old_size, &avail_size );
4001c55c: 98 07 bf fc add %fp, -4, %o4
<== NOT EXECUTED
4001c560: 96 07 bf f8 add %fp, -8, %o3
<== NOT EXECUTED
4001c564: 94 10 00 19 mov %i1, %o2
<== NOT EXECUTED
4001c568: 92 10 00 18 mov %i0, %o1
<== NOT EXECUTED
4001c56c: 40 00 00 6e call 4001c724 <_Heap_Resize_block>
<== NOT EXECUTED
4001c570: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
4001c574: b8 10 00 08 mov %o0, %i4
<== NOT EXECUTED
break;
default:
return NULL;
}
switch ( status ) {
4001c578: 80 a7 20 00 cmp %i4, 0
<== NOT EXECUTED
4001c57c: 02 80 00 12 be 4001c5c4 <realloc+0xa0>
<== NOT EXECUTED
4001c580: ba 10 00 18 mov %i0, %i5
<== NOT EXECUTED
4001c584: 80 a7 20 01 cmp %i4, 1
<== NOT EXECUTED
4001c588: 12 80 00 23 bne 4001c614 <realloc+0xf0>
<== NOT EXECUTED
4001c58c: f8 07 bf f8 ld [ %fp + -8 ], %i4
<== NOT EXECUTED
new_ptr = malloc( new_size );
4001c590: 7f ff ae f2 call 40008158 <malloc>
<== NOT EXECUTED
4001c594: 90 10 00 19 mov %i1, %o0
<== NOT EXECUTED
if ( new_ptr == NULL ) {
4001c598: ba 92 20 00 orcc %o0, 0, %i5
<== NOT EXECUTED
4001c59c: 02 80 00 0a be 4001c5c4 <realloc+0xa0>
<== NOT EXECUTED
4001c5a0: 80 a7 00 19 cmp %i4, %i1
<== NOT EXECUTED
memcpy( new_ptr, old_ptr, ( new_size < old_size ) ? new_size : old_size );
4001c5a4: 08 80 00 03 bleu 4001c5b0 <realloc+0x8c>
<== NOT EXECUTED
4001c5a8: 94 10 00 1c mov %i4, %o2
<== NOT EXECUTED
4001c5ac: 94 10 00 19 mov %i1, %o2
<== NOT EXECUTED
4001c5b0: 92 10 00 18 mov %i0, %o1
<== NOT EXECUTED
4001c5b4: 7f ff db 1c call 40013224 <memcpy>
<== NOT EXECUTED
4001c5b8: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
free( old_ptr );
4001c5bc: 7f ff ad d8 call 40007d1c <free>
<== NOT EXECUTED
4001c5c0: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
return new_alloc( ptr, size, old_size );
default:
errno = EINVAL;
return NULL;
}
}
4001c5c4: 81 c7 e0 08 ret
<== NOT EXECUTED
4001c5c8: 91 e8 00 1d restore %g0, %i5, %o0
<== NOT EXECUTED
_RTEMS_Lock_allocator();
4001c5cc: 7f ff b8 90 call 4000a80c <_RTEMS_Lock_allocator>
<== NOT EXECUTED
4001c5d0: 01 00 00 00 nop
<== NOT EXECUTED
_Malloc_Process_deferred_frees();
4001c5d4: 7f ff ae 5f call 40007f50 <_Malloc_Process_deferred_frees>
<== NOT EXECUTED
4001c5d8: 01 00 00 00 nop
<== NOT EXECUTED
status = _Heap_Resize_block( heap, ptr, size, &old_size, &avail_size );
4001c5dc: 98 07 bf fc add %fp, -4, %o4
<== NOT EXECUTED
4001c5e0: 96 07 bf f8 add %fp, -8, %o3
<== NOT EXECUTED
4001c5e4: 94 10 00 19 mov %i1, %o2
<== NOT EXECUTED
4001c5e8: 92 10 00 18 mov %i0, %o1
<== NOT EXECUTED
4001c5ec: 40 00 00 4e call 4001c724 <_Heap_Resize_block>
<== NOT EXECUTED
4001c5f0: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
_RTEMS_Unlock_allocator();
4001c5f4: 7f ff b8 8b call 4000a820 <_RTEMS_Unlock_allocator>
<== NOT EXECUTED
4001c5f8: b8 10 00 08 mov %o0, %i4
<== NOT EXECUTED
break;
4001c5fc: 10 bf ff e0 b 4001c57c <realloc+0x58>
<== NOT EXECUTED
4001c600: 80 a7 20 00 cmp %i4, 0
<== NOT EXECUTED
return malloc( size );
4001c604: 7f ff ae d5 call 40008158 <malloc>
<== NOT EXECUTED
4001c608: 91 e8 00 19 restore %g0, %i1, %o0
<== NOT EXECUTED
}
4001c60c: 81 c7 e0 08 ret
<== NOT EXECUTED
4001c610: 91 e8 00 1d restore %g0, %i5, %o0
<== NOT EXECUTED
errno = EINVAL;
4001c614: 7f ff d9 34 call 40012ae4 <__errno>
<== NOT EXECUTED
4001c618: ba 10 20 00 clr %i5
<== NOT EXECUTED
4001c61c: 82 10 20 16 mov 0x16, %g1
<== NOT EXECUTED
4001c620: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
}
4001c624: 81 c7 e0 08 ret
<== NOT EXECUTED
4001c628: 91 e8 00 1d restore %g0, %i5, %o0
<== NOT EXECUTED
free( ptr );
4001c62c: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
4001c630: 7f ff ad bb call 40007d1c <free>
<== NOT EXECUTED
4001c634: ba 10 20 00 clr %i5
<== NOT EXECUTED
return NULL;
4001c638: 30 bf ff e3 b,a 4001c5c4 <realloc+0xa0>
<== NOT EXECUTED
40005a50 <rmdir>:
/**
* POSIX 1003.1b - 5.2.2 - Remove a Directory
*/
int rmdir( const char *path )
{
40005a50: 9d e3 be f0 save %sp, -272, %sp
int eval_flags = RTEMS_FS_REJECT_TERMINAL_DOT;
rtems_filesystem_location_info_t parentloc;
int parent_eval_flags = RTEMS_FS_PERMS_WRITE
| RTEMS_FS_PERMS_EXEC
| RTEMS_FS_FOLLOW_LINK;
const rtems_filesystem_location_info_t *currentloc =
40005a54: 98 10 20 1b mov 0x1b, %o4
40005a58: 94 10 21 00 mov 0x100, %o2
40005a5c: 92 10 00 18 mov %i0, %o1
40005a60: 96 07 bf 50 add %fp, -176, %o3
40005a64: 40 00 01 d3 call 400061b0 <rtems_filesystem_eval_path_start_with_parent>
40005a68: 90 07 bf 68 add %fp, -152, %o0
path,
eval_flags,
&parentloc,
parent_eval_flags
);
const rtems_filesystem_operations_table *ops = currentloc->mt_entry->ops;
40005a6c: c2 02 20 14 ld [ %o0 + 0x14 ], %g1
40005a70: f8 00 60 0c ld [ %g1 + 0xc ], %i4
(void) ( *loc->handlers->fstat_h )( loc, &st );
40005a74: c2 02 20 10 ld [ %o0 + 0x10 ], %g1
st.st_mode = 0;
40005a78: c0 27 bf ac clr [ %fp + -84 ]
const rtems_filesystem_location_info_t *currentloc =
40005a7c: ba 10 00 08 mov %o0, %i5
(void) ( *loc->handlers->fstat_h )( loc, &st );
40005a80: c2 00 60 18 ld [ %g1 + 0x18 ], %g1
40005a84: 9f c0 40 00 call %g1
40005a88: 92 07 bf a0 add %fp, -96, %o1
mode_t type = rtems_filesystem_location_type( currentloc );
if ( S_ISDIR( type ) ) {
40005a8c: 05 00 00 3c sethi %hi(0xf000), %g2
40005a90: c2 07 bf ac ld [ %fp + -84 ], %g1
40005a94: 82 08 40 02 and %g1, %g2, %g1
40005a98: 05 00 00 10 sethi %hi(0x4000), %g2
40005a9c: 80 a0 40 02 cmp %g1, %g2
40005aa0: 12 80 00 15 bne 40005af4 <rmdir+0xa4>
<== NEVER TAKEN
40005aa4: 92 10 20 14 mov 0x14, %o1
const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
40005aa8: c2 07 60 14 ld [ %i5 + 0x14 ], %g1
return (*mt_entry->ops->are_nodes_equal_h)(
40005aac: c4 00 60 0c ld [ %g1 + 0xc ], %g2
40005ab0: c4 00 a0 10 ld [ %g2 + 0x10 ], %g2
40005ab4: d2 00 60 24 ld [ %g1 + 0x24 ], %o1
40005ab8: 9f c0 80 00 call %g2
40005abc: 90 10 00 1d mov %i5, %o0
if ( !rtems_filesystem_location_is_instance_root( currentloc ) ) {
40005ac0: 80 a2 20 00 cmp %o0, 0
40005ac4: 12 80 00 11 bne 40005b08 <rmdir+0xb8>
<== NEVER TAKEN
40005ac8: 92 10 20 10 mov 0x10, %o1
rv = (*ops->rmnod_h)( &parentloc, currentloc );
40005acc: c2 07 20 18 ld [ %i4 + 0x18 ], %g1
40005ad0: 92 10 00 1d mov %i5, %o1
40005ad4: 9f c0 40 00 call %g1
40005ad8: 90 07 bf 50 add %fp, -176, %o0
40005adc: b0 10 00 08 mov %o0, %i0
} else {
rtems_filesystem_eval_path_error( &ctx, ENOTDIR );
rv = -1;
}
rtems_filesystem_eval_path_cleanup_with_parent( &ctx, &parentloc );
40005ae0: 92 07 bf 50 add %fp, -176, %o1
40005ae4: 40 00 02 00 call 400062e4 <rtems_filesystem_eval_path_cleanup_with_parent>
40005ae8: 90 07 bf 68 add %fp, -152, %o0
return rv;
}
40005aec: 81 c7 e0 08 ret
40005af0: 81 e8 00 00 restore
rtems_filesystem_eval_path_error( &ctx, ENOTDIR );
40005af4: 90 07 bf 68 add %fp, -152, %o0
<== NOT EXECUTED
40005af8: 40 00 00 e7 call 40005e94 <rtems_filesystem_eval_path_error>
<== NOT EXECUTED
40005afc: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
rtems_filesystem_eval_path_cleanup_with_parent( &ctx, &parentloc );
40005b00: 10 bf ff f9 b 40005ae4 <rmdir+0x94>
<== NOT EXECUTED
40005b04: 92 07 bf 50 add %fp, -176, %o1
<== NOT EXECUTED
rtems_filesystem_eval_path_error( &ctx, EBUSY );
40005b08: 90 07 bf 68 add %fp, -152, %o0
<== NOT EXECUTED
40005b0c: 40 00 00 e2 call 40005e94 <rtems_filesystem_eval_path_error>
<== NOT EXECUTED
40005b10: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
rtems_filesystem_eval_path_cleanup_with_parent( &ctx, &parentloc );
40005b14: 10 bf ff f4 b 40005ae4 <rmdir+0x94>
<== NOT EXECUTED
40005b18: 92 07 bf 50 add %fp, -176, %o1
<== NOT EXECUTED
40004c3c <rtems_assoc_32_to_string>:
const rtems_assoc_32_pair *pairs,
size_t pair_count,
const char *separator,
const char *fallback
)
{
40004c3c: 9d e3 bf a0 save %sp, -96, %sp
40004c40: a2 10 00 19 mov %i1, %l1
size_t len;
size_t i;
len = 0;
for ( i = 0; i < pair_count ; ++i ) {
40004c44: 80 a7 20 00 cmp %i4, 0
40004c48: 02 80 00 25 be 40004cdc <rtems_assoc_32_to_string+0xa0>
<== NEVER TAKEN
40004c4c: f2 07 a0 5c ld [ %fp + 0x5c ], %i1
40004c50: b9 2f 20 03 sll %i4, 3, %i4
len = 0;
40004c54: a0 10 20 00 clr %l0
40004c58: b8 06 c0 1c add %i3, %i4, %i4
const rtems_assoc_32_pair *p;
p = &pairs[ i ];
if ( ( value & p->bits ) != 0 ) {
40004c5c: c2 06 c0 00 ld [ %i3 ], %g1
40004c60: 80 8e 00 01 btst %i0, %g1
40004c64: 22 80 00 16 be,a 40004cbc <rtems_assoc_32_to_string+0x80>
40004c68: b6 06 e0 08 add %i3, 8, %i3
if ( len > 0 ) {
40004c6c: 80 a4 20 00 cmp %l0, 0
40004c70: 02 80 00 0b be 40004c9c <rtems_assoc_32_to_string+0x60>
40004c74: 90 10 00 11 mov %l1, %o0
if ( len < buffer_size ) {
40004c78: 80 a6 80 10 cmp %i2, %l0
len += strlcpy( &buffer[ len ], separator, space( buffer_size, len ) );
40004c7c: 90 04 40 10 add %l1, %l0, %o0
if ( len < buffer_size ) {
40004c80: 08 80 00 03 bleu 40004c8c <rtems_assoc_32_to_string+0x50>
40004c84: 94 10 20 00 clr %o2
return buffer_size - len;
40004c88: 94 26 80 10 sub %i2, %l0, %o2
len += strlcpy( &buffer[ len ], separator, space( buffer_size, len ) );
40004c8c: 40 00 29 63 call 4000f218 <strlcpy>
40004c90: 92 10 00 1d mov %i5, %o1
40004c94: a0 04 00 08 add %l0, %o0, %l0
40004c98: 90 04 40 10 add %l1, %l0, %o0
}
len += strlcpy( &buffer[ len ], p->name, space( buffer_size, len ) );
40004c9c: d2 06 e0 04 ld [ %i3 + 4 ], %o1
if ( len < buffer_size ) {
40004ca0: 80 a4 00 1a cmp %l0, %i2
40004ca4: 1a 80 00 03 bcc 40004cb0 <rtems_assoc_32_to_string+0x74>
40004ca8: 94 10 20 00 clr %o2
return buffer_size - len;
40004cac: 94 26 80 10 sub %i2, %l0, %o2
len += strlcpy( &buffer[ len ], p->name, space( buffer_size, len ) );
40004cb0: 40 00 29 5a call 4000f218 <strlcpy>
40004cb4: b6 06 e0 08 add %i3, 8, %i3
40004cb8: a0 04 00 08 add %l0, %o0, %l0
for ( i = 0; i < pair_count ; ++i ) {
40004cbc: 80 a7 00 1b cmp %i4, %i3
40004cc0: 32 bf ff e8 bne,a 40004c60 <rtems_assoc_32_to_string+0x24>
40004cc4: c2 06 c0 00 ld [ %i3 ], %g1
}
}
if ( len == 0 ) {
40004cc8: 80 a4 20 00 cmp %l0, 0
40004ccc: 02 80 00 04 be 40004cdc <rtems_assoc_32_to_string+0xa0>
40004cd0: b0 10 00 10 mov %l0, %i0
len += strlcpy( buffer, fallback, buffer_size );
}
return len;
}
40004cd4: 81 c7 e0 08 ret
40004cd8: 81 e8 00 00 restore
len += strlcpy( buffer, fallback, buffer_size );
40004cdc: 40 00 29 4f call 4000f218 <strlcpy>
40004ce0: 91 e8 00 11 restore %g0, %l1, %o0
4000f2e4 <rtems_assoc_local_by_remote_bitfield>:
uint32_t rtems_assoc_local_by_remote_bitfield(
const rtems_assoc_t *ap,
uint32_t remote_value
)
{
4000f2e4: 9d e3 bf a0 save %sp, -96, %sp
4000f2e8: b8 10 20 20 mov 0x20, %i4
uint32_t b;
uint32_t local_value = 0;
4000f2ec: b6 10 20 00 clr %i3
for (b = 1; b; b <<= 1) {
4000f2f0: 10 80 00 04 b 4000f300 <rtems_assoc_local_by_remote_bitfield+0x1c>
4000f2f4: ba 10 20 01 mov 1, %i5
4000f2f8: 02 80 00 0c be 4000f328 <rtems_assoc_local_by_remote_bitfield+0x44>
4000f2fc: bb 2f 60 01 sll %i5, 1, %i5
if (b & remote_value)
4000f300: 80 8e 40 1d btst %i1, %i5
4000f304: 22 bf ff fd be,a 4000f2f8 <rtems_assoc_local_by_remote_bitfield+0x14>
4000f308: b8 87 3f ff addcc %i4, -1, %i4
local_value |= rtems_assoc_local_by_remote(ap, b);
4000f30c: 92 10 00 1d mov %i5, %o1
4000f310: 40 00 00 08 call 4000f330 <rtems_assoc_local_by_remote>
4000f314: 90 10 00 18 mov %i0, %o0
for (b = 1; b; b <<= 1) {
4000f318: bb 2f 60 01 sll %i5, 1, %i5
4000f31c: b8 87 3f ff addcc %i4, -1, %i4
4000f320: 12 bf ff f8 bne 4000f300 <rtems_assoc_local_by_remote_bitfield+0x1c>
<== ALWAYS TAKEN
4000f324: b6 16 c0 08 or %i3, %o0, %i3
}
return local_value;
}
4000f328: 81 c7 e0 08 ret
4000f32c: 91 e8 00 1b restore %g0, %i3, %o0
4000f120 <rtems_assoc_ptr_by_local>:
const rtems_assoc_t *rtems_assoc_ptr_by_local(
const rtems_assoc_t *ap,
uint32_t local_value
)
{
4000f120: 9d e3 bf a0 save %sp, -96, %sp
const rtems_assoc_t *default_ap = 0;
if (rtems_assoc_is_default(ap))
4000f124: d0 06 00 00 ld [ %i0 ], %o0
{
4000f128: ba 10 00 18 mov %i0, %i5
if (rtems_assoc_is_default(ap))
4000f12c: 80 a2 20 00 cmp %o0, 0
4000f130: 02 80 00 16 be 4000f188 <rtems_assoc_ptr_by_local+0x68>
4000f134: b0 10 20 00 clr %i0
4000f138: 13 10 00 4e sethi %hi(0x40013800), %o1
4000f13c: 40 00 06 82 call 40010b44 <strcmp>
4000f140: 92 12 63 08 or %o1, 0x308, %o1 ! 40013b08 <IMFS_LIMITS_AND_OPTIONS+0x34>
4000f144: 80 a2 20 00 cmp %o0, 0
4000f148: 22 80 00 12 be,a 4000f190 <rtems_assoc_ptr_by_local+0x70>
4000f14c: c4 07 60 0c ld [ %i5 + 0xc ], %g2
default_ap = ap++;
for ( ; ap->name; ap++)
if (ap->local_value == local_value)
4000f150: c2 07 60 04 ld [ %i5 + 4 ], %g1
4000f154: 80 a6 40 01 cmp %i1, %g1
4000f158: 32 80 00 08 bne,a 4000f178 <rtems_assoc_ptr_by_local+0x58>
4000f15c: ba 07 60 0c add %i5, 0xc, %i5
for ( ; ap->name; ap++)
4000f160: 81 c7 e0 08 ret
4000f164: 91 e8 00 1d restore %g0, %i5, %o0
if (ap->local_value == local_value)
4000f168: 80 a0 40 19 cmp %g1, %i1
4000f16c: 22 80 00 07 be,a 4000f188 <rtems_assoc_ptr_by_local+0x68>
4000f170: b0 10 00 1d mov %i5, %i0
for ( ; ap->name; ap++)
4000f174: ba 07 60 0c add %i5, 0xc, %i5
4000f178: c2 07 40 00 ld [ %i5 ], %g1
4000f17c: 80 a0 60 00 cmp %g1, 0
4000f180: 32 bf ff fa bne,a 4000f168 <rtems_assoc_ptr_by_local+0x48>
4000f184: c2 07 60 04 ld [ %i5 + 4 ], %g1
4000f188: 81 c7 e0 08 ret
4000f18c: 81 e8 00 00 restore
default_ap = ap++;
4000f190: 82 07 60 0c add %i5, 0xc, %g1
for ( ; ap->name; ap++)
4000f194: b0 10 00 1d mov %i5, %i0
4000f198: 80 a0 a0 00 cmp %g2, 0
4000f19c: 12 bf ff ed bne 4000f150 <rtems_assoc_ptr_by_local+0x30>
<== ALWAYS TAKEN
4000f1a0: ba 10 00 01 mov %g1, %i5
4000f1a4: 81 c7 e0 08 ret
<== NOT EXECUTED
4000f1a8: 81 e8 00 00 restore
<== NOT EXECUTED
40004f5c <rtems_assoc_ptr_by_name>:
const rtems_assoc_t *rtems_assoc_ptr_by_name(
const rtems_assoc_t *ap,
const char *name
)
{
40004f5c: 9d e3 bf a0 save %sp, -96, %sp
const rtems_assoc_t *default_ap = 0;
if (rtems_assoc_is_default(ap))
40004f60: fa 06 00 00 ld [ %i0 ], %i5
40004f64: 80 a7 60 00 cmp %i5, 0
40004f68: 02 80 00 16 be 40004fc0 <rtems_assoc_ptr_by_name+0x64>
40004f6c: b8 10 20 00 clr %i4
40004f70: 90 10 00 1d mov %i5, %o0
40004f74: 13 10 00 42 sethi %hi(0x40010800), %o1
40004f78: 40 00 28 4d call 4000f0ac <strcmp>
40004f7c: 92 12 60 c8 or %o1, 0xc8, %o1 ! 400108c8 <_rodata_start+0x818>
40004f80: 80 a2 20 00 cmp %o0, 0
40004f84: 22 80 00 11 be,a 40004fc8 <rtems_assoc_ptr_by_name+0x6c>
40004f88: fa 06 20 0c ld [ %i0 + 0xc ], %i5
40004f8c: b8 10 00 18 mov %i0, %i4
const rtems_assoc_t *default_ap = 0;
40004f90: 10 80 00 06 b 40004fa8 <rtems_assoc_ptr_by_name+0x4c>
40004f94: b0 10 20 00 clr %i0
default_ap = ap++;
for ( ; ap->name; ap++)
40004f98: fa 07 00 00 ld [ %i4 ], %i5
40004f9c: 80 a7 60 00 cmp %i5, 0
40004fa0: 22 80 00 0e be,a 40004fd8 <rtems_assoc_ptr_by_name+0x7c>
40004fa4: b8 10 00 18 mov %i0, %i4
if (strcmp(ap->name, name) == 0)
40004fa8: 90 10 00 1d mov %i5, %o0
40004fac: 40 00 28 40 call 4000f0ac <strcmp>
40004fb0: 92 10 00 19 mov %i1, %o1
40004fb4: 80 a2 20 00 cmp %o0, 0
40004fb8: 32 bf ff f8 bne,a 40004f98 <rtems_assoc_ptr_by_name+0x3c>
40004fbc: b8 07 20 0c add %i4, 0xc, %i4
return ap;
return default_ap;
}
40004fc0: 81 c7 e0 08 ret
40004fc4: 91 e8 00 1c restore %g0, %i4, %o0
for ( ; ap->name; ap++)
40004fc8: 80 a7 60 00 cmp %i5, 0
40004fcc: 12 bf ff f7 bne 40004fa8 <rtems_assoc_ptr_by_name+0x4c>
<== ALWAYS TAKEN
40004fd0: b8 06 20 0c add %i0, 0xc, %i4
40004fd4: b8 10 00 18 mov %i0, %i4
<== NOT EXECUTED
}
40004fd8: 81 c7 e0 08 ret
40004fdc: 91 e8 00 1c restore %g0, %i4, %o0
4000f358 <rtems_assoc_ptr_by_remote>:
const rtems_assoc_t *rtems_assoc_ptr_by_remote(
const rtems_assoc_t *ap,
uint32_t remote_value
)
{
4000f358: 9d e3 bf a0 save %sp, -96, %sp
const rtems_assoc_t *default_ap = 0;
if (rtems_assoc_is_default(ap))
4000f35c: d0 06 00 00 ld [ %i0 ], %o0
{
4000f360: ba 10 00 18 mov %i0, %i5
if (rtems_assoc_is_default(ap))
4000f364: 80 a2 20 00 cmp %o0, 0
4000f368: 02 80 00 16 be 4000f3c0 <rtems_assoc_ptr_by_remote+0x68>
4000f36c: b0 10 20 00 clr %i0
4000f370: 13 10 00 46 sethi %hi(0x40011800), %o1
4000f374: 40 00 01 ad call 4000fa28 <strcmp>
4000f378: 92 12 62 a0 or %o1, 0x2a0, %o1 ! 40011aa0 <CSWTCH.1+0x10>
4000f37c: 80 a2 20 00 cmp %o0, 0
4000f380: 22 80 00 12 be,a 4000f3c8 <rtems_assoc_ptr_by_remote+0x70>
4000f384: c4 07 60 0c ld [ %i5 + 0xc ], %g2
default_ap = ap++;
for ( ; ap->name; ap++)
if (ap->remote_value == remote_value)
4000f388: c2 07 60 08 ld [ %i5 + 8 ], %g1
4000f38c: 80 a6 40 01 cmp %i1, %g1
4000f390: 32 80 00 08 bne,a 4000f3b0 <rtems_assoc_ptr_by_remote+0x58>
4000f394: ba 07 60 0c add %i5, 0xc, %i5
for ( ; ap->name; ap++)
4000f398: 81 c7 e0 08 ret
4000f39c: 91 e8 00 1d restore %g0, %i5, %o0
if (ap->remote_value == remote_value)
4000f3a0: 80 a0 40 19 cmp %g1, %i1
4000f3a4: 22 80 00 07 be,a 4000f3c0 <rtems_assoc_ptr_by_remote+0x68>
4000f3a8: b0 10 00 1d mov %i5, %i0
for ( ; ap->name; ap++)
4000f3ac: ba 07 60 0c add %i5, 0xc, %i5
4000f3b0: c2 07 40 00 ld [ %i5 ], %g1
4000f3b4: 80 a0 60 00 cmp %g1, 0
4000f3b8: 32 bf ff fa bne,a 4000f3a0 <rtems_assoc_ptr_by_remote+0x48>
4000f3bc: c2 07 60 08 ld [ %i5 + 8 ], %g1
4000f3c0: 81 c7 e0 08 ret
4000f3c4: 81 e8 00 00 restore
default_ap = ap++;
4000f3c8: 82 07 60 0c add %i5, 0xc, %g1
for ( ; ap->name; ap++)
4000f3cc: b0 10 00 1d mov %i5, %i0
4000f3d0: 80 a0 a0 00 cmp %g2, 0
4000f3d4: 12 bf ff ed bne 4000f388 <rtems_assoc_ptr_by_remote+0x30>
<== ALWAYS TAKEN
4000f3d8: ba 10 00 01 mov %g1, %i5
4000f3dc: 81 c7 e0 08 ret
<== NOT EXECUTED
4000f3e0: 81 e8 00 00 restore
<== NOT EXECUTED
4000506c <rtems_assoc_remote_by_local_bitfield>:
uint32_t rtems_assoc_remote_by_local_bitfield(
const rtems_assoc_t *ap,
uint32_t local_value
)
{
4000506c: 9d e3 bf a0 save %sp, -96, %sp
40005070: b8 10 20 20 mov 0x20, %i4
uint32_t b;
uint32_t remote_value = 0;
40005074: b6 10 20 00 clr %i3
for (b = 1; b; b <<= 1)
40005078: 10 80 00 04 b 40005088 <rtems_assoc_remote_by_local_bitfield+0x1c>
4000507c: ba 10 20 01 mov 1, %i5
40005080: 02 80 00 0c be 400050b0 <rtems_assoc_remote_by_local_bitfield+0x44>
40005084: bb 2f 60 01 sll %i5, 1, %i5
if (b & local_value)
40005088: 80 8e 40 1d btst %i1, %i5
4000508c: 22 bf ff fd be,a 40005080 <rtems_assoc_remote_by_local_bitfield+0x14>
40005090: b8 87 3f ff addcc %i4, -1, %i4
remote_value |= rtems_assoc_remote_by_local(ap, b);
40005094: 92 10 00 1d mov %i5, %o1
40005098: 40 00 00 08 call 400050b8 <rtems_assoc_remote_by_local>
4000509c: 90 10 00 18 mov %i0, %o0
for (b = 1; b; b <<= 1)
400050a0: bb 2f 60 01 sll %i5, 1, %i5
400050a4: b8 87 3f ff addcc %i4, -1, %i4
400050a8: 12 bf ff f8 bne 40005088 <rtems_assoc_remote_by_local_bitfield+0x1c>
<== ALWAYS TAKEN
400050ac: b6 16 c0 08 or %i3, %o0, %i3
return remote_value;
}
400050b0: 81 c7 e0 08 ret
400050b4: 91 e8 00 1b restore %g0, %i3, %o0
400060f4 <rtems_cache_aligned_malloc>:
#include <rtems.h>
#include <rtems/malloc.h>
void *rtems_cache_aligned_malloc( size_t nbytes )
{
400060f4: 9d e3 bf a0 save %sp, -96, %sp
size_t line_size = rtems_cache_get_maximal_line_size();
400060f8: 7f ff f7 f4 call 400040c8 <rtems_cache_get_maximal_line_size>
400060fc: 01 00 00 00 nop
if ( line_size > 0 ) {
40006100: b2 92 20 00 orcc %o0, 0, %i1
40006104: 02 80 00 05 be 40006118 <rtems_cache_aligned_malloc+0x24>
<== NEVER TAKEN
40006108: 82 06 3f ff add %i0, -1, %g1
/* Assume that the cache line size is a power of two */
size_t m = line_size - 1;
nbytes = (nbytes + m) & ~m;
4000610c: b0 20 00 19 neg %i1, %i0
40006110: 82 00 40 19 add %g1, %i1, %g1
40006114: b0 0e 00 01 and %i0, %g1, %i0
}
return rtems_heap_allocate_aligned_with_boundary( nbytes, line_size, 0 );
40006118: 40 00 01 1e call 40006590 <rtems_heap_allocate_aligned_with_boundary>
4000611c: 95 e8 20 00 restore %g0, 0, %o2
400061bc <rtems_cache_coherent_free>:
{
400061bc: 9d e3 bf a0 save %sp, -96, %sp
_RTEMS_Lock_allocator();
400061c0: 40 00 08 ba call 400084a8 <_RTEMS_Lock_allocator>
400061c4: 01 00 00 00 nop
heap = cache_coherent_heap;
400061c8: 03 10 00 57 sethi %hi(0x40015c00), %g1
400061cc: d0 00 63 20 ld [ %g1 + 0x320 ], %o0 ! 40015f20 <cache_coherent_heap>
if ( heap != NULL ) {
400061d0: 80 a2 20 00 cmp %o0, 0
400061d4: 02 80 00 0f be 40006210 <rtems_cache_coherent_free+0x54>
400061d8: 03 10 00 4e sethi %hi(0x40013800), %g1
if ( _Heap_Free( heap, ptr ) ) {
400061dc: 40 00 0a 7b call 40008bc8 <_Heap_Free>
400061e0: 92 10 00 18 mov %i0, %o1
heap = RTEMS_Malloc_Heap;
400061e4: 03 10 00 4e sethi %hi(0x40013800), %g1
if ( _Heap_Free( heap, ptr ) ) {
400061e8: 80 a2 20 00 cmp %o0, 0
400061ec: 12 80 00 07 bne 40006208 <rtems_cache_coherent_free+0x4c>
400061f0: d0 00 62 a4 ld [ %g1 + 0x2a4 ], %o0
if ( heap != NULL ) {
400061f4: 80 a2 20 00 cmp %o0, 0
400061f8: 02 80 00 04 be 40006208 <rtems_cache_coherent_free+0x4c>
<== NEVER TAKEN
400061fc: 01 00 00 00 nop
_Heap_Free( heap, ptr );
40006200: 40 00 0a 72 call 40008bc8 <_Heap_Free>
40006204: 92 10 00 18 mov %i0, %o1
_RTEMS_Unlock_allocator();
40006208: 40 00 08 ad call 400084bc <_RTEMS_Unlock_allocator>
4000620c: 81 e8 00 00 restore
heap = RTEMS_Malloc_Heap;
40006210: d0 00 62 a4 ld [ %g1 + 0x2a4 ], %o0
if ( heap != NULL ) {
40006214: 80 a2 20 00 cmp %o0, 0
40006218: 12 bf ff fa bne 40006200 <rtems_cache_coherent_free+0x44>
<== ALWAYS TAKEN
4000621c: 01 00 00 00 nop
40006220: 30 bf ff fa b,a 40006208 <rtems_cache_coherent_free+0x4c>
<== NOT EXECUTED
4000e4a0 <rtems_deviceio_close>:
int rtems_deviceio_close(
rtems_libio_t *iop,
rtems_device_major_number major,
rtems_device_minor_number minor
)
{
4000e4a0: 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 );
4000e4a4: 94 07 bf f4 add %fp, -12, %o2
<== NOT EXECUTED
4000e4a8: 92 10 00 1a mov %i2, %o1
<== NOT EXECUTED
args.iop = iop;
4000e4ac: f0 27 bf f4 st %i0, [ %fp + -12 ]
<== NOT EXECUTED
status = rtems_io_close( major, minor, &args );
4000e4b0: 90 10 00 19 mov %i1, %o0
<== NOT EXECUTED
args.flags = 0;
4000e4b4: c0 27 bf f8 clr [ %fp + -8 ]
<== NOT EXECUTED
status = rtems_io_close( major, minor, &args );
4000e4b8: 40 00 00 ae call 4000e770 <rtems_io_close>
<== NOT EXECUTED
4000e4bc: c0 27 bf fc clr [ %fp + -4 ]
<== NOT EXECUTED
return rtems_status_code_to_errno( status );
4000e4c0: 40 00 00 96 call 4000e718 <rtems_status_code_to_errno>
<== NOT EXECUTED
4000e4c4: 01 00 00 00 nop
<== NOT EXECUTED
}
4000e4c8: 81 c7 e0 08 ret
<== NOT EXECUTED
4000e4cc: 91 e8 00 08 restore %g0, %o0, %o0
<== NOT EXECUTED
4000e5b0 <rtems_deviceio_control>:
ioctl_command_t command,
void *buffer,
rtems_device_major_number major,
rtems_device_minor_number minor
)
{
4000e5b0: 9d e3 bf 90 save %sp, -112, %sp
<== NOT EXECUTED
rtems_status_code status;
rtems_libio_ioctl_args_t args;
args.iop = iop;
4000e5b4: f0 27 bf f0 st %i0, [ %fp + -16 ]
<== NOT EXECUTED
args.command = command;
args.buffer = buffer;
status = rtems_io_control( major, minor, &args );
4000e5b8: 94 07 bf f0 add %fp, -16, %o2
<== NOT EXECUTED
args.command = command;
4000e5bc: f2 27 bf f4 st %i1, [ %fp + -12 ]
<== NOT EXECUTED
status = rtems_io_control( major, minor, &args );
4000e5c0: 92 10 00 1c mov %i4, %o1
<== NOT EXECUTED
args.buffer = buffer;
4000e5c4: f4 27 bf f8 st %i2, [ %fp + -8 ]
<== NOT EXECUTED
status = rtems_io_control( major, minor, &args );
4000e5c8: 40 00 00 82 call 4000e7d0 <rtems_io_control>
<== NOT EXECUTED
4000e5cc: 90 10 00 1b mov %i3, %o0
<== NOT EXECUTED
if ( status == RTEMS_SUCCESSFUL ) {
4000e5d0: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
4000e5d4: 12 80 00 05 bne 4000e5e8 <rtems_deviceio_control+0x38>
<== NOT EXECUTED
4000e5d8: 01 00 00 00 nop
<== NOT EXECUTED
return args.ioctl_return;
4000e5dc: f0 07 bf fc ld [ %fp + -4 ], %i0
<== NOT EXECUTED
4000e5e0: 81 c7 e0 08 ret
<== NOT EXECUTED
4000e5e4: 81 e8 00 00 restore
<== NOT EXECUTED
} else {
return rtems_status_code_to_errno(status);
4000e5e8: 40 00 00 4c call 4000e718 <rtems_status_code_to_errno>
<== NOT EXECUTED
4000e5ec: 01 00 00 00 nop
<== NOT EXECUTED
}
}
4000e5f0: 81 c7 e0 08 ret
<== NOT EXECUTED
4000e5f4: 91 e8 00 08 restore %g0, %o0, %o0
<== NOT EXECUTED
4000e46c <rtems_deviceio_open>:
int oflag,
mode_t mode,
rtems_device_major_number major,
rtems_device_minor_number minor
)
{
4000e46c: 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;
4000e470: c2 06 20 08 ld [ %i0 + 8 ], %g1
<== NOT EXECUTED
args.mode = mode;
status = rtems_io_open( major, minor, &args );
4000e474: 94 07 bf f4 add %fp, -12, %o2
<== NOT EXECUTED
4000e478: 92 10 00 1d mov %i5, %o1
<== NOT EXECUTED
args.iop = iop;
4000e47c: f0 27 bf f4 st %i0, [ %fp + -12 ]
<== NOT EXECUTED
status = rtems_io_open( major, minor, &args );
4000e480: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
args.flags = iop->flags;
4000e484: c2 27 bf f8 st %g1, [ %fp + -8 ]
<== NOT EXECUTED
status = rtems_io_open( major, minor, &args );
4000e488: 40 00 01 01 call 4000e88c <rtems_io_open>
<== NOT EXECUTED
4000e48c: f6 27 bf fc st %i3, [ %fp + -4 ]
<== NOT EXECUTED
return rtems_status_code_to_errno( status );
4000e490: 40 00 00 a2 call 4000e718 <rtems_status_code_to_errno>
<== NOT EXECUTED
4000e494: 01 00 00 00 nop
<== NOT EXECUTED
}
4000e498: 81 c7 e0 08 ret
<== NOT EXECUTED
4000e49c: 91 e8 00 08 restore %g0, %o0, %o0
<== NOT EXECUTED
4000e4d0 <rtems_deviceio_read>:
void *buf,
size_t nbyte,
rtems_device_major_number major,
rtems_device_minor_number minor
)
{
4000e4d0: 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;
4000e4d4: c4 1e 00 00 ldd [ %i0 ], %g2
<== NOT EXECUTED
args.buffer = buf;
args.count = nbyte;
args.flags = iop->flags;
4000e4d8: c2 06 20 08 ld [ %i0 + 8 ], %g1
<== NOT EXECUTED
args.iop = iop;
4000e4dc: f0 27 bf e0 st %i0, [ %fp + -32 ]
<== NOT EXECUTED
args.bytes_moved = 0;
status = rtems_io_read( major, minor, &args );
4000e4e0: 94 07 bf e0 add %fp, -32, %o2
<== NOT EXECUTED
args.offset = iop->offset;
4000e4e4: c4 3f bf e8 std %g2, [ %fp + -24 ]
<== NOT EXECUTED
status = rtems_io_read( major, minor, &args );
4000e4e8: 92 10 00 1c mov %i4, %o1
<== NOT EXECUTED
args.buffer = buf;
4000e4ec: f2 27 bf f0 st %i1, [ %fp + -16 ]
<== NOT EXECUTED
status = rtems_io_read( major, minor, &args );
4000e4f0: 90 10 00 1b mov %i3, %o0
<== NOT EXECUTED
args.count = nbyte;
4000e4f4: f4 27 bf f4 st %i2, [ %fp + -12 ]
<== NOT EXECUTED
{
4000e4f8: ba 10 00 18 mov %i0, %i5
<== NOT EXECUTED
args.flags = iop->flags;
4000e4fc: c2 27 bf f8 st %g1, [ %fp + -8 ]
<== NOT EXECUTED
status = rtems_io_read( major, minor, &args );
4000e500: 40 00 00 fb call 4000e8ec <rtems_io_read>
<== NOT EXECUTED
4000e504: c0 27 bf fc clr [ %fp + -4 ]
<== NOT EXECUTED
if ( status == RTEMS_SUCCESSFUL ) {
4000e508: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
4000e50c: 12 80 00 09 bne 4000e530 <rtems_deviceio_read+0x60>
<== NOT EXECUTED
4000e510: 01 00 00 00 nop
<== NOT EXECUTED
iop->offset += args.bytes_moved;
4000e514: f4 1f 40 00 ldd [ %i5 ], %i2
<== NOT EXECUTED
4000e518: f0 07 bf fc ld [ %fp + -4 ], %i0
<== NOT EXECUTED
4000e51c: 86 86 c0 18 addcc %i3, %i0, %g3
<== NOT EXECUTED
4000e520: 84 46 a0 00 addx %i2, 0, %g2
<== NOT EXECUTED
4000e524: c4 3f 40 00 std %g2, [ %i5 ]
<== NOT EXECUTED
return (ssize_t) args.bytes_moved;
4000e528: 81 c7 e0 08 ret
<== NOT EXECUTED
4000e52c: 81 e8 00 00 restore
<== NOT EXECUTED
} else {
return rtems_status_code_to_errno( status );
4000e530: 40 00 00 7a call 4000e718 <rtems_status_code_to_errno>
<== NOT EXECUTED
4000e534: 01 00 00 00 nop
<== NOT EXECUTED
}
}
4000e538: 81 c7 e0 08 ret
<== NOT EXECUTED
4000e53c: 91 e8 00 08 restore %g0, %o0, %o0
<== NOT EXECUTED
4000e540 <rtems_deviceio_write>:
const void *buf,
size_t nbyte,
rtems_device_major_number major,
rtems_device_minor_number minor
)
{
4000e540: 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;
4000e544: c4 1e 00 00 ldd [ %i0 ], %g2
<== NOT EXECUTED
args.buffer = RTEMS_DECONST( void *, buf );
args.count = nbyte;
args.flags = iop->flags;
4000e548: c2 06 20 08 ld [ %i0 + 8 ], %g1
<== NOT EXECUTED
args.iop = iop;
4000e54c: f0 27 bf e0 st %i0, [ %fp + -32 ]
<== NOT EXECUTED
args.bytes_moved = 0;
status = rtems_io_write( major, minor, &args );
4000e550: 94 07 bf e0 add %fp, -32, %o2
<== NOT EXECUTED
args.offset = iop->offset;
4000e554: c4 3f bf e8 std %g2, [ %fp + -24 ]
<== NOT EXECUTED
status = rtems_io_write( major, minor, &args );
4000e558: 92 10 00 1c mov %i4, %o1
<== NOT EXECUTED
args.buffer = RTEMS_DECONST( void *, buf );
4000e55c: f2 27 bf f0 st %i1, [ %fp + -16 ]
<== NOT EXECUTED
status = rtems_io_write( major, minor, &args );
4000e560: 90 10 00 1b mov %i3, %o0
<== NOT EXECUTED
args.count = nbyte;
4000e564: f4 27 bf f4 st %i2, [ %fp + -12 ]
<== NOT EXECUTED
{
4000e568: ba 10 00 18 mov %i0, %i5
<== NOT EXECUTED
args.flags = iop->flags;
4000e56c: c2 27 bf f8 st %g1, [ %fp + -8 ]
<== NOT EXECUTED
status = rtems_io_write( major, minor, &args );
4000e570: 40 00 00 f7 call 4000e94c <rtems_io_write>
<== NOT EXECUTED
4000e574: c0 27 bf fc clr [ %fp + -4 ]
<== NOT EXECUTED
if ( status == RTEMS_SUCCESSFUL ) {
4000e578: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
4000e57c: 12 80 00 09 bne 4000e5a0 <rtems_deviceio_write+0x60>
<== NOT EXECUTED
4000e580: 01 00 00 00 nop
<== NOT EXECUTED
iop->offset += args.bytes_moved;
4000e584: f4 1f 40 00 ldd [ %i5 ], %i2
<== NOT EXECUTED
4000e588: f0 07 bf fc ld [ %fp + -4 ], %i0
<== NOT EXECUTED
4000e58c: 86 86 c0 18 addcc %i3, %i0, %g3
<== NOT EXECUTED
4000e590: 84 46 a0 00 addx %i2, 0, %g2
<== NOT EXECUTED
4000e594: c4 3f 40 00 std %g2, [ %i5 ]
<== NOT EXECUTED
return (ssize_t) args.bytes_moved;
4000e598: 81 c7 e0 08 ret
<== NOT EXECUTED
4000e59c: 81 e8 00 00 restore
<== NOT EXECUTED
} else {
return rtems_status_code_to_errno( status );
4000e5a0: 40 00 00 5e call 4000e718 <rtems_status_code_to_errno>
<== NOT EXECUTED
4000e5a4: 01 00 00 00 nop
<== NOT EXECUTED
}
}
4000e5a8: 81 c7 e0 08 ret
<== NOT EXECUTED
4000e5ac: 91 e8 00 08 restore %g0, %o0, %o0
<== NOT EXECUTED
40004638 <rtems_error>:
int rtems_error(
rtems_error_code_t error_flag,
const char *printf_format,
...
)
{
40004638: 9d e3 bf 98 save %sp, -104, %sp
va_list arglist;
int chars_written;
va_start(arglist, printf_format);
4000463c: 82 07 a0 4c add %fp, 0x4c, %g1
40004640: f4 27 a0 4c st %i2, [ %fp + 0x4c ]
chars_written = rtems_verror(error_flag, printf_format, arglist);
40004644: 94 10 00 01 mov %g1, %o2
va_start(arglist, printf_format);
40004648: c2 27 bf fc st %g1, [ %fp + -4 ]
chars_written = rtems_verror(error_flag, printf_format, arglist);
4000464c: 92 10 00 19 mov %i1, %o1
va_start(arglist, printf_format);
40004650: f6 27 a0 50 st %i3, [ %fp + 0x50 ]
chars_written = rtems_verror(error_flag, printf_format, arglist);
40004654: 90 10 00 18 mov %i0, %o0
va_start(arglist, printf_format);
40004658: f8 27 a0 54 st %i4, [ %fp + 0x54 ]
chars_written = rtems_verror(error_flag, printf_format, arglist);
4000465c: 7f ff ff 87 call 40004478 <rtems_verror>
40004660: fa 27 a0 58 st %i5, [ %fp + 0x58 ]
va_end(arglist);
if (error_flag & RTEMS_ERROR_PANIC) {
40004664: 03 08 00 00 sethi %hi(0x20000000), %g1
40004668: 80 8e 00 01 btst %i0, %g1
4000466c: 12 80 00 07 bne 40004688 <rtems_error+0x50>
40004670: 03 04 00 00 sethi %hi(0x10000000), %g1
rtems_error(0, "fatal error, exiting");
_exit(errno);
}
if (error_flag & RTEMS_ERROR_ABORT) {
40004674: 80 8e 00 01 btst %i0, %g1
40004678: 12 80 00 0c bne 400046a8 <rtems_error+0x70>
4000467c: b0 10 00 08 mov %o0, %i0
rtems_error(0, "fatal error, aborting");
abort();
}
return chars_written;
}
40004680: 81 c7 e0 08 ret
40004684: 81 e8 00 00 restore
rtems_error(0, "fatal error, exiting");
40004688: 13 10 00 67 sethi %hi(0x40019c00), %o1
4000468c: 92 12 60 30 or %o1, 0x30, %o1 ! 40019c30 <_Console_simple_Handlers+0x78>
40004690: 7f ff ff ea call 40004638 <rtems_error>
40004694: 90 10 20 00 clr %o0
_exit(errno);
40004698: 40 00 26 f6 call 4000e270 <__errno>
4000469c: 01 00 00 00 nop
400046a0: 40 00 02 3d call 40004f94 <_exit>
400046a4: d0 02 00 00 ld [ %o0 ], %o0
rtems_error(0, "fatal error, aborting");
400046a8: 13 10 00 67 sethi %hi(0x40019c00), %o1
400046ac: 92 12 60 48 or %o1, 0x48, %o1 ! 40019c48 <_Console_simple_Handlers+0x90>
400046b0: 7f ff ff e2 call 40004638 <rtems_error>
400046b4: 90 10 20 00 clr %o0
abort();
400046b8: 40 00 26 e1 call 4000e23c <abort>
400046bc: 01 00 00 00 nop
400046c0: 01 00 00 00 nop
<== NOT EXECUTED
4000580c <rtems_filesystem_check_access>:
int flags,
mode_t object_mode,
uid_t object_uid,
gid_t object_gid
)
{
4000580c: 9d e3 bf a0 save %sp, -96, %sp
const rtems_user_env_t *uenv = rtems_current_user_env_get();
40005810: 7f ff ff dc call 40005780 <rtems_current_user_env_get>
40005814: 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) {
40005818: c2 12 20 10 lduh [ %o0 + 0x10 ], %g1
4000581c: 80 a0 60 00 cmp %g1, 0
40005820: 02 80 00 24 be 400058b0 <rtems_filesystem_check_access+0xa4>
<== ALWAYS TAKEN
40005824: 80 a0 40 1a cmp %g1, %i2
40005828: 22 80 00 23 be,a 400058b4 <rtems_filesystem_check_access+0xa8>
<== NOT EXECUTED
4000582c: 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
40005830: c2 12 20 12 lduh [ %o0 + 0x12 ], %g1
<== NOT EXECUTED
if (
40005834: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
40005838: 02 80 00 18 be 40005898 <rtems_filesystem_check_access+0x8c>
<== NOT EXECUTED
4000583c: 80 a0 40 1b cmp %g1, %i3
<== NOT EXECUTED
40005840: 22 80 00 17 be,a 4000589c <rtems_filesystem_check_access+0x90>
<== NOT EXECUTED
40005844: b1 2e 20 03 sll %i0, 3, %i0
<== NOT EXECUTED
for (i = 0; i < uenv->ngroups; ++i) {
40005848: c6 02 20 24 ld [ %o0 + 0x24 ], %g3
<== NOT EXECUTED
4000584c: 80 a0 e0 00 cmp %g3, 0
<== NOT EXECUTED
40005850: 22 80 00 14 be,a 400058a0 <rtems_filesystem_check_access+0x94>
<== NOT EXECUTED
40005854: b0 2e 00 19 andn %i0, %i1, %i0
<== NOT EXECUTED
if (uenv->groups[i] == object_gid) {
40005858: c2 12 20 28 lduh [ %o0 + 0x28 ], %g1
<== NOT EXECUTED
4000585c: 80 a0 40 1b cmp %g1, %i3
<== NOT EXECUTED
40005860: 02 80 00 0e be 40005898 <rtems_filesystem_check_access+0x8c>
<== NOT EXECUTED
40005864: 90 02 20 2a add %o0, 0x2a, %o0
<== NOT EXECUTED
for (i = 0; i < uenv->ngroups; ++i) {
40005868: 10 80 00 06 b 40005880 <rtems_filesystem_check_access+0x74>
<== NOT EXECUTED
4000586c: 82 10 20 00 clr %g1
<== NOT EXECUTED
if (uenv->groups[i] == object_gid) {
40005870: c4 12 3f fe lduh [ %o0 + -2 ], %g2
<== NOT EXECUTED
40005874: 80 a0 80 1b cmp %g2, %i3
<== NOT EXECUTED
40005878: 22 80 00 09 be,a 4000589c <rtems_filesystem_check_access+0x90>
<== NOT EXECUTED
4000587c: b1 2e 20 03 sll %i0, 3, %i0
<== NOT EXECUTED
for (i = 0; i < uenv->ngroups; ++i) {
40005880: 82 00 60 01 inc %g1
<== NOT EXECUTED
40005884: 80 a0 40 03 cmp %g1, %g3
<== NOT EXECUTED
40005888: 12 bf ff fa bne 40005870 <rtems_filesystem_check_access+0x64>
<== NOT EXECUTED
4000588c: 90 02 20 02 add %o0, 2, %o0
<== NOT EXECUTED
} else {
access_flags <<= RTEMS_FS_OTH_SHIFT;
}
}
return (access_flags & object_mode) == access_flags;
40005890: 10 80 00 04 b 400058a0 <rtems_filesystem_check_access+0x94>
<== NOT EXECUTED
40005894: b0 2e 00 19 andn %i0, %i1, %i0
<== NOT EXECUTED
access_flags <<= RTEMS_FS_GRP_SHIFT;
40005898: b1 2e 20 03 sll %i0, 3, %i0
<== NOT EXECUTED
return (access_flags & object_mode) == access_flags;
4000589c: b0 2e 00 19 andn %i0, %i1, %i0
<== NOT EXECUTED
}
400058a0: 80 a0 00 18 cmp %g0, %i0
<== NOT EXECUTED
400058a4: b0 60 3f ff subx %g0, -1, %i0
<== NOT EXECUTED
400058a8: 81 c7 e0 08 ret
<== NOT EXECUTED
400058ac: 81 e8 00 00 restore
<== NOT EXECUTED
access_flags <<= RTEMS_FS_USR_SHIFT;
400058b0: b1 2e 20 06 sll %i0, 6, %i0
return (access_flags & object_mode) == access_flags;
400058b4: b0 2e 00 19 andn %i0, %i1, %i0
}
400058b8: 80 a0 00 18 cmp %g0, %i0
400058bc: b0 60 3f ff subx %g0, -1, %i0
400058c0: 81 c7 e0 08 ret
400058c4: 81 e8 00 00 restore
40011230 <rtems_filesystem_default_pathconf>:
40011230: 00 00 00 05 00 00 00 80 00 00 00 07 00 00 00 ff ................
40011240: 00 00 00 ff 00 00 04 00 00 00 00 00 00 00 00 00 ................
40011250: 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 ................
40011260: 2e 00 00 00 00 00 00 00 2e 2e 00 00 ............
40006070 <rtems_filesystem_do_unmount>:
}
void rtems_filesystem_do_unmount(
rtems_filesystem_mount_table_entry_t *mt_entry
)
{
40006070: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
rtems_libio_lock();
40006074: 7f ff fb 29 call 40004d18 <rtems_libio_lock>
<== NOT EXECUTED
40006078: 01 00 00 00 nop
<== NOT EXECUTED
next = the_node->next;
4000607c: c4 06 00 00 ld [ %i0 ], %g2
<== NOT EXECUTED
previous = the_node->previous;
40006080: c2 06 20 04 ld [ %i0 + 4 ], %g1
<== NOT EXECUTED
next->previous = previous;
40006084: c2 20 a0 04 st %g1, [ %g2 + 4 ]
<== NOT EXECUTED
rtems_libio_unlock();
40006088: 7f ff fb 29 call 40004d2c <rtems_libio_unlock>
<== NOT EXECUTED
4000608c: c4 20 40 00 st %g2, [ %g1 ]
<== NOT EXECUTED
release_with_count(global_loc, 1);
40006090: d0 06 20 20 ld [ %i0 + 0x20 ], %o0
<== NOT EXECUTED
40006094: 40 00 00 14 call 400060e4 <release_with_count>
<== NOT EXECUTED
40006098: 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);
4000609c: c2 06 20 0c ld [ %i0 + 0xc ], %g1
<== NOT EXECUTED
400060a0: c2 00 60 34 ld [ %g1 + 0x34 ], %g1
<== NOT EXECUTED
400060a4: 9f c0 40 00 call %g1
<== NOT EXECUTED
400060a8: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
if (mt_entry->unmount_task != 0) {
400060ac: d0 06 20 3c ld [ %i0 + 0x3c ], %o0
<== NOT EXECUTED
400060b0: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
400060b4: 02 80 00 07 be 400060d0 <rtems_filesystem_do_unmount+0x60>
<== NOT EXECUTED
400060b8: 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 );
400060bc: 40 00 03 78 call 40006e9c <rtems_event_system_send>
<== NOT EXECUTED
400060c0: 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) {
400060c4: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
400060c8: 32 80 00 04 bne,a 400060d8 <rtems_filesystem_do_unmount+0x68>
<== NOT EXECUTED
400060cc: 11 37 ab 6f sethi %hi(0xdeadbc00), %o0
<== NOT EXECUTED
rtems_fatal_error_occurred(0xdeadbeef);
}
}
free(mt_entry);
400060d0: 7f ff fa 9e call 40004b48 <free>
<== NOT EXECUTED
400060d4: 81 e8 00 00 restore
<== NOT EXECUTED
rtems_fatal_error_occurred(0xdeadbeef);
400060d8: 40 00 04 ab call 40007384 <rtems_fatal_error_occurred>
<== NOT EXECUTED
400060dc: 90 12 22 ef or %o0, 0x2ef, %o0
<== NOT EXECUTED
400060e0: 01 00 00 00 nop
<== NOT EXECUTED
40005c6c <rtems_filesystem_eval_path_continue>:
{
40005c6c: 9d e3 bf a0 save %sp, -96, %sp
while (ctx->pathlen > 0) {
40005c70: c2 06 20 04 ld [ %i0 + 4 ], %g1
40005c74: 80 a0 60 00 cmp %g1, 0
40005c78: 22 80 00 0c be,a 40005ca8 <rtems_filesystem_eval_path_continue+0x3c>
40005c7c: c2 06 20 0c ld [ %i0 + 0xc ], %g1
(*ctx->currentloc.mt_entry->ops->eval_path_h)(ctx);
40005c80: c2 06 20 2c ld [ %i0 + 0x2c ], %g1
40005c84: c2 00 60 0c ld [ %g1 + 0xc ], %g1
40005c88: c2 00 60 08 ld [ %g1 + 8 ], %g1
40005c8c: 9f c0 40 00 call %g1
40005c90: 90 10 00 18 mov %i0, %o0
while (ctx->pathlen > 0) {
40005c94: c2 06 20 04 ld [ %i0 + 4 ], %g1
40005c98: 80 a0 60 00 cmp %g1, 0
40005c9c: 32 bf ff fa bne,a 40005c84 <rtems_filesystem_eval_path_continue+0x18>
<== NEVER TAKEN
40005ca0: c2 06 20 2c ld [ %i0 + 0x2c ], %g1
<== NOT EXECUTED
if (rtems_filesystem_eval_path_has_token(ctx)) {
40005ca4: c2 06 20 0c ld [ %i0 + 0xc ], %g1
40005ca8: 80 a0 60 00 cmp %g1, 0
40005cac: 02 80 00 07 be 40005cc8 <rtems_filesystem_eval_path_continue+0x5c>
40005cb0: f2 06 20 10 ld [ %i0 + 0x10 ], %i1
if (make) {
40005cb4: 80 8e 60 20 btst 0x20, %i1
40005cb8: 02 80 00 08 be 40005cd8 <rtems_filesystem_eval_path_continue+0x6c>
40005cbc: b2 10 20 02 mov 2, %i1
check_access(ctx, ctx->flags);
40005cc0: 7f ff ff b9 call 40005ba4 <check_access>
40005cc4: 81 e8 00 00 restore
if (!exclusive) {
40005cc8: 80 8e 60 40 btst 0x40, %i1
40005ccc: 02 bf ff fd be 40005cc0 <rtems_filesystem_eval_path_continue+0x54>
40005cd0: 01 00 00 00 nop
rtems_filesystem_eval_path_error(ctx, EEXIST);
40005cd4: b2 10 20 11 mov 0x11, %i1 ! 11 <_TLS_Alignment+0x10>
40005cd8: 7f ff ff 9d call 40005b4c <rtems_filesystem_eval_path_error>
40005cdc: 81 e8 00 00 restore
400064e8 <rtems_filesystem_eval_path_eat_delimiter>:
void rtems_filesystem_eval_path_eat_delimiter(
rtems_filesystem_eval_path_context_t *ctx
)
{
const char *current = ctx->path;
400064e8: c2 02 00 00 ld [ %o0 ], %g1
<== NOT EXECUTED
const char *end = current + ctx->pathlen;
400064ec: c4 02 20 04 ld [ %o0 + 4 ], %g2
<== NOT EXECUTED
400064f0: 86 00 40 02 add %g1, %g2, %g3
<== NOT EXECUTED
while (current != end && rtems_filesystem_is_delimiter(*current)) {
400064f4: 80 a0 40 03 cmp %g1, %g3
<== NOT EXECUTED
400064f8: 22 80 00 17 be,a 40006554 <rtems_filesystem_eval_path_eat_delimiter+0x6c>
<== NOT EXECUTED
400064fc: 84 10 20 00 clr %g2
<== NOT EXECUTED
return c == '/' || c == '\\';
40006500: c8 48 40 00 ldsb [ %g1 ], %g4
<== NOT EXECUTED
40006504: 80 a1 20 2f cmp %g4, 0x2f
<== NOT EXECUTED
40006508: 02 80 00 04 be 40006518 <rtems_filesystem_eval_path_eat_delimiter+0x30>
<== NOT EXECUTED
4000650c: 80 a1 20 5c cmp %g4, 0x5c
<== NOT EXECUTED
40006510: 32 80 00 11 bne,a 40006554 <rtems_filesystem_eval_path_eat_delimiter+0x6c>
<== NOT EXECUTED
40006514: 86 10 00 01 mov %g1, %g3
<== NOT EXECUTED
++current;
40006518: 82 00 60 01 inc %g1
<== NOT EXECUTED
while (current != end && rtems_filesystem_is_delimiter(*current)) {
4000651c: 80 a0 c0 01 cmp %g3, %g1
<== NOT EXECUTED
40006520: 02 80 00 0d be 40006554 <rtems_filesystem_eval_path_eat_delimiter+0x6c>
<== NOT EXECUTED
40006524: 84 10 20 00 clr %g2
<== NOT EXECUTED
40006528: c4 48 40 00 ldsb [ %g1 ], %g2
<== NOT EXECUTED
4000652c: 80 a0 a0 2f cmp %g2, 0x2f
<== NOT EXECUTED
40006530: 02 bf ff fa be 40006518 <rtems_filesystem_eval_path_eat_delimiter+0x30>
<== NOT EXECUTED
40006534: 80 a0 a0 5c cmp %g2, 0x5c
<== NOT EXECUTED
40006538: 22 bf ff f9 be,a 4000651c <rtems_filesystem_eval_path_eat_delimiter+0x34>
<== NOT EXECUTED
4000653c: 82 00 60 01 inc %g1
<== NOT EXECUTED
40006540: 84 20 c0 01 sub %g3, %g1, %g2
<== NOT EXECUTED
++current;
40006544: 86 10 00 01 mov %g1, %g3
<== NOT EXECUTED
}
ctx->path = current;
ctx->pathlen = (size_t) (end - current);
40006548: c4 22 20 04 st %g2, [ %o0 + 4 ]
<== NOT EXECUTED
}
4000654c: 81 c3 e0 08 retl
<== NOT EXECUTED
40006550: c6 22 00 00 st %g3, [ %o0 ]
<== NOT EXECUTED
ctx->path = current;
40006554: c6 22 00 00 st %g3, [ %o0 ]
<== NOT EXECUTED
}
40006558: 81 c3 e0 08 retl
<== NOT EXECUTED
4000655c: c4 22 20 04 st %g2, [ %o0 + 4 ]
<== NOT EXECUTED
40005b4c <rtems_filesystem_eval_path_error>:
{
40005b4c: 9d e3 bf a0 save %sp, -96, %sp
ctx->path = NULL;
40005b50: c0 26 00 00 clr [ %i0 ]
if (!rtems_filesystem_location_is_null(&ctx->currentloc)) {
40005b54: 03 10 00 44 sethi %hi(0x40011000), %g1
ctx->pathlen = 0;
40005b58: c0 26 20 04 clr [ %i0 + 4 ]
if (!rtems_filesystem_location_is_null(&ctx->currentloc)) {
40005b5c: 82 10 62 b8 or %g1, 0x2b8, %g1
ctx->token = NULL;
40005b60: c0 26 20 08 clr [ %i0 + 8 ]
ctx->tokenlen = 0;
40005b64: c0 26 20 0c clr [ %i0 + 0xc ]
if (!rtems_filesystem_location_is_null(&ctx->currentloc)) {
40005b68: c4 06 20 28 ld [ %i0 + 0x28 ], %g2
40005b6c: 80 a0 80 01 cmp %g2, %g1
40005b70: 02 80 00 0b be 40005b9c <rtems_filesystem_eval_path_error+0x50>
40005b74: 80 a6 60 00 cmp %i1, 0
if (eno != 0) {
40005b78: 12 80 00 04 bne 40005b88 <rtems_filesystem_eval_path_error+0x3c>
<== ALWAYS TAKEN
40005b7c: 01 00 00 00 nop
rtems_filesystem_location_detach(&ctx->currentloc);
40005b80: 40 00 01 23 call 4000600c <rtems_filesystem_location_detach>
<== NOT EXECUTED
40005b84: 91 ee 20 18 restore %i0, 0x18, %o0
<== NOT EXECUTED
errno = eno;
40005b88: 40 00 26 54 call 4000f4d8 <__errno>
40005b8c: b0 06 20 18 add %i0, 0x18, %i0
40005b90: f2 22 00 00 st %i1, [ %o0 ]
rtems_filesystem_location_detach(&ctx->currentloc);
40005b94: 40 00 01 1e call 4000600c <rtems_filesystem_location_detach>
40005b98: 81 e8 00 00 restore
}
40005b9c: 81 c7 e0 08 ret
40005ba0: 81 e8 00 00 restore
400058fc <rtems_filesystem_eval_path_generic>:
void rtems_filesystem_eval_path_generic(
rtems_filesystem_eval_path_context_t *ctx,
void *arg,
const rtems_filesystem_eval_path_generic_config *config
)
{
400058fc: 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);
40005900: 21 10 00 44 sethi %hi(0x40011000), %l0
{
40005904: ba 10 00 18 mov %i0, %i5
return &ctx->currentloc;
40005908: a2 06 20 18 add %i0, 0x18, %l1
status = (*config->eval_token)(ctx, arg, "..", 2);
4000590c: a0 14 22 68 or %l0, 0x268, %l0
status = (*config->eval_token)(ctx, arg, ".", 1);
40005910: 31 10 00 44 sethi %hi(0x40011000), %i0
40005914: b0 16 22 60 or %i0, 0x260, %i0 ! 40011260 <rtems_filesystem_default_pathconf+0x30>
rtems_filesystem_eval_path_next_token(ctx);
40005918: 40 00 03 12 call 40006560 <rtems_filesystem_eval_path_next_token>
4000591c: 90 10 00 1d mov %i5, %o0
*tokenlen = ctx->tokenlen;
40005920: f8 07 60 0c ld [ %i5 + 0xc ], %i4
if (tokenlen > 0) {
40005924: 80 a7 20 00 cmp %i4, 0
40005928: 02 80 00 19 be 4000598c <rtems_filesystem_eval_path_generic+0x90>
4000592c: f6 07 60 08 ld [ %i5 + 8 ], %i3
if ((*config->is_directory)(ctx, arg)) {
40005930: c2 06 80 00 ld [ %i2 ], %g1
40005934: 92 10 00 19 mov %i1, %o1
40005938: 9f c0 40 00 call %g1
4000593c: 90 10 00 1d mov %i5, %o0
40005940: 80 a2 20 00 cmp %o0, 0
40005944: 02 80 00 60 be 40005ac4 <rtems_filesystem_eval_path_generic+0x1c8>
<== NEVER TAKEN
40005948: 80 a7 20 01 cmp %i4, 1
return tokenlen == 1 && token [0] == '.';
4000594c: 02 80 00 12 be 40005994 <rtems_filesystem_eval_path_generic+0x98>
40005950: 80 a7 20 02 cmp %i4, 2
return tokenlen == 2 && token [0] == '.' && token [1] == '.';
40005954: 22 80 00 33 be,a 40005a20 <rtems_filesystem_eval_path_generic+0x124>
<== NEVER TAKEN
40005958: c2 4e c0 00 ldsb [ %i3 ], %g1
<== NOT EXECUTED
}
} else {
status = (*config->eval_token)(ctx, arg, token, tokenlen);
4000595c: c2 06 a0 04 ld [ %i2 + 4 ], %g1
40005960: 96 10 00 1c mov %i4, %o3
40005964: 94 10 00 1b mov %i3, %o2
40005968: 92 10 00 19 mov %i1, %o1
4000596c: 9f c0 40 00 call %g1
40005970: 90 10 00 1d mov %i5, %o0
}
if (status == RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_NO_ENTRY) {
40005974: 80 a2 20 02 cmp %o0, 2
40005978: 22 80 00 19 be,a 400059dc <rtems_filesystem_eval_path_generic+0xe0>
4000597c: c2 07 60 04 ld [ %i5 + 4 ], %g1
while (status == RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_CONTINUE) {
40005980: 80 a2 20 00 cmp %o0, 0
40005984: 02 bf ff e5 be 40005918 <rtems_filesystem_eval_path_generic+0x1c>
40005988: 01 00 00 00 nop
4000598c: 81 c7 e0 08 ret
40005990: 81 e8 00 00 restore
return tokenlen == 1 && token [0] == '.';
40005994: c2 4e c0 00 ldsb [ %i3 ], %g1
40005998: 80 a0 60 2e cmp %g1, 0x2e
4000599c: 32 bf ff f1 bne,a 40005960 <rtems_filesystem_eval_path_generic+0x64>
400059a0: c2 06 a0 04 ld [ %i2 + 4 ], %g1
if (rtems_filesystem_eval_path_has_path(ctx)) {
400059a4: c2 07 60 04 ld [ %i5 + 4 ], %g1
400059a8: 80 a0 60 00 cmp %g1, 0
400059ac: 22 80 00 40 be,a 40005aac <rtems_filesystem_eval_path_generic+0x1b0>
<== ALWAYS TAKEN
400059b0: c2 07 60 10 ld [ %i5 + 0x10 ], %g1
status = (*config->eval_token)(ctx, arg, ".", 1);
400059b4: c2 06 a0 04 ld [ %i2 + 4 ], %g1
<== NOT EXECUTED
400059b8: 96 10 20 01 mov 1, %o3
400059bc: 94 10 00 18 mov %i0, %o2
400059c0: 92 10 00 19 mov %i1, %o1
400059c4: 9f c0 40 00 call %g1
400059c8: 90 10 00 1d mov %i5, %o0
if (status == RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_NO_ENTRY) {
400059cc: 80 a2 20 02 cmp %o0, 2
400059d0: 12 bf ff ed bne 40005984 <rtems_filesystem_eval_path_generic+0x88>
<== ALWAYS TAKEN
400059d4: 80 a2 20 00 cmp %o0, 0
if (rtems_filesystem_eval_path_has_path(ctx)) {
400059d8: c2 07 60 04 ld [ %i5 + 4 ], %g1
<== NOT EXECUTED
400059dc: 80 a0 60 00 cmp %g1, 0
400059e0: 12 80 00 04 bne 400059f0 <rtems_filesystem_eval_path_generic+0xf4>
<== NEVER TAKEN
400059e4: 01 00 00 00 nop
}
} else {
status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_DONE;
}
}
}
400059e8: 81 c7 e0 08 ret
400059ec: 81 e8 00 00 restore
rtems_filesystem_eval_path_eat_delimiter(ctx);
400059f0: 40 00 02 be call 400064e8 <rtems_filesystem_eval_path_eat_delimiter>
<== NOT EXECUTED
400059f4: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
(eval_flags & RTEMS_FS_ACCEPT_RESIDUAL_DELIMITERS) == 0
400059f8: c2 07 60 10 ld [ %i5 + 0x10 ], %g1
<== NOT EXECUTED
if (
400059fc: 80 88 60 80 btst 0x80, %g1
<== NOT EXECUTED
40005a00: 02 80 00 06 be 40005a18 <rtems_filesystem_eval_path_generic+0x11c>
<== NOT EXECUTED
40005a04: b2 10 20 02 mov 2, %i1
<== NOT EXECUTED
|| rtems_filesystem_eval_path_has_path(ctx)
40005a08: c2 07 60 04 ld [ %i5 + 4 ], %g1
<== NOT EXECUTED
40005a0c: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
40005a10: 02 bf ff f6 be 400059e8 <rtems_filesystem_eval_path_generic+0xec>
<== NOT EXECUTED
40005a14: 01 00 00 00 nop
<== NOT EXECUTED
rtems_filesystem_eval_path_error(ctx, ENOENT);
40005a18: 40 00 00 4d call 40005b4c <rtems_filesystem_eval_path_error>
<== NOT EXECUTED
40005a1c: 91 e8 00 1d restore %g0, %i5, %o0
<== NOT EXECUTED
return tokenlen == 2 && token [0] == '.' && token [1] == '.';
40005a20: 80 a0 60 2e cmp %g1, 0x2e
<== NOT EXECUTED
40005a24: 32 bf ff cf bne,a 40005960 <rtems_filesystem_eval_path_generic+0x64>
<== NOT EXECUTED
40005a28: c2 06 a0 04 ld [ %i2 + 4 ], %g1
<== NOT EXECUTED
40005a2c: c2 4e e0 01 ldsb [ %i3 + 1 ], %g1
<== NOT EXECUTED
40005a30: 80 a0 60 2e cmp %g1, 0x2e
<== NOT EXECUTED
40005a34: 32 bf ff cb bne,a 40005960 <rtems_filesystem_eval_path_generic+0x64>
<== NOT EXECUTED
40005a38: c2 06 a0 04 ld [ %i2 + 4 ], %g1
<== NOT EXECUTED
const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
40005a3c: c2 07 60 2c ld [ %i5 + 0x2c ], %g1
<== NOT EXECUTED
40005a40: d2 07 60 30 ld [ %i5 + 0x30 ], %o1
<== NOT EXECUTED
40005a44: c4 00 60 0c ld [ %g1 + 0xc ], %g2
<== NOT EXECUTED
&& (*mt_entry->ops->are_nodes_equal_h)( loc, rootloc );
40005a48: c6 02 60 14 ld [ %o1 + 0x14 ], %g3
<== NOT EXECUTED
40005a4c: 80 a0 40 03 cmp %g1, %g3
<== NOT EXECUTED
40005a50: 12 80 00 0a bne 40005a78 <rtems_filesystem_eval_path_generic+0x17c>
<== NOT EXECUTED
40005a54: c4 00 a0 10 ld [ %g2 + 0x10 ], %g2
<== NOT EXECUTED
40005a58: 9f c0 80 00 call %g2
<== NOT EXECUTED
40005a5c: 90 10 00 11 mov %l1, %o0
<== NOT EXECUTED
40005a60: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
40005a64: 32 bf ff d5 bne,a 400059b8 <rtems_filesystem_eval_path_generic+0xbc>
<== NOT EXECUTED
40005a68: c2 06 a0 04 ld [ %i2 + 4 ], %g1
<== NOT EXECUTED
40005a6c: c2 07 60 2c ld [ %i5 + 0x2c ], %g1
<== NOT EXECUTED
40005a70: c4 00 60 0c ld [ %g1 + 0xc ], %g2
<== NOT EXECUTED
40005a74: c4 00 a0 10 ld [ %g2 + 0x10 ], %g2
<== NOT EXECUTED
return (*mt_entry->ops->are_nodes_equal_h)( loc, mt_fs_root );
40005a78: d2 00 60 24 ld [ %g1 + 0x24 ], %o1
<== NOT EXECUTED
40005a7c: 9f c0 80 00 call %g2
<== NOT EXECUTED
40005a80: 90 10 00 11 mov %l1, %o0
<== NOT EXECUTED
} else if (is_fs_root(currentloc)) {
40005a84: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
40005a88: 12 80 00 12 bne 40005ad0 <rtems_filesystem_eval_path_generic+0x1d4>
<== NOT EXECUTED
40005a8c: 96 10 20 02 mov 2, %o3
<== NOT EXECUTED
status = (*config->eval_token)(ctx, arg, "..", 2);
40005a90: c2 06 a0 04 ld [ %i2 + 4 ], %g1
<== NOT EXECUTED
40005a94: 94 10 00 10 mov %l0, %o2
<== NOT EXECUTED
40005a98: 92 10 00 19 mov %i1, %o1
<== NOT EXECUTED
40005a9c: 9f c0 40 00 call %g1
<== NOT EXECUTED
40005aa0: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
if (status == RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_NO_ENTRY) {
40005aa4: 10 bf ff b5 b 40005978 <rtems_filesystem_eval_path_generic+0x7c>
<== NOT EXECUTED
40005aa8: 80 a2 20 02 cmp %o0, 2
<== NOT EXECUTED
if ((eval_flags & RTEMS_FS_REJECT_TERMINAL_DOT) == 0) {
40005aac: 80 88 61 00 btst 0x100, %g1
40005ab0: 22 bf ff c2 be,a 400059b8 <rtems_filesystem_eval_path_generic+0xbc>
<== ALWAYS TAKEN
40005ab4: c2 06 a0 04 ld [ %i2 + 4 ], %g1
rtems_filesystem_eval_path_error(ctx, EINVAL);
40005ab8: b2 10 20 16 mov 0x16, %i1
<== NOT EXECUTED
40005abc: 40 00 00 24 call 40005b4c <rtems_filesystem_eval_path_error>
<== NOT EXECUTED
40005ac0: 91 e8 00 1d restore %g0, %i5, %o0
<== NOT EXECUTED
rtems_filesystem_eval_path_error(ctx, ENOTDIR);
40005ac4: b2 10 20 14 mov 0x14, %i1
<== NOT EXECUTED
40005ac8: 40 00 00 21 call 40005b4c <rtems_filesystem_eval_path_error>
<== NOT EXECUTED
40005acc: 91 e8 00 1d restore %g0, %i5, %o0
<== NOT EXECUTED
if (currentloc->mt_entry->mt_point_node != NULL) {
40005ad0: c2 07 60 2c ld [ %i5 + 0x2c ], %g1
<== NOT EXECUTED
40005ad4: c4 00 60 20 ld [ %g1 + 0x20 ], %g2
<== NOT EXECUTED
40005ad8: 80 a0 a0 00 cmp %g2, 0
<== NOT EXECUTED
40005adc: 22 bf ff b7 be,a 400059b8 <rtems_filesystem_eval_path_generic+0xbc>
<== NOT EXECUTED
40005ae0: c2 06 a0 04 ld [ %i2 + 4 ], %g1
<== NOT EXECUTED
size_t tokenlen = ctx->tokenlen;
40005ae4: c8 07 60 0c ld [ %i5 + 0xc ], %g4
<== NOT EXECUTED
ctx->path -= tokenlen;
40005ae8: c6 07 40 00 ld [ %i5 ], %g3
<== NOT EXECUTED
ctx->pathlen += tokenlen;
40005aec: c4 07 60 04 ld [ %i5 + 4 ], %g2
<== NOT EXECUTED
ctx->path -= tokenlen;
40005af0: 86 20 c0 04 sub %g3, %g4, %g3
<== NOT EXECUTED
ctx->pathlen += tokenlen;
40005af4: 84 00 80 04 add %g2, %g4, %g2
<== NOT EXECUTED
ctx->path -= tokenlen;
40005af8: c6 27 40 00 st %g3, [ %i5 ]
<== NOT EXECUTED
rtems_filesystem_eval_path_restart(
40005afc: b2 00 60 20 add %g1, 0x20, %i1
<== NOT EXECUTED
ctx->pathlen += tokenlen;
40005b00: c4 27 60 04 st %g2, [ %i5 + 4 ]
<== NOT EXECUTED
ctx->tokenlen = 0;
40005b04: c0 27 60 0c clr [ %i5 + 0xc ]
<== NOT EXECUTED
40005b08: 40 00 00 e7 call 40005ea4 <rtems_filesystem_eval_path_restart>
<== NOT EXECUTED
40005b0c: 91 e8 00 1d restore %g0, %i5, %o0
<== NOT EXECUTED
40006560 <rtems_filesystem_eval_path_next_token>:
const char *current = ctx->path;
40006560: c2 02 00 00 ld [ %o0 ], %g1
const char *end = current + ctx->pathlen;
40006564: c6 02 20 04 ld [ %o0 + 4 ], %g3
40006568: 86 00 40 03 add %g1, %g3, %g3
while (current != end && rtems_filesystem_is_delimiter(*current)) {
4000656c: 80 a0 40 03 cmp %g1, %g3
40006570: 32 80 00 09 bne,a 40006594 <rtems_filesystem_eval_path_next_token+0x34>
<== ALWAYS TAKEN
40006574: c4 48 40 00 ldsb [ %g1 ], %g2
40006578: 10 80 00 20 b 400065f8 <rtems_filesystem_eval_path_next_token+0x98>
<== NOT EXECUTED
4000657c: 9a 10 20 00 clr %o5
<== NOT EXECUTED
++current;
40006580: 82 00 60 01 inc %g1
while (current != end && rtems_filesystem_is_delimiter(*current)) {
40006584: 80 a0 c0 01 cmp %g3, %g1
40006588: 22 80 00 22 be,a 40006610 <rtems_filesystem_eval_path_next_token+0xb0>
4000658c: 82 10 00 03 mov %g3, %g1
40006590: c4 48 40 00 ldsb [ %g1 ], %g2
40006594: 80 a0 a0 2f cmp %g2, 0x2f
40006598: 02 bf ff fa be 40006580 <rtems_filesystem_eval_path_next_token+0x20>
4000659c: 80 a0 a0 5c cmp %g2, 0x5c
400065a0: 22 bf ff f9 be,a 40006584 <rtems_filesystem_eval_path_next_token+0x24>
<== NEVER TAKEN
400065a4: 82 00 60 01 inc %g1
<== NOT EXECUTED
ctx->path = current;
400065a8: c2 22 00 00 st %g1, [ %o0 ]
ctx->pathlen = (size_t) (end - current);
400065ac: 9a 20 c0 01 sub %g3, %g1, %o5
400065b0: da 22 20 04 st %o5, [ %o0 + 4 ]
400065b4: 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)) {
400065b8: 80 a0 a0 5c cmp %g2, 0x5c
400065bc: 02 80 00 1f be 40006638 <rtems_filesystem_eval_path_next_token+0xd8>
<== NEVER TAKEN
400065c0: 80 a0 a0 2f cmp %g2, 0x2f
400065c4: 02 80 00 1e be 4000663c <rtems_filesystem_eval_path_next_token+0xdc>
<== NEVER TAKEN
400065c8: 88 10 00 0d mov %o5, %g4
400065cc: 10 80 00 07 b 400065e8 <rtems_filesystem_eval_path_next_token+0x88>
400065d0: 84 10 00 01 mov %g1, %g2
400065d4: 80 a1 20 2f cmp %g4, 0x2f
400065d8: 02 80 00 10 be 40006618 <rtems_filesystem_eval_path_next_token+0xb8>
400065dc: 80 a1 20 5c cmp %g4, 0x5c
400065e0: 02 80 00 0f be 4000661c <rtems_filesystem_eval_path_next_token+0xbc>
<== NEVER TAKEN
400065e4: 88 20 c0 02 sub %g3, %g2, %g4
++current;
400065e8: 84 00 a0 01 inc %g2
while (current != end && !rtems_filesystem_is_delimiter(*current)) {
400065ec: 80 a0 80 03 cmp %g2, %g3
400065f0: 32 bf ff f9 bne,a 400065d4 <rtems_filesystem_eval_path_next_token+0x74>
400065f4: c8 48 80 00 ldsb [ %g2 ], %g4
while (current != end && rtems_filesystem_is_delimiter(*current)) {
400065f8: 88 10 20 00 clr %g4
}
ctx->path = current;
400065fc: c6 22 00 00 st %g3, [ %o0 ]
ctx->pathlen = (size_t) (end - current);
40006600: c8 22 20 04 st %g4, [ %o0 + 4 ]
ctx->token = begin;
40006604: 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);
}
40006608: 81 c3 e0 08 retl
4000660c: da 22 20 0c st %o5, [ %o0 + 0xc ]
while (current != end && rtems_filesystem_is_delimiter(*current)) {
40006610: 10 bf ff fa b 400065f8 <rtems_filesystem_eval_path_next_token+0x98>
40006614: 9a 10 20 00 clr %o5
40006618: 88 20 c0 02 sub %g3, %g2, %g4
4000661c: 9a 20 80 01 sub %g2, %g1, %o5
++current;
40006620: 86 10 00 02 mov %g2, %g3
ctx->pathlen = (size_t) (end - current);
40006624: c8 22 20 04 st %g4, [ %o0 + 4 ]
ctx->path = current;
40006628: c6 22 00 00 st %g3, [ %o0 ]
ctx->token = begin;
4000662c: c2 22 20 08 st %g1, [ %o0 + 8 ]
}
40006630: 81 c3 e0 08 retl
40006634: da 22 20 0c st %o5, [ %o0 + 0xc ]
while (current != end && !rtems_filesystem_is_delimiter(*current)) {
40006638: 88 10 00 0d mov %o5, %g4
<== NOT EXECUTED
4000663c: 86 10 00 01 mov %g1, %g3
<== NOT EXECUTED
40006640: 10 bf ff ef b 400065fc <rtems_filesystem_eval_path_next_token+0x9c>
<== NOT EXECUTED
40006644: 9a 10 20 00 clr %o5
<== NOT EXECUTED
40005f08 <rtems_filesystem_eval_path_recursive>:
{
40005f08: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
if (pathlen > 0) {
40005f0c: 80 a6 a0 00 cmp %i2, 0
<== NOT EXECUTED
40005f10: 02 80 00 22 be 40005f98 <rtems_filesystem_eval_path_recursive+0x90>
<== NOT EXECUTED
40005f14: ba 10 00 18 mov %i0, %i5
<== NOT EXECUTED
if (ctx->recursionlevel < RTEMS_FILESYSTEM_SYMLOOP_MAX) {
40005f18: c2 06 20 14 ld [ %i0 + 0x14 ], %g1
<== NOT EXECUTED
40005f1c: 80 a0 60 1f cmp %g1, 0x1f
<== NOT EXECUTED
40005f20: 14 80 00 20 bg 40005fa0 <rtems_filesystem_eval_path_recursive+0x98>
<== NOT EXECUTED
40005f24: 01 00 00 00 nop
<== NOT EXECUTED
return c == '/' || c == '\\';
40005f28: c4 4e 40 00 ldsb [ %i1 ], %g2
<== NOT EXECUTED
const char *saved_path = ctx->path;
40005f2c: f6 06 00 00 ld [ %i0 ], %i3
<== NOT EXECUTED
if (rtems_filesystem_is_delimiter(path [0])) {
40005f30: 80 a0 a0 2f cmp %g2, 0x2f
<== NOT EXECUTED
40005f34: 02 80 00 1d be 40005fa8 <rtems_filesystem_eval_path_recursive+0xa0>
<== NOT EXECUTED
40005f38: f8 06 20 04 ld [ %i0 + 4 ], %i4
<== NOT EXECUTED
40005f3c: 80 a0 a0 5c cmp %g2, 0x5c
<== NOT EXECUTED
40005f40: 02 80 00 1b be 40005fac <rtems_filesystem_eval_path_recursive+0xa4>
<== NOT EXECUTED
40005f44: 92 07 60 30 add %i5, 0x30, %o1
<== NOT EXECUTED
++ctx->recursionlevel;
40005f48: 82 00 60 01 inc %g1
<== NOT EXECUTED
ctx->path = path;
40005f4c: f2 27 40 00 st %i1, [ %i5 ]
<== NOT EXECUTED
ctx->pathlen = pathlen;
40005f50: f4 27 60 04 st %i2, [ %i5 + 4 ]
<== NOT EXECUTED
++ctx->recursionlevel;
40005f54: c2 27 60 14 st %g1, [ %i5 + 0x14 ]
<== NOT EXECUTED
(*ctx->currentloc.mt_entry->ops->eval_path_h)(ctx);
40005f58: c2 07 60 2c ld [ %i5 + 0x2c ], %g1
<== NOT EXECUTED
40005f5c: c2 00 60 0c ld [ %g1 + 0xc ], %g1
<== NOT EXECUTED
40005f60: c2 00 60 08 ld [ %g1 + 8 ], %g1
<== NOT EXECUTED
40005f64: 9f c0 40 00 call %g1
<== NOT EXECUTED
40005f68: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
while (ctx->pathlen > 0) {
40005f6c: c2 07 60 04 ld [ %i5 + 4 ], %g1
<== NOT EXECUTED
40005f70: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
40005f74: 32 bf ff fa bne,a 40005f5c <rtems_filesystem_eval_path_recursive+0x54>
<== NOT EXECUTED
40005f78: c2 07 60 2c ld [ %i5 + 0x2c ], %g1
<== NOT EXECUTED
--ctx->recursionlevel;
40005f7c: c2 07 60 14 ld [ %i5 + 0x14 ], %g1
<== NOT EXECUTED
40005f80: 82 00 7f ff add %g1, -1, %g1
<== NOT EXECUTED
ctx->path = saved_path;
40005f84: f6 27 40 00 st %i3, [ %i5 ]
<== NOT EXECUTED
--ctx->recursionlevel;
40005f88: c2 27 60 14 st %g1, [ %i5 + 0x14 ]
<== NOT EXECUTED
ctx->pathlen = saved_pathlen;
40005f8c: f8 27 60 04 st %i4, [ %i5 + 4 ]
<== NOT EXECUTED
}
40005f90: 81 c7 e0 08 ret
<== NOT EXECUTED
40005f94: 81 e8 00 00 restore
<== NOT EXECUTED
rtems_filesystem_eval_path_error(ctx, ENOENT);
40005f98: 7f ff fe ed call 40005b4c <rtems_filesystem_eval_path_error>
<== NOT EXECUTED
40005f9c: 93 e8 20 02 restore %g0, 2, %o1
<== NOT EXECUTED
rtems_filesystem_eval_path_error(ctx, ELOOP);
40005fa0: 7f ff fe eb call 40005b4c <rtems_filesystem_eval_path_error>
<== NOT EXECUTED
40005fa4: 93 e8 20 5c restore %g0, 0x5c, %o1
<== NOT EXECUTED
rtems_filesystem_eval_path_restart(ctx, &ctx->rootloc);
40005fa8: 92 07 60 30 add %i5, 0x30, %o1
<== NOT EXECUTED
40005fac: 7f ff ff be call 40005ea4 <rtems_filesystem_eval_path_restart>
<== NOT EXECUTED
40005fb0: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
40005fb4: 10 bf ff e5 b 40005f48 <rtems_filesystem_eval_path_recursive+0x40>
<== NOT EXECUTED
40005fb8: c2 07 60 14 ld [ %i5 + 0x14 ], %g1
<== NOT EXECUTED
40005ea4 <rtems_filesystem_eval_path_restart>:
void rtems_filesystem_eval_path_restart(
rtems_filesystem_eval_path_context_t *ctx,
rtems_filesystem_global_location_t **newstartloc_ptr
)
{
40005ea4: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
40005ea8: ba 10 00 18 mov %i0, %i5
<== NOT EXECUTED
free_location(&ctx->currentloc);
40005eac: b0 06 20 18 add %i0, 0x18, %i0
<== NOT EXECUTED
40005eb0: 7f ff ff 18 call 40005b10 <free_location>
<== NOT EXECUTED
40005eb4: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
40005eb8: c2 07 60 34 ld [ %i5 + 0x34 ], %g1
<== NOT EXECUTED
40005ebc: d0 00 60 14 ld [ %g1 + 0x14 ], %o0
<== NOT EXECUTED
40005ec0: c2 02 20 0c ld [ %o0 + 0xc ], %g1
<== NOT EXECUTED
40005ec4: c2 00 60 04 ld [ %g1 + 4 ], %g1
<== NOT EXECUTED
40005ec8: 9f c0 40 00 call %g1
<== NOT EXECUTED
40005ecc: 01 00 00 00 nop
<== NOT EXECUTED
rtems_filesystem_instance_unlock(&ctx->startloc->location);
rtems_filesystem_global_location_assign(
40005ed0: 40 00 00 b1 call 40006194 <rtems_filesystem_global_location_obtain>
<== NOT EXECUTED
40005ed4: 90 10 00 19 mov %i1, %o0
<== NOT EXECUTED
40005ed8: 92 10 00 08 mov %o0, %o1
<== NOT EXECUTED
40005edc: 40 00 01 02 call 400062e4 <rtems_filesystem_global_location_assign>
<== NOT EXECUTED
40005ee0: 90 07 60 34 add %i5, 0x34, %o0
<== NOT EXECUTED
40005ee4: c2 07 60 34 ld [ %i5 + 0x34 ], %g1
<== NOT EXECUTED
40005ee8: d0 00 60 14 ld [ %g1 + 0x14 ], %o0
<== NOT EXECUTED
(*mt_entry->ops->lock_h)( mt_entry );
40005eec: c2 02 20 0c ld [ %o0 + 0xc ], %g1
<== NOT EXECUTED
40005ef0: c2 00 40 00 ld [ %g1 ], %g1
<== NOT EXECUTED
40005ef4: 9f c0 40 00 call %g1
<== NOT EXECUTED
40005ef8: 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);
40005efc: f2 07 60 34 ld [ %i5 + 0x34 ], %i1
<== NOT EXECUTED
40005f00: 40 00 20 4a call 4000e028 <rtems_filesystem_location_clone>
<== NOT EXECUTED
40005f04: 81 e8 00 00 restore
<== NOT EXECUTED
400061b0 <rtems_filesystem_eval_path_start_with_parent>:
{
400061b0: 9d e3 bf a0 save %sp, -96, %sp
size_t pathlen = strlen(path);
400061b4: 40 00 2d 91 call 400117f8 <strlen>
400061b8: 90 10 00 19 mov %i1, %o0
while (pathlen > 0) {
400061bc: a0 92 20 00 orcc %o0, 0, %l0
400061c0: 02 80 00 32 be 40006288 <rtems_filesystem_eval_path_start_with_parent+0xd8>
<== NEVER TAKEN
400061c4: a2 10 00 19 mov %i1, %l1
size_t i = pathlen - 1;
400061c8: ba 04 3f ff add %l0, -1, %i5
return c == '/' || c == '\\';
400061cc: c2 4e 40 1d ldsb [ %i1 + %i5 ], %g1
if (rtems_filesystem_is_delimiter(path [i])) {
400061d0: 80 a0 60 2f cmp %g1, 0x2f
400061d4: 02 80 00 30 be 40006294 <rtems_filesystem_eval_path_start_with_parent+0xe4>
<== NEVER TAKEN
400061d8: 80 a0 60 5c cmp %g1, 0x5c
400061dc: 12 80 00 0c bne 4000620c <rtems_filesystem_eval_path_start_with_parent+0x5c>
<== ALWAYS TAKEN
400061e0: 80 a7 60 00 cmp %i5, 0
400061e4: 10 80 00 2e b 4000629c <rtems_filesystem_eval_path_start_with_parent+0xec>
<== NOT EXECUTED
400061e8: ba 10 00 10 mov %l0, %i5
<== NOT EXECUTED
400061ec: c4 4e 40 01 ldsb [ %i1 + %g1 ], %g2
400061f0: 80 a0 a0 2f cmp %g2, 0x2f
400061f4: 02 80 00 21 be 40006278 <rtems_filesystem_eval_path_start_with_parent+0xc8>
400061f8: 80 a0 a0 5c cmp %g2, 0x5c
400061fc: 02 80 00 20 be 4000627c <rtems_filesystem_eval_path_start_with_parent+0xcc>
<== NEVER TAKEN
40006200: a2 10 00 19 mov %i1, %l1
size_t i = pathlen - 1;
40006204: ba 10 00 01 mov %g1, %i5
while (pathlen > 0) {
40006208: 80 a7 60 00 cmp %i5, 0
4000620c: 12 bf ff f8 bne 400061ec <rtems_filesystem_eval_path_start_with_parent+0x3c>
40006210: 82 07 7f ff add %i5, -1, %g1
parentpath = ".";
40006214: 23 10 00 4c sethi %hi(0x40013000), %l1
parentpathlen = 1;
40006218: ba 10 20 01 mov 1, %i5
parentpath = ".";
4000621c: a2 14 63 98 or %l1, 0x398, %l1
&rtems_filesystem_root,
40006220: 7f ff fd bd call 40005914 <rtems_current_user_env_get>
40006224: 01 00 00 00 nop
&rtems_filesystem_current
40006228: 7f ff fd bb call 40005914 <rtems_current_user_env_get>
4000622c: a4 10 00 08 mov %o0, %l2
currentloc = rtems_filesystem_eval_path_start_with_root_and_current(
40006230: 98 04 a0 04 add %l2, 4, %o4
40006234: 9a 10 00 08 mov %o0, %o5
40006238: 96 10 00 1c mov %i4, %o3
4000623c: 94 10 00 1d mov %i5, %o2
40006240: 92 10 00 11 mov %l1, %o1
40006244: 7f ff ff 79 call 40006028 <rtems_filesystem_eval_path_start_with_root_and_current>
40006248: 90 10 00 18 mov %i0, %o0
rtems_filesystem_location_clone(parentloc, currentloc);
4000624c: 92 10 00 08 mov %o0, %o1
40006250: 40 00 23 45 call 4000ef64 <rtems_filesystem_location_clone>
40006254: 90 10 00 1b mov %i3, %o0
ctx->path = name;
40006258: f2 26 00 00 st %i1, [ %i0 ]
rtems_filesystem_eval_path_continue(ctx);
4000625c: 90 10 00 18 mov %i0, %o0
ctx->pathlen = namelen;
40006260: e0 26 20 04 st %l0, [ %i0 + 4 ]
return &ctx->currentloc;
40006264: b0 06 20 18 add %i0, 0x18, %i0
rtems_filesystem_eval_path_continue(ctx);
40006268: 7f ff ff 53 call 40005fb4 <rtems_filesystem_eval_path_continue>
4000626c: f4 26 3f f8 st %i2, [ %i0 + -8 ]
}
40006270: 81 c7 e0 08 ret
40006274: 81 e8 00 00 restore
name = path + parentpathlen;
40006278: a2 10 00 19 mov %i1, %l1
4000627c: a0 24 00 1d sub %l0, %i5, %l0
40006280: 10 bf ff e8 b 40006220 <rtems_filesystem_eval_path_start_with_parent+0x70>
40006284: b2 06 40 1d add %i1, %i5, %i1
return 0;
40006288: ba 10 20 00 clr %i5
<== NOT EXECUTED
const char *name = NULL;
4000628c: 10 bf ff e5 b 40006220 <rtems_filesystem_eval_path_start_with_parent+0x70>
<== NOT EXECUTED
40006290: b2 10 20 00 clr %i1
<== NOT EXECUTED
if (rtems_filesystem_is_delimiter(path [i])) {
40006294: ba 10 00 10 mov %l0, %i5
<== NOT EXECUTED
name = path + parentpathlen;
40006298: a2 10 00 19 mov %i1, %l1
<== NOT EXECUTED
if (rtems_filesystem_is_delimiter(path [i])) {
4000629c: a0 10 20 00 clr %l0
<== NOT EXECUTED
name = path + parentpathlen;
400062a0: 10 bf ff e0 b 40006220 <rtems_filesystem_eval_path_start_with_parent+0x70>
<== NOT EXECUTED
400062a4: b2 06 40 1d add %i1, %i5, %i1
<== NOT EXECUTED
40005ce0 <rtems_filesystem_eval_path_start_with_root_and_current>:
{
40005ce0: 9d e3 bf 98 save %sp, -104, %sp
memset(ctx, 0, sizeof(*ctx));
40005ce4: 94 10 20 30 mov 0x30, %o2
40005ce8: 92 10 20 00 clr %o1
40005cec: 40 00 26 c4 call 4000f7fc <memset>
40005cf0: 90 06 20 08 add %i0, 8, %o0
ctx->path = path;
40005cf4: f2 26 00 00 st %i1, [ %i0 ]
if (ctx->pathlen > 0) {
40005cf8: 80 a6 a0 00 cmp %i2, 0
ctx->pathlen = pathlen;
40005cfc: f4 26 20 04 st %i2, [ %i0 + 4 ]
if (ctx->pathlen > 0) {
40005d00: 02 80 00 1d be 40005d74 <rtems_filesystem_eval_path_start_with_root_and_current+0x94>
40005d04: f6 26 20 10 st %i3, [ %i0 + 0x10 ]
char c = ctx->path [0];
40005d08: f6 0e 40 00 ldub [ %i1 ], %i3
ctx->rootloc = rtems_filesystem_global_location_obtain(global_root_ptr);
40005d0c: 40 00 01 22 call 40006194 <rtems_filesystem_global_location_obtain>
40005d10: 90 10 00 1c mov %i4, %o0
return c == '/' || c == '\\';
40005d14: 83 2e e0 18 sll %i3, 0x18, %g1
40005d18: 83 38 60 18 sra %g1, 0x18, %g1
if (rtems_filesystem_is_delimiter(c)) {
40005d1c: 80 a0 60 2f cmp %g1, 0x2f
40005d20: 02 80 00 2f be 40005ddc <rtems_filesystem_eval_path_start_with_root_and_current+0xfc>
40005d24: d0 26 20 30 st %o0, [ %i0 + 0x30 ]
40005d28: 80 a0 60 5c cmp %g1, 0x5c
40005d2c: 22 80 00 2d be,a 40005de0 <rtems_filesystem_eval_path_start_with_root_and_current+0x100>
<== NEVER TAKEN
40005d30: c4 06 00 00 ld [ %i0 ], %g2
<== NOT EXECUTED
ctx->startloc = rtems_filesystem_global_location_obtain(
40005d34: 40 00 01 18 call 40006194 <rtems_filesystem_global_location_obtain>
40005d38: 90 10 00 1d mov %i5, %o0
40005d3c: d0 26 20 34 st %o0, [ %i0 + 0x34 ]
40005d40: d0 02 20 14 ld [ %o0 + 0x14 ], %o0
(*mt_entry->ops->lock_h)( mt_entry );
40005d44: c2 02 20 0c ld [ %o0 + 0xc ], %g1
40005d48: c2 00 40 00 ld [ %g1 ], %g1
40005d4c: 9f c0 40 00 call %g1
40005d50: ba 06 20 18 add %i0, 0x18, %i5
rtems_filesystem_location_clone(
40005d54: d2 06 20 34 ld [ %i0 + 0x34 ], %o1
40005d58: 40 00 20 b4 call 4000e028 <rtems_filesystem_location_clone>
40005d5c: 90 10 00 1d mov %i5, %o0
rtems_filesystem_eval_path_continue(ctx);
40005d60: 90 10 00 18 mov %i0, %o0
40005d64: 7f ff ff c2 call 40005c6c <rtems_filesystem_eval_path_continue>
40005d68: b0 10 00 1d mov %i5, %i0
}
40005d6c: 81 c7 e0 08 ret
40005d70: 81 e8 00 00 restore
rtems_filesystem_global_location_t *global_loc = NULL;
40005d74: c0 27 bf fc clr [ %fp + -4 ]
return rtems_filesystem_global_location_obtain( &global_loc );
40005d78: 40 00 01 07 call 40006194 <rtems_filesystem_global_location_obtain>
40005d7c: 90 07 bf fc add %fp, -4, %o0
ctx->rootloc = rtems_filesystem_global_location_obtain_null();
40005d80: d0 26 20 30 st %o0, [ %i0 + 0x30 ]
40005d84: 90 07 bf fc add %fp, -4, %o0
40005d88: 40 00 01 03 call 40006194 <rtems_filesystem_global_location_obtain>
40005d8c: c0 27 bf fc clr [ %fp + -4 ]
ctx->startloc = rtems_filesystem_global_location_obtain_null();
40005d90: d0 26 20 34 st %o0, [ %i0 + 0x34 ]
errno = ENOENT;
40005d94: 40 00 25 d1 call 4000f4d8 <__errno>
40005d98: ba 06 20 18 add %i0, 0x18, %i5
40005d9c: 82 10 20 02 mov 2, %g1
40005da0: c2 22 00 00 st %g1, [ %o0 ]
40005da4: d0 06 20 34 ld [ %i0 + 0x34 ], %o0
40005da8: d0 02 20 14 ld [ %o0 + 0x14 ], %o0
(*mt_entry->ops->lock_h)( mt_entry );
40005dac: c2 02 20 0c ld [ %o0 + 0xc ], %g1
40005db0: c2 00 40 00 ld [ %g1 ], %g1
40005db4: 9f c0 40 00 call %g1
40005db8: 01 00 00 00 nop
rtems_filesystem_location_clone(
40005dbc: d2 06 20 34 ld [ %i0 + 0x34 ], %o1
40005dc0: 40 00 20 9a call 4000e028 <rtems_filesystem_location_clone>
40005dc4: 90 10 00 1d mov %i5, %o0
rtems_filesystem_eval_path_continue(ctx);
40005dc8: 90 10 00 18 mov %i0, %o0
40005dcc: 7f ff ff a8 call 40005c6c <rtems_filesystem_eval_path_continue>
40005dd0: b0 10 00 1d mov %i5, %i0
}
40005dd4: 81 c7 e0 08 ret
40005dd8: 81 e8 00 00 restore
++ctx->path;
40005ddc: c4 06 00 00 ld [ %i0 ], %g2
--ctx->pathlen;
40005de0: c2 06 20 04 ld [ %i0 + 4 ], %g1
++ctx->path;
40005de4: 84 00 a0 01 inc %g2
--ctx->pathlen;
40005de8: 82 00 7f ff add %g1, -1, %g1
++ctx->path;
40005dec: c4 26 00 00 st %g2, [ %i0 ]
ctx->startloc = rtems_filesystem_global_location_obtain(
40005df0: 90 06 20 30 add %i0, 0x30, %o0
--ctx->pathlen;
40005df4: c2 26 20 04 st %g1, [ %i0 + 4 ]
ctx->startloc = rtems_filesystem_global_location_obtain(
40005df8: 40 00 00 e7 call 40006194 <rtems_filesystem_global_location_obtain>
40005dfc: ba 06 20 18 add %i0, 0x18, %i5
40005e00: d0 26 20 34 st %o0, [ %i0 + 0x34 ]
40005e04: d0 02 20 14 ld [ %o0 + 0x14 ], %o0
40005e08: c2 02 20 0c ld [ %o0 + 0xc ], %g1
40005e0c: c2 00 40 00 ld [ %g1 ], %g1
40005e10: 9f c0 40 00 call %g1
40005e14: 01 00 00 00 nop
rtems_filesystem_location_clone(
40005e18: d2 06 20 34 ld [ %i0 + 0x34 ], %o1
40005e1c: 40 00 20 83 call 4000e028 <rtems_filesystem_location_clone>
40005e20: 90 10 00 1d mov %i5, %o0
rtems_filesystem_eval_path_continue(ctx);
40005e24: 90 10 00 18 mov %i0, %o0
40005e28: 7f ff ff 91 call 40005c6c <rtems_filesystem_eval_path_continue>
40005e2c: b0 10 00 1d mov %i5, %i0
}
40005e30: 81 c7 e0 08 ret
40005e34: 81 e8 00 00 restore
4000e38c <rtems_filesystem_get_mount_handler>:
rtems_filesystem_fsmount_me_t
rtems_filesystem_get_mount_handler(
const char *type
)
{
4000e38c: 9d e3 bf 98 save %sp, -104, %sp
4000e390: 82 10 00 18 mov %i0, %g1
find_arg fa = {
4000e394: c0 27 bf fc clr [ %fp + -4 ]
4000e398: b0 10 20 00 clr %i0
.type = type,
.mount_h = NULL
};
if ( type != NULL ) {
4000e39c: 80 a0 60 00 cmp %g1, 0
4000e3a0: 02 80 00 07 be 4000e3bc <rtems_filesystem_get_mount_handler+0x30>
<== NEVER TAKEN
4000e3a4: c2 27 bf f8 st %g1, [ %fp + -8 ]
rtems_filesystem_iterate( find_handler, &fa );
4000e3a8: 92 07 bf f8 add %fp, -8, %o1
4000e3ac: 11 10 00 38 sethi %hi(0x4000e000), %o0
4000e3b0: 7f ff ff cb call 4000e2dc <rtems_filesystem_iterate>
4000e3b4: 90 12 22 a8 or %o0, 0x2a8, %o0 ! 4000e2a8 <find_handler>
4000e3b8: f0 07 bf fc ld [ %fp + -4 ], %i0
}
return fa.mount_h;
}
4000e3bc: 81 c7 e0 08 ret
4000e3c0: 81 e8 00 00 restore
400062e4 <rtems_filesystem_global_location_assign>:
{
400062e4: 84 10 00 08 mov %o0, %g2
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
400062e8: 91 d0 20 09 ta 9
<== NOT EXECUTED
lhs_global_loc = *lhs_global_loc_ptr;
400062ec: d0 02 00 00 ld [ %o0 ], %o0
<== NOT EXECUTED
*lhs_global_loc_ptr = rhs_global_loc;
400062f0: d2 20 80 00 st %o1, [ %g2 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
400062f4: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
400062f8: 01 00 00 00 nop
rtems_filesystem_global_location_release(lhs_global_loc, true);
400062fc: 92 10 20 01 mov 1, %o1 ! 1 <_TLS_Alignment>
40006300: 82 13 c0 00 mov %o7, %g1
40006304: 7f ff ff de call 4000627c <rtems_filesystem_global_location_release>
40006308: 9e 10 40 00 mov %g1, %o7
40006194 <rtems_filesystem_global_location_obtain>:
{
40006194: 9d e3 bf 98 save %sp, -104, %sp
if (deferred_released_global_locations != NULL) {
40006198: 3b 10 00 50 sethi %hi(0x40014000), %i5
4000619c: c2 07 62 20 ld [ %i5 + 0x220 ], %g1 ! 40014220 <deferred_released_global_locations>
400061a0: 80 a0 60 00 cmp %g1, 0
400061a4: 02 80 00 1e be 4000621c <rtems_filesystem_global_location_obtain+0x88>
400061a8: 01 00 00 00 nop
400061ac: ba 17 62 20 or %i5, 0x220, %i5
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
400061b0: 91 d0 20 09 ta 9
<== NOT EXECUTED
current = deferred_released_global_locations;
400061b4: d0 07 40 00 ld [ %i5 ], %o0
if (current != NULL) {
400061b8: 80 a2 20 00 cmp %o0, 0
400061bc: 02 80 00 07 be 400061d8 <rtems_filesystem_global_location_obtain+0x44>
<== NEVER TAKEN
400061c0: 92 10 20 00 clr %o1
deferred_released_global_locations = current->deferred_released_next;
400061c4: c4 02 20 1c ld [ %o0 + 0x1c ], %g2
<== NOT EXECUTED
count = current->deferred_released_count;
400061c8: d2 02 20 20 ld [ %o0 + 0x20 ], %o1
<== NOT EXECUTED
deferred_released_global_locations = current->deferred_released_next;
400061cc: c4 27 40 00 st %g2, [ %i5 ]
<== NOT EXECUTED
current->deferred_released_next = NULL;
400061d0: c0 22 20 1c clr [ %o0 + 0x1c ]
<== NOT EXECUTED
current->deferred_released_count = 0;
400061d4: c0 22 20 20 clr [ %o0 + 0x20 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
400061d8: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
400061dc: 01 00 00 00 nop
if (current != NULL) {
400061e0: 80 a2 20 00 cmp %o0, 0
400061e4: 02 80 00 0e be 4000621c <rtems_filesystem_global_location_obtain+0x88>
<== NEVER TAKEN
400061e8: 01 00 00 00 nop
release_with_count(current, count);
400061ec: 7f ff ff be call 400060e4 <release_with_count>
400061f0: 01 00 00 00 nop
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
400061f4: 91 d0 20 09 ta 9
<== NOT EXECUTED
current = deferred_released_global_locations;
400061f8: d0 07 40 00 ld [ %i5 ], %o0
if (current != NULL) {
400061fc: 80 a2 20 00 cmp %o0, 0
40006200: 12 bf ff f1 bne 400061c4 <rtems_filesystem_global_location_obtain+0x30>
<== NEVER TAKEN
40006204: 92 10 20 00 clr %o1
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40006208: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4000620c: 01 00 00 00 nop
if (current != NULL) {
40006210: 80 a2 20 00 cmp %o0, 0
40006214: 12 bf ff f6 bne 400061ec <rtems_filesystem_global_location_obtain+0x58>
<== NEVER TAKEN
40006218: 01 00 00 00 nop
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4000621c: 91 d0 20 09 ta 9
<== NOT EXECUTED
global_loc = *global_loc_ptr;
40006220: f0 06 00 00 ld [ %i0 ], %i0
if (global_loc == NULL || !global_loc->location.mt_entry->mounted) {
40006224: 80 a6 20 00 cmp %i0, 0
40006228: 02 80 00 07 be 40006244 <rtems_filesystem_global_location_obtain+0xb0>
4000622c: 01 00 00 00 nop
40006230: c4 06 20 14 ld [ %i0 + 0x14 ], %g2
40006234: c4 08 a0 28 ldub [ %g2 + 0x28 ], %g2
40006238: 80 a0 a0 00 cmp %g2, 0
4000623c: 32 80 00 0a bne,a 40006264 <rtems_filesystem_global_location_obtain+0xd0>
40006240: c4 06 20 18 ld [ %i0 + 0x18 ], %g2
errno = ENXIO;
40006244: 40 00 24 a5 call 4000f4d8 <__errno>
40006248: c2 27 bf fc st %g1, [ %fp + -4 ]
4000624c: 84 10 20 06 mov 6, %g2
<== NOT EXECUTED
40006250: c4 22 00 00 st %g2, [ %o0 ]
<== NOT EXECUTED
global_loc = &rtems_filesystem_global_location_null;
40006254: 31 10 00 4b sethi %hi(0x40012c00), %i0
<== NOT EXECUTED
40006258: c2 07 bf fc ld [ %fp + -4 ], %g1
<== NOT EXECUTED
4000625c: b0 16 23 f0 or %i0, 0x3f0, %i0
<== NOT EXECUTED
++global_loc->reference_count;
40006260: c4 06 20 18 ld [ %i0 + 0x18 ], %g2
<== NOT EXECUTED
40006264: 84 00 a0 01 inc %g2
<== NOT EXECUTED
40006268: c4 26 20 18 st %g2, [ %i0 + 0x18 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4000626c: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40006270: 01 00 00 00 nop
}
40006274: 81 c7 e0 08 ret
40006278: 81 e8 00 00 restore
4000627c <rtems_filesystem_global_location_release>:
if (!deferred) {
4000627c: 80 a2 60 00 cmp %o1, 0
40006280: 22 80 00 16 be,a 400062d8 <rtems_filesystem_global_location_release+0x5c>
40006284: 92 10 20 01 mov 1, %o1
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40006288: 91 d0 20 09 ta 9
<== NOT EXECUTED
if (global_loc->deferred_released_count == 0) {
4000628c: c6 02 20 20 ld [ %o0 + 0x20 ], %g3
40006290: 80 a0 e0 00 cmp %g3, 0
40006294: 22 80 00 08 be,a 400062b4 <rtems_filesystem_global_location_release+0x38>
40006298: 07 10 00 50 sethi %hi(0x40014000), %g3
++global_loc->deferred_released_count;
4000629c: 86 00 e0 01 inc %g3
400062a0: c6 22 20 20 st %g3, [ %o0 + 0x20 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
400062a4: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
400062a8: 01 00 00 00 nop
}
400062ac: 81 c3 e0 08 retl
400062b0: 01 00 00 00 nop
rtems_filesystem_global_location_t *head =
400062b4: c8 00 e2 20 ld [ %g3 + 0x220 ], %g4
global_loc->deferred_released_next = head;
400062b8: c8 22 20 1c st %g4, [ %o0 + 0x1c ]
<== NOT EXECUTED
global_loc->deferred_released_count = 1;
400062bc: 88 10 20 01 mov 1, %g4
<== NOT EXECUTED
deferred_released_global_locations = global_loc;
400062c0: d0 20 e2 20 st %o0, [ %g3 + 0x220 ]
<== NOT EXECUTED
global_loc->deferred_released_count = 1;
400062c4: c8 22 20 20 st %g4, [ %o0 + 0x20 ]
<== NOT EXECUTED
400062c8: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
400062cc: 01 00 00 00 nop
}
400062d0: 81 c3 e0 08 retl
400062d4: 01 00 00 00 nop
release_with_count(global_loc, 1);
400062d8: 82 13 c0 00 mov %o7, %g1
400062dc: 7f ff ff 82 call 400060e4 <release_with_count>
400062e0: 9e 10 40 00 mov %g1, %o7
40004a48 <rtems_filesystem_initialize>:
/*
* Default mode for created files.
*/
void rtems_filesystem_initialize( void )
{
40004a48: 9d e3 bf a0 save %sp, -96, %sp
int rv = 0;
const rtems_filesystem_mount_configuration *root_config =
&rtems_filesystem_root_configuration;
rv = mount(
40004a4c: 05 10 00 43 sethi %hi(0x40010c00), %g2
40004a50: 82 10 a1 74 or %g2, 0x174, %g1 ! 40010d74 <rtems_filesystem_root_configuration>
40004a54: d0 00 a1 74 ld [ %g2 + 0x174 ], %o0
40004a58: d8 00 60 10 ld [ %g1 + 0x10 ], %o4
40004a5c: d6 00 60 0c ld [ %g1 + 0xc ], %o3
40004a60: d4 00 60 08 ld [ %g1 + 8 ], %o2
40004a64: 40 00 01 a4 call 400050f4 <mount>
40004a68: d2 00 60 04 ld [ %g1 + 4 ], %o1
root_config->target,
root_config->filesystemtype,
root_config->options,
root_config->data
);
if ( rv != 0 )
40004a6c: 80 a2 20 00 cmp %o0, 0
40004a70: 12 80 00 0a bne 40004a98 <rtems_filesystem_initialize+0x50>
<== NEVER TAKEN
40004a74: 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 );
40004a78: 11 10 00 44 sethi %hi(0x40011000), %o0
40004a7c: 40 00 01 56 call 40004fd4 <mkdir>
40004a80: 90 12 21 c0 or %o0, 0x1c0, %o0 ! 400111c0 <IMFS_node_control_sym_link+0x14>
if ( rv != 0 )
40004a84: 80 a2 20 00 cmp %o0, 0
40004a88: 12 80 00 07 bne 40004aa4 <rtems_filesystem_initialize+0x5c>
<== NEVER TAKEN
40004a8c: 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.
*/
}
40004a90: 81 c7 e0 08 ret
40004a94: 81 e8 00 00 restore
rtems_fatal_error_occurred( 0xABCD0002 );
40004a98: 11 2a f3 40 sethi %hi(0xabcd0000), %o0
<== NOT EXECUTED
40004a9c: 40 00 0a 3a call 40007384 <rtems_fatal_error_occurred>
<== NOT EXECUTED
40004aa0: 90 12 20 02 or %o0, 2, %o0 ! abcd0002 <RAM_END+0x6b8d0002>
<== NOT EXECUTED
rtems_fatal_error_occurred( 0xABCD0003 );
40004aa4: 40 00 0a 38 call 40007384 <rtems_fatal_error_occurred>
<== NOT EXECUTED
40004aa8: 90 12 20 03 or %o0, 3, %o0
<== NOT EXECUTED
40004aac: 01 00 00 00 nop
<== NOT EXECUTED
4000e2dc <rtems_filesystem_iterate>:
{
4000e2dc: 9d e3 bf a0 save %sp, -96, %sp
while ( table_entry->type && !stop ) {
4000e2e0: 3b 10 00 43 sethi %hi(0x40010c00), %i5
4000e2e4: c2 07 61 f0 ld [ %i5 + 0x1f0 ], %g1 ! 40010df0 <rtems_filesystem_table>
4000e2e8: 80 a0 60 00 cmp %g1, 0
4000e2ec: 12 80 00 06 bne 4000e304 <rtems_filesystem_iterate+0x28>
<== ALWAYS TAKEN
4000e2f0: ba 17 61 f0 or %i5, 0x1f0, %i5
4000e2f4: 30 80 00 0f b,a 4000e330 <rtems_filesystem_iterate+0x54>
<== NOT EXECUTED
4000e2f8: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
4000e2fc: 32 80 00 22 bne,a 4000e384 <rtems_filesystem_iterate+0xa8>
<== NOT EXECUTED
4000e300: b8 0f 20 ff and %i4, 0xff, %i4
<== NOT EXECUTED
stop = (*routine)( table_entry, routine_arg );
4000e304: 90 10 00 1d mov %i5, %o0
4000e308: 9f c6 00 00 call %i0
4000e30c: 92 10 00 19 mov %i1, %o1
++table_entry;
4000e310: ba 07 60 08 add %i5, 8, %i5
while ( table_entry->type && !stop ) {
4000e314: c2 07 40 00 ld [ %i5 ], %g1
4000e318: 80 a0 60 00 cmp %g1, 0
4000e31c: 12 bf ff f7 bne 4000e2f8 <rtems_filesystem_iterate+0x1c>
<== NEVER TAKEN
4000e320: b8 10 00 08 mov %o0, %i4
if ( !stop ) {
4000e324: b8 8a 20 ff andcc %o0, 0xff, %i4
4000e328: 12 80 00 17 bne 4000e384 <rtems_filesystem_iterate+0xa8>
4000e32c: 01 00 00 00 nop
rtems_libio_lock();
4000e330: 7f ff da 7a call 40004d18 <rtems_libio_lock>
4000e334: 37 10 00 4c sethi %hi(0x40013000), %i3
return _Chain_Immutable_head( the_chain )->next;
4000e338: fa 06 e1 f8 ld [ %i3 + 0x1f8 ], %i5 ! 400131f8 <filesystem_chain>
4000e33c: b6 16 e1 f8 or %i3, 0x1f8, %i3
for (
4000e340: b6 06 e0 04 add %i3, 4, %i3
4000e344: 80 a7 40 1b cmp %i5, %i3
4000e348: 12 80 00 06 bne 4000e360 <rtems_filesystem_iterate+0x84>
4000e34c: b8 10 20 00 clr %i4
4000e350: 30 80 00 0b b,a 4000e37c <rtems_filesystem_iterate+0xa0>
!rtems_chain_is_tail( chain, node ) && !stop;
4000e354: 80 a2 20 00 cmp %o0, 0
4000e358: 12 80 00 09 bne 4000e37c <rtems_filesystem_iterate+0xa0>
<== NEVER TAKEN
4000e35c: 01 00 00 00 nop
stop = (*routine)( &fsn->entry, routine_arg );
4000e360: 90 07 60 08 add %i5, 8, %o0
4000e364: 9f c6 00 00 call %i0
4000e368: 92 10 00 19 mov %i1, %o1
4000e36c: fa 07 40 00 ld [ %i5 ], %i5
for (
4000e370: 80 a7 40 1b cmp %i5, %i3
4000e374: 12 bf ff f8 bne 4000e354 <rtems_filesystem_iterate+0x78>
4000e378: b8 10 00 08 mov %o0, %i4
rtems_libio_unlock();
4000e37c: 7f ff da 6c call 40004d2c <rtems_libio_unlock>
4000e380: b8 0f 20 ff and %i4, 0xff, %i4
}
4000e384: 81 c7 e0 08 ret
4000e388: 91 e8 00 1c restore %g0, %i4, %o0
40005fbc <rtems_filesystem_location_copy>:
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;
40005fbc: da 02 60 08 ld [ %o1 + 8 ], %o5
dst->node_access_2 = src->node_access_2;
40005fc0: c8 02 60 0c ld [ %o1 + 0xc ], %g4
dst->handlers = src->handlers;
40005fc4: c6 02 60 10 ld [ %o1 + 0x10 ], %g3
dst->mt_entry = src->mt_entry;
40005fc8: c2 02 60 14 ld [ %o1 + 0x14 ], %g1
<== NOT EXECUTED
40005fcc: c2 22 20 14 st %g1, [ %o0 + 0x14 ]
<== NOT EXECUTED
dst->node_access = src->node_access;
40005fd0: da 22 20 08 st %o5, [ %o0 + 8 ]
<== NOT EXECUTED
dst->node_access_2 = src->node_access_2;
40005fd4: c8 22 20 0c st %g4, [ %o0 + 0xc ]
<== NOT EXECUTED
dst->handlers = src->handlers;
40005fd8: c6 22 20 10 st %g3, [ %o0 + 0x10 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40005fdc: 91 d0 20 09 ta 9
<== NOT EXECUTED
&loc->mt_entry->location_chain,
40005fe0: c6 02 20 14 ld [ %o0 + 0x14 ], %g3
old_last = tail->previous;
40005fe4: c8 00 e0 1c ld [ %g3 + 0x1c ], %g4
return &the_chain->Tail.Node;
40005fe8: 9a 00 e0 18 add %g3, 0x18, %o5
the_node->next = tail;
40005fec: da 22 00 00 st %o5, [ %o0 ]
tail->previous = the_node;
40005ff0: d0 20 e0 1c st %o0, [ %g3 + 0x1c ]
<== NOT EXECUTED
old_last->next = the_node;
40005ff4: d0 21 00 00 st %o0, [ %g4 ]
<== NOT EXECUTED
the_node->previous = old_last;
40005ff8: c8 22 20 04 st %g4, [ %o0 + 4 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40005ffc: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40006000: 01 00 00 00 nop
rtems_chain_initialize_node(&dst->mt_entry_node);
rtems_filesystem_location_add_to_mt_entry(dst);
return dst;
}
40006004: 81 c3 e0 08 retl
40006008: 01 00 00 00 nop
40006390 <rtems_filesystem_location_copy_and_detach>:
{
40006390: 9d e3 bf a0 save %sp, -96, %sp
dst->node_access = src->node_access;
40006394: c8 06 60 08 ld [ %i1 + 8 ], %g4
dst->node_access_2 = src->node_access_2;
40006398: c6 06 60 0c ld [ %i1 + 0xc ], %g3
dst->handlers = src->handlers;
4000639c: c4 06 60 10 ld [ %i1 + 0x10 ], %g2
dst->mt_entry = src->mt_entry;
400063a0: c2 06 60 14 ld [ %i1 + 0x14 ], %g1
400063a4: c2 26 20 14 st %g1, [ %i0 + 0x14 ]
dst->node_access = src->node_access;
400063a8: c8 26 20 08 st %g4, [ %i0 + 8 ]
dst->node_access_2 = src->node_access_2;
400063ac: c6 26 20 0c st %g3, [ %i0 + 0xc ]
dst->handlers = src->handlers;
400063b0: c4 26 20 10 st %g2, [ %i0 + 0x10 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
400063b4: 91 d0 20 09 ta 9
<== NOT EXECUTED
&loc->mt_entry->location_chain,
400063b8: c4 06 20 14 ld [ %i0 + 0x14 ], %g2
old_last = tail->previous;
400063bc: c6 00 a0 1c ld [ %g2 + 0x1c ], %g3
return &the_chain->Tail.Node;
400063c0: 88 00 a0 18 add %g2, 0x18, %g4
the_node->next = tail;
400063c4: c8 26 00 00 st %g4, [ %i0 ]
tail->previous = the_node;
400063c8: f0 20 a0 1c st %i0, [ %g2 + 0x1c ]
old_last->next = the_node;
400063cc: f0 20 c0 00 st %i0, [ %g3 ]
the_node->previous = old_last;
400063d0: c6 26 20 04 st %g3, [ %i0 + 4 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
400063d4: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
400063d8: 01 00 00 00 nop
rtems_filesystem_location_remove_from_mt_entry(detach);
400063dc: 7f ff ff cc call 4000630c <rtems_filesystem_location_remove_from_mt_entry>
400063e0: 90 10 00 19 mov %i1, %o0
dst->node_access = src->node_access;
400063e4: 03 10 00 4b sethi %hi(0x40012c00), %g1
400063e8: 82 10 63 f0 or %g1, 0x3f0, %g1 ! 40012ff0 <rtems_filesystem_global_location_null>
400063ec: c4 00 60 08 ld [ %g1 + 8 ], %g2
400063f0: c4 26 60 08 st %g2, [ %i1 + 8 ]
dst->node_access_2 = src->node_access_2;
400063f4: c4 00 60 0c ld [ %g1 + 0xc ], %g2
400063f8: c4 26 60 0c st %g2, [ %i1 + 0xc ]
dst->handlers = src->handlers;
400063fc: c4 00 60 10 ld [ %g1 + 0x10 ], %g2
dst->mt_entry = src->mt_entry;
40006400: c2 00 60 14 ld [ %g1 + 0x14 ], %g1
40006404: c2 26 60 14 st %g1, [ %i1 + 0x14 ]
dst->handlers = src->handlers;
40006408: c4 26 60 10 st %g2, [ %i1 + 0x10 ]
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4000640c: 91 d0 20 09 ta 9
<== NOT EXECUTED
40006410: c4 06 60 14 ld [ %i1 + 0x14 ], %g2
old_last = tail->previous;
40006414: c6 00 a0 1c ld [ %g2 + 0x1c ], %g3
return &the_chain->Tail.Node;
40006418: 88 00 a0 18 add %g2, 0x18, %g4
the_node->next = tail;
4000641c: c8 26 40 00 st %g4, [ %i1 ]
tail->previous = the_node;
40006420: f2 20 a0 1c st %i1, [ %g2 + 0x1c ]
old_last->next = the_node;
40006424: f2 20 c0 00 st %i1, [ %g3 ]
the_node->previous = old_last;
40006428: c6 26 60 04 st %g3, [ %i1 + 4 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4000642c: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40006430: 01 00 00 00 nop
}
40006434: 81 c7 e0 08 ret
40006438: 81 e8 00 00 restore
4000600c <rtems_filesystem_location_detach>:
void rtems_filesystem_location_detach(
rtems_filesystem_location_info_t *detach
)
{
4000600c: 9d e3 bf a0 save %sp, -96, %sp
rtems_filesystem_location_free(detach);
40006010: 40 00 20 19 call 4000e074 <rtems_filesystem_location_free>
40006014: 90 10 00 18 mov %i0, %o0
dst->node_access = src->node_access;
40006018: 03 10 00 4b sethi %hi(0x40012c00), %g1
<== NOT EXECUTED
4000601c: 82 10 63 f0 or %g1, 0x3f0, %g1 ! 40012ff0 <rtems_filesystem_global_location_null>
<== NOT EXECUTED
40006020: c4 00 60 08 ld [ %g1 + 8 ], %g2
<== NOT EXECUTED
40006024: c4 26 20 08 st %g2, [ %i0 + 8 ]
<== NOT EXECUTED
dst->node_access_2 = src->node_access_2;
40006028: c4 00 60 0c ld [ %g1 + 0xc ], %g2
<== NOT EXECUTED
4000602c: c4 26 20 0c st %g2, [ %i0 + 0xc ]
<== NOT EXECUTED
dst->handlers = src->handlers;
40006030: c4 00 60 10 ld [ %g1 + 0x10 ], %g2
<== NOT EXECUTED
dst->mt_entry = src->mt_entry;
40006034: c2 00 60 14 ld [ %g1 + 0x14 ], %g1
<== NOT EXECUTED
40006038: c2 26 20 14 st %g1, [ %i0 + 0x14 ]
<== NOT EXECUTED
dst->handlers = src->handlers;
4000603c: c4 26 20 10 st %g2, [ %i0 + 0x10 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40006040: 91 d0 20 09 ta 9
<== NOT EXECUTED
40006044: c4 06 20 14 ld [ %i0 + 0x14 ], %g2
<== NOT EXECUTED
old_last = tail->previous;
40006048: c6 00 a0 1c ld [ %g2 + 0x1c ], %g3
<== NOT EXECUTED
return &the_chain->Tail.Node;
4000604c: 88 00 a0 18 add %g2, 0x18, %g4
<== NOT EXECUTED
the_node->next = tail;
40006050: c8 26 00 00 st %g4, [ %i0 ]
<== NOT EXECUTED
tail->previous = the_node;
40006054: f0 20 a0 1c st %i0, [ %g2 + 0x1c ]
<== NOT EXECUTED
old_last->next = the_node;
40006058: f0 20 c0 00 st %i0, [ %g3 ]
<== NOT EXECUTED
the_node->previous = old_last;
4000605c: c6 26 20 04 st %g3, [ %i0 + 4 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40006060: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40006064: 01 00 00 00 nop
rtems_filesystem_location_initialize_to_null(detach);
}
40006068: 81 c7 e0 08 ret
4000606c: 81 e8 00 00 restore
4000630c <rtems_filesystem_location_remove_from_mt_entry>:
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4000630c: 91 d0 20 09 ta 9
<== NOT EXECUTED
previous = the_node->previous;
40006310: c6 02 20 04 ld [ %o0 + 4 ], %g3
next = the_node->next;
40006314: c8 02 00 00 ld [ %o0 ], %g4
next->previous = previous;
40006318: c6 21 20 04 st %g3, [ %g4 + 4 ]
do_unmount = rtems_filesystem_is_ready_for_unmount(loc->mt_entry);
4000631c: c4 02 20 14 ld [ %o0 + 0x14 ], %g2
previous->next = next;
40006320: c8 20 c0 00 st %g4, [ %g3 ]
40006324: c6 08 a0 28 ldub [ %g2 + 0x28 ], %g3
40006328: 80 a0 e0 00 cmp %g3, 0
4000632c: 12 80 00 07 bne 40006348 <rtems_filesystem_location_remove_from_mt_entry+0x3c>
40006330: 01 00 00 00 nop
&& rtems_chain_has_only_one_node( &mt_entry->location_chain )
40006334: c8 00 a0 14 ld [ %g2 + 0x14 ], %g4
40006338: c6 00 a0 1c ld [ %g2 + 0x1c ], %g3
4000633c: 80 a1 00 03 cmp %g4, %g3
40006340: 22 80 00 06 be,a 40006358 <rtems_filesystem_location_remove_from_mt_entry+0x4c>
40006344: c6 00 a0 24 ld [ %g2 + 0x24 ], %g3
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40006348: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4000634c: 01 00 00 00 nop
}
40006350: 81 c3 e0 08 retl
40006354: 01 00 00 00 nop
&& mt_entry->mt_fs_root->reference_count == 1;
40006358: c6 00 e0 18 ld [ %g3 + 0x18 ], %g3
4000635c: 80 a0 e0 01 cmp %g3, 1
40006360: 12 bf ff fa bne 40006348 <rtems_filesystem_location_remove_from_mt_entry+0x3c>
<== ALWAYS TAKEN
40006364: 86 00 a0 14 add %g2, 0x14, %g3
return &the_chain->Tail.Node;
40006368: 88 00 a0 18 add %g2, 0x18, %g4
<== NOT EXECUTED
head->previous = NULL;
4000636c: c0 20 a0 18 clr [ %g2 + 0x18 ]
<== NOT EXECUTED
head->next = tail;
40006370: c8 20 a0 14 st %g4, [ %g2 + 0x14 ]
<== NOT EXECUTED
tail->previous = head;
40006374: c6 20 a0 1c st %g3, [ %g2 + 0x1c ]
<== NOT EXECUTED
40006378: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4000637c: 01 00 00 00 nop
<== NOT EXECUTED
rtems_filesystem_do_unmount(loc->mt_entry);
40006380: d0 02 20 14 ld [ %o0 + 0x14 ], %o0
<== NOT EXECUTED
40006384: 82 13 c0 00 mov %o7, %g1
<== NOT EXECUTED
40006388: 7f ff ff 3a call 40006070 <rtems_filesystem_do_unmount>
<== NOT EXECUTED
4000638c: 9e 10 40 00 mov %g1, %o7
<== NOT EXECUTED
4000643c <rtems_filesystem_location_transform_to_global>:
{
4000643c: 9d e3 bf 98 save %sp, -104, %sp
<== NOT EXECUTED
rtems_filesystem_global_location_t *global_loc = malloc(sizeof(*global_loc));
40006440: 7f ff fa d1 call 40004f84 <malloc>
<== NOT EXECUTED
40006444: 90 10 20 24 mov 0x24, %o0
<== NOT EXECUTED
if (global_loc != NULL) {
40006448: ba 92 20 00 orcc %o0, 0, %i5
<== NOT EXECUTED
4000644c: 02 80 00 1c be 400064bc <rtems_filesystem_location_transform_to_global+0x80>
<== NOT EXECUTED
40006450: b8 10 20 01 mov 1, %i4
<== NOT EXECUTED
dst->node_access = src->node_access;
40006454: c8 06 20 08 ld [ %i0 + 8 ], %g4
<== NOT EXECUTED
dst->node_access_2 = src->node_access_2;
40006458: c6 06 20 0c ld [ %i0 + 0xc ], %g3
<== NOT EXECUTED
dst->handlers = src->handlers;
4000645c: c4 06 20 10 ld [ %i0 + 0x10 ], %g2
<== NOT EXECUTED
dst->mt_entry = src->mt_entry;
40006460: c2 06 20 14 ld [ %i0 + 0x14 ], %g1
<== NOT EXECUTED
global_loc->deferred_released_next = NULL;
40006464: c0 27 60 1c clr [ %i5 + 0x1c ]
<== NOT EXECUTED
global_loc->reference_count = 1;
40006468: f8 27 60 18 st %i4, [ %i5 + 0x18 ]
<== NOT EXECUTED
global_loc->deferred_released_count = 0;
4000646c: c0 27 60 20 clr [ %i5 + 0x20 ]
<== NOT EXECUTED
dst->node_access = src->node_access;
40006470: c8 27 60 08 st %g4, [ %i5 + 8 ]
<== NOT EXECUTED
dst->node_access_2 = src->node_access_2;
40006474: c6 27 60 0c st %g3, [ %i5 + 0xc ]
<== NOT EXECUTED
dst->handlers = src->handlers;
40006478: c4 27 60 10 st %g2, [ %i5 + 0x10 ]
<== NOT EXECUTED
dst->mt_entry = src->mt_entry;
4000647c: c2 27 60 14 st %g1, [ %i5 + 0x14 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40006480: 91 d0 20 09 ta 9
<== NOT EXECUTED
40006484: c4 07 60 14 ld [ %i5 + 0x14 ], %g2
<== NOT EXECUTED
old_last = tail->previous;
40006488: c6 00 a0 1c ld [ %g2 + 0x1c ], %g3
<== NOT EXECUTED
return &the_chain->Tail.Node;
4000648c: 88 00 a0 18 add %g2, 0x18, %g4
<== NOT EXECUTED
the_node->next = tail;
40006490: c8 27 40 00 st %g4, [ %i5 ]
<== NOT EXECUTED
tail->previous = the_node;
40006494: fa 20 a0 1c st %i5, [ %g2 + 0x1c ]
<== NOT EXECUTED
old_last->next = the_node;
40006498: fa 20 c0 00 st %i5, [ %g3 ]
<== NOT EXECUTED
the_node->previous = old_last;
4000649c: c6 27 60 04 st %g3, [ %i5 + 4 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
400064a0: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
400064a4: 01 00 00 00 nop
<== NOT EXECUTED
rtems_filesystem_location_remove_from_mt_entry(loc);
400064a8: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
400064ac: 7f ff ff 98 call 4000630c <rtems_filesystem_location_remove_from_mt_entry>
<== NOT EXECUTED
400064b0: b0 10 00 1d mov %i5, %i0
<== NOT EXECUTED
}
400064b4: 81 c7 e0 08 ret
<== NOT EXECUTED
400064b8: 81 e8 00 00 restore
<== NOT EXECUTED
rtems_filesystem_location_free(loc);
400064bc: 40 00 1e ee call 4000e074 <rtems_filesystem_location_free>
<== NOT EXECUTED
400064c0: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
return rtems_filesystem_global_location_obtain( &global_loc );
400064c4: 90 07 bf fc add %fp, -4, %o0
<== NOT EXECUTED
400064c8: 7f ff ff 33 call 40006194 <rtems_filesystem_global_location_obtain>
<== NOT EXECUTED
400064cc: c0 27 bf fc clr [ %fp + -4 ]
<== NOT EXECUTED
errno = ENOMEM;
400064d0: 40 00 24 02 call 4000f4d8 <__errno>
<== NOT EXECUTED
400064d4: ba 10 00 08 mov %o0, %i5
<== NOT EXECUTED
400064d8: 82 10 20 0c mov 0xc, %g1
<== NOT EXECUTED
400064dc: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
}
400064e0: 81 c7 e0 08 ret
<== NOT EXECUTED
400064e4: 91 e8 00 1d restore %g0, %i5, %o0
<== NOT EXECUTED
40004ff0 <rtems_filesystem_mknod>:
const char *name,
size_t namelen,
mode_t mode,
dev_t dev
)
{
40004ff0: 9d e3 bf a0 save %sp, -96, %sp
int rv = 0;
mode &= ~rtems_filesystem_umask;
40004ff4: 40 00 01 e3 call 40005780 <rtems_current_user_env_get>
40004ff8: 01 00 00 00 nop
40004ffc: d6 02 20 08 ld [ %o0 + 8 ], %o3
40005000: 96 2e c0 0b andn %i3, %o3, %o3
switch (mode & S_IFMT) {
40005004: 03 00 00 3c sethi %hi(0xf000), %g1
40005008: 05 00 00 10 sethi %hi(0x4000), %g2
4000500c: 82 0a c0 01 and %o3, %g1, %g1
40005010: 80 a0 40 02 cmp %g1, %g2
40005014: 22 80 00 0c be,a 40005044 <rtems_filesystem_mknod+0x54>
40005018: c2 06 20 14 ld [ %i0 + 0x14 ], %g1
4000501c: 08 80 00 14 bleu 4000506c <rtems_filesystem_mknod+0x7c>
40005020: 05 00 00 04 sethi %hi(0x1000), %g2
40005024: 05 00 00 18 sethi %hi(0x6000), %g2
40005028: 80 a0 40 02 cmp %g1, %g2
4000502c: 02 80 00 05 be 40005040 <rtems_filesystem_mknod+0x50>
<== NEVER TAKEN
40005030: 05 00 00 20 sethi %hi(0x8000), %g2
40005034: 80 a0 40 02 cmp %g1, %g2
40005038: 12 80 00 13 bne 40005084 <rtems_filesystem_mknod+0x94>
<== NEVER TAKEN
4000503c: 01 00 00 00 nop
rv = -1;
break;
}
if ( rv == 0 ) {
const rtems_filesystem_operations_table *ops = parentloc->mt_entry->ops;
40005040: c2 06 20 14 ld [ %i0 + 0x14 ], %g1
rv = (*ops->mknod_h)( parentloc, name, namelen, mode, dev );
40005044: c2 00 60 0c ld [ %g1 + 0xc ], %g1
40005048: c2 00 60 14 ld [ %g1 + 0x14 ], %g1
4000504c: 98 10 00 1c mov %i4, %o4
40005050: 9a 10 00 1d mov %i5, %o5
40005054: 94 10 00 1a mov %i2, %o2
40005058: 92 10 00 19 mov %i1, %o1
4000505c: 9f c0 40 00 call %g1
40005060: 90 10 00 18 mov %i0, %o0
40005064: 81 c7 e0 08 ret
40005068: 91 e8 00 08 restore %g0, %o0, %o0
switch (mode & S_IFMT) {
4000506c: 80 a0 40 02 cmp %g1, %g2
40005070: 02 bf ff f4 be 40005040 <rtems_filesystem_mknod+0x50>
40005074: 05 00 00 08 sethi %hi(0x2000), %g2
40005078: 80 a0 40 02 cmp %g1, %g2
4000507c: 22 bf ff f2 be,a 40005044 <rtems_filesystem_mknod+0x54>
<== ALWAYS TAKEN
40005080: c2 06 20 14 ld [ %i0 + 0x14 ], %g1
errno = EINVAL;
40005084: 40 00 29 15 call 4000f4d8 <__errno>
<== NOT EXECUTED
40005088: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
4000508c: 82 10 20 16 mov 0x16, %g1
<== NOT EXECUTED
40005090: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
}
return rv;
}
40005094: 81 c7 e0 08 ret
<== NOT EXECUTED
40005098: 81 e8 00 00 restore
<== NOT EXECUTED
400112b8 <rtems_filesystem_null_handlers>:
400112b8: 40 00 66 48 40 00 da 68 40 00 dc bc 40 00 dd 54 @.fH@..h@...@..T
400112c8: 40 00 da f0 40 00 dc 74 40 00 66 50 40 00 da d4 @...@..t@.fP@...
400112d8: 40 00 da 94 40 00 da 94 40 00 da 84 40 00 dc b4 @...@...@...@...
400112e8: 40 00 db 0c 40 00 dc d8 40 00 dd 70 40 00 dc 90 @...@...@..p@...
40004974 <rtems_filesystem_unregister>:
int
rtems_filesystem_unregister(
const char *type
)
{
40004974: 9d e3 bf a0 save %sp, -96, %sp
rtems_chain_control *chain = &filesystem_chain;
rtems_chain_node *node = NULL;
if ( type == NULL ) {
40004978: 80 a6 20 00 cmp %i0, 0
4000497c: 02 80 00 27 be 40004a18 <rtems_filesystem_unregister+0xa4>
40004980: 01 00 00 00 nop
rtems_set_errno_and_return_minus_one( EINVAL );
}
rtems_libio_lock();
40004984: 7f ff fe 88 call 400043a4 <rtems_libio_lock>
40004988: 37 10 00 43 sethi %hi(0x40010c00), %i3
return _Chain_Immutable_head( the_chain )->next;
4000498c: fa 06 e2 84 ld [ %i3 + 0x284 ], %i5 ! 40010e84 <filesystem_chain>
40004990: b6 16 e2 84 or %i3, 0x284, %i3
for (
40004994: b6 06 e0 04 add %i3, 4, %i3
40004998: 80 a7 40 1b cmp %i5, %i3
4000499c: 32 80 00 07 bne,a 400049b8 <rtems_filesystem_unregister+0x44>
400049a0: d0 07 60 08 ld [ %i5 + 8 ], %o0
400049a4: 30 80 00 15 b,a 400049f8 <rtems_filesystem_unregister+0x84>
400049a8: 80 a0 40 1b cmp %g1, %i3
400049ac: 02 80 00 13 be 400049f8 <rtems_filesystem_unregister+0x84>
<== ALWAYS TAKEN
400049b0: ba 10 00 01 mov %g1, %i5
!rtems_chain_is_tail( chain, node );
node = rtems_chain_next( node )
) {
filesystem_node *fsn = (filesystem_node *) node;
if ( strcmp( fsn->entry.type, type ) == 0 ) {
400049b4: d0 07 60 08 ld [ %i5 + 8 ], %o0
<== NOT EXECUTED
400049b8: 40 00 25 67 call 4000df54 <strcmp>
400049bc: 92 10 00 18 mov %i0, %o1
400049c0: c2 07 40 00 ld [ %i5 ], %g1
400049c4: 80 a2 20 00 cmp %o0, 0
400049c8: 12 bf ff f8 bne 400049a8 <rtems_filesystem_unregister+0x34>
400049cc: b8 10 00 08 mov %o0, %i4
previous = the_node->previous;
400049d0: c4 07 60 04 ld [ %i5 + 4 ], %g2
next->previous = previous;
400049d4: c4 20 60 04 st %g2, [ %g1 + 4 ]
rtems_chain_extract_unprotected( node );
free( fsn );
400049d8: 90 10 00 1d mov %i5, %o0
previous->next = next;
400049dc: c2 20 80 00 st %g1, [ %g2 ]
400049e0: 7f ff fd fd call 400041d4 <free>
400049e4: b0 10 00 1c mov %i4, %i0
rtems_libio_unlock();
400049e8: 7f ff fe 74 call 400043b8 <rtems_libio_unlock>
400049ec: 01 00 00 00 nop
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
}
400049f0: 81 c7 e0 08 ret
400049f4: 81 e8 00 00 restore
rtems_libio_unlock();
400049f8: 7f ff fe 70 call 400043b8 <rtems_libio_unlock>
400049fc: b8 10 3f ff mov -1, %i4
rtems_set_errno_and_return_minus_one( ENOENT );
40004a00: 40 00 24 60 call 4000db80 <__errno>
40004a04: 01 00 00 00 nop
40004a08: 82 10 20 02 mov 2, %g1 ! 2 <_TLS_Alignment+0x1>
40004a0c: c2 22 00 00 st %g1, [ %o0 ]
}
40004a10: 81 c7 e0 08 ret
40004a14: 91 e8 00 1c restore %g0, %i4, %o0
rtems_set_errno_and_return_minus_one( EINVAL );
40004a18: 40 00 24 5a call 4000db80 <__errno>
40004a1c: b8 10 3f ff mov -1, %i4
40004a20: 82 10 20 16 mov 0x16, %g1
40004a24: 10 bf ff fb b 40004a10 <rtems_filesystem_unregister+0x9c>
40004a28: c2 22 00 00 st %g1, [ %o0 ]
400046c0 <rtems_gxx_mutex_init>:
/*
* MUTEX support
*/
void rtems_gxx_mutex_init (__gthread_mutex_t *mutex)
{
400046c0: 9d e3 bf a0 save %sp, -96, %sp
#ifdef DEBUG_GXX_WRAPPERS
printk( "gxx_wrappers: mutex init =%X\n", *mutex );
#endif
status = rtems_semaphore_create(
400046c4: 96 10 20 00 clr %o3
400046c8: 98 10 00 18 mov %i0, %o4
400046cc: 94 10 20 54 mov 0x54, %o2
400046d0: 92 10 20 01 mov 1, %o1
400046d4: 11 11 d0 d0 sethi %hi(0x47434000), %o0
400046d8: 40 00 07 48 call 400063f8 <rtems_semaphore_create>
400046dc: 90 12 23 32 or %o0, 0x332, %o0 ! 47434332 <RAM_END+0x7034332>
RTEMS_PRIORITY|RTEMS_BINARY_SEMAPHORE|
RTEMS_INHERIT_PRIORITY|RTEMS_NO_PRIORITY_CEILING|RTEMS_LOCAL,
0,
(rtems_id *)mutex
);
if ( status != RTEMS_SUCCESSFUL ) {
400046e0: 80 a2 20 00 cmp %o0, 0
400046e4: 12 80 00 04 bne 400046f4 <rtems_gxx_mutex_init+0x34>
<== ALWAYS TAKEN
400046e8: 01 00 00 00 nop
_Internal_error( INTERNAL_ERROR_GXX_MUTEX_INIT_FAILED );
}
#ifdef DEBUG_GXX_WRAPPERS
printk( "gxx_wrappers: mutex init complete =%X\n", *mutex );
#endif
}
400046ec: 81 c7 e0 08 ret
<== NOT EXECUTED
400046f0: 81 e8 00 00 restore
<== NOT EXECUTED
_Internal_error( INTERNAL_ERROR_GXX_MUTEX_INIT_FAILED );
400046f4: 40 00 0a e7 call 40007290 <_Internal_error>
400046f8: 90 10 20 16 mov 0x16, %o0
400046fc: 01 00 00 00 nop
<== NOT EXECUTED
400046a0 <rtems_gxx_setspecific>:
#endif
return p;
}
int rtems_gxx_setspecific(__gthread_key_t key, const void *ptr)
{
400046a0: 9d e3 bf a0 save %sp, -96, %sp
pthread_key_t *pkey = key;
int eno;
if ( pkey == NULL ) {
400046a4: 80 a6 20 00 cmp %i0, 0
400046a8: 02 80 00 0a be 400046d0 <rtems_gxx_setspecific+0x30>
<== NEVER TAKEN
400046ac: 01 00 00 00 nop
return EINVAL;
}
eno = pthread_setspecific( *pkey, ptr );
400046b0: d0 06 00 00 ld [ %i0 ], %o0
400046b4: 40 00 07 48 call 400063d4 <pthread_setspecific>
400046b8: 92 10 00 19 mov %i1, %o1
ptr,
rtems_task_self()
);
#endif
if ( eno != 0 ) {
400046bc: b0 92 20 00 orcc %o0, 0, %i0
400046c0: 12 80 00 06 bne 400046d8 <rtems_gxx_setspecific+0x38>
<== ALWAYS TAKEN
400046c4: 01 00 00 00 nop
_Internal_error( INTERNAL_ERROR_GXX_KEY_ADD_FAILED );
}
return 0;
}
400046c8: 81 c7 e0 08 ret
<== NOT EXECUTED
400046cc: 81 e8 00 00 restore
<== NOT EXECUTED
400046d0: 81 c7 e0 08 ret
<== NOT EXECUTED
400046d4: 91 e8 20 16 restore %g0, 0x16, %o0
<== NOT EXECUTED
_Internal_error( INTERNAL_ERROR_GXX_KEY_ADD_FAILED );
400046d8: 40 00 0a cd call 4000720c <_Internal_error>
400046dc: 90 10 20 15 mov 0x15, %o0
400046e0: 01 00 00 00 nop
<== NOT EXECUTED
40004de0 <rtems_heap_allocate_aligned_with_boundary>:
void *rtems_heap_allocate_aligned_with_boundary(
size_t size,
uintptr_t alignment,
uintptr_t boundary
)
{
40004de0: 9d e3 bf a0 save %sp, -96, %sp
40004de4: 03 10 00 52 sethi %hi(0x40014800), %g1
40004de8: c2 00 60 6c ld [ %g1 + 0x6c ], %g1 ! 4001486c <_System_state_Current>
Heap_Control *heap = RTEMS_Malloc_Heap;
40004dec: 05 10 00 4b sethi %hi(0x40012c00), %g2
if ( _System_state_Is_up( state ) ) {
40004df0: 80 a0 60 02 cmp %g1, 2
40004df4: 02 80 00 21 be 40004e78 <rtems_heap_allocate_aligned_with_boundary+0x98>
40004df8: f8 00 a3 64 ld [ %g2 + 0x364 ], %i4
} else if ( _System_state_Is_before_multitasking( state ) ) {
40004dfc: 80 a0 60 01 cmp %g1, 1
40004e00: 02 80 00 22 be 40004e88 <rtems_heap_allocate_aligned_with_boundary+0xa8>
40004e04: 96 10 00 1a mov %i2, %o3
boundary
);
_RTEMS_Unlock_allocator();
break;
case MALLOC_SYSTEM_STATE_NO_PROTECTION:
p = _Heap_Allocate_aligned_with_boundary(
40004e08: 94 10 00 19 mov %i1, %o2
40004e0c: 92 10 00 18 mov %i0, %o1
40004e10: 40 00 0a 51 call 40007754 <_Heap_Allocate_aligned_with_boundary>
40004e14: 90 10 00 1c mov %i4, %o0
40004e18: 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 ) {
40004e1c: 80 a7 60 00 cmp %i5, 0
40004e20: 12 80 00 0b bne 40004e4c <rtems_heap_allocate_aligned_with_boundary+0x6c>
40004e24: 80 a6 60 00 cmp %i1, 0
40004e28: 12 80 00 09 bne 40004e4c <rtems_heap_allocate_aligned_with_boundary+0x6c>
<== NEVER TAKEN
40004e2c: 80 a6 a0 00 cmp %i2, 0
40004e30: 12 80 00 23 bne 40004ebc <rtems_heap_allocate_aligned_with_boundary+0xdc>
<== NEVER TAKEN
40004e34: 03 10 00 43 sethi %hi(0x40010c00), %g1
p = (*rtems_malloc_extend_handler)( heap, size );
40004e38: c2 00 61 18 ld [ %g1 + 0x118 ], %g1 ! 40010d18 <rtems_malloc_extend_handler>
40004e3c: 92 10 00 18 mov %i0, %o1
40004e40: 9f c0 40 00 call %g1
40004e44: 90 10 00 1c mov %i4, %o0
40004e48: ba 10 00 08 mov %o0, %i5
}
/*
* If the user wants us to dirty the allocated memory, then do it.
*/
if ( p != NULL && rtems_malloc_dirty_helper != NULL )
40004e4c: 80 a7 60 00 cmp %i5, 0
40004e50: 02 80 00 1b be 40004ebc <rtems_heap_allocate_aligned_with_boundary+0xdc>
40004e54: 03 10 00 4d sethi %hi(0x40013400), %g1
40004e58: c2 00 61 40 ld [ %g1 + 0x140 ], %g1 ! 40013540 <rtems_malloc_dirty_helper>
40004e5c: 80 a0 60 00 cmp %g1, 0
40004e60: 02 80 00 04 be 40004e70 <rtems_heap_allocate_aligned_with_boundary+0x90>
<== ALWAYS TAKEN
40004e64: 92 10 00 18 mov %i0, %o1
(*rtems_malloc_dirty_helper)( p, size );
40004e68: 9f c0 40 00 call %g1
<== NOT EXECUTED
40004e6c: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
return p;
}
40004e70: 81 c7 e0 08 ret
40004e74: 91 e8 00 1d restore %g0, %i5, %o0
40004e78: c2 01 a0 18 ld [ %g6 + 0x18 ], %g1
if ( _Thread_Dispatch_is_enabled() ) {
40004e7c: 80 a0 60 00 cmp %g1, 0
40004e80: 32 80 00 10 bne,a 40004ec0 <rtems_heap_allocate_aligned_with_boundary+0xe0>
<== NEVER TAKEN
40004e84: ba 10 20 00 clr %i5
<== NOT EXECUTED
_RTEMS_Lock_allocator();
40004e88: 40 00 09 88 call 400074a8 <_RTEMS_Lock_allocator>
40004e8c: 01 00 00 00 nop
_Malloc_Process_deferred_frees();
40004e90: 7f ff ff bb call 40004d7c <_Malloc_Process_deferred_frees>
40004e94: 01 00 00 00 nop
p = _Heap_Allocate_aligned_with_boundary(
40004e98: 96 10 00 1a mov %i2, %o3
40004e9c: 94 10 00 19 mov %i1, %o2
40004ea0: 92 10 00 18 mov %i0, %o1
40004ea4: 40 00 0a 2c call 40007754 <_Heap_Allocate_aligned_with_boundary>
40004ea8: 90 10 00 1c mov %i4, %o0
_RTEMS_Unlock_allocator();
40004eac: 40 00 09 84 call 400074bc <_RTEMS_Unlock_allocator>
40004eb0: ba 10 00 08 mov %o0, %i5
break;
40004eb4: 10 bf ff db b 40004e20 <rtems_heap_allocate_aligned_with_boundary+0x40>
40004eb8: 80 a7 60 00 cmp %i5, 0
return NULL;
40004ebc: ba 10 20 00 clr %i5
}
40004ec0: 81 c7 e0 08 ret
40004ec4: 91 e8 00 1d restore %g0, %i5, %o0
400057ac <rtems_libio_free_user_env>:
if (!uses_global_env) {
400057ac: 03 10 00 4b sethi %hi(0x40012c00), %g1
<== NOT EXECUTED
400057b0: 82 10 63 a8 or %g1, 0x3a8, %g1 ! 40012fa8 <rtems_global_user_env>
<== NOT EXECUTED
400057b4: 80 a0 40 08 cmp %g1, %o0
<== NOT EXECUTED
400057b8: 02 80 00 05 be 400057cc <rtems_libio_free_user_env+0x20>
<== NOT EXECUTED
400057bc: 01 00 00 00 nop
<== NOT EXECUTED
400057c0: 82 13 c0 00 mov %o7, %g1
<== NOT EXECUTED
400057c4: 7f ff ff e6 call 4000575c <rtems_libio_free_user_env.part.1>
<== NOT EXECUTED
400057c8: 9e 10 40 00 mov %g1, %o7
<== NOT EXECUTED
}
}
400057cc: 81 c3 e0 08 retl
<== NOT EXECUTED
400057d0: 01 00 00 00 nop
<== NOT EXECUTED
4000549c <rtems_libio_post_driver>:
/*
* This is a replaceable stub which opens the console, if present.
*/
void rtems_libio_post_driver(void)
{
4000549c: 9d e3 bf a0 save %sp, -96, %sp
/*
* Attempt to open /dev/console.
*/
if ( open( CONSOLE_DEVICE_NAME, O_RDONLY, 0 ) != STDIN_FILENO ) {
400054a0: 94 10 20 00 clr %o2
400054a4: 92 10 20 00 clr %o1
400054a8: 3b 10 00 44 sethi %hi(0x40011000), %i5
400054ac: 40 00 00 1a call 40005514 <open>
400054b0: 90 17 61 c8 or %i5, 0x1c8, %o0 ! 400111c8 <IMFS_node_control_sym_link+0x1c>
400054b4: 80 a2 20 00 cmp %o0, 0
400054b8: 02 80 00 04 be 400054c8 <rtems_libio_post_driver+0x2c>
400054bc: 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);
}
400054c0: 81 c7 e0 08 ret
400054c4: 81 e8 00 00 restore
if ( open( CONSOLE_DEVICE_NAME, O_WRONLY, 0 ) != STDOUT_FILENO ) {
400054c8: 92 10 20 01 mov 1, %o1
400054cc: 40 00 00 12 call 40005514 <open>
400054d0: 90 17 61 c8 or %i5, 0x1c8, %o0
400054d4: 80 a2 20 01 cmp %o0, 1
400054d8: 12 80 00 0a bne 40005500 <rtems_libio_post_driver+0x64>
400054dc: 94 10 20 00 clr %o2
if ( open( CONSOLE_DEVICE_NAME, O_WRONLY, 0 ) != STDERR_FILENO ) {
400054e0: 92 10 20 01 mov 1, %o1
400054e4: 40 00 00 0c call 40005514 <open>
400054e8: 90 17 61 c8 or %i5, 0x1c8, %o0
400054ec: 80 a2 20 02 cmp %o0, 2
400054f0: 12 80 00 06 bne 40005508 <rtems_libio_post_driver+0x6c>
400054f4: 31 10 00 38 sethi %hi(0x4000e000), %i0
atexit(rtems_libio_exit);
400054f8: 40 00 27 f1 call 4000f4bc <atexit>
400054fc: 91 ee 21 c0 restore %i0, 0x1c0, %o0
_Internal_error( INTERNAL_ERROR_LIBIO_STDOUT_FD_OPEN_FAILED );
40005500: 40 00 0a 3c call 40007df0 <_Internal_error>
40005504: 90 10 20 24 mov 0x24, %o0
_Internal_error( INTERNAL_ERROR_LIBIO_STDERR_FD_OPEN_FAILED );
40005508: 40 00 0a 3a call 40007df0 <_Internal_error>
4000550c: 90 10 20 25 mov 0x25, %o0
40005510: 01 00 00 00 nop
<== NOT EXECUTED
4000539c <rtems_libio_set_private_env>:
rtems_status_code rtems_libio_set_private_env(void)
{
4000539c: 9d e3 bf a0 save %sp, -96, %sp
void *ptr = pthread_getspecific(rtems_current_user_env_key);
400053a0: 39 10 00 50 sethi %hi(0x40014000), %i4
400053a4: 40 00 04 4e call 400064dc <pthread_getspecific>
400053a8: d0 07 22 4c ld [ %i4 + 0x24c ], %o0 ! 4001424c <rtems_current_user_env_key>
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_user_env_t *old_env = rtems_current_user_env;
bool uses_global_env = old_env == &rtems_global_user_env;
if (uses_global_env) {
400053ac: 3b 10 00 4a sethi %hi(0x40012800), %i5
400053b0: ba 17 63 a8 or %i5, 0x3a8, %i5 ! 40012ba8 <rtems_global_user_env>
400053b4: 80 a2 00 1d cmp %o0, %i5
400053b8: 02 80 00 04 be 400053c8 <rtems_libio_set_private_env+0x2c>
<== NEVER TAKEN
400053bc: 80 a2 20 00 cmp %o0, 0
400053c0: 12 80 00 30 bne 40005480 <rtems_libio_set_private_env+0xe4>
<== NEVER TAKEN
400053c4: b0 10 20 00 clr %i0
Thread_Life_state life_state =
400053c8: 40 00 1b e0 call 4000c348 <_Thread_Set_life_protection>
400053cc: 90 10 20 01 mov 1, %o0
_Thread_Set_life_protection(THREAD_LIFE_PROTECTED);
rtems_user_env_t *new_env = calloc(1, sizeof(*new_env));
400053d0: 92 10 20 48 mov 0x48, %o1
Thread_Life_state life_state =
400053d4: b4 10 00 08 mov %o0, %i2
if (sc != RTEMS_SUCCESSFUL) {
rtems_libio_free_user_env(new_env);
}
} else {
sc = RTEMS_NO_MEMORY;
400053d8: b0 10 20 1a mov 0x1a, %i0
rtems_user_env_t *new_env = calloc(1, sizeof(*new_env));
400053dc: 7f ff fc 82 call 400045e4 <calloc>
400053e0: 90 10 20 01 mov 1, %o0
if (new_env != NULL) {
400053e4: 80 a2 20 00 cmp %o0, 0
400053e8: 02 80 00 24 be 40005478 <rtems_libio_set_private_env+0xdc>
400053ec: b6 10 00 08 mov %o0, %i3
*new_env = *old_env;
400053f0: 94 10 20 48 mov 0x48, %o2
400053f4: 40 00 27 77 call 4000f1d0 <memcpy>
400053f8: 92 10 00 1d mov %i5, %o1
rtems_filesystem_global_location_obtain(&old_env->root_directory);
400053fc: 40 00 02 c0 call 40005efc <rtems_filesystem_global_location_obtain>
40005400: 90 07 60 04 add %i5, 4, %o0
new_env->root_directory =
40005404: d0 26 e0 04 st %o0, [ %i3 + 4 ]
rtems_filesystem_global_location_obtain(&old_env->current_directory);
40005408: 40 00 02 bd call 40005efc <rtems_filesystem_global_location_obtain>
4000540c: 90 10 00 1d mov %i5, %o0
if (
40005410: c2 06 e0 04 ld [ %i3 + 4 ], %g1
new_env->current_directory =
40005414: d0 26 c0 00 st %o0, [ %i3 ]
if (
40005418: c4 00 60 10 ld [ %g1 + 0x10 ], %g2
4000541c: 03 10 00 44 sethi %hi(0x40011000), %g1
40005420: 82 10 61 c8 or %g1, 0x1c8, %g1 ! 400111c8 <rtems_filesystem_null_handlers>
40005424: 80 a0 80 01 cmp %g2, %g1
40005428: 22 80 00 0f be,a 40005464 <rtems_libio_set_private_env+0xc8>
<== NEVER TAKEN
4000542c: b0 10 20 0d mov 0xd, %i0
<== NOT EXECUTED
&& !rtems_filesystem_global_location_is_null(new_env->current_directory)
40005430: c4 02 20 10 ld [ %o0 + 0x10 ], %g2
40005434: 80 a0 80 01 cmp %g2, %g1
40005438: 02 80 00 0a be 40005460 <rtems_libio_set_private_env+0xc4>
<== NEVER TAKEN
4000543c: d0 07 22 4c ld [ %i4 + 0x24c ], %o0
int eno = pthread_setspecific(
40005440: 92 10 00 1b mov %i3, %o1
40005444: 40 00 04 a1 call 400066c8 <pthread_setspecific>
40005448: b0 10 20 00 clr %i0
if (eno == 0) {
4000544c: 80 a2 20 00 cmp %o0, 0
40005450: 02 80 00 0a be 40005478 <rtems_libio_set_private_env+0xdc>
<== ALWAYS TAKEN
40005454: 01 00 00 00 nop
40005458: 10 80 00 03 b 40005464 <rtems_libio_set_private_env+0xc8>
<== NOT EXECUTED
4000545c: b0 10 20 05 mov 5, %i0 ! 5 <_TLS_Alignment+0x4>
<== NOT EXECUTED
sc = RTEMS_UNSATISFIED;
40005460: b0 10 20 0d mov 0xd, %i0
<== NOT EXECUTED
if (!uses_global_env) {
40005464: 80 a6 c0 1d cmp %i3, %i5
<== NOT EXECUTED
40005468: 02 80 00 04 be 40005478 <rtems_libio_set_private_env+0xdc>
<== NOT EXECUTED
4000546c: 01 00 00 00 nop
<== NOT EXECUTED
40005470: 7f ff ff ad call 40005324 <rtems_libio_free_user_env.part.1>
<== NOT EXECUTED
40005474: 90 10 00 1b mov %i3, %o0
<== NOT EXECUTED
}
_Thread_Set_life_protection(life_state);
40005478: 40 00 1b b4 call 4000c348 <_Thread_Set_life_protection>
4000547c: 90 10 00 1a mov %i2, %o0
}
return sc;
}
40005480: 81 c7 e0 08 ret
40005484: 81 e8 00 00 restore
4000532c <rtems_libio_to_fcntl_flags>:
int rtems_libio_to_fcntl_flags( unsigned int flags )
{
int fcntl_flags = 0;
if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) {
4000532c: 84 0a 20 06 and %o0, 6, %g2
<== NOT EXECUTED
40005330: 80 a0 a0 06 cmp %g2, 6
<== NOT EXECUTED
40005334: 02 80 00 05 be 40005348 <rtems_libio_to_fcntl_flags+0x1c>
<== NOT EXECUTED
40005338: 82 10 20 02 mov 2, %g1
<== NOT EXECUTED
fcntl_flags |= O_RDWR;
} else if ( (flags & LIBIO_FLAGS_READ) == LIBIO_FLAGS_READ) {
4000533c: 80 8a 20 02 btst 2, %o0
<== NOT EXECUTED
40005340: 02 80 00 0b be 4000536c <rtems_libio_to_fcntl_flags+0x40>
<== NOT EXECUTED
40005344: 82 10 20 00 clr %g1
<== NOT EXECUTED
fcntl_flags |= O_RDONLY;
} else if ( (flags & LIBIO_FLAGS_WRITE) == LIBIO_FLAGS_WRITE) {
fcntl_flags |= O_WRONLY;
}
if ( (flags & LIBIO_FLAGS_NO_DELAY) == LIBIO_FLAGS_NO_DELAY ) {
40005348: 80 8a 20 01 btst 1, %o0
<== NOT EXECUTED
4000534c: 02 80 00 04 be 4000535c <rtems_libio_to_fcntl_flags+0x30>
<== NOT EXECUTED
40005350: 80 8a 22 00 btst 0x200, %o0
<== NOT EXECUTED
fcntl_flags |= O_NONBLOCK;
40005354: 05 00 00 10 sethi %hi(0x4000), %g2
<== NOT EXECUTED
40005358: 82 10 40 02 or %g1, %g2, %g1
<== NOT EXECUTED
}
if ( (flags & LIBIO_FLAGS_APPEND) == LIBIO_FLAGS_APPEND ) {
4000535c: 32 80 00 02 bne,a 40005364 <rtems_libio_to_fcntl_flags+0x38>
<== NOT EXECUTED
40005360: 82 10 60 08 or %g1, 8, %g1
<== NOT EXECUTED
fcntl_flags |= O_APPEND;
}
return fcntl_flags;
}
40005364: 81 c3 e0 08 retl
<== NOT EXECUTED
40005368: 90 10 00 01 mov %g1, %o0
<== NOT EXECUTED
} else if ( (flags & LIBIO_FLAGS_WRITE) == LIBIO_FLAGS_WRITE) {
4000536c: 83 32 20 02 srl %o0, 2, %g1
<== NOT EXECUTED
40005370: 10 bf ff f6 b 40005348 <rtems_libio_to_fcntl_flags+0x1c>
<== NOT EXECUTED
40005374: 82 08 60 01 and %g1, 1, %g1
<== NOT EXECUTED
40005488 <rtems_libio_use_global_env>:
void rtems_libio_use_global_env(void)
{
40005488: 9d e3 bf a0 save %sp, -96, %sp
void *ptr = pthread_getspecific(rtems_current_user_env_key);
4000548c: 39 10 00 50 sethi %hi(0x40014000), %i4
40005490: 40 00 04 13 call 400064dc <pthread_getspecific>
40005494: d0 07 22 4c ld [ %i4 + 0x24c ], %o0 ! 4001424c <rtems_current_user_env_key>
rtems_user_env_t *env = rtems_current_user_env;
bool uses_private_env = env != &rtems_global_user_env;
if (uses_private_env) {
40005498: 03 10 00 4a sethi %hi(0x40012800), %g1
4000549c: 82 10 63 a8 or %g1, 0x3a8, %g1 ! 40012ba8 <rtems_global_user_env>
400054a0: 80 a2 00 01 cmp %o0, %g1
400054a4: 02 80 00 0f be 400054e0 <rtems_libio_use_global_env+0x58>
<== NEVER TAKEN
400054a8: ba 10 00 08 mov %o0, %i5
400054ac: 80 a2 20 00 cmp %o0, 0
400054b0: 02 80 00 0c be 400054e0 <rtems_libio_use_global_env+0x58>
<== NEVER TAKEN
400054b4: 01 00 00 00 nop
Thread_Life_state life_state =
400054b8: 40 00 1b a4 call 4000c348 <_Thread_Set_life_protection>
400054bc: 90 10 20 01 mov 1, %o0 ! 1 <_TLS_Alignment>
400054c0: b0 10 00 08 mov %o0, %i0
400054c4: 7f ff ff 98 call 40005324 <rtems_libio_free_user_env.part.1>
400054c8: 90 10 00 1d mov %i5, %o0
_Thread_Set_life_protection(THREAD_LIFE_PROTECTED);
rtems_libio_free_user_env(env);
pthread_setspecific(rtems_current_user_env_key, NULL);
400054cc: d0 07 22 4c ld [ %i4 + 0x24c ], %o0
400054d0: 40 00 04 7e call 400066c8 <pthread_setspecific>
400054d4: 92 10 20 00 clr %o1
_Thread_Set_life_protection(life_state);
400054d8: 40 00 1b 9c call 4000c348 <_Thread_Set_life_protection>
400054dc: 81 e8 00 00 restore
}
}
400054e0: 81 c7 e0 08 ret
<== NOT EXECUTED
400054e4: 81 e8 00 00 restore
<== NOT EXECUTED
40004f58 <rtems_mkdir>:
return (retval);
}
int
rtems_mkdir(const char *path, mode_t mode)
{
40004f58: 9d e3 bf 40 save %sp, -192, %sp
int success = 0;
char *dup_path = strdup(path);
40004f5c: 40 00 23 67 call 4000dcf8 <strdup>
40004f60: 90 10 00 18 mov %i0, %o0
if (dup_path != NULL) {
40004f64: b8 92 20 00 orcc %o0, 0, %i4
40004f68: 02 80 00 6e be 40005120 <rtems_mkdir+0x1c8>
<== NEVER TAKEN
40004f6c: 01 00 00 00 nop
if (p[0] == '/') /* Skip leading '/'. */
40004f70: c2 0f 00 00 ldub [ %i4 ], %g1
40004f74: 83 28 60 18 sll %g1, 0x18, %g1
40004f78: 85 38 60 18 sra %g1, 0x18, %g2
40004f7c: 80 a0 a0 2f cmp %g2, 0x2f
40004f80: 12 80 00 05 bne 40004f94 <rtems_mkdir+0x3c>
40004f84: ba 10 00 1c mov %i4, %i5
40004f88: c2 0f 20 01 ldub [ %i4 + 1 ], %g1
++p;
40004f8c: ba 07 20 01 add %i4, 1, %i5
40004f90: 83 28 60 18 sll %g1, 0x18, %g1
if (p[0] == '\0')
40004f94: 83 38 60 18 sra %g1, 0x18, %g1
40004f98: ba 07 60 01 inc %i5
*p = '/';
40004f9c: b6 10 20 00 clr %i3
40004fa0: 84 10 20 01 mov 1, %g2
40004fa4: b0 10 20 2f mov 0x2f, %i0
} else if (!S_ISDIR(sb.st_mode)) {
40004fa8: 23 00 00 3c sethi %hi(0xf000), %l1
if (p[0] == '\0')
40004fac: 80 a0 60 00 cmp %g1, 0
40004fb0: 02 80 00 18 be 40005010 <rtems_mkdir+0xb8>
<== NEVER TAKEN
40004fb4: 21 00 00 10 sethi %hi(0x4000), %l0
else if (p[0] != '/')
40004fb8: 80 a0 60 2f cmp %g1, 0x2f
40004fbc: 12 80 00 0f bne 40004ff8 <rtems_mkdir+0xa0>
40004fc0: 80 a0 a0 00 cmp %g2, 0
*p = '\0';
40004fc4: c0 2f 7f ff clrb [ %i5 + -1 ]
if (first) {
40004fc8: 12 80 00 5c bne 40005138 <rtems_mkdir+0x1e0>
40004fcc: f4 0f 40 00 ldub [ %i5 ], %i2
if (last)
40004fd0: 80 8e a0 ff btst 0xff, %i2
40004fd4: 02 80 00 17 be 40005030 <rtems_mkdir+0xd8>
<== NEVER TAKEN
40004fd8: 92 10 21 ff mov 0x1ff, %o1
if (mkdir(path, last ? omode : S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
40004fdc: 7f ff fd dd call 40004750 <mkdir>
40004fe0: 90 10 00 1c mov %i4, %o0
40004fe4: 80 a2 20 00 cmp %o0, 0
40004fe8: 06 80 00 1f bl 40005064 <rtems_mkdir+0x10c>
40004fec: b4 10 20 00 clr %i2
*p = '/';
40004ff0: f0 2f 7f ff stb %i0, [ %i5 + -1 ]
40004ff4: 84 10 20 00 clr %g2
40004ff8: c2 0f 40 00 ldub [ %i5 ], %g1
40004ffc: 83 28 60 18 sll %g1, 0x18, %g1
if (p[0] == '\0')
40005000: 83 38 60 18 sra %g1, 0x18, %g1
40005004: 80 a0 60 00 cmp %g1, 0
40005008: 12 bf ff ec bne 40004fb8 <rtems_mkdir+0x60>
4000500c: ba 07 60 01 inc %i5
if (first) {
40005010: 80 a0 a0 00 cmp %g2, 0
40005014: 02 80 00 07 be 40005030 <rtems_mkdir+0xd8>
40005018: 01 00 00 00 nop
oumask = umask(0);
4000501c: 40 00 03 fd call 40006010 <umask>
40005020: 90 10 20 00 clr %o0 ! 0 <PROM_START>
40005024: b6 10 00 08 mov %o0, %i3
(void)umask(numask);
40005028: 40 00 03 fa call 40006010 <umask>
4000502c: 90 0a 3f 3f and %o0, -193, %o0
(void)umask(oumask);
40005030: 40 00 03 f8 call 40006010 <umask>
40005034: 90 10 00 1b mov %i3, %o0
if (mkdir(path, last ? omode : S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
40005038: 92 10 00 19 mov %i1, %o1
4000503c: 7f ff fd c5 call 40004750 <mkdir>
40005040: 90 10 00 1c mov %i4, %o0
40005044: 80 a2 20 00 cmp %o0, 0
40005048: 06 80 00 07 bl 40005064 <rtems_mkdir+0x10c>
4000504c: b4 10 20 01 mov 1, %i2
(void)umask(oumask);
40005050: b0 10 20 00 clr %i0
success = build(dup_path, mode);
free(dup_path);
40005054: 7f ff fc 6a call 400041fc <free>
40005058: 90 10 00 1c mov %i4, %o0
4000505c: 81 c7 e0 08 ret
40005060: 81 e8 00 00 restore
if (errno == EEXIST || errno == EISDIR) {
40005064: 40 00 21 c6 call 4000d77c <__errno>
40005068: 01 00 00 00 nop
4000506c: c2 02 00 00 ld [ %o0 ], %g1
40005070: 80 a0 60 11 cmp %g1, 0x11
40005074: 02 80 00 08 be 40005094 <rtems_mkdir+0x13c>
40005078: 92 07 bf a0 add %fp, -96, %o1
4000507c: 40 00 21 c0 call 4000d77c <__errno>
40005080: 01 00 00 00 nop
40005084: c2 02 00 00 ld [ %o0 ], %g1
40005088: 80 a0 60 15 cmp %g1, 0x15
4000508c: 12 80 00 0f bne 400050c8 <rtems_mkdir+0x170>
<== ALWAYS TAKEN
40005090: 92 07 bf a0 add %fp, -96, %o1
if (stat(path, &sb) < 0) {
40005094: 40 00 00 3c call 40005184 <stat>
40005098: 90 10 00 1c mov %i4, %o0
4000509c: 80 a2 20 00 cmp %o0, 0
400050a0: 06 80 00 0a bl 400050c8 <rtems_mkdir+0x170>
<== NEVER TAKEN
400050a4: c2 07 bf ac ld [ %fp + -84 ], %g1
} else if (!S_ISDIR(sb.st_mode)) {
400050a8: 82 08 40 11 and %g1, %l1, %g1
400050ac: 80 a0 40 10 cmp %g1, %l0
400050b0: 12 80 00 10 bne 400050f0 <rtems_mkdir+0x198>
400050b4: 80 a6 a0 00 cmp %i2, 0
if (last)
400050b8: 32 bf ff e7 bne,a 40005054 <rtems_mkdir+0xfc>
400050bc: b0 10 20 00 clr %i0
*p = '/';
400050c0: 10 bf ff cd b 40004ff4 <rtems_mkdir+0x9c>
400050c4: f0 2f 7f ff stb %i0, [ %i5 + -1 ]
if (!first && !last)
400050c8: 80 a6 a0 00 cmp %i2, 0
400050cc: 32 80 00 17 bne,a 40005128 <rtems_mkdir+0x1d0>
<== ALWAYS TAKEN
400050d0: b0 10 3f ff mov -1, %i0
(void)umask(oumask);
400050d4: 40 00 03 cf call 40006010 <umask>
400050d8: 90 10 00 1b mov %i3, %o0
400050dc: b0 10 3f ff mov -1, %i0
free(dup_path);
400050e0: 7f ff fc 47 call 400041fc <free>
400050e4: 90 10 00 1c mov %i4, %o0
400050e8: 81 c7 e0 08 ret
400050ec: 81 e8 00 00 restore
if (last)
400050f0: 02 80 00 07 be 4000510c <rtems_mkdir+0x1b4>
400050f4: 01 00 00 00 nop
errno = EEXIST;
400050f8: 40 00 21 a1 call 4000d77c <__errno>
400050fc: b0 10 3f ff mov -1, %i0 ! ffffffff <RAM_END+0xbfbfffff>
40005100: 82 10 20 11 mov 0x11, %g1
40005104: 10 bf ff d4 b 40005054 <rtems_mkdir+0xfc>
40005108: c2 22 00 00 st %g1, [ %o0 ]
errno = ENOTDIR;
4000510c: 40 00 21 9c call 4000d77c <__errno>
40005110: 01 00 00 00 nop
40005114: 82 10 20 14 mov 0x14, %g1 ! 14 <_TLS_Alignment+0x13>
40005118: 10 bf ff ef b 400050d4 <rtems_mkdir+0x17c>
4000511c: c2 22 00 00 st %g1, [ %o0 ]
}
return success != 0 ? 0 : -1;
40005120: 81 c7 e0 08 ret
<== NOT EXECUTED
40005124: 91 e8 3f ff restore %g0, -1, %o0
<== NOT EXECUTED
free(dup_path);
40005128: 7f ff fc 35 call 400041fc <free>
4000512c: 90 10 00 1c mov %i4, %o0
}
40005130: 81 c7 e0 08 ret
40005134: 81 e8 00 00 restore
oumask = umask(0);
40005138: 40 00 03 b6 call 40006010 <umask>
4000513c: 90 10 20 00 clr %o0
40005140: b6 10 00 08 mov %o0, %i3
(void)umask(numask);
40005144: 40 00 03 b3 call 40006010 <umask>
40005148: 90 0a 3f 3f and %o0, -193, %o0
if (last)
4000514c: 10 bf ff a2 b 40004fd4 <rtems_mkdir+0x7c>
40005150: 80 8e a0 ff btst 0xff, %i2
4000e41c <rtems_printf>:
int rtems_printf(
const rtems_printer *printer,
const char *format,
...
)
{
4000e41c: 9d e3 bf 98 save %sp, -104, %sp
int len = 0;
if ( rtems_print_printer_valid( printer ) ) {
va_list ap;
va_start( ap, format );
4000e420: f4 27 a0 4c st %i2, [ %fp + 0x4c ]
{
4000e424: 82 10 00 18 mov %i0, %g1
va_start( ap, format );
4000e428: f6 27 a0 50 st %i3, [ %fp + 0x50 ]
int len = 0;
4000e42c: b0 10 20 00 clr %i0
va_start( ap, format );
4000e430: f8 27 a0 54 st %i4, [ %fp + 0x54 ]
4000e434: 80 a0 60 00 cmp %g1, 0
4000e438: 02 80 00 0b be 4000e464 <rtems_printf+0x48>
<== NEVER TAKEN
4000e43c: fa 27 a0 58 st %i5, [ %fp + 0x58 ]
4000e440: c4 00 60 04 ld [ %g1 + 4 ], %g2
4000e444: 80 a0 a0 00 cmp %g2, 0
4000e448: 02 80 00 07 be 4000e464 <rtems_printf+0x48>
<== NEVER TAKEN
4000e44c: 94 07 a0 4c add %fp, 0x4c, %o2
len = printer->printer( printer->context, format, ap );
4000e450: d0 00 40 00 ld [ %g1 ], %o0
4000e454: 92 10 00 19 mov %i1, %o1
4000e458: 9f c0 80 00 call %g2
4000e45c: d4 27 bf fc st %o2, [ %fp + -4 ]
4000e460: b0 10 00 08 mov %o0, %i0
va_end( ap );
}
return len;
}
4000e464: 81 c7 e0 08 ret
4000e468: 81 e8 00 00 restore
40004cb8 <rtems_resource_snapshot_take>:
return count;
}
void rtems_resource_snapshot_take(rtems_resource_snapshot *snapshot)
{
40004cb8: 9d e3 bf 98 save %sp, -104, %sp
uint32_t *active;
size_t i;
memset(snapshot, 0, sizeof(*snapshot));
40004cbc: 94 10 20 f8 mov 0xf8, %o2
40004cc0: 92 10 20 00 clr %o1
40004cc4: 40 00 24 c0 call 4000dfc4 <memset>
40004cc8: 90 10 00 18 mov %i0, %o0
_RTEMS_Lock_allocator();
40004ccc: 40 00 06 07 call 400064e8 <_RTEMS_Lock_allocator>
40004cd0: 3b 10 00 3e sethi %hi(0x4000f800), %i5
_Thread_Kill_zombies();
40004cd4: 40 00 18 90 call 4000af14 <_Thread_Kill_zombies>
40004cd8: b8 06 20 b4 add %i0, 0xb4, %i4
get_heap_info(RTEMS_Malloc_Heap, &snapshot->heap_info);
40004cdc: 03 10 00 44 sethi %hi(0x40011000), %g1
_Heap_Get_information(heap, info);
40004ce0: d0 00 62 8c ld [ %g1 + 0x28c ], %o0 ! 4001128c <RTEMS_Malloc_Heap>
40004ce4: 40 00 07 21 call 40006968 <_Heap_Get_information>
40004ce8: 92 06 20 58 add %i0, 0x58, %o1
memset(&info->Stats, 0, sizeof(info->Stats));
40004cec: 94 10 20 40 mov 0x40, %o2
40004cf0: 92 10 20 00 clr %o1
40004cf4: 40 00 24 b4 call 4000dfc4 <memset>
40004cf8: 90 06 20 70 add %i0, 0x70, %o0
_Heap_Get_information(heap, info);
40004cfc: 92 10 00 18 mov %i0, %o1
40004d00: 11 10 00 4b sethi %hi(0x40012c00), %o0
40004d04: 40 00 07 19 call 40006968 <_Heap_Get_information>
40004d08: 90 12 22 a0 or %o0, 0x2a0, %o0 ! 40012ea0 <_Workspace_Area>
memset(&info->Stats, 0, sizeof(info->Stats));
40004d0c: 92 10 20 00 clr %o1
40004d10: 94 10 20 40 mov 0x40, %o2
40004d14: 40 00 24 ac call 4000dfc4 <memset>
40004d18: 90 06 20 18 add %i0, 0x18, %o0
40004d1c: ba 17 60 98 or %i5, 0x98, %i5
get_heap_info(&_Workspace_Area, &snapshot->workspace_info);
active = &snapshot->active_posix_keys;
40004d20: 92 10 20 02 mov 2, %o1
40004d24: 90 10 20 03 mov 3, %o0
40004d28: 10 80 00 05 b 40004d3c <rtems_resource_snapshot_take+0x84>
40004d2c: b6 07 60 70 add %i5, 0x70, %i3
40004d30: d0 07 40 00 ld [ %i5 ], %o0
40004d34: d2 17 60 04 lduh [ %i5 + 4 ], %o1
40004d38: ba 07 60 08 add %i5, 8, %i5
for (i = 0; i < RTEMS_ARRAY_SIZE(objects_info_table); ++i) {
const Objects_Information *information;
information = _Objects_Get_information(
40004d3c: 93 2a 60 10 sll %o1, 0x10, %o1
40004d40: 40 00 0d de call 400084b8 <_Objects_Get_information>
40004d44: 93 32 60 10 srl %o1, 0x10, %o1
objects_info_table[i].api,
objects_info_table[i].cls
);
if (information != NULL) {
40004d48: 80 a2 20 00 cmp %o0, 0
40004d4c: 02 80 00 08 be 40004d6c <rtems_resource_snapshot_take+0xb4>
40004d50: 80 a7 40 1b cmp %i5, %i3
active[i] = _Objects_Active_count(information);
40004d54: 40 00 0c 9e call 40007fcc <_Objects_Active_count>
40004d58: 01 00 00 00 nop
40004d5c: 91 2a 20 10 sll %o0, 0x10, %o0
40004d60: 91 32 20 10 srl %o0, 0x10, %o0
40004d64: d0 27 00 00 st %o0, [ %i4 ]
for (i = 0; i < RTEMS_ARRAY_SIZE(objects_info_table); ++i) {
40004d68: 80 a7 40 1b cmp %i5, %i3
40004d6c: 12 bf ff f1 bne 40004d30 <rtems_resource_snapshot_take+0x78>
40004d70: b8 07 20 04 add %i4, 4, %i4
}
}
_RTEMS_Unlock_allocator();
40004d74: 40 00 05 e2 call 400064fc <_RTEMS_Unlock_allocator>
40004d78: 39 10 00 4a sethi %hi(0x40012800), %i4
uint32_t count = 0;
40004d7c: ba 10 20 00 clr %i5
Objects_Id id = OBJECTS_ID_INITIAL_INDEX;
40004d80: c0 27 bf fc clr [ %fp + -4 ]
40004d84: 90 10 20 00 clr %o0
return (POSIX_Keys_Control *)
40004d88: 10 80 00 07 b 40004da4 <rtems_resource_snapshot_take+0xec>
40004d8c: b8 17 21 24 or %i4, 0x124, %i4
count += _Chain_Node_count_unprotected(&the_key->Key_value_pairs);
40004d90: 40 00 06 03 call 4000659c <_Chain_Node_count_unprotected>
40004d94: 01 00 00 00 nop
* previous thread life protection state and thus may not return if the
* executing thread was restarted or deleted in the mean-time.
*/
RTEMS_INLINE_ROUTINE void _Objects_Allocator_unlock( void )
{
_RTEMS_Unlock_allocator();
40004d98: 40 00 05 d9 call 400064fc <_RTEMS_Unlock_allocator>
40004d9c: ba 07 40 08 add %i5, %o0, %i5
40004da0: d0 07 bf fc ld [ %fp + -4 ], %o0
return (POSIX_Keys_Control *)
40004da4: 94 07 bf fc add %fp, -4, %o2
40004da8: 40 00 0d e1 call 4000852c <_Objects_Get_next>
40004dac: 92 10 00 1c mov %i4, %o1
40004db0: 82 10 00 08 mov %o0, %g1
while ((the_key = get_next_key(&id)) != NULL ) {
40004db4: 80 a0 60 00 cmp %g1, 0
40004db8: 12 bf ff f6 bne 40004d90 <rtems_resource_snapshot_take+0xd8>
40004dbc: 90 02 20 14 add %o0, 0x14, %o0
snapshot->active_posix_key_value_pairs = get_active_posix_key_value_pairs();
40004dc0: fa 26 20 b0 st %i5, [ %i0 + 0xb0 ]
rtems_libio_lock();
40004dc4: 7f ff fd 0e call 400041fc <rtems_libio_lock>
40004dc8: ba 10 20 00 clr %i5
iop = rtems_libio_iop_free_head;
40004dcc: 03 10 00 4a sethi %hi(0x40012800), %g1
40004dd0: c2 00 61 1c ld [ %g1 + 0x11c ], %g1 ! 4001291c <rtems_libio_iop_free_head>
while (iop != NULL) {
40004dd4: 80 a0 60 00 cmp %g1, 0
40004dd8: 02 80 00 06 be 40004df0 <rtems_resource_snapshot_take+0x138>
<== ALWAYS TAKEN
40004ddc: 01 00 00 00 nop
iop = iop->data1;
40004de0: c2 00 60 28 ld [ %g1 + 0x28 ], %g1
<== NOT EXECUTED
while (iop != NULL) {
40004de4: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
40004de8: 12 bf ff fe bne 40004de0 <rtems_resource_snapshot_take+0x128>
<== NOT EXECUTED
40004dec: ba 07 60 01 inc %i5
<== NOT EXECUTED
rtems_libio_unlock();
40004df0: 7f ff fd 08 call 40004210 <rtems_libio_unlock>
40004df4: 01 00 00 00 nop
return (int) rtems_libio_number_iops - free_count;
40004df8: 03 10 00 3d sethi %hi(0x4000f400), %g1
40004dfc: c2 00 61 30 ld [ %g1 + 0x130 ], %g1 ! 4000f530 <rtems_libio_number_iops>
40004e00: ba 20 40 1d sub %g1, %i5, %i5
snapshot->open_files = open_files();
40004e04: fa 26 20 f0 st %i5, [ %i0 + 0xf0 ]
}
40004e08: 81 c7 e0 08 ret
40004e0c: 81 e8 00 00 restore
40014d68 <rtems_termios_baud_table>:
40014d68: 40 01 4c a0 00 00 00 00 00 00 00 00 40 01 4c a8 @.L.........@.L.
40014d78: 00 00 00 32 00 00 00 32 40 01 4c b0 00 00 00 4b ...2...2@.L....K
40014d88: 00 00 00 4b 40 01 4c b8 00 00 00 6e 00 00 00 6e ...K@.L....n...n
40014d98: 40 01 4c c0 00 00 00 86 00 00 00 86 40 01 4c c8 @.L.........@.L.
40014da8: 00 00 00 96 00 00 00 96 40 01 4c d0 00 00 00 c8 ........@.L.....
40014db8: 00 00 00 c8 40 01 4c d8 00 00 01 2c 00 00 01 2c ....@.L....,...,
40014dc8: 40 01 4c e0 00 00 02 58 00 00 02 58 40 01 4c e8 @.L....X...X@.L.
40014dd8: 00 00 04 b0 00 00 04 b0 40 01 4c f0 00 00 07 08 ........@.L.....
40014de8: 00 00 07 08 40 01 4c f8 00 00 09 60 00 00 09 60 ....@.L....`...`
40014df8: 40 01 4d 00 00 00 12 c0 00 00 12 c0 40 01 4d 08 @.M.........@.M.
40014e08: 00 00 25 80 00 00 25 80 40 01 4d 10 00 00 4b 00 ..%...%.@.M...K.
40014e18: 00 00 4b 00 40 01 4d 18 00 00 96 00 00 00 96 00 ..K.@.M.........
40014e28: 40 01 4d 20 00 00 1c 20 00 00 1c 20 40 01 4d 28 @.M ... ... @.M(
40014e38: 00 00 38 40 00 00 38 40 40 01 4d 30 00 00 70 80 ..8@..8@@.M0..p.
40014e48: 00 00 70 80 40 01 4d 38 00 00 e1 00 00 00 e1 00 ..p.@.M8........
40014e58: 40 01 4d 40 00 01 2c 00 00 01 2c 00 40 01 4d 48 @.M@..,...,.@.MH
40014e68: 00 01 c2 00 00 01 c2 00 40 01 4d 50 00 03 84 00 ........@.MP....
40014e78: 00 03 84 00 40 01 4d 58 00 07 08 00 00 07 08 00 ....@.MX........
40014e88: 40 01 4d 60 00 0e 10 00 00 0e 10 00 00 00 00 00 @.M`............
...
40014ea0: 74 65 72 6d 69 6f 73 20 69 6e 70 75 74 00 00 00 termios input...
40014eb0: 74 65 72 6d 69 6f 73 20 6f 75 74 70 75 74 00 00 termios output..
40014ec0: 74 65 72 6d 69 6f 73 20 72 61 77 20 6f 75 74 70 termios raw outp
40014ed0: 75 74 00 00 00 00 00 00 74 65 72 6d 69 6f 73 20 ut......termios
40014ee0: 64 65 76 69 63 65 00 00 74 65 72 6d 69 6f 73 20 device..termios
40014ef0: 72 61 77 20 69 6e 70 75 74 00 00 00 00 00 00 00 raw input.......
40014f00: 08 00 00 00 00 00 00 00 08 20 08 00 ......... ..
40006d4c <rtems_termios_baud_to_index>:
rtems_termios_baud_t termios_baud
)
{
int baud_index;
switch (termios_baud) {
40006d4c: 05 00 00 04 sethi %hi(0x1000), %g2
40006d50: 84 10 a2 c0 or %g2, 0x2c0, %g2 ! 12c0 <_Configuration_Interrupt_stack_size+0x2c0>
40006d54: 80 a2 00 02 cmp %o0, %g2
40006d58: 02 80 00 7d be 40006f4c <rtems_termios_baud_to_index+0x200>
<== NEVER TAKEN
40006d5c: 82 10 00 08 mov %o0, %g1
40006d60: 18 80 00 14 bgu 40006db0 <rtems_termios_baud_to_index+0x64>
<== ALWAYS TAKEN
40006d64: 80 a2 20 96 cmp %o0, 0x96
40006d68: 02 80 00 7b be 40006f54 <rtems_termios_baud_to_index+0x208>
<== NOT EXECUTED
40006d6c: 01 00 00 00 nop
<== NOT EXECUTED
40006d70: 08 80 00 2a bleu 40006e18 <rtems_termios_baud_to_index+0xcc>
<== NOT EXECUTED
40006d74: 80 a2 22 58 cmp %o0, 0x258
<== NOT EXECUTED
40006d78: 02 80 00 73 be 40006f44 <rtems_termios_baud_to_index+0x1f8>
<== NOT EXECUTED
40006d7c: 01 00 00 00 nop
<== NOT EXECUTED
40006d80: 08 80 00 46 bleu 40006e98 <rtems_termios_baud_to_index+0x14c>
<== NOT EXECUTED
40006d84: 80 a0 67 08 cmp %g1, 0x708
<== NOT EXECUTED
40006d88: 02 80 00 22 be 40006e10 <rtems_termios_baud_to_index+0xc4>
<== NOT EXECUTED
40006d8c: 90 10 20 0a mov 0xa, %o0
<== NOT EXECUTED
40006d90: 80 a0 69 60 cmp %g1, 0x960
<== NOT EXECUTED
40006d94: 02 80 00 1f be 40006e10 <rtems_termios_baud_to_index+0xc4>
<== NOT EXECUTED
40006d98: 90 10 20 0b mov 0xb, %o0
<== NOT EXECUTED
40006d9c: 80 a0 64 b0 cmp %g1, 0x4b0
<== NOT EXECUTED
40006da0: 02 80 00 1c be 40006e10 <rtems_termios_baud_to_index+0xc4>
<== NOT EXECUTED
40006da4: 90 10 20 09 mov 9, %o0
<== NOT EXECUTED
case B921600: baud_index = 24; break;
default: baud_index = -1; break;
}
return baud_index;
}
40006da8: 81 c3 e0 08 retl
<== NOT EXECUTED
40006dac: 90 10 3f ff mov -1, %o0
<== NOT EXECUTED
switch (termios_baud) {
40006db0: 05 00 00 25 sethi %hi(0x9400), %g2
40006db4: 84 10 a2 00 or %g2, 0x200, %g2 ! 9600 <_Configuration_Interrupt_stack_size+0x8600>
40006db8: 80 a2 00 02 cmp %o0, %g2
40006dbc: 02 80 00 60 be 40006f3c <rtems_termios_baud_to_index+0x1f0>
40006dc0: 01 00 00 00 nop
40006dc4: 08 80 00 22 bleu 40006e4c <rtems_termios_baud_to_index+0x100>
40006dc8: 05 00 00 70 sethi %hi(0x1c000), %g2
40006dcc: 84 10 a2 00 or %g2, 0x200, %g2 ! 1c200 <_Configuration_Interrupt_stack_size+0x1b200>
40006dd0: 80 a2 00 02 cmp %o0, %g2
40006dd4: 02 80 00 62 be 40006f5c <rtems_termios_baud_to_index+0x210>
40006dd8: 01 00 00 00 nop
40006ddc: 08 80 00 37 bleu 40006eb8 <rtems_termios_baud_to_index+0x16c>
40006de0: 05 00 01 c2 sethi %hi(0x70800), %g2
40006de4: 80 a0 40 02 cmp %g1, %g2
40006de8: 02 80 00 0a be 40006e10 <rtems_termios_baud_to_index+0xc4>
<== ALWAYS TAKEN
40006dec: 90 10 20 17 mov 0x17, %o0
40006df0: 05 00 03 84 sethi %hi(0xe1000), %g2
<== NOT EXECUTED
40006df4: 80 a0 40 02 cmp %g1, %g2
<== NOT EXECUTED
40006df8: 02 80 00 06 be 40006e10 <rtems_termios_baud_to_index+0xc4>
<== NOT EXECUTED
40006dfc: 90 10 20 18 mov 0x18, %o0
<== NOT EXECUTED
40006e00: 05 00 00 e1 sethi %hi(0x38400), %g2
<== NOT EXECUTED
40006e04: 80 a0 40 02 cmp %g1, %g2
<== NOT EXECUTED
40006e08: 12 bf ff e8 bne 40006da8 <rtems_termios_baud_to_index+0x5c>
<== NOT EXECUTED
40006e0c: 90 10 20 16 mov 0x16, %o0
<== NOT EXECUTED
40006e10: 81 c3 e0 08 retl
40006e14: 01 00 00 00 nop
40006e18: 80 a2 20 4b cmp %o0, 0x4b
<== NOT EXECUTED
40006e1c: 02 80 00 46 be 40006f34 <rtems_termios_baud_to_index+0x1e8>
<== NOT EXECUTED
40006e20: 01 00 00 00 nop
<== NOT EXECUTED
40006e24: 18 80 00 3b bgu 40006f10 <rtems_termios_baud_to_index+0x1c4>
<== NOT EXECUTED
40006e28: 80 a0 60 6e cmp %g1, 0x6e
<== NOT EXECUTED
40006e2c: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
40006e30: 02 bf ff f8 be 40006e10 <rtems_termios_baud_to_index+0xc4>
<== NOT EXECUTED
40006e34: 90 10 20 00 clr %o0
<== NOT EXECUTED
40006e38: 80 a0 60 32 cmp %g1, 0x32
<== NOT EXECUTED
40006e3c: 12 bf ff db bne 40006da8 <rtems_termios_baud_to_index+0x5c>
<== NOT EXECUTED
40006e40: 90 10 20 01 mov 1, %o0
<== NOT EXECUTED
}
40006e44: 81 c3 e0 08 retl
<== NOT EXECUTED
40006e48: 01 00 00 00 nop
<== NOT EXECUTED
switch (termios_baud) {
40006e4c: 05 00 00 0e sethi %hi(0x3800), %g2
40006e50: 84 10 a0 40 or %g2, 0x40, %g2 ! 3840 <_Configuration_Interrupt_stack_size+0x2840>
40006e54: 80 a2 00 02 cmp %o0, %g2
40006e58: 02 80 00 35 be 40006f2c <rtems_termios_baud_to_index+0x1e0>
<== NEVER TAKEN
40006e5c: 01 00 00 00 nop
40006e60: 18 80 00 21 bgu 40006ee4 <rtems_termios_baud_to_index+0x198>
40006e64: 05 00 00 12 sethi %hi(0x4800), %g2
40006e68: 05 00 00 07 sethi %hi(0x1c00), %g2
40006e6c: 84 10 a0 20 or %g2, 0x20, %g2 ! 1c20 <_Configuration_Interrupt_stack_size+0xc20>
40006e70: 80 a0 40 02 cmp %g1, %g2
40006e74: 02 bf ff e7 be 40006e10 <rtems_termios_baud_to_index+0xc4>
<== NEVER TAKEN
40006e78: 90 10 20 10 mov 0x10, %o0
40006e7c: 05 00 00 09 sethi %hi(0x2400), %g2
40006e80: 84 10 a1 80 or %g2, 0x180, %g2 ! 2580 <_Configuration_Interrupt_stack_size+0x1580>
40006e84: 80 a0 40 02 cmp %g1, %g2
40006e88: 12 bf ff c8 bne 40006da8 <rtems_termios_baud_to_index+0x5c>
<== NEVER TAKEN
40006e8c: 90 10 20 0d mov 0xd, %o0
}
40006e90: 81 c3 e0 08 retl
40006e94: 01 00 00 00 nop
switch (termios_baud) {
40006e98: 80 a0 60 c8 cmp %g1, 0xc8
<== NOT EXECUTED
40006e9c: 02 bf ff dd be 40006e10 <rtems_termios_baud_to_index+0xc4>
<== NOT EXECUTED
40006ea0: 90 10 20 06 mov 6, %o0
<== NOT EXECUTED
40006ea4: 80 a0 61 2c cmp %g1, 0x12c
<== NOT EXECUTED
40006ea8: 12 bf ff c0 bne 40006da8 <rtems_termios_baud_to_index+0x5c>
<== NOT EXECUTED
40006eac: 90 10 20 07 mov 7, %o0
<== NOT EXECUTED
}
40006eb0: 81 c3 e0 08 retl
<== NOT EXECUTED
40006eb4: 01 00 00 00 nop
<== NOT EXECUTED
switch (termios_baud) {
40006eb8: 05 00 00 38 sethi %hi(0xe000), %g2
40006ebc: 84 10 a1 00 or %g2, 0x100, %g2 ! e100 <_Configuration_Interrupt_stack_size+0xd100>
40006ec0: 80 a0 40 02 cmp %g1, %g2
40006ec4: 02 bf ff d3 be 40006e10 <rtems_termios_baud_to_index+0xc4>
<== ALWAYS TAKEN
40006ec8: 90 10 20 13 mov 0x13, %o0
40006ecc: 05 00 00 4b sethi %hi(0x12c00), %g2
<== NOT EXECUTED
40006ed0: 80 a0 40 02 cmp %g1, %g2
<== NOT EXECUTED
40006ed4: 12 bf ff b5 bne 40006da8 <rtems_termios_baud_to_index+0x5c>
<== NOT EXECUTED
40006ed8: 90 10 20 14 mov 0x14, %o0
<== NOT EXECUTED
}
40006edc: 81 c3 e0 08 retl
<== NOT EXECUTED
40006ee0: 01 00 00 00 nop
<== NOT EXECUTED
switch (termios_baud) {
40006ee4: 84 10 a3 00 or %g2, 0x300, %g2
40006ee8: 80 a0 40 02 cmp %g1, %g2
40006eec: 02 bf ff c9 be 40006e10 <rtems_termios_baud_to_index+0xc4>
<== ALWAYS TAKEN
40006ef0: 90 10 20 0e mov 0xe, %o0
40006ef4: 05 00 00 1c sethi %hi(0x7000), %g2
<== NOT EXECUTED
40006ef8: 84 10 a0 80 or %g2, 0x80, %g2 ! 7080 <_Configuration_Interrupt_stack_size+0x6080>
<== NOT EXECUTED
40006efc: 80 a0 40 02 cmp %g1, %g2
<== NOT EXECUTED
40006f00: 12 bf ff aa bne 40006da8 <rtems_termios_baud_to_index+0x5c>
<== NOT EXECUTED
40006f04: 90 10 20 12 mov 0x12, %o0
<== NOT EXECUTED
}
40006f08: 81 c3 e0 08 retl
<== NOT EXECUTED
40006f0c: 01 00 00 00 nop
<== NOT EXECUTED
switch (termios_baud) {
40006f10: 02 bf ff c0 be 40006e10 <rtems_termios_baud_to_index+0xc4>
<== NOT EXECUTED
40006f14: 90 10 20 03 mov 3, %o0 ! 3 <_TLS_Alignment+0x2>
<== NOT EXECUTED
40006f18: 80 a0 60 86 cmp %g1, 0x86
<== NOT EXECUTED
40006f1c: 12 bf ff a3 bne 40006da8 <rtems_termios_baud_to_index+0x5c>
<== NOT EXECUTED
40006f20: 90 10 20 04 mov 4, %o0
<== NOT EXECUTED
}
40006f24: 81 c3 e0 08 retl
<== NOT EXECUTED
40006f28: 01 00 00 00 nop
<== NOT EXECUTED
case B14400: baud_index = 17; break;
40006f2c: 81 c3 e0 08 retl
<== NOT EXECUTED
40006f30: 90 10 20 11 mov 0x11, %o0 ! 11 <_TLS_Alignment+0x10>
<== NOT EXECUTED
case B75: baud_index = 2; break;
40006f34: 81 c3 e0 08 retl
<== NOT EXECUTED
40006f38: 90 10 20 02 mov 2, %o0
<== NOT EXECUTED
case B38400: baud_index = 15; break;
40006f3c: 81 c3 e0 08 retl
40006f40: 90 10 20 0f mov 0xf, %o0
case B600: baud_index = 8; break;
40006f44: 81 c3 e0 08 retl
<== NOT EXECUTED
40006f48: 90 10 20 08 mov 8, %o0
<== NOT EXECUTED
case B4800: baud_index = 12; break;
40006f4c: 81 c3 e0 08 retl
<== NOT EXECUTED
40006f50: 90 10 20 0c mov 0xc, %o0
<== NOT EXECUTED
case B150: baud_index = 5; break;
40006f54: 81 c3 e0 08 retl
<== NOT EXECUTED
40006f58: 90 10 20 05 mov 5, %o0
<== NOT EXECUTED
case B115200: baud_index = 21; break;
40006f5c: 81 c3 e0 08 retl
40006f60: 90 10 20 15 mov 0x15, %o0
40008ef8 <rtems_termios_device_install>:
{
40008ef8: 9d e3 bf a0 save %sp, -96, %sp
new_device_node = calloc (1, sizeof(*new_device_node));
40008efc: 92 10 20 20 mov 0x20, %o1
40008f00: 7f ff f1 f6 call 400056d8 <calloc>
40008f04: 90 10 20 01 mov 1, %o0
return RTEMS_NO_MEMORY;
40008f08: 82 10 20 1a mov 0x1a, %g1
if (new_device_node == NULL) {
40008f0c: 80 a2 20 00 cmp %o0, 0
40008f10: 02 80 00 10 be 40008f50 <rtems_termios_device_install+0x58>
<== NEVER TAKEN
40008f14: ba 10 00 08 mov %o0, %i5
new_device_node->handler = handler;
40008f18: f2 22 20 10 st %i1, [ %o0 + 0x10 ]
rv = IMFS_make_generic_node(
40008f1c: 96 10 00 08 mov %o0, %o3
new_device_node->flow = flow;
40008f20: f4 22 20 14 st %i2, [ %o0 + 0x14 ]
rv = IMFS_make_generic_node(
40008f24: 15 10 00 53 sethi %hi(0x40014c00), %o2
new_device_node->context = context;
40008f28: f6 22 20 18 st %i3, [ %o0 + 0x18 ]
rv = IMFS_make_generic_node(
40008f2c: 94 12 a3 4c or %o2, 0x34c, %o2
new_device_node->tty = NULL;
40008f30: c0 22 20 1c clr [ %o0 + 0x1c ]
rv = IMFS_make_generic_node(
40008f34: 13 00 00 08 sethi %hi(0x2000), %o1
40008f38: 90 10 00 18 mov %i0, %o0
40008f3c: 40 00 22 2b call 400117e8 <IMFS_make_generic_node>
40008f40: 92 12 61 ff or %o1, 0x1ff, %o1
if (rv != 0) {
40008f44: 80 a2 20 00 cmp %o0, 0
40008f48: 12 80 00 04 bne 40008f58 <rtems_termios_device_install+0x60>
<== NEVER TAKEN
40008f4c: 82 10 20 00 clr %g1
}
40008f50: 81 c7 e0 08 ret
40008f54: 91 e8 00 01 restore %g0, %g1, %o0
free (new_device_node);
40008f58: 7f ff f2 05 call 4000576c <free>
<== NOT EXECUTED
40008f5c: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
return RTEMS_UNSATISFIED;
40008f60: 82 10 20 0d mov 0xd, %g1
<== NOT EXECUTED
}
40008f64: 81 c7 e0 08 ret
<== NOT EXECUTED
40008f68: 91 e8 00 01 restore %g0, %g1, %o0
<== NOT EXECUTED
40007340 <rtems_termios_device_lock_acquire_default>:
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40007340: 91 d0 20 09 ta 9
<== NOT EXECUTED
rtems_termios_device_lock_acquire_default(
rtems_termios_device_context *ctx,
rtems_interrupt_lock_context *lock_context
)
{
rtems_interrupt_lock_acquire (&ctx->lock.interrupt, lock_context);
40007344: c2 22 40 00 st %g1, [ %o1 ]
}
40007348: 81 c3 e0 08 retl
4000734c: 01 00 00 00 nop
40007350 <rtems_termios_device_lock_release_default>:
register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */
40007350: c2 02 40 00 ld [ %o1 ], %g1
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40007354: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40007358: 01 00 00 00 nop
rtems_termios_device_context *ctx,
rtems_interrupt_lock_context *lock_context
)
{
rtems_interrupt_lock_release (&ctx->lock.interrupt, lock_context);
}
4000735c: 81 c3 e0 08 retl
40007360: 01 00 00 00 nop
40009590 <rtems_termios_enqueue_raw_characters>:
{
40009590: 9d e3 bf 98 save %sp, -104, %sp
<== NOT EXECUTED
if (rtems_termios_linesw[tty->t_line].l_rint != NULL) {
40009594: c2 06 21 5c ld [ %i0 + 0x15c ], %g1
<== NOT EXECUTED
40009598: 83 28 60 05 sll %g1, 5, %g1
<== NOT EXECUTED
4000959c: 39 10 00 60 sethi %hi(0x40018000), %i4
<== NOT EXECUTED
400095a0: b8 17 20 48 or %i4, 0x48, %i4 ! 40018048 <rtems_termios_linesw>
<== NOT EXECUTED
400095a4: 82 07 00 01 add %i4, %g1, %g1
<== NOT EXECUTED
400095a8: c2 00 60 10 ld [ %g1 + 0x10 ], %g1
<== NOT EXECUTED
400095ac: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
400095b0: 02 80 00 25 be 40009644 <rtems_termios_enqueue_raw_characters+0xb4>
<== NOT EXECUTED
400095b4: ba 10 00 18 mov %i0, %i5
<== NOT EXECUTED
while (len--) {
400095b8: 80 a6 a0 00 cmp %i2, 0
<== NOT EXECUTED
400095bc: 22 80 00 0f be,a 400095f8 <rtems_termios_enqueue_raw_characters+0x68>
<== NOT EXECUTED
400095c0: c2 07 61 6c ld [ %i5 + 0x16c ], %g1
<== NOT EXECUTED
400095c4: 10 80 00 05 b 400095d8 <rtems_termios_enqueue_raw_characters+0x48>
<== NOT EXECUTED
400095c8: b4 06 40 1a add %i1, %i2, %i2
<== NOT EXECUTED
400095cc: 83 28 60 05 sll %g1, 5, %g1
<== NOT EXECUTED
400095d0: 82 07 00 01 add %i4, %g1, %g1
<== NOT EXECUTED
400095d4: c2 00 60 10 ld [ %g1 + 0x10 ], %g1
<== NOT EXECUTED
c = *buf++;
400095d8: b2 06 60 01 inc %i1
<== NOT EXECUTED
rtems_termios_linesw[tty->t_line].l_rint(c,tty);
400095dc: d0 4e 7f ff ldsb [ %i1 + -1 ], %o0
<== NOT EXECUTED
400095e0: 9f c0 40 00 call %g1
<== NOT EXECUTED
400095e4: 92 10 00 1d mov %i5, %o1
<== NOT EXECUTED
while (len--) {
400095e8: 80 a6 40 1a cmp %i1, %i2
<== NOT EXECUTED
400095ec: 32 bf ff f8 bne,a 400095cc <rtems_termios_enqueue_raw_characters+0x3c>
<== NOT EXECUTED
400095f0: c2 07 61 5c ld [ %i5 + 0x15c ], %g1
<== NOT EXECUTED
if (tty->tty_rcv.sw_pfn != NULL && !tty->tty_rcvwakeup) {
400095f4: c2 07 61 6c ld [ %i5 + 0x16c ], %g1
<== NOT EXECUTED
400095f8: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
400095fc: 02 80 00 0a be 40009624 <rtems_termios_enqueue_raw_characters+0x94>
<== NOT EXECUTED
40009600: b0 10 20 00 clr %i0
<== NOT EXECUTED
40009604: c4 0f 61 74 ldub [ %i5 + 0x174 ], %g2
<== NOT EXECUTED
40009608: 80 a0 a0 00 cmp %g2, 0
<== NOT EXECUTED
4000960c: 12 80 00 06 bne 40009624 <rtems_termios_enqueue_raw_characters+0x94>
<== NOT EXECUTED
40009610: 84 10 20 01 mov 1, %g2
<== NOT EXECUTED
tty->tty_rcvwakeup = true;
40009614: c4 2f 61 74 stb %g2, [ %i5 + 0x174 ]
<== NOT EXECUTED
(*tty->tty_rcv.sw_pfn)(&tty->termios, tty->tty_rcv.sw_arg);
40009618: 90 07 60 50 add %i5, 0x50, %o0
<== NOT EXECUTED
4000961c: 9f c0 40 00 call %g1
<== NOT EXECUTED
40009620: d2 07 61 70 ld [ %i5 + 0x170 ], %o1
<== NOT EXECUTED
40009624: 81 c7 e0 08 ret
<== NOT EXECUTED
40009628: 81 e8 00 00 restore
<== NOT EXECUTED
tty->rawInBufDropped += dropped;
4000962c: 82 00 40 18 add %g1, %i0, %g1
<== NOT EXECUTED
40009630: c2 27 60 b4 st %g1, [ %i5 + 0xb4 ]
<== NOT EXECUTED
_Semaphore_Post_binary( &binary_semaphore->Semaphore );
40009634: 40 00 13 14 call 4000e284 <_Semaphore_Post_binary>
<== NOT EXECUTED
40009638: 90 07 60 90 add %i5, 0x90, %o0
<== NOT EXECUTED
}
4000963c: 81 c7 e0 08 ret
<== NOT EXECUTED
40009640: 81 e8 00 00 restore
<== NOT EXECUTED
rtems_termios_device_context *ctx = tty->device_context;
40009644: f8 06 21 7c ld [ %i0 + 0x17c ], %i4
<== NOT EXECUTED
40009648: b4 06 40 1a add %i1, %i2, %i2
<== NOT EXECUTED
bool flow_rcv = false; /* true, if flow control char received */
4000964c: a6 10 20 00 clr %l3
<== NOT EXECUTED
int dropped = 0;
40009650: b0 10 20 00 clr %i0
<== NOT EXECUTED
40009654: a2 10 20 01 mov 1, %l1
<== NOT EXECUTED
(*tty->tty_rcv.sw_pfn)(&tty->termios, tty->tty_rcv.sw_arg);
40009658: a0 07 60 50 add %i5, 0x50, %l0
<== NOT EXECUTED
(void *)&(tty->termios.c_cc[VSTOP]), 1);
4000965c: a4 07 60 6d add %i5, 0x6d, %l2
<== NOT EXECUTED
while (len--) {
40009660: 80 a6 40 1a cmp %i1, %i2
<== NOT EXECUTED
40009664: 22 bf ff f2 be,a 4000962c <rtems_termios_enqueue_raw_characters+0x9c>
<== NOT EXECUTED
40009668: c2 07 60 b4 ld [ %i5 + 0xb4 ], %g1
<== NOT EXECUTED
if (tty->flow_ctrl & FL_MDXON) {
4000966c: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
c = *buf++;
40009670: b2 06 60 01 inc %i1
<== NOT EXECUTED
if (tty->flow_ctrl & FL_MDXON) {
40009674: 80 88 62 00 btst 0x200, %g1
<== NOT EXECUTED
40009678: 02 80 00 0b be 400096a4 <rtems_termios_enqueue_raw_characters+0x114>
<== NOT EXECUTED
4000967c: d0 0e 7f ff ldub [ %i1 + -1 ], %o0
<== NOT EXECUTED
if (c == tty->termios.c_cc[VSTOP]) {
40009680: c4 0f 60 6d ldub [ %i5 + 0x6d ], %g2
<== NOT EXECUTED
40009684: 83 2a 20 18 sll %o0, 0x18, %g1
<== NOT EXECUTED
40009688: 83 38 60 18 sra %g1, 0x18, %g1
<== NOT EXECUTED
4000968c: 80 a0 40 02 cmp %g1, %g2
<== NOT EXECUTED
40009690: 02 80 00 60 be 40009810 <rtems_termios_enqueue_raw_characters+0x280>
<== NOT EXECUTED
40009694: c6 0f 60 6c ldub [ %i5 + 0x6c ], %g3
<== NOT EXECUTED
else if (c == tty->termios.c_cc[VSTART]) {
40009698: 80 a0 40 03 cmp %g1, %g3
<== NOT EXECUTED
4000969c: 02 80 00 a6 be 40009934 <rtems_termios_enqueue_raw_characters+0x3a4>
<== NOT EXECUTED
400096a0: 01 00 00 00 nop
<== NOT EXECUTED
if (flow_rcv) {
400096a4: 80 8c e0 ff btst 0xff, %l3
<== NOT EXECUTED
400096a8: 32 80 00 61 bne,a 4000982c <rtems_termios_enqueue_raw_characters+0x29c>
<== NOT EXECUTED
400096ac: a6 10 20 01 mov 1, %l3
<== NOT EXECUTED
if (c == '\r' && (tty->termios.c_iflag & IGNCR) != 0) {
400096b0: 82 0a 20 ff and %o0, 0xff, %g1
<== NOT EXECUTED
400096b4: 80 a0 60 0d cmp %g1, 0xd
<== NOT EXECUTED
400096b8: 12 80 00 06 bne 400096d0 <rtems_termios_enqueue_raw_characters+0x140>
<== NOT EXECUTED
400096bc: 01 00 00 00 nop
<== NOT EXECUTED
400096c0: c2 07 60 50 ld [ %i5 + 0x50 ], %g1
<== NOT EXECUTED
400096c4: 80 88 60 80 btst 0x80, %g1
<== NOT EXECUTED
400096c8: 12 bf ff e7 bne 40009664 <rtems_termios_enqueue_raw_characters+0xd4>
<== NOT EXECUTED
400096cc: 80 a6 40 1a cmp %i1, %i2
<== NOT EXECUTED
c = iprocEarly (c, tty);
400096d0: 7f ff fb 4d call 40008404 <iprocEarly>
<== NOT EXECUTED
400096d4: 92 10 00 1d mov %i5, %o1
<== NOT EXECUTED
( *context->lock_acquire )( context, lock_context );
400096d8: c2 07 20 14 ld [ %i4 + 0x14 ], %g1
<== NOT EXECUTED
400096dc: a8 10 00 08 mov %o0, %l4
<== NOT EXECUTED
400096e0: 92 07 bf fc add %fp, -4, %o1
<== NOT EXECUTED
400096e4: 9f c0 40 00 call %g1
<== NOT EXECUTED
400096e8: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
head = tty->rawInBuf.Head;
400096ec: ea 07 60 84 ld [ %i5 + 0x84 ], %l5
<== NOT EXECUTED
oldTail = tty->rawInBuf.Tail;
400096f0: f6 07 60 88 ld [ %i5 + 0x88 ], %i3
<== NOT EXECUTED
newTail = (oldTail + 1) % tty->rawInBuf.Size;
400096f4: c4 07 60 8c ld [ %i5 + 0x8c ], %g2
<== NOT EXECUTED
if ((tty->flow_ctrl & FL_IREQXOF) != 0 && (((newTail - head) %
400096f8: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
newTail = (oldTail + 1) % tty->rawInBuf.Size;
400096fc: b6 06 e0 01 inc %i3
<== NOT EXECUTED
if ((tty->flow_ctrl & FL_IREQXOF) != 0 && (((newTail - head) %
40009700: 80 88 60 01 btst 1, %g1
<== NOT EXECUTED
newTail = (oldTail + 1) % tty->rawInBuf.Size;
40009704: 81 80 20 00 wr %g0, %y
<== NOT EXECUTED
40009708: 01 00 00 00 nop
<== NOT EXECUTED
4000970c: 01 00 00 00 nop
<== NOT EXECUTED
40009710: 01 00 00 00 nop
<== NOT EXECUTED
40009714: 82 76 c0 02 udiv %i3, %g2, %g1
<== NOT EXECUTED
40009718: 82 58 40 02 smul %g1, %g2, %g1
<== NOT EXECUTED
if ((tty->flow_ctrl & FL_IREQXOF) != 0 && (((newTail - head) %
4000971c: 02 80 00 0f be 40009758 <rtems_termios_enqueue_raw_characters+0x1c8>
<== NOT EXECUTED
40009720: b6 26 c0 01 sub %i3, %g1, %i3
<== NOT EXECUTED
tty->rawInBuf.Size) > tty->highwater)) {
40009724: c6 07 60 8c ld [ %i5 + 0x8c ], %g3
<== NOT EXECUTED
if ((tty->flow_ctrl & FL_IREQXOF) != 0 && (((newTail - head) %
40009728: c8 07 61 50 ld [ %i5 + 0x150 ], %g4
<== NOT EXECUTED
4000972c: 82 26 c0 15 sub %i3, %l5, %g1
<== NOT EXECUTED
40009730: 81 80 20 00 wr %g0, %y
<== NOT EXECUTED
40009734: 01 00 00 00 nop
<== NOT EXECUTED
40009738: 01 00 00 00 nop
<== NOT EXECUTED
4000973c: 01 00 00 00 nop
<== NOT EXECUTED
40009740: 84 70 40 03 udiv %g1, %g3, %g2
<== NOT EXECUTED
40009744: 84 58 80 03 smul %g2, %g3, %g2
<== NOT EXECUTED
40009748: 82 20 40 02 sub %g1, %g2, %g1
<== NOT EXECUTED
4000974c: 80 a0 40 04 cmp %g1, %g4
<== NOT EXECUTED
40009750: 18 80 00 57 bgu 400098ac <rtems_termios_enqueue_raw_characters+0x31c>
<== NOT EXECUTED
40009754: 01 00 00 00 nop
<== NOT EXECUTED
if (newTail != head) {
40009758: 80 a5 40 1b cmp %l5, %i3
<== NOT EXECUTED
4000975c: 22 80 00 20 be,a 400097dc <rtems_termios_enqueue_raw_characters+0x24c>
<== NOT EXECUTED
40009760: c2 07 61 6c ld [ %i5 + 0x16c ], %g1
<== NOT EXECUTED
tty->rawInBuf.theBuf[newTail] = c;
40009764: c2 07 60 80 ld [ %i5 + 0x80 ], %g1
<== NOT EXECUTED
40009768: e8 28 40 1b stb %l4, [ %g1 + %i3 ]
<== NOT EXECUTED
tty->rawInBuf.Tail = newTail;
4000976c: f6 27 60 88 st %i3, [ %i5 + 0x88 ]
<== NOT EXECUTED
if (tty->tty_rcv.sw_pfn != NULL && !tty->tty_rcvwakeup) {
40009770: c2 07 61 6c ld [ %i5 + 0x16c ], %g1
<== NOT EXECUTED
40009774: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
40009778: 22 80 00 74 be,a 40009948 <rtems_termios_enqueue_raw_characters+0x3b8>
<== NOT EXECUTED
4000977c: c2 07 20 18 ld [ %i4 + 0x18 ], %g1
<== NOT EXECUTED
40009780: c2 0f 61 74 ldub [ %i5 + 0x174 ], %g1
<== NOT EXECUTED
40009784: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
40009788: 12 80 00 1d bne 400097fc <rtems_termios_enqueue_raw_characters+0x26c>
<== NOT EXECUTED
4000978c: c4 07 20 18 ld [ %i4 + 0x18 ], %g2
<== NOT EXECUTED
if ((tty->termios.c_lflag & ICANON) != 0) {
40009790: c2 07 60 5c ld [ %i5 + 0x5c ], %g1
<== NOT EXECUTED
40009794: 80 88 61 00 btst 0x100, %g1
<== NOT EXECUTED
40009798: 02 80 00 71 be 4000995c <rtems_termios_enqueue_raw_characters+0x3cc>
<== NOT EXECUTED
4000979c: 80 a5 20 0a cmp %l4, 0xa
<== NOT EXECUTED
c == tty->termios.c_cc[VEOL] || c == tty->termios.c_cc[VEOL2];
400097a0: 22 80 00 5c be,a 40009910 <rtems_termios_enqueue_raw_characters+0x380>
<== NOT EXECUTED
400097a4: e2 2f 61 74 stb %l1, [ %i5 + 0x174 ]
<== NOT EXECUTED
return c == '\n' || c == tty->termios.c_cc[VEOF] ||
400097a8: c2 0f 60 60 ldub [ %i5 + 0x60 ], %g1
<== NOT EXECUTED
400097ac: 80 a5 00 01 cmp %l4, %g1
<== NOT EXECUTED
400097b0: 22 80 00 58 be,a 40009910 <rtems_termios_enqueue_raw_characters+0x380>
<== NOT EXECUTED
400097b4: e2 2f 61 74 stb %l1, [ %i5 + 0x174 ]
<== NOT EXECUTED
400097b8: c2 0f 60 61 ldub [ %i5 + 0x61 ], %g1
<== NOT EXECUTED
400097bc: 80 a5 00 01 cmp %l4, %g1
<== NOT EXECUTED
400097c0: 22 80 00 54 be,a 40009910 <rtems_termios_enqueue_raw_characters+0x380>
<== NOT EXECUTED
400097c4: e2 2f 61 74 stb %l1, [ %i5 + 0x174 ]
<== NOT EXECUTED
c == tty->termios.c_cc[VEOL] || c == tty->termios.c_cc[VEOL2];
400097c8: c2 0f 60 62 ldub [ %i5 + 0x62 ], %g1
<== NOT EXECUTED
400097cc: a8 18 40 14 xor %g1, %l4, %l4
<== NOT EXECUTED
400097d0: 80 a0 00 14 cmp %g0, %l4
<== NOT EXECUTED
400097d4: 10 80 00 6e b 4000998c <rtems_termios_enqueue_raw_characters+0x3fc>
<== NOT EXECUTED
400097d8: 82 60 3f ff subx %g0, -1, %g1
<== NOT EXECUTED
++dropped;
400097dc: b0 06 20 01 inc %i0
<== NOT EXECUTED
if (tty->tty_rcv.sw_pfn != NULL && !tty->tty_rcvwakeup) {
400097e0: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
400097e4: 02 80 00 06 be 400097fc <rtems_termios_enqueue_raw_characters+0x26c>
<== NOT EXECUTED
400097e8: c4 07 20 18 ld [ %i4 + 0x18 ], %g2
<== NOT EXECUTED
400097ec: c2 0f 61 74 ldub [ %i5 + 0x174 ], %g1
<== NOT EXECUTED
400097f0: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
400097f4: 22 80 00 47 be,a 40009910 <rtems_termios_enqueue_raw_characters+0x380>
<== NOT EXECUTED
400097f8: e2 2f 61 74 stb %l1, [ %i5 + 0x174 ]
<== NOT EXECUTED
( *context->lock_release )( context, lock_context );
400097fc: 92 07 bf fc add %fp, -4, %o1
<== NOT EXECUTED
40009800: 9f c0 80 00 call %g2
<== NOT EXECUTED
40009804: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
while (len--) {
40009808: 10 bf ff 97 b 40009664 <rtems_termios_enqueue_raw_characters+0xd4>
<== NOT EXECUTED
4000980c: 80 a6 40 1a cmp %i1, %i2
<== NOT EXECUTED
if (c == tty->termios.c_cc[VSTART]) {
40009810: 80 a0 40 03 cmp %g1, %g3
<== NOT EXECUTED
tty->flow_ctrl = tty->flow_ctrl ^ FL_ORCVXOF;
40009814: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
if (c == tty->termios.c_cc[VSTART]) {
40009818: 32 80 00 22 bne,a 400098a0 <rtems_termios_enqueue_raw_characters+0x310>
<== NOT EXECUTED
4000981c: 82 10 60 10 or %g1, 0x10, %g1
<== NOT EXECUTED
tty->flow_ctrl = tty->flow_ctrl ^ FL_ORCVXOF;
40009820: 82 18 60 10 xor %g1, 0x10, %g1
<== NOT EXECUTED
40009824: c2 27 61 48 st %g1, [ %i5 + 0x148 ]
<== NOT EXECUTED
40009828: a6 10 20 01 mov 1, %l3
<== NOT EXECUTED
if ((tty->flow_ctrl & (FL_ORCVXOF | FL_OSTOP)) == FL_OSTOP) {
4000982c: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
40009830: 82 08 60 30 and %g1, 0x30, %g1
<== NOT EXECUTED
40009834: 80 a0 60 20 cmp %g1, 0x20
<== NOT EXECUTED
40009838: 12 bf ff 8a bne 40009660 <rtems_termios_enqueue_raw_characters+0xd0>
<== NOT EXECUTED
4000983c: 92 07 bf fc add %fp, -4, %o1
<== NOT EXECUTED
( *context->lock_acquire )( context, lock_context );
40009840: c2 07 20 14 ld [ %i4 + 0x14 ], %g1
<== NOT EXECUTED
40009844: 9f c0 40 00 call %g1
<== NOT EXECUTED
40009848: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
tty->flow_ctrl &= ~FL_OSTOP;
4000984c: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
40009850: 82 08 7f df and %g1, -33, %g1
<== NOT EXECUTED
40009854: c2 27 61 48 st %g1, [ %i5 + 0x148 ]
<== NOT EXECUTED
if (tty->rawOutBufState != rob_idle) {
40009858: c2 07 60 e4 ld [ %i5 + 0xe4 ], %g1
<== NOT EXECUTED
4000985c: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
40009860: 22 80 00 0a be,a 40009888 <rtems_termios_enqueue_raw_characters+0x2f8>
<== NOT EXECUTED
40009864: c2 07 20 18 ld [ %i4 + 0x18 ], %g1
<== NOT EXECUTED
ctx, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail], 1);
40009868: c4 07 60 c0 ld [ %i5 + 0xc0 ], %g2
<== NOT EXECUTED
4000986c: d2 07 60 b8 ld [ %i5 + 0xb8 ], %o1
<== NOT EXECUTED
(*tty->handler.write)(
40009870: c2 07 61 30 ld [ %i5 + 0x130 ], %g1
<== NOT EXECUTED
40009874: 94 10 20 01 mov 1, %o2
<== NOT EXECUTED
40009878: 92 02 40 02 add %o1, %g2, %o1
<== NOT EXECUTED
4000987c: 9f c0 40 00 call %g1
<== NOT EXECUTED
40009880: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
( *context->lock_release )( context, lock_context );
40009884: c2 07 20 18 ld [ %i4 + 0x18 ], %g1
<== NOT EXECUTED
40009888: 92 07 bf fc add %fp, -4, %o1
<== NOT EXECUTED
4000988c: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
40009890: 9f c0 40 00 call %g1
<== NOT EXECUTED
40009894: a6 10 20 01 mov 1, %l3
<== NOT EXECUTED
while (len--) {
40009898: 10 bf ff 73 b 40009664 <rtems_termios_enqueue_raw_characters+0xd4>
<== NOT EXECUTED
4000989c: 80 a6 40 1a cmp %i1, %i2
<== NOT EXECUTED
tty->flow_ctrl |= FL_ORCVXOF;
400098a0: c2 27 61 48 st %g1, [ %i5 + 0x148 ]
<== NOT EXECUTED
400098a4: 10 bf ff e2 b 4000982c <rtems_termios_enqueue_raw_characters+0x29c>
<== NOT EXECUTED
400098a8: a6 10 20 01 mov 1, %l3
<== NOT EXECUTED
tty->flow_ctrl |= FL_IREQXOF;
400098ac: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
400098b0: 82 10 60 01 or %g1, 1, %g1
<== NOT EXECUTED
400098b4: c2 27 61 48 st %g1, [ %i5 + 0x148 ]
<== NOT EXECUTED
if ((tty->flow_ctrl & (FL_MDXOF | FL_ISNTXOF))
400098b8: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
400098bc: 82 08 64 02 and %g1, 0x402, %g1
<== NOT EXECUTED
400098c0: 80 a0 64 00 cmp %g1, 0x400
<== NOT EXECUTED
if ((tty->flow_ctrl & FL_OSTOP) ||
400098c4: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
if ((tty->flow_ctrl & (FL_MDXOF | FL_ISNTXOF))
400098c8: 02 80 00 39 be 400099ac <rtems_termios_enqueue_raw_characters+0x41c>
<== NOT EXECUTED
400098cc: 80 88 60 20 btst 0x20, %g1
<== NOT EXECUTED
} else if ((tty->flow_ctrl & (FL_MDRTS | FL_IRTSOFF)) == (FL_MDRTS) ) {
400098d0: 82 08 61 04 and %g1, 0x104, %g1
<== NOT EXECUTED
400098d4: 80 a0 61 00 cmp %g1, 0x100
<== NOT EXECUTED
400098d8: 12 bf ff a1 bne 4000975c <rtems_termios_enqueue_raw_characters+0x1cc>
<== NOT EXECUTED
400098dc: 80 a5 40 1b cmp %l5, %i3
<== NOT EXECUTED
tty->flow_ctrl |= FL_IRTSOFF;
400098e0: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
400098e4: 82 10 60 04 or %g1, 4, %g1
<== NOT EXECUTED
400098e8: c2 27 61 48 st %g1, [ %i5 + 0x148 ]
<== NOT EXECUTED
if (tty->flow.stop_remote_tx != NULL) {
400098ec: c2 07 61 40 ld [ %i5 + 0x140 ], %g1
<== NOT EXECUTED
400098f0: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
400098f4: 22 bf ff 9a be,a 4000975c <rtems_termios_enqueue_raw_characters+0x1cc>
<== NOT EXECUTED
400098f8: 80 a5 40 1b cmp %l5, %i3
<== NOT EXECUTED
tty->flow.stop_remote_tx(ctx);
400098fc: 9f c0 40 00 call %g1
<== NOT EXECUTED
40009900: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
if (newTail != head) {
40009904: 10 bf ff 96 b 4000975c <rtems_termios_enqueue_raw_characters+0x1cc>
<== NOT EXECUTED
40009908: 80 a5 40 1b cmp %l5, %i3
<== NOT EXECUTED
tty->tty_rcvwakeup = true;
4000990c: e2 2f 61 74 stb %l1, [ %i5 + 0x174 ]
<== NOT EXECUTED
40009910: 92 07 bf fc add %fp, -4, %o1
<== NOT EXECUTED
40009914: 9f c0 80 00 call %g2
<== NOT EXECUTED
40009918: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
(*tty->tty_rcv.sw_pfn)(&tty->termios, tty->tty_rcv.sw_arg);
4000991c: c2 07 61 6c ld [ %i5 + 0x16c ], %g1
<== NOT EXECUTED
40009920: d2 07 61 70 ld [ %i5 + 0x170 ], %o1
<== NOT EXECUTED
40009924: 9f c0 40 00 call %g1
<== NOT EXECUTED
40009928: 90 10 00 10 mov %l0, %o0
<== NOT EXECUTED
while (len--) {
4000992c: 10 bf ff 4e b 40009664 <rtems_termios_enqueue_raw_characters+0xd4>
<== NOT EXECUTED
40009930: 80 a6 40 1a cmp %i1, %i2
<== NOT EXECUTED
tty->flow_ctrl &= ~FL_ORCVXOF;
40009934: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
40009938: 82 08 7f ef and %g1, -17, %g1
<== NOT EXECUTED
4000993c: c2 27 61 48 st %g1, [ %i5 + 0x148 ]
<== NOT EXECUTED
40009940: 10 bf ff bb b 4000982c <rtems_termios_enqueue_raw_characters+0x29c>
<== NOT EXECUTED
40009944: a6 10 20 01 mov 1, %l3
<== NOT EXECUTED
40009948: 92 07 bf fc add %fp, -4, %o1
<== NOT EXECUTED
4000994c: 9f c0 40 00 call %g1
<== NOT EXECUTED
40009950: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
while (len--) {
40009954: 10 bf ff 44 b 40009664 <rtems_termios_enqueue_raw_characters+0xd4>
<== NOT EXECUTED
40009958: 80 a6 40 1a cmp %i1, %i2
<== NOT EXECUTED
unsigned int rawContentSize = (newTail - head) % tty->rawInBuf.Size;
4000995c: c6 07 60 8c ld [ %i5 + 0x8c ], %g3
<== NOT EXECUTED
40009960: b6 26 c0 15 sub %i3, %l5, %i3
<== NOT EXECUTED
return rawContentSize >= tty->termios.c_cc[VMIN];
40009964: c8 0f 60 70 ldub [ %i5 + 0x70 ], %g4
<== NOT EXECUTED
unsigned int rawContentSize = (newTail - head) % tty->rawInBuf.Size;
40009968: 81 80 20 00 wr %g0, %y
<== NOT EXECUTED
4000996c: 01 00 00 00 nop
<== NOT EXECUTED
40009970: 01 00 00 00 nop
<== NOT EXECUTED
40009974: 01 00 00 00 nop
<== NOT EXECUTED
40009978: 82 76 c0 03 udiv %i3, %g3, %g1
<== NOT EXECUTED
4000997c: 82 58 40 03 smul %g1, %g3, %g1
<== NOT EXECUTED
40009980: b6 26 c0 01 sub %i3, %g1, %i3
<== NOT EXECUTED
return rawContentSize >= tty->termios.c_cc[VMIN];
40009984: 80 a6 c0 04 cmp %i3, %g4
<== NOT EXECUTED
40009988: 82 60 3f ff subx %g0, -1, %g1
<== NOT EXECUTED
if (mustCallReceiveCallback (tty, c, newTail, head)) {
4000998c: 80 88 60 ff btst 0xff, %g1
<== NOT EXECUTED
40009990: 12 bf ff df bne 4000990c <rtems_termios_enqueue_raw_characters+0x37c>
<== NOT EXECUTED
40009994: 92 07 bf fc add %fp, -4, %o1
<== NOT EXECUTED
40009998: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
4000999c: 9f c0 80 00 call %g2
<== NOT EXECUTED
400099a0: a6 10 00 01 mov %g1, %l3
<== NOT EXECUTED
while (len--) {
400099a4: 10 bf ff 30 b 40009664 <rtems_termios_enqueue_raw_characters+0xd4>
<== NOT EXECUTED
400099a8: 80 a6 40 1a cmp %i1, %i2
<== NOT EXECUTED
if ((tty->flow_ctrl & FL_OSTOP) ||
400099ac: 22 80 00 0c be,a 400099dc <rtems_termios_enqueue_raw_characters+0x44c>
<== NOT EXECUTED
400099b0: c2 07 60 e4 ld [ %i5 + 0xe4 ], %g1
<== NOT EXECUTED
tty->flow_ctrl |= FL_ISNTXOF;
400099b4: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
400099b8: 82 10 60 02 or %g1, 2, %g1
<== NOT EXECUTED
400099bc: c2 27 61 48 st %g1, [ %i5 + 0x148 ]
<== NOT EXECUTED
(*tty->handler.write)(ctx,
400099c0: 94 10 20 01 mov 1, %o2
<== NOT EXECUTED
400099c4: c2 07 61 30 ld [ %i5 + 0x130 ], %g1
<== NOT EXECUTED
400099c8: 92 10 00 12 mov %l2, %o1
<== NOT EXECUTED
400099cc: 9f c0 40 00 call %g1
<== NOT EXECUTED
400099d0: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
if (newTail != head) {
400099d4: 10 bf ff 62 b 4000975c <rtems_termios_enqueue_raw_characters+0x1cc>
<== NOT EXECUTED
400099d8: 80 a5 40 1b cmp %l5, %i3
<== NOT EXECUTED
if ((tty->flow_ctrl & FL_OSTOP) ||
400099dc: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
400099e0: 32 bf ff 5f bne,a 4000975c <rtems_termios_enqueue_raw_characters+0x1cc>
<== NOT EXECUTED
400099e4: 80 a5 40 1b cmp %l5, %i3
<== NOT EXECUTED
400099e8: 30 bf ff f3 b,a 400099b4 <rtems_termios_enqueue_raw_characters+0x424>
<== NOT EXECUTED
40008f6c <rtems_termios_ioctl>:
{
40008f6c: 9d e3 bf 98 save %sp, -104, %sp
struct rtems_termios_tty *tty = args->iop->data1;
40008f70: c2 06 00 00 ld [ %i0 ], %g1
40008f74: fa 00 60 28 ld [ %g1 + 0x28 ], %i5
args->ioctl_return = 0;
40008f78: c0 26 20 0c clr [ %i0 + 0xc ]
rtems_mutex_lock (&tty->osem);
40008f7c: b4 07 60 28 add %i5, 0x28, %i2
struct ttywakeup *wakeup = (struct ttywakeup *)args->buffer;
40008f80: f2 06 20 08 ld [ %i0 + 8 ], %i1
_Mutex_Acquire( mutex );
40008f84: 40 00 0e 41 call 4000c888 <_Mutex_Acquire>
40008f88: 90 10 00 1a mov %i2, %o0
switch (args->command) {
40008f8c: f6 06 20 04 ld [ %i0 + 4 ], %i3
40008f90: 03 20 01 1d sethi %hi(0x80047400), %g1
40008f94: 84 10 60 10 or %g1, 0x10, %g2 ! 80047410 <RAM_END+0x3fc47410>
40008f98: 80 a6 c0 02 cmp %i3, %g2
40008f9c: 02 80 00 f0 be 4000935c <rtems_termios_ioctl+0x3f0>
<== NEVER TAKEN
40008fa0: b8 10 00 18 mov %i0, %i4
40008fa4: 28 80 00 17 bleu,a 40009000 <rtems_termios_ioctl+0x94>
40008fa8: 03 10 01 19 sethi %hi(0x40046400), %g1
40008fac: 05 20 02 1d sethi %hi(0x80087400), %g2
40008fb0: 86 10 a0 0c or %g2, 0xc, %g3 ! 8008740c <RAM_END+0x3fc8740c>
40008fb4: 80 a6 c0 03 cmp %i3, %g3
40008fb8: 22 80 00 d4 be,a 40009308 <rtems_termios_ioctl+0x39c>
<== NEVER TAKEN
40008fbc: c2 06 40 00 ld [ %i1 ], %g1
<== NOT EXECUTED
40008fc0: 18 80 00 53 bgu 4000910c <rtems_termios_ioctl+0x1a0>
<== ALWAYS TAKEN
40008fc4: 82 10 60 1b or %g1, 0x1b, %g1
40008fc8: 80 a6 c0 01 cmp %i3, %g1
<== NOT EXECUTED
40008fcc: 02 80 00 2b be 40009078 <rtems_termios_ioctl+0x10c>
<== NOT EXECUTED
40008fd0: 84 10 a0 0b or %g2, 0xb, %g2
<== NOT EXECUTED
40008fd4: 80 a6 c0 02 cmp %i3, %g2
<== NOT EXECUTED
40008fd8: 12 80 00 d4 bne 40009328 <rtems_termios_ioctl+0x3bc>
<== NOT EXECUTED
40008fdc: b0 10 20 00 clr %i0
<== NOT EXECUTED
tty->tty_snd = *wakeup;
40008fe0: c2 06 40 00 ld [ %i1 ], %g1
<== NOT EXECUTED
40008fe4: c2 27 61 64 st %g1, [ %i5 + 0x164 ]
<== NOT EXECUTED
40008fe8: c2 06 60 04 ld [ %i1 + 4 ], %g1
<== NOT EXECUTED
40008fec: c2 27 61 68 st %g1, [ %i5 + 0x168 ]
<== NOT EXECUTED
_Mutex_Release( mutex );
40008ff0: 40 00 0e 42 call 4000c8f8 <_Mutex_Release>
<== NOT EXECUTED
40008ff4: 90 10 00 1a mov %i2, %o0
<== NOT EXECUTED
}
40008ff8: 81 c7 e0 08 ret
<== NOT EXECUTED
40008ffc: 81 e8 00 00 restore
<== NOT EXECUTED
switch (args->command) {
40009000: 82 10 62 7f or %g1, 0x27f, %g1
40009004: 80 a6 c0 01 cmp %i3, %g1
40009008: 02 80 00 ae be 400092c0 <rtems_termios_ioctl+0x354>
<== NEVER TAKEN
4000900c: 01 00 00 00 nop
40009010: 08 80 00 33 bleu 400090dc <rtems_termios_ioctl+0x170>
40009014: 03 10 01 1d sethi %hi(0x40047400), %g1
40009018: 82 10 60 1a or %g1, 0x1a, %g1 ! 4004741a <__end+0x2e5ca>
4000901c: 80 a6 c0 01 cmp %i3, %g1
40009020: 02 80 00 0e be 40009058 <rtems_termios_ioctl+0xec>
<== NEVER TAKEN
40009024: 03 10 0b 1d sethi %hi(0x402c7400), %g1
40009028: 82 10 60 13 or %g1, 0x13, %g1 ! 402c7413 <__end+0x2ae5c3>
4000902c: 80 a6 c0 01 cmp %i3, %g1
40009030: 12 80 00 be bne 40009328 <rtems_termios_ioctl+0x3bc>
<== NEVER TAKEN
40009034: 94 10 20 2c mov 0x2c, %o2
*(struct termios *)args->buffer = tty->termios;
40009038: d0 06 20 08 ld [ %i0 + 8 ], %o0
4000903c: 40 00 26 e7 call 40012bd8 <memcpy>
40009040: 92 07 60 50 add %i5, 0x50, %o1
sc = RTEMS_SUCCESSFUL;
40009044: b0 10 20 00 clr %i0
40009048: 40 00 0e 2c call 4000c8f8 <_Mutex_Release>
4000904c: 90 10 00 1a mov %i2, %o0
}
40009050: 81 c7 e0 08 ret
40009054: 81 e8 00 00 restore
*(int*)(args->buffer)=tty->t_line;
40009058: c2 06 20 08 ld [ %i0 + 8 ], %g1
<== NOT EXECUTED
4000905c: c4 07 61 5c ld [ %i5 + 0x15c ], %g2
<== NOT EXECUTED
40009060: c4 20 40 00 st %g2, [ %g1 ]
<== NOT EXECUTED
sc = RTEMS_SUCCESSFUL;
40009064: b0 10 20 00 clr %i0
<== NOT EXECUTED
40009068: 40 00 0e 24 call 4000c8f8 <_Mutex_Release>
<== NOT EXECUTED
4000906c: 90 10 00 1a mov %i2, %o0
<== NOT EXECUTED
}
40009070: 81 c7 e0 08 ret
<== NOT EXECUTED
40009074: 81 e8 00 00 restore
<== NOT EXECUTED
if (rtems_termios_linesw[tty->t_line].l_close != NULL) {
40009078: c2 07 61 5c ld [ %i5 + 0x15c ], %g1
<== NOT EXECUTED
4000907c: 83 28 60 05 sll %g1, 5, %g1
<== NOT EXECUTED
40009080: 37 10 00 60 sethi %hi(0x40018000), %i3
<== NOT EXECUTED
40009084: b6 16 e0 48 or %i3, 0x48, %i3 ! 40018048 <rtems_termios_linesw>
<== NOT EXECUTED
40009088: 82 06 c0 01 add %i3, %g1, %g1
<== NOT EXECUTED
4000908c: c2 00 60 04 ld [ %g1 + 4 ], %g1
<== NOT EXECUTED
40009090: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
40009094: 02 80 00 05 be 400090a8 <rtems_termios_ioctl+0x13c>
<== NOT EXECUTED
40009098: b0 10 20 00 clr %i0
<== NOT EXECUTED
sc = rtems_termios_linesw[tty->t_line].l_close(tty);
4000909c: 9f c0 40 00 call %g1
<== NOT EXECUTED
400090a0: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
400090a4: b0 10 00 08 mov %o0, %i0
<== NOT EXECUTED
tty->t_line=*(int*)(args->buffer);
400090a8: c2 07 20 08 ld [ %i4 + 8 ], %g1
<== NOT EXECUTED
400090ac: c2 00 40 00 ld [ %g1 ], %g1
<== NOT EXECUTED
400090b0: c2 27 61 5c st %g1, [ %i5 + 0x15c ]
<== NOT EXECUTED
if (rtems_termios_linesw[tty->t_line].l_open != NULL) {
400090b4: 83 28 60 05 sll %g1, 5, %g1
<== NOT EXECUTED
tty->t_sc = NULL; /* ensure that no more valid data */
400090b8: c0 27 61 60 clr [ %i5 + 0x160 ]
<== NOT EXECUTED
if (rtems_termios_linesw[tty->t_line].l_open != NULL) {
400090bc: c2 06 c0 01 ld [ %i3 + %g1 ], %g1
<== NOT EXECUTED
400090c0: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
400090c4: 02 bf ff cb be 40008ff0 <rtems_termios_ioctl+0x84>
<== NOT EXECUTED
400090c8: 01 00 00 00 nop
<== NOT EXECUTED
sc = rtems_termios_linesw[tty->t_line].l_open(tty);
400090cc: 9f c0 40 00 call %g1
<== NOT EXECUTED
400090d0: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
400090d4: 10 bf ff c7 b 40008ff0 <rtems_termios_ioctl+0x84>
<== NOT EXECUTED
400090d8: b0 10 00 08 mov %o0, %i0
<== NOT EXECUTED
switch (args->command) {
400090dc: 03 08 00 1d sethi %hi(0x20007400), %g1
400090e0: 82 10 60 5e or %g1, 0x5e, %g1 ! 2000745e <RAM_SIZE+0x1fc0745e>
400090e4: 80 a6 c0 01 cmp %i3, %g1
400090e8: 32 80 00 91 bne,a 4000932c <rtems_termios_ioctl+0x3c0>
<== NEVER TAKEN
400090ec: c2 07 61 5c ld [ %i5 + 0x15c ], %g1
<== NOT EXECUTED
drainOutput (tty);
400090f0: 7f ff f8 b0 call 400073b0 <drainOutput>
400090f4: 90 10 00 1d mov %i5, %o0
sc = RTEMS_SUCCESSFUL;
400090f8: b0 10 20 00 clr %i0
400090fc: 40 00 0d ff call 4000c8f8 <_Mutex_Release>
40009100: 90 10 00 1a mov %i2, %o0
}
40009104: 81 c7 e0 08 ret
40009108: 81 e8 00 00 restore
switch (args->command) {
4000910c: 33 1f f4 e2 sethi %hi(0x7fd38800), %i1
40009110: 82 16 63 ec or %i1, 0x3ec, %g1 ! 7fd38bec <RAM_END+0x3f938bec>
40009114: 82 06 c0 01 add %i3, %g1, %g1
40009118: 80 a0 60 02 cmp %g1, 2
4000911c: 18 80 00 83 bgu 40009328 <rtems_termios_ioctl+0x3bc>
<== NEVER TAKEN
40009120: 94 10 20 2c mov 0x2c, %o2
tty->termios = *(struct termios *)args->buffer;
40009124: d2 06 20 08 ld [ %i0 + 8 ], %o1
40009128: b0 07 60 50 add %i5, 0x50, %i0
4000912c: 40 00 26 ab call 40012bd8 <memcpy>
40009130: 90 10 00 18 mov %i0, %o0
if (args->command == TIOCSETAW || args->command == TIOCSETAF) {
40009134: b2 16 63 eb or %i1, 0x3eb, %i1
40009138: b6 06 c0 19 add %i3, %i1, %i3
4000913c: 80 a6 e0 01 cmp %i3, 1
40009140: 08 80 00 df bleu 400094bc <rtems_termios_ioctl+0x550>
<== NEVER TAKEN
40009144: 01 00 00 00 nop
if (( tty->flow_ctrl & FL_MDXON) &&
40009148: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
4000914c: 80 88 62 00 btst 0x200, %g1
40009150: 02 80 00 23 be 400091dc <rtems_termios_ioctl+0x270>
<== ALWAYS TAKEN
40009154: f8 07 61 7c ld [ %i5 + 0x17c ], %i4
!(tty->termios.c_iflag & IXON)) {
40009158: c2 07 60 50 ld [ %i5 + 0x50 ], %g1
<== NOT EXECUTED
if (( tty->flow_ctrl & FL_MDXON) &&
4000915c: 80 88 62 00 btst 0x200, %g1
<== NOT EXECUTED
40009160: 12 80 00 1f bne 400091dc <rtems_termios_ioctl+0x270>
<== NOT EXECUTED
40009164: 01 00 00 00 nop
<== NOT EXECUTED
tty->flow_ctrl &= ~(FL_MDXON | FL_ORCVXOF);
40009168: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
4000916c: 82 08 7d ef and %g1, -529, %g1
<== NOT EXECUTED
40009170: c2 27 61 48 st %g1, [ %i5 + 0x148 ]
<== NOT EXECUTED
if (tty->flow_ctrl & FL_OSTOP) {
40009174: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
40009178: 80 88 60 20 btst 0x20, %g1
<== NOT EXECUTED
4000917c: 02 80 00 18 be 400091dc <rtems_termios_ioctl+0x270>
<== NOT EXECUTED
40009180: 01 00 00 00 nop
<== NOT EXECUTED
( *context->lock_acquire )( context, lock_context );
40009184: c2 07 20 14 ld [ %i4 + 0x14 ], %g1
<== NOT EXECUTED
40009188: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
4000918c: 9f c0 40 00 call %g1
<== NOT EXECUTED
40009190: 92 07 bf fc add %fp, -4, %o1
<== NOT EXECUTED
tty->flow_ctrl &= ~FL_OSTOP;
40009194: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
40009198: 82 08 7f df and %g1, -33, %g1
<== NOT EXECUTED
4000919c: c2 27 61 48 st %g1, [ %i5 + 0x148 ]
<== NOT EXECUTED
if (tty->rawOutBufState != rob_idle) {
400091a0: c2 07 60 e4 ld [ %i5 + 0xe4 ], %g1
<== NOT EXECUTED
400091a4: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
400091a8: 22 80 00 0a be,a 400091d0 <rtems_termios_ioctl+0x264>
<== NOT EXECUTED
400091ac: c2 07 20 18 ld [ %i4 + 0x18 ], %g1
<== NOT EXECUTED
ctx, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail],1);
400091b0: c4 07 60 c0 ld [ %i5 + 0xc0 ], %g2
<== NOT EXECUTED
400091b4: d2 07 60 b8 ld [ %i5 + 0xb8 ], %o1
<== NOT EXECUTED
(*tty->handler.write)(
400091b8: c2 07 61 30 ld [ %i5 + 0x130 ], %g1
<== NOT EXECUTED
400091bc: 94 10 20 01 mov 1, %o2
<== NOT EXECUTED
400091c0: 92 02 40 02 add %o1, %g2, %o1
<== NOT EXECUTED
400091c4: 9f c0 40 00 call %g1
<== NOT EXECUTED
400091c8: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
( *context->lock_release )( context, lock_context );
400091cc: c2 07 20 18 ld [ %i4 + 0x18 ], %g1
<== NOT EXECUTED
400091d0: 92 07 bf fc add %fp, -4, %o1
<== NOT EXECUTED
400091d4: 9f c0 40 00 call %g1
<== NOT EXECUTED
400091d8: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
if (( tty->flow_ctrl & FL_MDXOF) && !(tty->termios.c_iflag & IXOFF)) {
400091dc: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
400091e0: 80 88 64 00 btst 0x400, %g1
400091e4: 02 80 00 06 be 400091fc <rtems_termios_ioctl+0x290>
<== ALWAYS TAKEN
400091e8: 01 00 00 00 nop
400091ec: c2 07 60 50 ld [ %i5 + 0x50 ], %g1
<== NOT EXECUTED
400091f0: 80 88 64 00 btst 0x400, %g1
<== NOT EXECUTED
400091f4: 02 80 00 ab be 400094a0 <rtems_termios_ioctl+0x534>
<== NOT EXECUTED
400091f8: 01 00 00 00 nop
<== NOT EXECUTED
if (( tty->flow_ctrl & FL_MDRTS) && !(tty->termios.c_cflag & CRTSCTS)) {
400091fc: c4 07 61 48 ld [ %i5 + 0x148 ], %g2
40009200: c2 07 60 58 ld [ %i5 + 0x58 ], %g1
40009204: 37 00 00 c0 sethi %hi(0x30000), %i3
40009208: 80 88 a1 00 btst 0x100, %g2
4000920c: 02 80 00 9c be 4000947c <rtems_termios_ioctl+0x510>
<== ALWAYS TAKEN
40009210: 82 08 40 1b and %g1, %i3, %g1
40009214: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
40009218: 02 80 00 87 be 40009434 <rtems_termios_ioctl+0x4c8>
<== NOT EXECUTED
4000921c: 01 00 00 00 nop
<== NOT EXECUTED
tty->flow_ctrl |= FL_MDRTS;
40009220: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
40009224: 82 10 61 00 or %g1, 0x100, %g1
<== NOT EXECUTED
40009228: c2 27 61 48 st %g1, [ %i5 + 0x148 ]
<== NOT EXECUTED
if (tty->termios.c_iflag & IXOFF) {
4000922c: c2 07 60 50 ld [ %i5 + 0x50 ], %g1
<== NOT EXECUTED
40009230: 80 88 64 00 btst 0x400, %g1
40009234: 02 80 00 06 be 4000924c <rtems_termios_ioctl+0x2e0>
<== ALWAYS TAKEN
40009238: 80 88 62 00 btst 0x200, %g1
tty->flow_ctrl |= FL_MDXOF;
4000923c: c4 07 61 48 ld [ %i5 + 0x148 ], %g2
<== NOT EXECUTED
40009240: 84 10 a4 00 or %g2, 0x400, %g2
<== NOT EXECUTED
40009244: c4 27 61 48 st %g2, [ %i5 + 0x148 ]
<== NOT EXECUTED
if (tty->termios.c_iflag & IXON) {
40009248: 80 88 62 00 btst 0x200, %g1
<== NOT EXECUTED
4000924c: 22 80 00 06 be,a 40009264 <rtems_termios_ioctl+0x2f8>
<== ALWAYS TAKEN
40009250: c2 07 60 5c ld [ %i5 + 0x5c ], %g1
tty->flow_ctrl |= FL_MDXON;
40009254: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
40009258: 82 10 62 00 or %g1, 0x200, %g1
<== NOT EXECUTED
4000925c: c2 27 61 48 st %g1, [ %i5 + 0x148 ]
<== NOT EXECUTED
if (tty->termios.c_lflag & ICANON) {
40009260: c2 07 60 5c ld [ %i5 + 0x5c ], %g1
<== NOT EXECUTED
40009264: 80 88 61 00 btst 0x100, %g1
40009268: 12 80 00 64 bne 400093f8 <rtems_termios_ioctl+0x48c>
<== NEVER TAKEN
4000926c: 82 10 20 01 mov 1, %g1
tty->vtimeTicks = tty->termios.c_cc[VTIME] *
40009270: c6 0f 60 71 ldub [ %i5 + 0x71 ], %g3
40009274: 03 10 00 51 sethi %hi(0x40014400), %g1
40009278: c2 00 63 c4 ld [ %g1 + 0x3c4 ], %g1 ! 400147c4 <_Watchdog_Ticks_per_second>
4000927c: 82 58 c0 01 smul %g3, %g1, %g1
rtems_clock_get_ticks_per_second() / 10;
40009280: 05 33 33 33 sethi %hi(0xcccccc00), %g2
40009284: 84 10 a0 cd or %g2, 0xcd, %g2 ! cccccccd <RAM_END+0x8c8ccccd>
40009288: 80 50 40 02 umul %g1, %g2, %g0
4000928c: 83 40 00 00 rd %y, %g1
40009290: 83 30 60 03 srl %g1, 3, %g1
tty->vtimeTicks = tty->termios.c_cc[VTIME] *
40009294: c2 27 60 7c st %g1, [ %i5 + 0x7c ]
if (tty->termios.c_cc[VTIME]) {
40009298: 80 a0 e0 00 cmp %g3, 0
4000929c: 02 80 00 7c be 4000948c <rtems_termios_ioctl+0x520>
<== ALWAYS TAKEN
400092a0: c4 0f 60 70 ldub [ %i5 + 0x70 ], %g2
if (tty->termios.c_cc[VMIN])
400092a4: 80 88 a0 ff btst 0xff, %g2
<== NOT EXECUTED
tty->rawInBufSemaphoreTimeout = tty->vtimeTicks;
400092a8: c2 27 60 ac st %g1, [ %i5 + 0xac ]
<== NOT EXECUTED
tty->rawInBufSemaphoreWait = true;
400092ac: 84 10 20 01 mov 1, %g2
<== NOT EXECUTED
if (tty->termios.c_cc[VMIN])
400092b0: 12 80 00 54 bne 40009400 <rtems_termios_ioctl+0x494>
<== NOT EXECUTED
400092b4: c4 2f 60 a8 stb %g2, [ %i5 + 0xa8 ]
<== NOT EXECUTED
tty->rawInBufSemaphoreFirstTimeout = tty->vtimeTicks;
400092b8: 10 80 00 53 b 40009404 <rtems_termios_ioctl+0x498>
<== NOT EXECUTED
400092bc: c2 27 60 b0 st %g1, [ %i5 + 0xb0 ]
<== NOT EXECUTED
int rawnc = tty->rawInBuf.Tail - tty->rawInBuf.Head;
400092c0: c2 07 60 88 ld [ %i5 + 0x88 ], %g1
<== NOT EXECUTED
400092c4: c4 07 60 84 ld [ %i5 + 0x84 ], %g2
<== NOT EXECUTED
if ( rawnc < 0 )
400092c8: 84 a0 40 02 subcc %g1, %g2, %g2
<== NOT EXECUTED
400092cc: 3c 80 00 05 bpos,a 400092e0 <rtems_termios_ioctl+0x374>
<== NOT EXECUTED
400092d0: c2 07 60 40 ld [ %i5 + 0x40 ], %g1
<== NOT EXECUTED
rawnc += tty->rawInBuf.Size;
400092d4: c2 07 60 8c ld [ %i5 + 0x8c ], %g1
<== NOT EXECUTED
400092d8: 84 00 80 01 add %g2, %g1, %g2
<== NOT EXECUTED
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
400092dc: c2 07 60 40 ld [ %i5 + 0x40 ], %g1
<== NOT EXECUTED
400092e0: c8 07 60 44 ld [ %i5 + 0x44 ], %g4
<== NOT EXECUTED
400092e4: c6 07 20 08 ld [ %i4 + 8 ], %g3
<== NOT EXECUTED
400092e8: 82 20 40 04 sub %g1, %g4, %g1
<== NOT EXECUTED
400092ec: 82 00 40 02 add %g1, %g2, %g1
<== NOT EXECUTED
400092f0: c2 20 c0 00 st %g1, [ %g3 ]
<== NOT EXECUTED
sc = RTEMS_SUCCESSFUL;
400092f4: b0 10 20 00 clr %i0
<== NOT EXECUTED
400092f8: 40 00 0d 80 call 4000c8f8 <_Mutex_Release>
<== NOT EXECUTED
400092fc: 90 10 00 1a mov %i2, %o0
<== NOT EXECUTED
}
40009300: 81 c7 e0 08 ret
<== NOT EXECUTED
40009304: 81 e8 00 00 restore
<== NOT EXECUTED
tty->tty_rcv = *wakeup;
40009308: c2 27 61 6c st %g1, [ %i5 + 0x16c ]
<== NOT EXECUTED
sc = RTEMS_SUCCESSFUL;
4000930c: b0 10 20 00 clr %i0
<== NOT EXECUTED
tty->tty_rcv = *wakeup;
40009310: c2 06 60 04 ld [ %i1 + 4 ], %g1
<== NOT EXECUTED
40009314: c2 27 61 70 st %g1, [ %i5 + 0x170 ]
<== NOT EXECUTED
40009318: 40 00 0d 78 call 4000c8f8 <_Mutex_Release>
<== NOT EXECUTED
4000931c: 90 10 00 1a mov %i2, %o0
<== NOT EXECUTED
}
40009320: 81 c7 e0 08 ret
<== NOT EXECUTED
40009324: 81 e8 00 00 restore
<== NOT EXECUTED
if (rtems_termios_linesw[tty->t_line].l_ioctl != NULL) {
40009328: c2 07 61 5c ld [ %i5 + 0x15c ], %g1
<== NOT EXECUTED
4000932c: 85 28 60 05 sll %g1, 5, %g2
<== NOT EXECUTED
40009330: 03 10 00 60 sethi %hi(0x40018000), %g1
<== NOT EXECUTED
40009334: 82 10 60 48 or %g1, 0x48, %g1 ! 40018048 <rtems_termios_linesw>
<== NOT EXECUTED
40009338: 82 00 40 02 add %g1, %g2, %g1
<== NOT EXECUTED
4000933c: c2 00 60 18 ld [ %g1 + 0x18 ], %g1
<== NOT EXECUTED
40009340: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
40009344: 02 80 00 77 be 40009520 <rtems_termios_ioctl+0x5b4>
<== NOT EXECUTED
40009348: 92 10 00 1c mov %i4, %o1
<== NOT EXECUTED
sc = rtems_termios_linesw[tty->t_line].l_ioctl(tty,args);
4000934c: 9f c0 40 00 call %g1
<== NOT EXECUTED
40009350: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
40009354: 10 bf ff 27 b 40008ff0 <rtems_termios_ioctl+0x84>
<== NOT EXECUTED
40009358: b0 10 00 08 mov %o0, %i0
<== NOT EXECUTED
flags = *((int *)args->buffer);
4000935c: c2 06 20 08 ld [ %i0 + 8 ], %g1
<== NOT EXECUTED
40009360: c2 00 40 00 ld [ %g1 ], %g1
<== NOT EXECUTED
if (flags == 0) {
40009364: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
40009368: 22 80 00 05 be,a 4000937c <rtems_termios_ioctl+0x410>
<== NOT EXECUTED
4000936c: b6 10 20 01 mov 1, %i3
<== NOT EXECUTED
if (flags & FWRITE) {
40009370: 80 88 60 02 btst 2, %g1
<== NOT EXECUTED
40009374: 02 80 00 0e be 400093ac <rtems_termios_ioctl+0x440>
<== NOT EXECUTED
40009378: b6 08 60 01 and %g1, 1, %i3
<== NOT EXECUTED
rtems_termios_device_context *ctx = tty->device_context;
4000937c: f8 07 61 7c ld [ %i5 + 0x17c ], %i4
<== NOT EXECUTED
( *context->lock_acquire )( context, lock_context );
40009380: c2 07 20 14 ld [ %i4 + 0x14 ], %g1
<== NOT EXECUTED
40009384: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
40009388: 9f c0 40 00 call %g1
<== NOT EXECUTED
4000938c: 92 07 bf fc add %fp, -4, %o1
<== NOT EXECUTED
tty->rawOutBuf.Tail = 0;
40009390: c0 27 60 c0 clr [ %i5 + 0xc0 ]
<== NOT EXECUTED
( *context->lock_release )( context, lock_context );
40009394: 92 07 bf fc add %fp, -4, %o1
<== NOT EXECUTED
tty->rawOutBuf.Head = 0;
40009398: c0 27 60 bc clr [ %i5 + 0xbc ]
<== NOT EXECUTED
tty->rawOutBufState = rob_idle;
4000939c: c0 27 60 e4 clr [ %i5 + 0xe4 ]
<== NOT EXECUTED
400093a0: c2 07 20 18 ld [ %i4 + 0x18 ], %g1
<== NOT EXECUTED
400093a4: 9f c0 40 00 call %g1
<== NOT EXECUTED
400093a8: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
if (flags & FREAD) {
400093ac: 80 a6 e0 00 cmp %i3, 0
<== NOT EXECUTED
400093b0: 22 80 00 0e be,a 400093e8 <rtems_termios_ioctl+0x47c>
<== NOT EXECUTED
400093b4: b0 10 20 00 clr %i0
<== NOT EXECUTED
rtems_termios_device_context *ctx = tty->device_context;
400093b8: f8 07 61 7c ld [ %i5 + 0x17c ], %i4
<== NOT EXECUTED
( *context->lock_acquire )( context, lock_context );
400093bc: c2 07 20 14 ld [ %i4 + 0x14 ], %g1
<== NOT EXECUTED
400093c0: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
400093c4: 9f c0 40 00 call %g1
<== NOT EXECUTED
400093c8: 92 07 bf fc add %fp, -4, %o1
<== NOT EXECUTED
tty->rawInBuf.Tail = 0;
400093cc: c0 27 60 88 clr [ %i5 + 0x88 ]
<== NOT EXECUTED
( *context->lock_release )( context, lock_context );
400093d0: 92 07 bf fc add %fp, -4, %o1
<== NOT EXECUTED
tty->rawInBuf.Head = 0;
400093d4: c0 27 60 84 clr [ %i5 + 0x84 ]
<== NOT EXECUTED
400093d8: c2 07 20 18 ld [ %i4 + 0x18 ], %g1
<== NOT EXECUTED
400093dc: 9f c0 40 00 call %g1
<== NOT EXECUTED
400093e0: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
sc = RTEMS_SUCCESSFUL;
400093e4: b0 10 20 00 clr %i0
<== NOT EXECUTED
400093e8: 40 00 0d 44 call 4000c8f8 <_Mutex_Release>
400093ec: 90 10 00 1a mov %i2, %o0
}
400093f0: 81 c7 e0 08 ret
400093f4: 81 e8 00 00 restore
tty->rawInBufSemaphoreTimeout = 0;
400093f8: c0 27 60 ac clr [ %i5 + 0xac ]
tty->rawInBufSemaphoreWait = true;
400093fc: c2 2f 60 a8 stb %g1, [ %i5 + 0xa8 ]
tty->rawInBufSemaphoreFirstTimeout = 0;
40009400: c0 27 60 b0 clr [ %i5 + 0xb0 ]
if (tty->handler.set_attributes) {
40009404: c2 07 61 34 ld [ %i5 + 0x134 ], %g1
40009408: 80 a0 60 00 cmp %g1, 0
4000940c: 02 bf ff f6 be 400093e4 <rtems_termios_ioctl+0x478>
<== NEVER TAKEN
40009410: 92 10 00 18 mov %i0, %o1
sc = (*tty->handler.set_attributes)(tty->device_context, &tty->termios) ?
40009414: d0 07 61 7c ld [ %i5 + 0x17c ], %o0
40009418: 9f c0 40 00 call %g1
4000941c: b0 10 20 1b mov 0x1b, %i0
RTEMS_SUCCESSFUL : RTEMS_IO_ERROR;
40009420: 80 a2 20 00 cmp %o0, 0
40009424: 02 bf fe f3 be 40008ff0 <rtems_termios_ioctl+0x84>
<== NEVER TAKEN
40009428: 01 00 00 00 nop
sc = RTEMS_SUCCESSFUL;
4000942c: 10 bf ff ef b 400093e8 <rtems_termios_ioctl+0x47c>
40009430: b0 10 20 00 clr %i0 ! 0 <PROM_START>
tty->flow_ctrl &= ~(FL_MDRTS);
40009434: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
40009438: 82 08 7e ff and %g1, -257, %g1
<== NOT EXECUTED
4000943c: c2 27 61 48 st %g1, [ %i5 + 0x148 ]
<== NOT EXECUTED
if ((tty->flow_ctrl & FL_IRTSOFF) &&
40009440: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
40009444: 80 88 60 04 btst 4, %g1
<== NOT EXECUTED
40009448: 02 80 00 31 be 4000950c <rtems_termios_ioctl+0x5a0>
<== NOT EXECUTED
4000944c: 01 00 00 00 nop
<== NOT EXECUTED
(tty->flow.start_remote_tx != NULL)) {
40009450: c2 07 61 44 ld [ %i5 + 0x144 ], %g1
<== NOT EXECUTED
if ((tty->flow_ctrl & FL_IRTSOFF) &&
40009454: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
40009458: 02 80 00 2d be 4000950c <rtems_termios_ioctl+0x5a0>
<== NOT EXECUTED
4000945c: 01 00 00 00 nop
<== NOT EXECUTED
tty->flow.start_remote_tx(ctx);
40009460: 9f c0 40 00 call %g1
<== NOT EXECUTED
40009464: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
tty->flow_ctrl &= ~(FL_IRTSOFF);
40009468: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
4000946c: 82 08 7f fb and %g1, -5, %g1
<== NOT EXECUTED
40009470: c2 27 61 48 st %g1, [ %i5 + 0x148 ]
<== NOT EXECUTED
40009474: c2 07 60 58 ld [ %i5 + 0x58 ], %g1
<== NOT EXECUTED
40009478: 82 08 40 1b and %g1, %i3, %g1
<== NOT EXECUTED
if (tty->termios.c_cflag & CRTSCTS) {
4000947c: 80 a0 60 00 cmp %g1, 0
40009480: 22 bf ff 6c be,a 40009230 <rtems_termios_ioctl+0x2c4>
<== ALWAYS TAKEN
40009484: c2 07 60 50 ld [ %i5 + 0x50 ], %g1
40009488: 30 bf ff 66 b,a 40009220 <rtems_termios_ioctl+0x2b4>
<== NOT EXECUTED
if (tty->termios.c_cc[VMIN]) {
4000948c: 80 88 a0 ff btst 0xff, %g2
40009490: 12 bf ff da bne 400093f8 <rtems_termios_ioctl+0x48c>
<== ALWAYS TAKEN
40009494: 82 10 20 01 mov 1, %g1
tty->rawInBufSemaphoreWait = false;
40009498: 10 bf ff db b 40009404 <rtems_termios_ioctl+0x498>
<== NOT EXECUTED
4000949c: c0 2f 60 a8 clrb [ %i5 + 0xa8 ]
<== NOT EXECUTED
tty->flow_ctrl &= ~(FL_MDXOF);
400094a0: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
400094a4: 82 08 7b ff and %g1, -1025, %g1
<== NOT EXECUTED
400094a8: c2 27 61 48 st %g1, [ %i5 + 0x148 ]
<== NOT EXECUTED
tty->flow_ctrl &= ~(FL_ISNTXOF);
400094ac: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
400094b0: 82 08 7f fd and %g1, -3, %g1
<== NOT EXECUTED
400094b4: c2 27 61 48 st %g1, [ %i5 + 0x148 ]
<== NOT EXECUTED
400094b8: 30 bf ff 51 b,a 400091fc <rtems_termios_ioctl+0x290>
<== NOT EXECUTED
drainOutput (tty);
400094bc: 7f ff f7 bd call 400073b0 <drainOutput>
<== NOT EXECUTED
400094c0: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
if (args->command == TIOCSETAF) {
400094c4: c4 07 20 04 ld [ %i4 + 4 ], %g2
<== NOT EXECUTED
400094c8: 03 20 0b 1d sethi %hi(0x802c7400), %g1
<== NOT EXECUTED
400094cc: 82 10 60 16 or %g1, 0x16, %g1 ! 802c7416 <RAM_END+0x3fec7416>
<== NOT EXECUTED
400094d0: 80 a0 80 01 cmp %g2, %g1
<== NOT EXECUTED
400094d4: 12 bf ff 1d bne 40009148 <rtems_termios_ioctl+0x1dc>
<== NOT EXECUTED
400094d8: 01 00 00 00 nop
<== NOT EXECUTED
rtems_termios_device_context *ctx = tty->device_context;
400094dc: f8 07 61 7c ld [ %i5 + 0x17c ], %i4
<== NOT EXECUTED
( *context->lock_acquire )( context, lock_context );
400094e0: c2 07 20 14 ld [ %i4 + 0x14 ], %g1
<== NOT EXECUTED
400094e4: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
400094e8: 9f c0 40 00 call %g1
<== NOT EXECUTED
400094ec: 92 07 bf fc add %fp, -4, %o1
<== NOT EXECUTED
tty->rawInBuf.Tail = 0;
400094f0: c0 27 60 88 clr [ %i5 + 0x88 ]
<== NOT EXECUTED
( *context->lock_release )( context, lock_context );
400094f4: 92 07 bf fc add %fp, -4, %o1
<== NOT EXECUTED
tty->rawInBuf.Head = 0;
400094f8: c0 27 60 84 clr [ %i5 + 0x84 ]
<== NOT EXECUTED
400094fc: c2 07 20 18 ld [ %i4 + 0x18 ], %g1
<== NOT EXECUTED
40009500: 9f c0 40 00 call %g1
<== NOT EXECUTED
40009504: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
40009508: 30 bf ff 10 b,a 40009148 <rtems_termios_ioctl+0x1dc>
<== NOT EXECUTED
tty->flow_ctrl &= ~(FL_IRTSOFF);
4000950c: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
40009510: 82 08 7f fb and %g1, -5, %g1
<== NOT EXECUTED
40009514: c2 27 61 48 st %g1, [ %i5 + 0x148 ]
<== NOT EXECUTED
if (tty->termios.c_iflag & IXOFF) {
40009518: 10 bf ff 46 b 40009230 <rtems_termios_ioctl+0x2c4>
<== NOT EXECUTED
4000951c: c2 07 60 50 ld [ %i5 + 0x50 ], %g1
<== NOT EXECUTED
} else if (tty->handler.ioctl) {
40009520: c2 07 61 38 ld [ %i5 + 0x138 ], %g1
<== NOT EXECUTED
40009524: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
40009528: 02 80 00 08 be 40009548 <rtems_termios_ioctl+0x5dc>
<== NOT EXECUTED
4000952c: 92 10 00 1b mov %i3, %o1
<== NOT EXECUTED
args->ioctl_return = (*tty->handler.ioctl) (tty->device_context,
40009530: d4 07 20 08 ld [ %i4 + 8 ], %o2
<== NOT EXECUTED
40009534: d0 07 61 7c ld [ %i5 + 0x17c ], %o0
<== NOT EXECUTED
40009538: 9f c0 40 00 call %g1
<== NOT EXECUTED
4000953c: b0 10 20 00 clr %i0
<== NOT EXECUTED
40009540: 10 bf fe ac b 40008ff0 <rtems_termios_ioctl+0x84>
<== NOT EXECUTED
40009544: d0 27 20 0c st %o0, [ %i4 + 0xc ]
<== NOT EXECUTED
sc = RTEMS_INVALID_NUMBER;
40009548: 10 bf fe aa b 40008ff0 <rtems_termios_ioctl+0x84>
<== NOT EXECUTED
4000954c: b0 10 20 0a mov 0xa, %i0
<== NOT EXECUTED
40009a70 <rtems_termios_set_best_baud>:
{
const rtems_assoc_t *current = &rtems_termios_baud_table[ 0 ];
const rtems_assoc_t *last = current;
speed_t spd;
while ( current->name != NULL && current->local_value < baud ) {
40009a70: 03 10 00 53 sethi %hi(0x40014c00), %g1
40009a74: c6 00 61 68 ld [ %g1 + 0x168 ], %g3 ! 40014d68 <rtems_termios_baud_table>
if ( current->name != NULL ) {
uint32_t mid = (last->local_value + current->local_value) / UINT32_C( 2 );
spd = baud <= mid ? last->remote_value : current->remote_value;
} else {
spd = B460800;
40009a78: 05 00 01 c2 sethi %hi(0x70800), %g2
while ( current->name != NULL && current->local_value < baud ) {
40009a7c: 80 a0 e0 00 cmp %g3, 0
40009a80: 02 80 00 12 be 40009ac8 <rtems_termios_set_best_baud+0x58>
<== NEVER TAKEN
40009a84: 82 10 61 68 or %g1, 0x168, %g1
40009a88: c8 00 60 04 ld [ %g1 + 4 ], %g4
40009a8c: 80 a2 40 04 cmp %o1, %g4
40009a90: 38 80 00 0a bgu,a 40009ab8 <rtems_termios_set_best_baud+0x48>
<== ALWAYS TAKEN
40009a94: c6 00 60 0c ld [ %g1 + 0xc ], %g3
40009a98: 10 80 00 1b b 40009b04 <rtems_termios_set_best_baud+0x94>
<== NOT EXECUTED
40009a9c: 86 10 00 04 mov %g4, %g3
<== NOT EXECUTED
40009aa0: c6 00 a0 04 ld [ %g2 + 4 ], %g3
40009aa4: 80 a0 c0 09 cmp %g3, %o1
40009aa8: 3a 80 00 0b bcc,a 40009ad4 <rtems_termios_set_best_baud+0x64>
<== NEVER TAKEN
40009aac: c8 00 60 04 ld [ %g1 + 4 ], %g4
<== NOT EXECUTED
40009ab0: 82 10 00 02 mov %g2, %g1
40009ab4: c6 00 a0 0c ld [ %g2 + 0xc ], %g3
40009ab8: 80 a0 e0 00 cmp %g3, 0
40009abc: 12 bf ff f9 bne 40009aa0 <rtems_termios_set_best_baud+0x30>
40009ac0: 84 00 60 0c add %g1, 0xc, %g2
spd = B460800;
40009ac4: 05 00 01 c2 sethi %hi(0x70800), %g2
}
term->c_ispeed = spd;
40009ac8: c4 22 20 24 st %g2, [ %o0 + 0x24 ]
term->c_ospeed = spd;
}
40009acc: 81 c3 e0 08 retl
40009ad0: c4 22 20 28 st %g2, [ %o0 + 0x28 ]
uint32_t mid = (last->local_value + current->local_value) / UINT32_C( 2 );
40009ad4: 86 00 c0 04 add %g3, %g4, %g3
<== NOT EXECUTED
40009ad8: 87 30 e0 01 srl %g3, 1, %g3
<== NOT EXECUTED
spd = baud <= mid ? last->remote_value : current->remote_value;
40009adc: 80 a2 40 03 cmp %o1, %g3
<== NOT EXECUTED
40009ae0: 28 80 00 06 bleu,a 40009af8 <rtems_termios_set_best_baud+0x88>
<== NOT EXECUTED
40009ae4: c4 00 60 08 ld [ %g1 + 8 ], %g2
<== NOT EXECUTED
40009ae8: c4 00 a0 08 ld [ %g2 + 8 ], %g2
<== NOT EXECUTED
term->c_ispeed = spd;
40009aec: c4 22 20 24 st %g2, [ %o0 + 0x24 ]
<== NOT EXECUTED
}
40009af0: 81 c3 e0 08 retl
<== NOT EXECUTED
40009af4: c4 22 20 28 st %g2, [ %o0 + 0x28 ]
<== NOT EXECUTED
term->c_ispeed = spd;
40009af8: c4 22 20 24 st %g2, [ %o0 + 0x24 ]
<== NOT EXECUTED
}
40009afc: 81 c3 e0 08 retl
<== NOT EXECUTED
40009b00: c4 22 20 28 st %g2, [ %o0 + 0x28 ]
<== NOT EXECUTED
const rtems_assoc_t *current = &rtems_termios_baud_table[ 0 ];
40009b04: 10 bf ff f4 b 40009ad4 <rtems_termios_set_best_baud+0x64>
<== NOT EXECUTED
40009b08: 84 10 00 01 mov %g1, %g2
<== NOT EXECUTED
40004478 <rtems_verror>:
int rtems_verror(
rtems_error_code_t error_flag,
const char *printf_format,
va_list arglist
)
{
40004478: 9d e3 bf a0 save %sp, -96, %sp
int local_errno = 0;
int chars_written = 0;
rtems_status_code status;
if (error_flag & RTEMS_ERROR_PANIC) {
4000447c: 03 08 00 00 sethi %hi(0x20000000), %g1
40004480: 80 8e 00 01 btst %i0, %g1
40004484: 02 80 00 0e be 400044bc <rtems_verror+0x44>
40004488: ba 10 00 18 mov %i0, %i5
if (rtems_panic_in_progress++)
4000448c: 05 10 00 77 sethi %hi(0x4001dc00), %g2
40004490: c2 00 a0 f8 ld [ %g2 + 0xf8 ], %g1 ! 4001dcf8 <rtems_panic_in_progress>
40004494: 86 00 60 01 add %g1, 1, %g3
40004498: 80 a0 60 00 cmp %g1, 0
4000449c: 02 80 00 08 be 400044bc <rtems_verror+0x44>
<== ALWAYS TAKEN
400044a0: c6 20 a0 f8 st %g3, [ %g2 + 0xf8 ]
const ISR_lock_Context *lock_context
)
{
uint32_t disable_level;
disable_level = cpu_self->thread_dispatch_disable_level;
400044a4: c2 01 a0 18 ld [ %g6 + 0x18 ], %g1
<== NOT EXECUTED
_Profiling_Thread_dispatch_disable_critical(
cpu_self,
disable_level,
lock_context
);
cpu_self->thread_dispatch_disable_level = disable_level + 1;
400044a8: 82 00 60 01 inc %g1
<== NOT EXECUTED
400044ac: c2 21 a0 18 st %g1, [ %g6 + 0x18 ]
<== NOT EXECUTED
_Thread_Dispatch_disable(); /* disable task switches */
/* don't aggravate things */
if (rtems_panic_in_progress > 2)
400044b0: 80 a0 e0 02 cmp %g3, 2
<== NOT EXECUTED
400044b4: 14 80 00 1d bg 40004528 <rtems_verror+0xb0>
<== NOT EXECUTED
400044b8: b0 10 20 00 clr %i0
<== NOT EXECUTED
return 0;
}
(void) fflush(stdout); /* in case stdout/stderr same */
400044bc: 7f ff f3 a1 call 40001340 <__getreent>
400044c0: 39 1c 00 00 sethi %hi(0x70000000), %i4
400044c4: 40 00 28 3d call 4000e5b8 <fflush>
400044c8: d0 02 20 08 ld [ %o0 + 8 ], %o0
status = error_flag & ~RTEMS_ERROR_MASK;
if (error_flag & RTEMS_ERROR_ERRNO) /* include errno? */
400044cc: 03 10 00 00 sethi %hi(0x40000000), %g1
400044d0: 80 8f 40 01 btst %i5, %g1
400044d4: 12 80 00 17 bne 40004530 <rtems_verror+0xb8>
400044d8: b8 2f 40 1c andn %i5, %i4, %i4
#if defined(RTEMS_MULTIPROCESSING)
if (_System_state_Is_multiprocessing)
fprintf(stderr, "[%" PRIu32 "] ", _Configuration_MP_table->node);
#endif
chars_written += vfprintf(stderr, printf_format, arglist);
400044dc: 7f ff f3 99 call 40001340 <__getreent>
400044e0: 01 00 00 00 nop
400044e4: d0 02 20 0c ld [ %o0 + 0xc ], %o0
400044e8: 94 10 00 1a mov %i2, %o2
400044ec: 40 00 37 9a call 40012354 <vfprintf>
400044f0: 92 10 00 19 mov %i1, %o1
if (status)
400044f4: 80 a7 20 00 cmp %i4, 0
400044f8: 12 80 00 37 bne 400045d4 <rtems_verror+0x15c>
400044fc: b0 10 00 08 mov %o0, %i0
chars_written += fprintf(stderr, " (errno: %s)", strerror(local_errno));
else
chars_written += fprintf(stderr, " (unknown errno=%d)", local_errno);
}
chars_written += fprintf(stderr, "\n");
40004500: 7f ff f3 90 call 40001340 <__getreent>
40004504: 01 00 00 00 nop
40004508: 13 10 00 68 sethi %hi(0x4001a000), %o1
4000450c: d0 02 20 0c ld [ %o0 + 0xc ], %o0
40004510: 40 00 29 4c call 4000ea40 <fprintf>
40004514: 92 12 61 f8 or %o1, 0x1f8, %o1
(void) fflush(stderr);
40004518: 7f ff f3 8a call 40001340 <__getreent>
4000451c: b0 02 00 18 add %o0, %i0, %i0
40004520: 40 00 28 26 call 4000e5b8 <fflush>
40004524: d0 02 20 0c ld [ %o0 + 0xc ], %o0
40004528: 81 c7 e0 08 ret
4000452c: 81 e8 00 00 restore
local_errno = errno;
40004530: 40 00 27 50 call 4000e270 <__errno>
40004534: 01 00 00 00 nop
chars_written += vfprintf(stderr, printf_format, arglist);
40004538: 7f ff f3 82 call 40001340 <__getreent>
4000453c: fa 02 00 00 ld [ %o0 ], %i5
40004540: d0 02 20 0c ld [ %o0 + 0xc ], %o0
40004544: 94 10 00 1a mov %i2, %o2
40004548: 40 00 37 83 call 40012354 <vfprintf>
4000454c: 92 10 00 19 mov %i1, %o1
if (status)
40004550: 80 a7 20 00 cmp %i4, 0
40004554: 12 80 00 21 bne 400045d8 <rtems_verror+0x160>
40004558: b0 10 00 08 mov %o0, %i0
if (local_errno) {
4000455c: 80 a7 60 00 cmp %i5, 0
40004560: 02 bf ff e8 be 40004500 <rtems_verror+0x88>
40004564: 01 00 00 00 nop
if ((local_errno > 0) && *strerror(local_errno))
40004568: 04 80 00 08 ble 40004588 <rtems_verror+0x110>
4000456c: 01 00 00 00 nop
40004570: 40 00 2c b6 call 4000f848 <strerror>
40004574: 90 10 00 1d mov %i5, %o0
40004578: c2 4a 00 00 ldsb [ %o0 ], %g1
4000457c: 80 a0 60 00 cmp %g1, 0
40004580: 12 80 00 22 bne 40004608 <rtems_verror+0x190>
<== ALWAYS TAKEN
40004584: 01 00 00 00 nop
chars_written += fprintf(stderr, " (unknown errno=%d)", local_errno);
40004588: 7f ff f3 6e call 40001340 <__getreent>
4000458c: 01 00 00 00 nop
40004590: 94 10 00 1d mov %i5, %o2
40004594: d0 02 20 0c ld [ %o0 + 0xc ], %o0
40004598: 13 10 00 67 sethi %hi(0x40019c00), %o1
4000459c: 40 00 29 29 call 4000ea40 <fprintf>
400045a0: 92 12 60 18 or %o1, 0x18, %o1 ! 40019c18 <_Console_simple_Handlers+0x60>
chars_written += fprintf(stderr, "\n");
400045a4: 7f ff f3 67 call 40001340 <__getreent>
400045a8: b0 06 00 08 add %i0, %o0, %i0
400045ac: 13 10 00 68 sethi %hi(0x4001a000), %o1
400045b0: d0 02 20 0c ld [ %o0 + 0xc ], %o0
400045b4: 40 00 29 23 call 4000ea40 <fprintf>
400045b8: 92 12 61 f8 or %o1, 0x1f8, %o1
(void) fflush(stderr);
400045bc: 7f ff f3 61 call 40001340 <__getreent>
400045c0: b0 02 00 18 add %o0, %i0, %i0
400045c4: 40 00 27 fd call 4000e5b8 <fflush>
400045c8: d0 02 20 0c ld [ %o0 + 0xc ], %o0
400045cc: 81 c7 e0 08 ret
400045d0: 81 e8 00 00 restore
int local_errno = 0;
400045d4: ba 10 20 00 clr %i5
fprintf(stderr, " (status: %s)", rtems_status_text(status));
400045d8: 7f ff f3 5a call 40001340 <__getreent>
400045dc: 01 00 00 00 nop
400045e0: f6 02 20 0c ld [ %o0 + 0xc ], %i3
400045e4: 40 00 07 c6 call 400064fc <rtems_status_text>
400045e8: 90 10 00 1c mov %i4, %o0
400045ec: 13 10 00 66 sethi %hi(0x40019800), %o1
400045f0: 94 10 00 08 mov %o0, %o2
400045f4: 92 12 63 f8 or %o1, 0x3f8, %o1
400045f8: 40 00 29 12 call 4000ea40 <fprintf>
400045fc: 90 10 00 1b mov %i3, %o0
chars_written +=
40004600: 10 bf ff d7 b 4000455c <rtems_verror+0xe4>
40004604: b0 06 00 08 add %i0, %o0, %i0
chars_written += fprintf(stderr, " (errno: %s)", strerror(local_errno));
40004608: 7f ff f3 4e call 40001340 <__getreent>
4000460c: 01 00 00 00 nop
40004610: f8 02 20 0c ld [ %o0 + 0xc ], %i4
40004614: 40 00 2c 8d call 4000f848 <strerror>
40004618: 90 10 00 1d mov %i5, %o0
4000461c: 13 10 00 67 sethi %hi(0x40019c00), %o1
40004620: 94 10 00 08 mov %o0, %o2
40004624: 92 12 60 08 or %o1, 8, %o1
40004628: 40 00 29 06 call 4000ea40 <fprintf>
4000462c: 90 10 00 1c mov %i4, %o0
40004630: 10 bf ff b4 b 40004500 <rtems_verror+0x88>
40004634: b0 06 00 08 add %i0, %o0, %i0
4000e3e0 <rtems_vprintf>:
int rtems_vprintf(
const rtems_printer *printer,
const char *format,
va_list ap
)
{
4000e3e0: 9d e3 bf a0 save %sp, -96, %sp
4000e3e4: 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;
4000e3e8: 80 a0 60 00 cmp %g1, 0
4000e3ec: 02 80 00 0a be 4000e414 <rtems_vprintf+0x34>
<== NEVER TAKEN
4000e3f0: b0 10 20 00 clr %i0
4000e3f4: c4 00 60 04 ld [ %g1 + 4 ], %g2
4000e3f8: 80 a0 a0 00 cmp %g2, 0
4000e3fc: 02 80 00 06 be 4000e414 <rtems_vprintf+0x34>
<== NEVER TAKEN
4000e400: 94 10 00 1a mov %i2, %o2
int len = 0;
if ( rtems_print_printer_valid( printer ) ) {
len = printer->printer( printer->context, format, ap );
4000e404: d0 00 40 00 ld [ %g1 ], %o0
4000e408: 9f c0 80 00 call %g2
4000e40c: 92 10 00 19 mov %i1, %o1
4000e410: b0 10 00 08 mov %o0, %i0
}
return len;
}
4000e414: 81 c7 e0 08 ret
4000e418: 81 e8 00 00 restore
40006c94 <tcsetattr>:
int tcsetattr(
int fd,
int opt,
const struct termios *tp
)
{
40006c94: 9d e3 bf 70 save %sp, -144, %sp
struct termios localterm;
if (opt & TCSASOFT) {
40006c98: 80 8e 60 10 btst 0x10, %i1
40006c9c: 22 80 00 0b be,a 40006cc8 <tcsetattr+0x34>
<== ALWAYS TAKEN
40006ca0: b2 0e 7f ef and %i1, -17, %i1
localterm = *tp;
40006ca4: 92 10 00 1a mov %i2, %o1
<== NOT EXECUTED
40006ca8: 94 10 20 2c mov 0x2c, %o2
<== NOT EXECUTED
40006cac: 40 00 33 f3 call 40013c78 <memcpy>
<== NOT EXECUTED
40006cb0: 90 07 bf d4 add %fp, -44, %o0
<== NOT EXECUTED
localterm.c_cflag |= CIGNORE;
40006cb4: c2 07 bf dc ld [ %fp + -36 ], %g1
<== NOT EXECUTED
40006cb8: 82 10 60 01 or %g1, 1, %g1
<== NOT EXECUTED
40006cbc: c2 27 bf dc st %g1, [ %fp + -36 ]
<== NOT EXECUTED
tp = &localterm;
40006cc0: b4 07 bf d4 add %fp, -44, %i2
<== NOT EXECUTED
}
switch (opt & ~TCSASOFT) {
40006cc4: b2 0e 7f ef and %i1, -17, %i1
<== NOT EXECUTED
40006cc8: 80 a6 60 01 cmp %i1, 1
40006ccc: 02 80 00 19 be 40006d30 <tcsetattr+0x9c>
<== NEVER TAKEN
40006cd0: 80 a6 60 02 cmp %i1, 2
40006cd4: 02 80 00 10 be 40006d14 <tcsetattr+0x80>
<== NEVER TAKEN
40006cd8: 80 a6 60 00 cmp %i1, 0
40006cdc: 02 80 00 08 be 40006cfc <tcsetattr+0x68>
<== ALWAYS TAKEN
40006ce0: 94 10 00 1a mov %i2, %o2
case TCSAFLUSH:
return ioctl( fd, TIOCSETAF, tp );
default:
rtems_set_errno_and_return_minus_one( EINVAL );
40006ce4: 40 00 32 15 call 40013538 <__errno>
<== NOT EXECUTED
40006ce8: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
40006cec: 82 10 20 16 mov 0x16, %g1
<== NOT EXECUTED
40006cf0: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
}
}
40006cf4: 81 c7 e0 08 ret
<== NOT EXECUTED
40006cf8: 81 e8 00 00 restore
<== NOT EXECUTED
return ioctl( fd, TIOCSETA, tp );
40006cfc: 90 10 00 18 mov %i0, %o0
40006d00: 13 20 0b 1d sethi %hi(0x802c7400), %o1
40006d04: 40 00 2f c3 call 40012c10 <ioctl>
40006d08: 92 12 60 14 or %o1, 0x14, %o1 ! 802c7414 <RAM_END+0x3fec7414>
40006d0c: 81 c7 e0 08 ret
40006d10: 91 e8 00 08 restore %g0, %o0, %o0
return ioctl( fd, TIOCSETAF, tp );
40006d14: 94 10 00 1a mov %i2, %o2
<== NOT EXECUTED
40006d18: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
40006d1c: 13 20 0b 1d sethi %hi(0x802c7400), %o1
<== NOT EXECUTED
40006d20: 40 00 2f bc call 40012c10 <ioctl>
<== NOT EXECUTED
40006d24: 92 12 60 16 or %o1, 0x16, %o1 ! 802c7416 <RAM_END+0x3fec7416>
<== NOT EXECUTED
40006d28: 81 c7 e0 08 ret
<== NOT EXECUTED
40006d2c: 91 e8 00 08 restore %g0, %o0, %o0
<== NOT EXECUTED
return ioctl( fd, TIOCSETAW, tp );
40006d30: 94 10 00 1a mov %i2, %o2
<== NOT EXECUTED
40006d34: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
40006d38: 13 20 0b 1d sethi %hi(0x802c7400), %o1
<== NOT EXECUTED
40006d3c: 40 00 2f b5 call 40012c10 <ioctl>
<== NOT EXECUTED
40006d40: 92 12 60 15 or %o1, 0x15, %o1 ! 802c7415 <RAM_END+0x3fec7415>
<== NOT EXECUTED
40006d44: 81 c7 e0 08 ret
<== NOT EXECUTED
40006d48: 91 e8 00 08 restore %g0, %o0, %o0
<== NOT EXECUTED
40006a9c <unlink>:
/**
* POSIX 1003.1b - 5.5.1 - Remove an existing link
*/
int unlink( const char *path )
{
40006a9c: 9d e3 bf 50 save %sp, -176, %sp
int eval_flags = RTEMS_FS_REJECT_TERMINAL_DOT;
rtems_filesystem_location_info_t parentloc;
int parent_eval_flags = RTEMS_FS_PERMS_WRITE
| RTEMS_FS_PERMS_EXEC
| RTEMS_FS_FOLLOW_LINK;
const rtems_filesystem_location_info_t *currentloc =
40006aa0: 98 10 20 1b mov 0x1b, %o4
40006aa4: 94 10 21 00 mov 0x100, %o2
40006aa8: 92 10 00 18 mov %i0, %o1
40006aac: 96 07 bf b0 add %fp, -80, %o3
40006ab0: 7f ff fd c0 call 400061b0 <rtems_filesystem_eval_path_start_with_parent>
40006ab4: 90 07 bf c8 add %fp, -56, %o0
const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
40006ab8: c2 02 20 14 ld [ %o0 + 0x14 ], %g1
return (*mt_entry->ops->are_nodes_equal_h)(
40006abc: c4 00 60 0c ld [ %g1 + 0xc ], %g2
40006ac0: c4 00 a0 10 ld [ %g2 + 0x10 ], %g2
40006ac4: d2 00 60 24 ld [ %g1 + 0x24 ], %o1
40006ac8: 9f c0 80 00 call %g2
40006acc: ba 10 00 08 mov %o0, %i5
eval_flags,
&parentloc,
parent_eval_flags
);
if ( !rtems_filesystem_location_is_instance_root( currentloc ) ) {
40006ad0: 80 a2 20 00 cmp %o0, 0
40006ad4: 12 80 00 0e bne 40006b0c <unlink+0x70>
<== NEVER TAKEN
40006ad8: 92 10 20 10 mov 0x10, %o1
const rtems_filesystem_operations_table *ops = currentloc->mt_entry->ops;
40006adc: c2 07 60 14 ld [ %i5 + 0x14 ], %g1
rv = (*ops->rmnod_h)( &parentloc, currentloc );
40006ae0: c2 00 60 0c ld [ %g1 + 0xc ], %g1
40006ae4: c2 00 60 18 ld [ %g1 + 0x18 ], %g1
40006ae8: 92 10 00 1d mov %i5, %o1
40006aec: 9f c0 40 00 call %g1
40006af0: 90 07 bf b0 add %fp, -80, %o0
40006af4: b0 10 00 08 mov %o0, %i0
} else {
rtems_filesystem_eval_path_error( &ctx, EBUSY );
rv = -1;
}
rtems_filesystem_eval_path_cleanup_with_parent( &ctx, &parentloc );
40006af8: 92 07 bf b0 add %fp, -80, %o1
40006afc: 7f ff fd fa call 400062e4 <rtems_filesystem_eval_path_cleanup_with_parent>
40006b00: 90 07 bf c8 add %fp, -56, %o0
return rv;
}
40006b04: 81 c7 e0 08 ret
40006b08: 81 e8 00 00 restore
rtems_filesystem_eval_path_error( &ctx, EBUSY );
40006b0c: 90 07 bf c8 add %fp, -56, %o0
<== NOT EXECUTED
40006b10: 7f ff fc e1 call 40005e94 <rtems_filesystem_eval_path_error>
<== NOT EXECUTED
40006b14: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
rtems_filesystem_eval_path_cleanup_with_parent( &ctx, &parentloc );
40006b18: 10 bf ff f9 b 40006afc <unlink+0x60>
<== NOT EXECUTED
40006b1c: 92 07 bf b0 add %fp, -80, %o1
<== NOT EXECUTED
4001c63c <write>:
ssize_t write(
int fd,
const void *buffer,
size_t count
)
{
4001c63c: 9d e3 bf a0 save %sp, -96, %sp
rtems_libio_t *iop;
ssize_t n;
rtems_libio_check_buffer( buffer );
4001c640: 80 a6 60 00 cmp %i1, 0
4001c644: 02 80 00 32 be 4001c70c <write+0xd0>
<== NEVER TAKEN
4001c648: 80 a6 a0 00 cmp %i2, 0
rtems_libio_check_count( count );
4001c64c: 02 80 00 22 be 4001c6d4 <write+0x98>
4001c650: 84 10 20 00 clr %g2
LIBIO_GET_IOP_WITH_ACCESS( fd, iop, LIBIO_FLAGS_WRITE, EBADF );
4001c654: 03 10 00 73 sethi %hi(0x4001cc00), %g1
4001c658: c2 00 62 90 ld [ %g1 + 0x290 ], %g1 ! 4001ce90 <rtems_libio_number_iops>
4001c65c: 80 a6 00 01 cmp %i0, %g1
4001c660: 1a 80 00 25 bcc 4001c6f4 <write+0xb8>
<== NEVER TAKEN
4001c664: bb 2e 20 01 sll %i0, 1, %i5
<== NOT EXECUTED
4001c668: ba 07 40 18 add %i5, %i0, %i5
<== NOT EXECUTED
4001c66c: 31 10 00 84 sethi %hi(0x40021000), %i0
<== NOT EXECUTED
4001c670: bb 2f 60 04 sll %i5, 4, %i5
<== NOT EXECUTED
4001c674: b0 16 23 c0 or %i0, 0x3c0, %i0
<== NOT EXECUTED
4001c678: ba 07 40 18 add %i5, %i0, %i5
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4001c67c: 91 d0 20 09 ta 9
<== NOT EXECUTED
val = *obj;
4001c680: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
*obj = val + arg;
4001c684: 86 20 b0 00 sub %g2, -4096, %g3
<== NOT EXECUTED
4001c688: c6 27 60 08 st %g3, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4001c68c: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4001c690: 01 00 00 00 nop
4001c694: 84 08 a1 04 and %g2, 0x104, %g2
4001c698: 80 a0 a1 04 cmp %g2, 0x104
4001c69c: 12 80 00 10 bne 4001c6dc <write+0xa0>
<== NEVER TAKEN
4001c6a0: 94 10 00 1a mov %i2, %o2
/*
* Now process the write() request.
*/
n = (*iop->pathinfo.handlers->write_h)( iop, buffer, count );
4001c6a4: c2 07 60 1c ld [ %i5 + 0x1c ], %g1
4001c6a8: c2 00 60 0c ld [ %g1 + 0xc ], %g1
4001c6ac: 92 10 00 19 mov %i1, %o1
4001c6b0: 9f c0 40 00 call %g1
4001c6b4: 90 10 00 1d mov %i5, %o0
4001c6b8: 84 10 00 08 mov %o0, %g2
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4001c6bc: 91 d0 20 09 ta 9
<== NOT EXECUTED
*obj = val - arg;
4001c6c0: c6 07 60 08 ld [ %i5 + 8 ], %g3
<== NOT EXECUTED
4001c6c4: 86 00 f0 00 add %g3, -4096, %g3
<== NOT EXECUTED
4001c6c8: c6 27 60 08 st %g3, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4001c6cc: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4001c6d0: 01 00 00 00 nop
rtems_libio_iop_drop( iop );
return n;
}
4001c6d4: 81 c7 e0 08 ret
4001c6d8: 91 e8 00 02 restore %g0, %g2, %o0
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4001c6dc: 91 d0 20 09 ta 9
<== NOT EXECUTED
4001c6e0: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
4001c6e4: 84 00 b0 00 add %g2, -4096, %g2
<== NOT EXECUTED
4001c6e8: c4 27 60 08 st %g2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4001c6ec: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4001c6f0: 01 00 00 00 nop
<== NOT EXECUTED
LIBIO_GET_IOP_WITH_ACCESS( fd, iop, LIBIO_FLAGS_WRITE, EBADF );
4001c6f4: 7f ff d8 fc call 40012ae4 <__errno>
<== NOT EXECUTED
4001c6f8: 01 00 00 00 nop
<== NOT EXECUTED
4001c6fc: 82 10 20 09 mov 9, %g1 ! 9 <_TLS_Alignment+0x8>
<== NOT EXECUTED
4001c700: 84 10 3f ff mov -1, %g2
<== NOT EXECUTED
4001c704: 10 bf ff f4 b 4001c6d4 <write+0x98>
<== NOT EXECUTED
4001c708: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
rtems_libio_check_buffer( buffer );
4001c70c: 7f ff d8 f6 call 40012ae4 <__errno>
<== NOT EXECUTED
4001c710: 01 00 00 00 nop
<== NOT EXECUTED
4001c714: 82 10 20 16 mov 0x16, %g1 ! 16 <_TLS_Alignment+0x15>
<== NOT EXECUTED
4001c718: 84 10 3f ff mov -1, %g2
<== NOT EXECUTED
4001c71c: 10 bf ff ee b 4001c6d4 <write+0x98>
<== NOT EXECUTED
4001c720: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED