RTEMS-5
Annotated Report
Fri Aug 10 14:28:35 2018
40004a2c <RTEMS_Malloc_Initialize>:
void RTEMS_Malloc_Initialize(
const Heap_Area *areas,
size_t area_count,
Heap_Initialization_or_extend_handler extend
)
{
40004a2c: 9d e3 bf a0 save %sp, -96, %sp
Heap_Control *heap = RTEMS_Malloc_Heap;
if ( !rtems_configuration_get_unified_work_area() ) {
40004a30: 03 10 00 3f sethi %hi(0x4000fc00), %g1
40004a34: c2 08 62 5d ldub [ %g1 + 0x25d ], %g1 ! 4000fe5d <Configuration+0x31>
40004a38: 80 a0 60 00 cmp %g1, 0
40004a3c: 12 80 00 19 bne 40004aa0 <RTEMS_Malloc_Initialize+0x74>
40004a40: 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) {
40004a44: 02 80 00 19 be 40004aa8 <RTEMS_Malloc_Initialize+0x7c>
<== NEVER TAKEN
40004a48: 03 10 00 47 sethi %hi(0x40011c00), %g1
Heap_Control *heap = RTEMS_Malloc_Heap;
40004a4c: f8 00 61 e4 ld [ %g1 + 0x1e4 ], %i4 ! 40011de4 <RTEMS_Malloc_Heap>
40004a50: b3 2e 60 03 sll %i1, 3, %i1
Heap_Initialization_or_extend_handler init_or_extend = _Heap_Initialize;
40004a54: 37 10 00 1b sethi %hi(0x40006c00), %i3
40004a58: b2 06 00 19 add %i0, %i1, %i1
40004a5c: b6 16 e3 c8 or %i3, 0x3c8, %i3
40004a60: ba 10 00 1b mov %i3, %i5
const Heap_Area *area = &areas [i];
uintptr_t space_available = (*init_or_extend)(
40004a64: d4 06 20 04 ld [ %i0 + 4 ], %o2
40004a68: d2 06 00 00 ld [ %i0 ], %o1
40004a6c: 96 10 20 08 mov 8, %o3
40004a70: 9f c7 40 00 call %i5
40004a74: 90 10 00 1c mov %i4, %o0
area->begin,
area->size,
page_size
);
if ( space_available > 0 ) {
40004a78: 80 a2 20 00 cmp %o0, 0
40004a7c: 32 80 00 02 bne,a 40004a84 <RTEMS_Malloc_Initialize+0x58>
<== ALWAYS TAKEN
40004a80: ba 10 00 1a mov %i2, %i5
40004a84: b0 06 20 08 add %i0, 8, %i0
for (i = 0; i < area_count; ++i) {
40004a88: 80 a6 00 19 cmp %i0, %i1
40004a8c: 32 bf ff f7 bne,a 40004a68 <RTEMS_Malloc_Initialize+0x3c>
<== NEVER TAKEN
40004a90: d4 06 20 04 ld [ %i0 + 4 ], %o2
<== NOT EXECUTED
init_or_extend = extend;
}
}
if ( init_or_extend == _Heap_Initialize ) {
40004a94: 80 a7 40 1b cmp %i5, %i3
40004a98: 02 80 00 04 be 40004aa8 <RTEMS_Malloc_Initialize+0x7c>
<== NEVER TAKEN
40004a9c: 01 00 00 00 nop
_Internal_error( INTERNAL_ERROR_NO_MEMORY_FOR_HEAP );
}
}
}
40004aa0: 81 c7 e0 08 ret
40004aa4: 81 e8 00 00 restore
_Internal_error( INTERNAL_ERROR_NO_MEMORY_FOR_HEAP );
40004aa8: 40 00 0a 11 call 400072ec <_Internal_error>
<== NOT EXECUTED
40004aac: 90 10 20 17 mov 0x17, %o0
<== NOT EXECUTED
40004ab0: 01 00 00 00 nop
<== NOT EXECUTED
40004638 <_Console_simple_Read>:
ssize_t _Console_simple_Read(
rtems_libio_t *iop,
void *buffer,
size_t count
)
{
40004638: 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 ) {
4000463c: 80 a6 a0 00 cmp %i2, 0
<== NOT EXECUTED
40004640: 04 80 00 0c ble 40004670 <_Console_simple_Read+0x38>
<== NOT EXECUTED
40004644: ba 10 20 00 clr %i5
<== NOT EXECUTED
int c;
do {
c = getchark();
40004648: 40 00 00 22 call 400046d0 <getchark>
<== NOT EXECUTED
4000464c: 01 00 00 00 nop
<== NOT EXECUTED
} while (c == -1);
40004650: 80 a2 3f ff cmp %o0, -1
<== NOT EXECUTED
40004654: 02 bf ff fd be 40004648 <_Console_simple_Read+0x10>
<== NOT EXECUTED
40004658: 01 00 00 00 nop
<== NOT EXECUTED
buf[ i ] = (char) c;
4000465c: d0 2e 40 1d stb %o0, [ %i1 + %i5 ]
<== NOT EXECUTED
for ( i = 0; i < n; ++i ) {
40004660: ba 07 60 01 inc %i5
<== NOT EXECUTED
40004664: 80 a6 80 1d cmp %i2, %i5
<== NOT EXECUTED
40004668: 12 bf ff f8 bne 40004648 <_Console_simple_Read+0x10>
<== NOT EXECUTED
4000466c: 01 00 00 00 nop
<== NOT EXECUTED
}
return n;
}
40004670: 81 c7 e0 08 ret
<== NOT EXECUTED
40004674: 91 e8 00 1a restore %g0, %i2, %o0
<== NOT EXECUTED
400049f8 <_Malloc_Deferred_free>:
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
400049f8: 91 d0 20 09 ta 9
<== NOT EXECUTED
old_last = tail->previous;
400049fc: 05 10 00 47 sethi %hi(0x40011c00), %g2
<== NOT EXECUTED
40004a00: 84 10 a2 10 or %g2, 0x210, %g2 ! 40011e10 <_Malloc_GC_list>
<== NOT EXECUTED
40004a04: c6 00 a0 08 ld [ %g2 + 8 ], %g3
<== NOT EXECUTED
the_node->next = tail;
40004a08: 88 00 a0 04 add %g2, 4, %g4
<== NOT EXECUTED
40004a0c: c8 22 00 00 st %g4, [ %o0 ]
<== NOT EXECUTED
tail->previous = the_node;
40004a10: d0 20 a0 08 st %o0, [ %g2 + 8 ]
<== NOT EXECUTED
old_last->next = the_node;
40004a14: d0 20 c0 00 st %o0, [ %g3 ]
<== NOT EXECUTED
the_node->previous = old_last;
40004a18: c6 22 20 04 st %g3, [ %o0 + 4 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40004a1c: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40004a20: 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 );
}
40004a24: 81 c3 e0 08 retl
<== NOT EXECUTED
40004a28: 01 00 00 00 nop
<== NOT EXECUTED
400048ac <_Malloc_Process_deferred_frees>:
return p;
}
void _Malloc_Process_deferred_frees( void )
{
400048ac: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
400048b0: 91 d0 20 09 ta 9
<== NOT EXECUTED
return _Chain_Immutable_head( the_chain )->next;
400048b4: 3b 10 00 47 sethi %hi(0x40011c00), %i5
400048b8: d0 07 62 10 ld [ %i5 + 0x210 ], %o0 ! 40011e10 <_Malloc_GC_list>
400048bc: ba 17 62 10 or %i5, 0x210, %i5
if ( !_Chain_Is_empty(the_chain))
400048c0: b8 07 60 04 add %i5, 4, %i4
400048c4: 80 a2 00 1c cmp %o0, %i4
400048c8: 02 80 00 0e be 40004900 <_Malloc_Process_deferred_frees+0x54>
<== ALWAYS TAKEN
400048cc: 01 00 00 00 nop
new_first = old_first->next;
400048d0: c4 02 00 00 ld [ %o0 ], %g2
<== NOT EXECUTED
head->next = new_first;
400048d4: c4 27 40 00 st %g2, [ %i5 ]
<== NOT EXECUTED
new_first->previous = head;
400048d8: fa 20 a0 04 st %i5, [ %g2 + 4 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
400048dc: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
400048e0: 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 );
400048e4: 7f ff ff 65 call 40004678 <free>
<== NOT EXECUTED
400048e8: 01 00 00 00 nop
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
400048ec: 91 d0 20 09 ta 9
<== NOT EXECUTED
return _Chain_Immutable_head( the_chain )->next;
400048f0: d0 07 40 00 ld [ %i5 ], %o0
<== NOT EXECUTED
if ( !_Chain_Is_empty(the_chain))
400048f4: 80 a2 00 1c cmp %o0, %i4
<== NOT EXECUTED
400048f8: 32 bf ff f7 bne,a 400048d4 <_Malloc_Process_deferred_frees+0x28>
<== NOT EXECUTED
400048fc: c4 02 00 00 ld [ %o0 ], %g2
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40004900: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40004904: 01 00 00 00 nop
}
}
40004908: 81 c7 e0 08 ret
4000490c: 81 e8 00 00 restore
40004870 <_Malloc_System_state>:
40004870: 03 10 00 4d sethi %hi(0x40013400), %g1
40004874: c2 00 61 6c ld [ %g1 + 0x16c ], %g1 ! 4001356c <_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 ) ) {
40004878: 84 18 60 01 xor %g1, 1, %g2
return MALLOC_SYSTEM_STATE_NORMAL;
} else {
return MALLOC_SYSTEM_STATE_NO_PROTECTION;
4000487c: 80 a0 00 02 cmp %g0, %g2
40004880: 90 40 20 00 addx %g0, 0, %o0
if ( _System_state_Is_up( state ) ) {
40004884: 80 a0 60 02 cmp %g1, 2
40004888: 02 80 00 04 be 40004898 <_Malloc_System_state+0x28>
<== ALWAYS TAKEN
4000488c: 01 00 00 00 nop
}
}
40004890: 81 c3 e0 08 retl
<== NOT EXECUTED
40004894: 01 00 00 00 nop
<== NOT EXECUTED
40004898: c2 01 a0 18 ld [ %g6 + 0x18 ], %g1
return MALLOC_SYSTEM_STATE_NO_ALLOCATION;
4000489c: 80 a0 00 01 cmp %g0, %g1
400048a0: 90 40 20 00 addx %g0, 0, %o0
}
400048a4: 81 c3 e0 08 retl
400048a8: 91 2a 20 01 sll %o0, 1, %o0
40041664 <__assert_func>:
const char *file,
int line,
const char *func,
const char *failedexpr
)
{
40041664: 9d e3 bf 90 save %sp, -112, %sp
<== NOT EXECUTED
rtems_assert_context assert_context = {
40041668: f0 27 bf f0 st %i0, [ %fp + -16 ]
<== NOT EXECUTED
.line = line,
.function = func,
.failed_expression = failedexpr
};
printk("assertion \"%s\" failed: file \"%s\", line %d%s%s\n",
4004166c: 80 a6 a0 00 cmp %i2, 0
<== NOT EXECUTED
rtems_assert_context assert_context = {
40041670: f2 27 bf f4 st %i1, [ %fp + -12 ]
<== NOT EXECUTED
printk("assertion \"%s\" failed: file \"%s\", line %d%s%s\n",
40041674: 02 80 00 0e be 400416ac <__assert_func+0x48>
<== NOT EXECUTED
40041678: f4 3f bf f8 std %i2, [ %fp + -8 ]
<== NOT EXECUTED
4004167c: 19 10 02 0d sethi %hi(0x40083400), %o4
<== NOT EXECUTED
40041680: 98 13 23 b0 or %o4, 0x3b0, %o4 ! 400837b0 <IMFS_LIMITS_AND_OPTIONS+0x34>
<== NOT EXECUTED
40041684: 92 10 00 1b mov %i3, %o1
<== NOT EXECUTED
40041688: 9a 10 00 1a mov %i2, %o5
<== NOT EXECUTED
4004168c: 96 10 00 19 mov %i1, %o3
<== NOT EXECUTED
40041690: 94 10 00 18 mov %i0, %o2
<== NOT EXECUTED
40041694: 11 10 02 0d sethi %hi(0x40083400), %o0
<== NOT EXECUTED
40041698: 7f ff 2b ad call 4000c54c <printk>
<== NOT EXECUTED
4004169c: 90 12 23 c0 or %o0, 0x3c0, %o0 ! 400837c0 <IMFS_LIMITS_AND_OPTIONS+0x44>
<== NOT EXECUTED
400416a0: 92 07 bf f0 add %fp, -16, %o1
<== NOT EXECUTED
400416a4: 7f ff 64 7d call 4001a898 <_Terminate>
<== NOT EXECUTED
400416a8: 90 10 20 07 mov 7, %o0
<== NOT EXECUTED
400416ac: 19 10 01 fa sethi %hi(0x4007e800), %o4
<== NOT EXECUTED
400416b0: 98 13 21 10 or %o4, 0x110, %o4 ! 4007e910 <suffixes+0x320>
<== NOT EXECUTED
400416b4: 10 bf ff f4 b 40041684 <__assert_func+0x20>
<== NOT EXECUTED
400416b8: b4 10 00 0c mov %o4, %i2
<== NOT EXECUTED
4001bb04 <_close_r>:
int _close_r(
struct _reent *ptr RTEMS_UNUSED,
int fd
)
{
return close( fd );
4001bb04: 90 10 00 09 mov %o1, %o0
<== NOT EXECUTED
4001bb08: 82 13 c0 00 mov %o7, %g1
<== NOT EXECUTED
4001bb0c: 7f ff ff c8 call 4001ba2c <close>
<== NOT EXECUTED
4001bb10: 9e 10 40 00 mov %g1, %o7
<== NOT EXECUTED
4000fb64 <_exit>:
extern void FINI_SYMBOL( void );
#endif
void _exit(int status)
{
4000fb64: 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();
4000fb68: 40 00 04 60 call 40010ce8 <_fini>
4000fb6c: 01 00 00 00 nop
#endif
rtems_shutdown_executive(status);
4000fb70: 7f ff f7 9b call 4000d9dc <rtems_shutdown_executive>
4000fb74: 90 10 00 18 mov %i0, %o0
4000fb78: 01 00 00 00 nop
<== NOT EXECUTED
40058720 <_fcntl_r>:
struct _reent *ptr RTEMS_UNUSED,
int fd,
int cmd,
int arg
)
{
40058720: 82 10 00 0a mov %o2, %g1
<== NOT EXECUTED
return fcntl( fd, cmd, arg );
40058724: 90 10 00 09 mov %o1, %o0
<== NOT EXECUTED
40058728: 94 10 00 0b mov %o3, %o2
<== NOT EXECUTED
4005872c: 92 10 00 01 mov %g1, %o1
<== NOT EXECUTED
40058730: 82 13 c0 00 mov %o7, %g1
<== NOT EXECUTED
40058734: 7f ff fe fc call 40058324 <fcntl>
<== NOT EXECUTED
40058738: 9e 10 40 00 mov %g1, %o7
<== NOT EXECUTED
4000fb54 <_free_r>:
struct _reent *ignored,
void *ptr
)
{
(void) ignored;
free( ptr );
4000fb54: 90 10 00 09 mov %o1, %o0
<== NOT EXECUTED
4000fb58: 82 13 c0 00 mov %o7, %g1
<== NOT EXECUTED
4000fb5c: 7f ff d2 c7 call 40004678 <free>
<== NOT EXECUTED
4000fb60: 9e 10 40 00 mov %g1, %o7
<== NOT EXECUTED
4002c0b0 <_getpid_r>:
pid_t _getpid_r(
struct _reent *ptr RTEMS_UNUSED
)
{
return getpid();
}
4002c0b0: 81 c3 e0 08 retl
<== NOT EXECUTED
4002c0b4: 90 10 20 01 mov 1, %o0
<== NOT EXECUTED
40004768 <_gettimeofday_r>:
int _gettimeofday_r(
struct _reent *ignored_reentrancy_stuff RTEMS_UNUSED,
struct timeval *tp,
void *__tz
)
{
40004768: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
if ( !tp )
4000476c: 80 a6 60 00 cmp %i1, 0
<== NOT EXECUTED
40004770: 02 80 00 06 be 40004788 <_gettimeofday_r+0x20>
<== NOT EXECUTED
40004774: 90 10 00 19 mov %i1, %o0
<== NOT EXECUTED
40004778: 40 00 0f 2b call 40008424 <_Timecounter_Microtime>
<== NOT EXECUTED
4000477c: b0 10 20 00 clr %i0
<== NOT EXECUTED
struct timezone *tzp = __tz;
return gettimeofday( tp, tzp );
}
40004780: 81 c7 e0 08 ret
<== NOT EXECUTED
40004784: 81 e8 00 00 restore
<== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EFAULT );
40004788: 40 00 27 f4 call 4000e758 <__errno>
<== NOT EXECUTED
4000478c: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
40004790: 82 10 20 0e mov 0xe, %g1
<== NOT EXECUTED
40004794: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
40004798: 81 c7 e0 08 ret
<== NOT EXECUTED
4000479c: 81 e8 00 00 restore
<== NOT EXECUTED
40042798 <_libcsupport_pwdgrp_init>:
pthread_once(&pwdgrp_once, pwdgrp_init);
40042798: 13 10 01 09 sethi %hi(0x40042400), %o1
<== NOT EXECUTED
4004279c: 11 10 02 41 sethi %hi(0x40090400), %o0
<== NOT EXECUTED
400427a0: 92 12 61 c4 or %o1, 0x1c4, %o1
<== NOT EXECUTED
400427a4: 90 12 20 30 or %o0, 0x30, %o0
<== NOT EXECUTED
400427a8: 82 13 c0 00 mov %o7, %g1
<== NOT EXECUTED
400427ac: 7f ff 5a 89 call 400191d0 <pthread_once>
<== NOT EXECUTED
400427b0: 9e 10 40 00 mov %g1, %o7
<== NOT EXECUTED
400429f8 <_libcsupport_scangr>:
FILE *fp,
struct group *grp,
char *buffer,
size_t bufsize
)
{
400429f8: 9d e3 bf 98 save %sp, -104, %sp
<== NOT EXECUTED
int grgid;
char *grmem, *cp;
int memcount;
if (!scanString(fp, &grp->gr_name, &buffer, &bufsize, 0)
400429fc: 98 10 20 00 clr %o4
<== NOT EXECUTED
{
40042a00: f4 27 a0 4c st %i2, [ %fp + 0x4c ]
<== NOT EXECUTED
if (!scanString(fp, &grp->gr_name, &buffer, &bufsize, 0)
40042a04: 96 07 a0 50 add %fp, 0x50, %o3
<== NOT EXECUTED
{
40042a08: f6 27 a0 50 st %i3, [ %fp + 0x50 ]
<== NOT EXECUTED
if (!scanString(fp, &grp->gr_name, &buffer, &bufsize, 0)
40042a0c: 94 07 a0 4c add %fp, 0x4c, %o2
<== NOT EXECUTED
40042a10: 92 10 00 19 mov %i1, %o1
<== NOT EXECUTED
40042a14: 7f ff ff 34 call 400426e4 <scanString>
<== NOT EXECUTED
40042a18: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
40042a1c: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
40042a20: 12 80 00 04 bne 40042a30 <_libcsupport_scangr+0x38>
<== NOT EXECUTED
40042a24: 98 10 20 00 clr %o4
<== NOT EXECUTED
|| !scanString(fp, &grp->gr_passwd, &buffer, &bufsize, 0)
|| !scanInt(fp, &grgid)
|| !scanString(fp, &grmem, &buffer, &bufsize, 1))
return 0;
40042a28: 81 c7 e0 08 ret
<== NOT EXECUTED
40042a2c: 91 e8 20 00 restore %g0, 0, %o0
<== NOT EXECUTED
|| !scanString(fp, &grp->gr_passwd, &buffer, &bufsize, 0)
40042a30: 96 07 a0 50 add %fp, 0x50, %o3
<== NOT EXECUTED
40042a34: 94 07 a0 4c add %fp, 0x4c, %o2
<== NOT EXECUTED
40042a38: 92 06 60 04 add %i1, 4, %o1
<== NOT EXECUTED
40042a3c: 7f ff ff 2a call 400426e4 <scanString>
<== NOT EXECUTED
40042a40: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
40042a44: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
40042a48: 02 bf ff f8 be 40042a28 <_libcsupport_scangr+0x30>
<== NOT EXECUTED
40042a4c: 92 07 bf f8 add %fp, -8, %o1
<== NOT EXECUTED
|| !scanInt(fp, &grgid)
40042a50: 7f ff fe ec call 40042600 <scanInt>
<== NOT EXECUTED
40042a54: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
40042a58: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
40042a5c: 02 bf ff f3 be 40042a28 <_libcsupport_scangr+0x30>
<== NOT EXECUTED
40042a60: 98 10 20 01 mov 1, %o4
<== NOT EXECUTED
|| !scanString(fp, &grmem, &buffer, &bufsize, 1))
40042a64: 96 07 a0 50 add %fp, 0x50, %o3
<== NOT EXECUTED
40042a68: 94 07 a0 4c add %fp, 0x4c, %o2
<== NOT EXECUTED
40042a6c: 92 07 bf fc add %fp, -4, %o1
<== NOT EXECUTED
40042a70: 7f ff ff 1d call 400426e4 <scanString>
<== NOT EXECUTED
40042a74: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
40042a78: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
40042a7c: 02 bf ff eb be 40042a28 <_libcsupport_scangr+0x30>
<== NOT EXECUTED
40042a80: c2 07 bf f8 ld [ %fp + -8 ], %g1
<== NOT EXECUTED
grp->gr_gid = grgid;
40042a84: c2 36 60 08 sth %g1, [ %i1 + 8 ]
<== NOT EXECUTED
/*
* Determine number of members
*/
if (grmem[0] == '\0') {
40042a88: fa 07 bf fc ld [ %fp + -4 ], %i5
<== NOT EXECUTED
40042a8c: c2 0f 40 00 ldub [ %i5 ], %g1
<== NOT EXECUTED
40042a90: 83 28 60 18 sll %g1, 0x18, %g1
<== NOT EXECUTED
40042a94: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
40042a98: 02 80 00 13 be 40042ae4 <_libcsupport_scangr+0xec>
<== NOT EXECUTED
40042a9c: 84 10 20 13 mov 0x13, %g2
<== NOT EXECUTED
40042aa0: 84 10 00 1d mov %i5, %g2
<== NOT EXECUTED
memcount = 0;
} else {
for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {
40042aa4: 88 10 20 01 mov 1, %g4
<== NOT EXECUTED
if(*cp == ',')
40042aa8: 83 38 60 18 sra %g1, 0x18, %g1
<== NOT EXECUTED
for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {
40042aac: 84 00 a0 01 inc %g2
<== NOT EXECUTED
if(*cp == ',')
40042ab0: 80 a0 60 2c cmp %g1, 0x2c
<== NOT EXECUTED
40042ab4: 12 80 00 05 bne 40042ac8 <_libcsupport_scangr+0xd0>
<== NOT EXECUTED
40042ab8: 86 01 20 01 add %g4, 1, %g3
<== NOT EXECUTED
40042abc: 82 01 20 02 add %g4, 2, %g1
<== NOT EXECUTED
memcount++;
40042ac0: 88 10 00 03 mov %g3, %g4
<== NOT EXECUTED
if(*cp == ',')
40042ac4: 86 10 00 01 mov %g1, %g3
<== NOT EXECUTED
for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {
40042ac8: c2 08 80 00 ldub [ %g2 ], %g1
<== NOT EXECUTED
40042acc: 83 28 60 18 sll %g1, 0x18, %g1
<== NOT EXECUTED
40042ad0: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
40042ad4: 12 bf ff f6 bne 40042aac <_libcsupport_scangr+0xb4>
<== NOT EXECUTED
40042ad8: 83 38 60 18 sra %g1, 0x18, %g1
<== NOT EXECUTED
40042adc: 85 28 e0 02 sll %g3, 2, %g2
<== NOT EXECUTED
40042ae0: 84 00 a0 0f add %g2, 0xf, %g2
<== NOT EXECUTED
}
/*
* Hack to produce (hopefully) a suitably-aligned array of pointers
*/
if (bufsize < (((memcount+1)*sizeof(char *)) + 15))
40042ae4: c2 07 a0 50 ld [ %fp + 0x50 ], %g1
<== NOT EXECUTED
40042ae8: 80 a0 40 02 cmp %g1, %g2
<== NOT EXECUTED
40042aec: 0a bf ff cf bcs 40042a28 <_libcsupport_scangr+0x30>
<== NOT EXECUTED
40042af0: c6 07 a0 4c ld [ %fp + 0x4c ], %g3
<== NOT EXECUTED
return 0;
grp->gr_mem = (char **)(((uintptr_t)buffer + 15) & ~15);
40042af4: 86 00 e0 0f add %g3, 0xf, %g3
<== NOT EXECUTED
40042af8: 86 08 ff f0 and %g3, -16, %g3
<== NOT EXECUTED
40042afc: c6 26 60 0c st %g3, [ %i1 + 0xc ]
<== NOT EXECUTED
/*
* Fill in pointer array
*/
if (grmem[0] == '\0') {
40042b00: c2 4f 40 00 ldsb [ %i5 ], %g1
<== NOT EXECUTED
40042b04: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
40042b08: 02 80 00 1a be 40042b70 <_libcsupport_scangr+0x178>
<== NOT EXECUTED
40042b0c: 88 10 20 00 clr %g4
<== NOT EXECUTED
memcount = 0;
} else {
grp->gr_mem[0] = grmem;
40042b10: fa 20 c0 00 st %i5, [ %g3 ]
<== NOT EXECUTED
for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {
40042b14: c4 07 bf fc ld [ %fp + -4 ], %g2
<== NOT EXECUTED
40042b18: c2 08 80 00 ldub [ %g2 ], %g1
<== NOT EXECUTED
40042b1c: 83 28 60 18 sll %g1, 0x18, %g1
<== NOT EXECUTED
40042b20: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
40042b24: 02 80 00 13 be 40042b70 <_libcsupport_scangr+0x178>
<== NOT EXECUTED
40042b28: 88 10 20 04 mov 4, %g4
<== NOT EXECUTED
40042b2c: 86 10 20 01 mov 1, %g3
<== NOT EXECUTED
if(*cp == ',') {
40042b30: 83 38 60 18 sra %g1, 0x18, %g1
<== NOT EXECUTED
40042b34: 89 28 e0 02 sll %g3, 2, %g4
<== NOT EXECUTED
40042b38: 80 a0 60 2c cmp %g1, 0x2c
<== NOT EXECUTED
40042b3c: 12 80 00 07 bne 40042b58 <_libcsupport_scangr+0x160>
<== NOT EXECUTED
40042b40: 84 00 a0 01 inc %g2
<== NOT EXECUTED
*cp = '\0';
40042b44: c0 28 bf ff clrb [ %g2 + -1 ]
<== NOT EXECUTED
grp->gr_mem[memcount++] = cp + 1;
40042b48: 86 00 e0 01 inc %g3
<== NOT EXECUTED
40042b4c: c2 06 60 0c ld [ %i1 + 0xc ], %g1
<== NOT EXECUTED
40042b50: c4 20 40 04 st %g2, [ %g1 + %g4 ]
<== NOT EXECUTED
40042b54: 88 01 20 04 add %g4, 4, %g4
<== NOT EXECUTED
for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {
40042b58: c2 08 80 00 ldub [ %g2 ], %g1
<== NOT EXECUTED
40042b5c: 83 28 60 18 sll %g1, 0x18, %g1
<== NOT EXECUTED
40042b60: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
40042b64: 32 bf ff f4 bne,a 40042b34 <_libcsupport_scangr+0x13c>
<== NOT EXECUTED
40042b68: 83 38 60 18 sra %g1, 0x18, %g1
<== NOT EXECUTED
40042b6c: c6 06 60 0c ld [ %i1 + 0xc ], %g3
<== NOT EXECUTED
}
}
}
grp->gr_mem[memcount] = NULL;
40042b70: c0 20 c0 04 clr [ %g3 + %g4 ]
<== NOT EXECUTED
return 1;
}
40042b74: 81 c7 e0 08 ret
<== NOT EXECUTED
40042b78: 91 e8 20 01 restore %g0, 1, %o0
<== NOT EXECUTED
400427b4 <_libcsupport_scanpw>:
FILE *fp,
struct passwd *pwd,
char *buffer,
size_t bufsize
)
{
400427b4: 9d e3 bf 98 save %sp, -104, %sp
<== NOT EXECUTED
int pwuid, pwgid;
if (!scanString(fp, &pwd->pw_name, &buffer, &bufsize, 0)
400427b8: 98 10 20 00 clr %o4
<== NOT EXECUTED
{
400427bc: f4 27 a0 4c st %i2, [ %fp + 0x4c ]
<== NOT EXECUTED
if (!scanString(fp, &pwd->pw_name, &buffer, &bufsize, 0)
400427c0: 96 07 a0 50 add %fp, 0x50, %o3
<== NOT EXECUTED
{
400427c4: f6 27 a0 50 st %i3, [ %fp + 0x50 ]
<== NOT EXECUTED
if (!scanString(fp, &pwd->pw_name, &buffer, &bufsize, 0)
400427c8: 94 07 a0 4c add %fp, 0x4c, %o2
<== NOT EXECUTED
400427cc: 92 10 00 19 mov %i1, %o1
<== NOT EXECUTED
400427d0: 7f ff ff c5 call 400426e4 <scanString>
<== NOT EXECUTED
400427d4: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
400427d8: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
400427dc: 12 80 00 04 bne 400427ec <_libcsupport_scanpw+0x38>
<== NOT EXECUTED
400427e0: 98 10 20 00 clr %o4
<== NOT EXECUTED
|| !scanInt(fp, &pwgid)
|| !scanString(fp, &pwd->pw_comment, &buffer, &bufsize, 0)
|| !scanString(fp, &pwd->pw_gecos, &buffer, &bufsize, 0)
|| !scanString(fp, &pwd->pw_dir, &buffer, &bufsize, 0)
|| !scanString(fp, &pwd->pw_shell, &buffer, &bufsize, 1))
return 0;
400427e4: 81 c7 e0 08 ret
<== NOT EXECUTED
400427e8: 91 e8 20 00 restore %g0, 0, %o0
<== NOT EXECUTED
|| !scanString(fp, &pwd->pw_passwd, &buffer, &bufsize, 0)
400427ec: 96 07 a0 50 add %fp, 0x50, %o3
<== NOT EXECUTED
400427f0: 94 07 a0 4c add %fp, 0x4c, %o2
<== NOT EXECUTED
400427f4: 92 06 60 04 add %i1, 4, %o1
<== NOT EXECUTED
400427f8: 7f ff ff bb call 400426e4 <scanString>
<== NOT EXECUTED
400427fc: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
40042800: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
40042804: 02 bf ff f8 be 400427e4 <_libcsupport_scanpw+0x30>
<== NOT EXECUTED
40042808: 92 07 bf f8 add %fp, -8, %o1
<== NOT EXECUTED
|| !scanInt(fp, &pwuid)
4004280c: 7f ff ff 7d call 40042600 <scanInt>
<== NOT EXECUTED
40042810: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
40042814: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
40042818: 02 bf ff f3 be 400427e4 <_libcsupport_scanpw+0x30>
<== NOT EXECUTED
4004281c: 92 07 bf fc add %fp, -4, %o1
<== NOT EXECUTED
|| !scanInt(fp, &pwgid)
40042820: 7f ff ff 78 call 40042600 <scanInt>
<== NOT EXECUTED
40042824: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
40042828: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
4004282c: 02 bf ff ee be 400427e4 <_libcsupport_scanpw+0x30>
<== NOT EXECUTED
40042830: 98 10 20 00 clr %o4
<== NOT EXECUTED
|| !scanString(fp, &pwd->pw_comment, &buffer, &bufsize, 0)
40042834: 96 07 a0 50 add %fp, 0x50, %o3
<== NOT EXECUTED
40042838: 94 07 a0 4c add %fp, 0x4c, %o2
<== NOT EXECUTED
4004283c: 92 06 60 0c add %i1, 0xc, %o1
<== NOT EXECUTED
40042840: 7f ff ff a9 call 400426e4 <scanString>
<== NOT EXECUTED
40042844: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
40042848: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
4004284c: 02 bf ff e6 be 400427e4 <_libcsupport_scanpw+0x30>
<== NOT EXECUTED
40042850: 98 10 20 00 clr %o4
<== NOT EXECUTED
|| !scanString(fp, &pwd->pw_gecos, &buffer, &bufsize, 0)
40042854: 96 07 a0 50 add %fp, 0x50, %o3
<== NOT EXECUTED
40042858: 94 07 a0 4c add %fp, 0x4c, %o2
<== NOT EXECUTED
4004285c: 92 06 60 10 add %i1, 0x10, %o1
<== NOT EXECUTED
40042860: 7f ff ff a1 call 400426e4 <scanString>
<== NOT EXECUTED
40042864: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
40042868: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
4004286c: 02 bf ff de be 400427e4 <_libcsupport_scanpw+0x30>
<== NOT EXECUTED
40042870: 98 10 20 00 clr %o4
<== NOT EXECUTED
|| !scanString(fp, &pwd->pw_dir, &buffer, &bufsize, 0)
40042874: 96 07 a0 50 add %fp, 0x50, %o3
<== NOT EXECUTED
40042878: 94 07 a0 4c add %fp, 0x4c, %o2
<== NOT EXECUTED
4004287c: 92 06 60 14 add %i1, 0x14, %o1
<== NOT EXECUTED
40042880: 7f ff ff 99 call 400426e4 <scanString>
<== NOT EXECUTED
40042884: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
40042888: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
4004288c: 02 bf ff d6 be 400427e4 <_libcsupport_scanpw+0x30>
<== NOT EXECUTED
40042890: 98 10 20 01 mov 1, %o4
<== NOT EXECUTED
|| !scanString(fp, &pwd->pw_shell, &buffer, &bufsize, 1))
40042894: 96 07 a0 50 add %fp, 0x50, %o3
<== NOT EXECUTED
40042898: 94 07 a0 4c add %fp, 0x4c, %o2
<== NOT EXECUTED
4004289c: 92 06 60 18 add %i1, 0x18, %o1
<== NOT EXECUTED
400428a0: 7f ff ff 91 call 400426e4 <scanString>
<== NOT EXECUTED
400428a4: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
400428a8: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
400428ac: 02 bf ff ce be 400427e4 <_libcsupport_scanpw+0x30>
<== NOT EXECUTED
400428b0: c2 07 bf f8 ld [ %fp + -8 ], %g1
<== NOT EXECUTED
pwd->pw_uid = pwuid;
400428b4: c2 36 60 08 sth %g1, [ %i1 + 8 ]
<== NOT EXECUTED
pwd->pw_gid = pwgid;
400428b8: c2 07 bf fc ld [ %fp + -4 ], %g1
<== NOT EXECUTED
400428bc: c2 36 60 0a sth %g1, [ %i1 + 0xa ]
<== NOT EXECUTED
return 1;
}
400428c0: 81 c7 e0 08 ret
<== NOT EXECUTED
400428c4: 91 e8 20 01 restore %g0, 1, %o0
<== NOT EXECUTED
4002c188 <_lseek_r>:
struct _reent *ptr RTEMS_UNUSED,
int fd,
off_t offset,
int whence
)
{
4002c188: 86 10 00 0b mov %o3, %g3
<== NOT EXECUTED
return lseek( fd, offset, whence );
4002c18c: 90 10 00 09 mov %o1, %o0
<== NOT EXECUTED
4002c190: 96 10 00 0c mov %o4, %o3
<== NOT EXECUTED
4002c194: 92 10 00 0a mov %o2, %o1
<== NOT EXECUTED
4002c198: 94 10 00 03 mov %g3, %o2
<== NOT EXECUTED
4002c19c: 82 13 c0 00 mov %o7, %g1
<== NOT EXECUTED
4002c1a0: 7f ff ff ca call 4002c0c8 <lseek>
<== NOT EXECUTED
4002c1a4: 9e 10 40 00 mov %g1, %o7
<== NOT EXECUTED
40009e2c <_open_r>:
struct _reent *ptr RTEMS_UNUSED,
const char *buf,
int oflag,
int mode
)
{
40009e2c: 82 10 00 0a mov %o2, %g1
<== NOT EXECUTED
return open( buf, oflag, mode );
40009e30: 90 10 00 09 mov %o1, %o0
<== NOT EXECUTED
40009e34: 94 10 00 0b mov %o3, %o2
<== NOT EXECUTED
40009e38: 92 10 00 01 mov %g1, %o1
<== NOT EXECUTED
40009e3c: 82 13 c0 00 mov %o7, %g1
<== NOT EXECUTED
40009e40: 7f ff ff 76 call 40009c18 <open>
<== NOT EXECUTED
40009e44: 9e 10 40 00 mov %g1, %o7
<== NOT EXECUTED
40019e64 <_read_r>:
struct _reent *ptr RTEMS_UNUSED,
int fd,
void *buf,
size_t nbytes
)
{
40019e64: 82 10 00 0a mov %o2, %g1
<== NOT EXECUTED
return read( fd, buf, nbytes );
40019e68: 90 10 00 09 mov %o1, %o0
<== NOT EXECUTED
40019e6c: 94 10 00 0b mov %o3, %o2
<== NOT EXECUTED
40019e70: 92 10 00 01 mov %g1, %o1
<== NOT EXECUTED
40019e74: 82 13 c0 00 mov %o7, %g1
<== NOT EXECUTED
40019e78: 7f ff ff c1 call 40019d7c <read>
<== NOT EXECUTED
40019e7c: 9e 10 40 00 mov %g1, %o7
<== NOT EXECUTED
4002c1b8 <_realloc_r>:
void *_realloc_r(
struct _reent *ignored,
void *ptr,
size_t size
)
{
4002c1b8: 90 10 00 09 mov %o1, %o0
<== NOT EXECUTED
(void) ignored;
return realloc( ptr, size );
4002c1bc: 92 10 00 0a mov %o2, %o1
<== NOT EXECUTED
4002c1c0: 82 13 c0 00 mov %o7, %g1
<== NOT EXECUTED
4002c1c4: 7f ff 77 78 call 40009fa4 <realloc>
<== NOT EXECUTED
4002c1c8: 9e 10 40 00 mov %g1, %o7
<== NOT EXECUTED
4007a590 <_rename_r>:
int _rename_r(
struct _reent *ptr RTEMS_UNUSED,
const char *old,
const char *new
)
{
4007a590: 9d e3 bf 18 save %sp, -232, %sp
<== NOT EXECUTED
rtems_filesystem_eval_path_context_t old_ctx;
int old_eval_flags = 0;
rtems_filesystem_location_info_t old_parentloc;
int old_parent_eval_flags = RTEMS_FS_PERMS_WRITE
| RTEMS_FS_FOLLOW_HARD_LINK;
const rtems_filesystem_location_info_t *old_currentloc =
4007a594: 98 10 20 0a mov 0xa, %o4
<== NOT EXECUTED
4007a598: 96 07 bf 78 add %fp, -136, %o3
<== NOT EXECUTED
4007a59c: 94 10 20 00 clr %o2
<== NOT EXECUTED
4007a5a0: 92 10 00 19 mov %i1, %o1
<== NOT EXECUTED
4007a5a4: 7f fe 4b 33 call 4000d270 <rtems_filesystem_eval_path_start_with_parent>
<== NOT EXECUTED
4007a5a8: 90 07 bf 90 add %fp, -112, %o0
<== NOT EXECUTED
/* FIXME: This is not POSIX conform */
int new_eval_flags = RTEMS_FS_FOLLOW_HARD_LINK
| RTEMS_FS_MAKE
| RTEMS_FS_EXCLUSIVE;
const rtems_filesystem_location_info_t *new_currentloc =
4007a5ac: 94 10 20 68 mov 0x68, %o2
<== NOT EXECUTED
const rtems_filesystem_location_info_t *old_currentloc =
4007a5b0: b8 10 00 08 mov %o0, %i4
<== NOT EXECUTED
const rtems_filesystem_location_info_t *new_currentloc =
4007a5b4: 92 10 00 1a mov %i2, %o1
<== NOT EXECUTED
4007a5b8: 7f fe 4b 22 call 4000d240 <rtems_filesystem_eval_path_start>
<== NOT EXECUTED
4007a5bc: 90 07 bf c8 add %fp, -56, %o0
<== NOT EXECUTED
rtems_filesystem_eval_path_start( &new_ctx, new, new_eval_flags );
rv = rtems_filesystem_location_exists_in_same_instance_as(
4007a5c0: 92 10 00 08 mov %o0, %o1
<== NOT EXECUTED
const rtems_filesystem_location_info_t *new_currentloc =
4007a5c4: ba 10 00 08 mov %o0, %i5
<== NOT EXECUTED
rv = rtems_filesystem_location_exists_in_same_instance_as(
4007a5c8: 7f ff 23 cf call 40043504 <rtems_filesystem_location_exists_in_same_instance_as>
<== NOT EXECUTED
4007a5cc: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
old_currentloc,
new_currentloc
);
if ( rv == 0 ) {
4007a5d0: b0 92 20 00 orcc %o0, 0, %i0
<== NOT EXECUTED
4007a5d4: 12 80 00 0b bne 4007a600 <_rename_r+0x70>
<== NOT EXECUTED
4007a5d8: d8 07 bf d4 ld [ %fp + -44 ], %o4
<== NOT EXECUTED
rv = (*new_currentloc->mt_entry->ops->rename_h)(
4007a5dc: c2 07 60 14 ld [ %i5 + 0x14 ], %g1
<== NOT EXECUTED
4007a5e0: c2 00 60 0c ld [ %g1 + 0xc ], %g1
<== NOT EXECUTED
4007a5e4: c2 00 60 44 ld [ %g1 + 0x44 ], %g1
<== NOT EXECUTED
4007a5e8: d6 07 bf d0 ld [ %fp + -48 ], %o3
<== NOT EXECUTED
4007a5ec: 94 10 00 1d mov %i5, %o2
<== NOT EXECUTED
4007a5f0: 92 10 00 1c mov %i4, %o1
<== NOT EXECUTED
4007a5f4: 9f c0 40 00 call %g1
<== NOT EXECUTED
4007a5f8: 90 07 bf 78 add %fp, -136, %o0
<== NOT EXECUTED
4007a5fc: b0 10 00 08 mov %o0, %i0
<== NOT EXECUTED
rtems_filesystem_eval_path_get_token( &new_ctx ),
rtems_filesystem_eval_path_get_tokenlen( &new_ctx )
);
}
rtems_filesystem_eval_path_cleanup_with_parent( &old_ctx, &old_parentloc );
4007a600: 90 07 bf 90 add %fp, -112, %o0
<== NOT EXECUTED
4007a604: 7f fe 4b 68 call 4000d3a4 <rtems_filesystem_eval_path_cleanup_with_parent>
<== NOT EXECUTED
4007a608: 92 07 bf 78 add %fp, -136, %o1
<== NOT EXECUTED
rtems_filesystem_eval_path_cleanup( &new_ctx );
4007a60c: 7f fe 4b 57 call 4000d368 <rtems_filesystem_eval_path_cleanup>
<== NOT EXECUTED
4007a610: 90 07 bf c8 add %fp, -56, %o0
<== NOT EXECUTED
return rv;
}
4007a614: 81 c7 e0 08 ret
<== NOT EXECUTED
4007a618: 81 e8 00 00 restore
<== NOT EXECUTED
400415e8 <access>:
int access(
const char *path,
int amode
)
{
400415e8: 9d e3 bf 40 save %sp, -192, %sp
<== NOT EXECUTED
struct stat statbuf;
if ( stat(path, &statbuf) )
400415ec: 92 07 bf a0 add %fp, -96, %o1
<== NOT EXECUTED
400415f0: 7f ff 2d 75 call 4000cbc4 <stat>
<== NOT EXECUTED
400415f4: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
400415f8: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
400415fc: 12 80 00 17 bne 40041658 <access+0x70>
<== NOT EXECUTED
40041600: 80 8e 60 04 btst 4, %i1
<== NOT EXECUTED
return -1;
if ( amode & R_OK ) {
40041604: 02 80 00 06 be 4004161c <access+0x34>
<== NOT EXECUTED
40041608: 80 8e 60 02 btst 2, %i1
<== NOT EXECUTED
if (!( statbuf.st_mode & S_IREAD ))
4004160c: c2 07 bf ac ld [ %fp + -84 ], %g1
<== NOT EXECUTED
40041610: 80 88 61 00 btst 0x100, %g1
<== NOT EXECUTED
40041614: 02 80 00 11 be 40041658 <access+0x70>
<== NOT EXECUTED
40041618: 80 8e 60 02 btst 2, %i1
<== NOT EXECUTED
return -1;
}
if ( amode & W_OK ) {
4004161c: 02 80 00 07 be 40041638 <access+0x50>
<== NOT EXECUTED
40041620: b0 8e 60 01 andcc %i1, 1, %i0
<== NOT EXECUTED
if ( !( statbuf.st_mode & S_IWRITE ) )
40041624: c2 07 bf ac ld [ %fp + -84 ], %g1
<== NOT EXECUTED
40041628: 80 88 60 80 btst 0x80, %g1
<== NOT EXECUTED
4004162c: 02 80 00 09 be 40041650 <access+0x68>
<== NOT EXECUTED
40041630: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
return -1;
}
if ( amode & X_OK ) {
40041634: b0 8e 60 01 andcc %i1, 1, %i0
<== NOT EXECUTED
40041638: 02 80 00 06 be 40041650 <access+0x68>
<== NOT EXECUTED
4004163c: f2 07 bf ac ld [ %fp + -84 ], %i1
<== NOT EXECUTED
if ( !( statbuf.st_mode & S_IEXEC ) )
40041640: b3 36 60 06 srl %i1, 6, %i1
<== NOT EXECUTED
40041644: b2 1e 60 01 xor %i1, 1, %i1
<== NOT EXECUTED
40041648: b2 0e 60 01 and %i1, 1, %i1
<== NOT EXECUTED
4004164c: b0 20 00 19 neg %i1, %i0
<== NOT EXECUTED
40041650: 81 c7 e0 08 ret
<== NOT EXECUTED
40041654: 81 e8 00 00 restore
<== NOT EXECUTED
return -1;
40041658: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
return -1;
}
return 0;
}
4004165c: 81 c7 e0 08 ret
<== NOT EXECUTED
40041660: 81 e8 00 00 restore
<== NOT EXECUTED
4001a5d4 <cfgetospeed>:
speed_t cfgetospeed(
const struct termios *tp
)
{
return tp->c_ospeed;
}
4001a5d4: 81 c3 e0 08 retl
<== NOT EXECUTED
4001a5d8: d0 02 20 28 ld [ %o0 + 0x28 ], %o0
<== NOT EXECUTED
4001a5dc <cfsetispeed>:
*/
int cfsetispeed(
struct termios *tp,
speed_t speed
)
{
4001a5dc: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
if ( rtems_termios_baud_to_index( speed ) == -1 )
4001a5e0: 40 00 09 5e call 4001cb58 <rtems_termios_baud_to_index>
<== NOT EXECUTED
4001a5e4: 90 10 00 19 mov %i1, %o0
<== NOT EXECUTED
4001a5e8: 80 a2 3f ff cmp %o0, -1
<== NOT EXECUTED
4001a5ec: 02 80 00 07 be 4001a608 <cfsetispeed+0x2c>
<== NOT EXECUTED
4001a5f0: ba 10 00 08 mov %o0, %i5
<== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
tp->c_ispeed = speed;
4001a5f4: f2 26 20 24 st %i1, [ %i0 + 0x24 ]
<== NOT EXECUTED
return 0;
4001a5f8: ba 10 20 00 clr %i5
<== NOT EXECUTED
}
4001a5fc: b0 10 00 1d mov %i5, %i0
<== NOT EXECUTED
4001a600: 81 c7 e0 08 ret
<== NOT EXECUTED
4001a604: 81 e8 00 00 restore
<== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
4001a608: 40 00 cf 06 call 4004e220 <__errno>
<== NOT EXECUTED
4001a60c: b0 10 00 1d mov %i5, %i0
<== NOT EXECUTED
4001a610: 82 10 20 16 mov 0x16, %g1
<== NOT EXECUTED
4001a614: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
4001a618: 81 c7 e0 08 ret
<== NOT EXECUTED
4001a61c: 81 e8 00 00 restore
<== NOT EXECUTED
4001a620 <cfsetospeed>:
*/
int cfsetospeed(
struct termios *tp,
speed_t speed
)
{
4001a620: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
if ( rtems_termios_baud_to_index( speed ) == -1 )
4001a624: 40 00 09 4d call 4001cb58 <rtems_termios_baud_to_index>
<== NOT EXECUTED
4001a628: 90 10 00 19 mov %i1, %o0
<== NOT EXECUTED
4001a62c: 80 a2 3f ff cmp %o0, -1
<== NOT EXECUTED
4001a630: 02 80 00 07 be 4001a64c <cfsetospeed+0x2c>
<== NOT EXECUTED
4001a634: ba 10 00 08 mov %o0, %i5
<== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
tp->c_ospeed = speed;
4001a638: f2 26 20 28 st %i1, [ %i0 + 0x28 ]
<== NOT EXECUTED
return 0;
4001a63c: ba 10 20 00 clr %i5
<== NOT EXECUTED
}
4001a640: b0 10 00 1d mov %i5, %i0
<== NOT EXECUTED
4001a644: 81 c7 e0 08 ret
<== NOT EXECUTED
4001a648: 81 e8 00 00 restore
<== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
4001a64c: 40 00 ce f5 call 4004e220 <__errno>
<== NOT EXECUTED
4001a650: b0 10 00 1d mov %i5, %i0
<== NOT EXECUTED
4001a654: 82 10 20 16 mov 0x16, %g1
<== NOT EXECUTED
4001a658: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
4001a65c: 81 c7 e0 08 ret
<== NOT EXECUTED
4001a660: 81 e8 00 00 restore
<== NOT EXECUTED
40041850 <chdir>:
int chdir( const char *path )
{
40041850: 9d e3 bf 50 save %sp, -176, %sp
<== NOT EXECUTED
rtems_filesystem_eval_path_context_t ctx;
int eval_flags = RTEMS_FS_PERMS_EXEC
| RTEMS_FS_FOLLOW_LINK;
rtems_filesystem_location_info_t pathloc;
rtems_filesystem_eval_path_start( &ctx, path, eval_flags );
40041854: 94 10 20 19 mov 0x19, %o2
<== NOT EXECUTED
40041858: 92 10 00 18 mov %i0, %o1
<== NOT EXECUTED
4004185c: 7f ff 2e 79 call 4000d240 <rtems_filesystem_eval_path_start>
<== NOT EXECUTED
40041860: 90 07 bf c8 add %fp, -56, %o0
<== NOT EXECUTED
rtems_filesystem_location_copy_and_detach(
40041864: 92 07 bf e0 add %fp, -32, %o1
<== NOT EXECUTED
40041868: 7f ff 30 0f call 4000d8a4 <rtems_filesystem_location_copy_and_detach>
<== NOT EXECUTED
4004186c: 90 07 bf b0 add %fp, -80, %o0
<== NOT EXECUTED
rtems_filesystem_eval_path_extract_currentloc( &ctx, &pathloc );
rv = rtems_filesystem_chdir( &pathloc );
40041870: 7f ff ff d3 call 400417bc <rtems_filesystem_chdir>
<== NOT EXECUTED
40041874: 90 07 bf b0 add %fp, -80, %o0
<== NOT EXECUTED
40041878: b0 10 00 08 mov %o0, %i0
<== NOT EXECUTED
rtems_filesystem_eval_path_cleanup( &ctx );
4004187c: 7f ff 2e bb call 4000d368 <rtems_filesystem_eval_path_cleanup>
<== NOT EXECUTED
40041880: 90 07 bf c8 add %fp, -56, %o0
<== NOT EXECUTED
return rv;
}
40041884: 81 c7 e0 08 ret
<== NOT EXECUTED
40041888: 81 e8 00 00 restore
<== NOT EXECUTED
4000b33c <chmod>:
/**
* POSIX 1003.1b 5.6.4 - Change File Modes
*/
int chmod( const char *path, mode_t mode )
{
4000b33c: 9d e3 bf 68 save %sp, -152, %sp
<== NOT EXECUTED
int rv = 0;
rtems_filesystem_eval_path_context_t ctx;
int eval_flags = RTEMS_FS_FOLLOW_LINK;
const rtems_filesystem_location_info_t *currentloc =
4000b340: 94 10 20 18 mov 0x18, %o2
<== NOT EXECUTED
4000b344: 92 10 00 18 mov %i0, %o1
<== NOT EXECUTED
4000b348: 40 00 07 be call 4000d240 <rtems_filesystem_eval_path_start>
<== NOT EXECUTED
4000b34c: 90 07 bf c8 add %fp, -56, %o0
<== NOT EXECUTED
rtems_filesystem_eval_path_start( &ctx, path, eval_flags );
rv = rtems_filesystem_chmod( currentloc, mode );
4000b350: 40 00 00 41 call 4000b454 <rtems_filesystem_chmod>
<== NOT EXECUTED
4000b354: 92 10 00 19 mov %i1, %o1
<== NOT EXECUTED
4000b358: b0 10 00 08 mov %o0, %i0
<== NOT EXECUTED
rtems_filesystem_eval_path_cleanup( &ctx );
4000b35c: 40 00 08 03 call 4000d368 <rtems_filesystem_eval_path_cleanup>
<== NOT EXECUTED
4000b360: 90 07 bf c8 add %fp, -56, %o0
<== NOT EXECUTED
return rv;
}
4000b364: 81 c7 e0 08 ret
<== NOT EXECUTED
4000b368: 81 e8 00 00 restore
<== NOT EXECUTED
4004188c <chown>:
/**
* POSIX 1003.1b 5.6.5 - Change Owner and Group of a File
*/
int chown( const char *path, uid_t owner, gid_t group )
{
4004188c: 9d e3 bf 68 save %sp, -152, %sp
<== NOT EXECUTED
int rv;
rtems_filesystem_eval_path_context_t ctx;
int eval_flags = RTEMS_FS_FOLLOW_LINK;
const rtems_filesystem_location_info_t *currentloc =
40041890: 94 10 20 18 mov 0x18, %o2
<== NOT EXECUTED
40041894: 92 10 00 18 mov %i0, %o1
<== NOT EXECUTED
40041898: 7f ff 2e 6a call 4000d240 <rtems_filesystem_eval_path_start>
<== NOT EXECUTED
4004189c: 90 07 bf c8 add %fp, -56, %o0
<== NOT EXECUTED
rtems_filesystem_eval_path_start( &ctx, path, eval_flags );
rv = rtems_filesystem_chown( currentloc, owner, group );
400418a0: 94 10 00 1a mov %i2, %o2
<== NOT EXECUTED
400418a4: 40 00 01 02 call 40041cac <rtems_filesystem_chown>
<== NOT EXECUTED
400418a8: 92 10 00 19 mov %i1, %o1
<== NOT EXECUTED
400418ac: b0 10 00 08 mov %o0, %i0
<== NOT EXECUTED
rtems_filesystem_eval_path_cleanup( &ctx );
400418b0: 7f ff 2e ae call 4000d368 <rtems_filesystem_eval_path_cleanup>
<== NOT EXECUTED
400418b4: 90 07 bf c8 add %fp, -56, %o0
<== NOT EXECUTED
return rv;
}
400418b8: 81 c7 e0 08 ret
<== NOT EXECUTED
400418bc: 81 e8 00 00 restore
<== NOT EXECUTED
400418c0 <chroot>:
#include <unistd.h>
#include <rtems/libio_.h>
int chroot( const char *path )
{
400418c0: 9d e3 be e8 save %sp, -280, %sp
<== NOT EXECUTED
/*
* We use the global environment for path evaluation. This makes it possible
* to escape from a chroot environment referencing an unmounted file system.
*/
rtems_filesystem_eval_path_start_with_root_and_current(
400418c4: 40 00 8b 8f call 40064700 <strlen>
<== NOT EXECUTED
400418c8: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
400418cc: 96 10 20 19 mov 0x19, %o3
<== NOT EXECUTED
400418d0: 94 10 00 08 mov %o0, %o2
<== NOT EXECUTED
400418d4: 92 10 00 18 mov %i0, %o1
<== NOT EXECUTED
400418d8: 90 07 bf 68 add %fp, -152, %o0
<== NOT EXECUTED
400418dc: 1b 10 02 2e sethi %hi(0x4008b800), %o5
<== NOT EXECUTED
400418e0: 9a 13 62 78 or %o5, 0x278, %o5 ! 4008ba78 <rtems_global_user_env>
<== NOT EXECUTED
400418e4: 7f ff 2e 01 call 4000d0e8 <rtems_filesystem_eval_path_start_with_root_and_current>
<== NOT EXECUTED
400418e8: 98 03 60 04 add %o5, 4, %o4
<== NOT EXECUTED
400418ec: 92 07 bf 80 add %fp, -128, %o1
<== NOT EXECUTED
400418f0: 7f ff 2f ed call 4000d8a4 <rtems_filesystem_location_copy_and_detach>
<== NOT EXECUTED
400418f4: 90 07 bf 50 add %fp, -176, %o0
<== NOT EXECUTED
&rtems_global_user_env.root_directory,
&rtems_global_user_env.current_directory
);
rtems_filesystem_eval_path_extract_currentloc( &ctx, &loc );
new_current_loc = rtems_filesystem_location_transform_to_global( &loc );
400418f8: 7f ff 30 16 call 4000d950 <rtems_filesystem_location_transform_to_global>
<== NOT EXECUTED
400418fc: 90 07 bf 50 add %fp, -176, %o0
<== NOT EXECUTED
40041900: d0 27 bf 4c st %o0, [ %fp + -180 ]
<== NOT EXECUTED
if ( !rtems_filesystem_global_location_is_null( new_current_loc ) ) {
40041904: 3b 10 01 f4 sethi %hi(0x4007d000), %i5
<== NOT EXECUTED
40041908: c2 02 20 10 ld [ %o0 + 0x10 ], %g1
<== NOT EXECUTED
4004190c: ba 17 62 58 or %i5, 0x258, %i5
<== NOT EXECUTED
40041910: 80 a0 40 1d cmp %g1, %i5
<== NOT EXECUTED
40041914: 02 80 00 3c be 40041a04 <chroot+0x144>
<== NOT EXECUTED
40041918: 01 00 00 00 nop
<== NOT EXECUTED
rtems_filesystem_global_location_t *new_root_loc =
4004191c: 7f ff 2f 63 call 4000d6a8 <rtems_filesystem_global_location_obtain>
<== NOT EXECUTED
40041920: 90 07 bf 4c add %fp, -180, %o0
<== NOT EXECUTED
st.st_mode = 0;
40041924: c0 27 bf ac clr [ %fp + -84 ]
<== NOT EXECUTED
40041928: b8 10 00 08 mov %o0, %i4
<== NOT EXECUTED
(void) ( *loc->handlers->fstat_h )( loc, &st );
4004192c: c2 02 20 10 ld [ %o0 + 0x10 ], %g1
<== NOT EXECUTED
40041930: c2 00 60 18 ld [ %g1 + 0x18 ], %g1
<== NOT EXECUTED
40041934: 9f c0 40 00 call %g1
<== NOT EXECUTED
40041938: 92 07 bf a0 add %fp, -96, %o1
<== NOT EXECUTED
rtems_filesystem_global_location_obtain( &new_current_loc );
mode_t type = rtems_filesystem_location_type( &new_root_loc->location );
if ( S_ISDIR( type ) ) {
4004193c: 05 00 00 3c sethi %hi(0xf000), %g2
<== NOT EXECUTED
40041940: c2 07 bf ac ld [ %fp + -84 ], %g1
<== NOT EXECUTED
40041944: 82 08 40 02 and %g1, %g2, %g1
<== NOT EXECUTED
40041948: 05 00 00 10 sethi %hi(0x4000), %g2
<== NOT EXECUTED
4004194c: 80 a0 40 02 cmp %g1, %g2
<== NOT EXECUTED
40041950: 32 80 00 14 bne,a 400419a0 <chroot+0xe0>
<== NOT EXECUTED
40041954: c2 07 20 10 ld [ %i4 + 0x10 ], %g1
<== NOT EXECUTED
sc = rtems_libio_set_private_env();
40041958: 7f ff 2b 52 call 4000c6a0 <rtems_libio_set_private_env>
<== NOT EXECUTED
4004195c: 01 00 00 00 nop
<== NOT EXECUTED
if (sc == RTEMS_SUCCESSFUL) {
40041960: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
40041964: 12 80 00 21 bne 400419e8 <chroot+0x128>
<== NOT EXECUTED
40041968: 80 a2 20 0d cmp %o0, 0xd
<== NOT EXECUTED
rtems_filesystem_global_location_assign(
&rtems_filesystem_root,
4004196c: 7f ff 2b 38 call 4000c64c <rtems_current_user_env_get>
<== NOT EXECUTED
40041970: b0 10 20 00 clr %i0
<== NOT EXECUTED
rtems_filesystem_global_location_assign(
40041974: 92 10 00 1c mov %i4, %o1
<== NOT EXECUTED
40041978: 7f ff 2f a0 call 4000d7f8 <rtems_filesystem_global_location_assign>
<== NOT EXECUTED
4004197c: 90 02 20 04 add %o0, 4, %o0
<== NOT EXECUTED
new_root_loc
);
rtems_filesystem_global_location_assign(
&rtems_filesystem_current,
40041980: 7f ff 2b 33 call 4000c64c <rtems_current_user_env_get>
<== NOT EXECUTED
40041984: 01 00 00 00 nop
<== NOT EXECUTED
rtems_filesystem_global_location_assign(
40041988: 7f ff 2f 9c call 4000d7f8 <rtems_filesystem_global_location_assign>
<== NOT EXECUTED
4004198c: d2 07 bf 4c ld [ %fp + -180 ], %o1
<== NOT EXECUTED
}
} else {
rv = -1;
}
rtems_filesystem_eval_path_cleanup( &ctx );
40041990: 7f ff 2e 76 call 4000d368 <rtems_filesystem_eval_path_cleanup>
<== NOT EXECUTED
40041994: 90 07 bf 68 add %fp, -152, %o0
<== NOT EXECUTED
40041998: 81 c7 e0 08 ret
<== NOT EXECUTED
4004199c: 81 e8 00 00 restore
<== NOT EXECUTED
if ( !rtems_filesystem_location_is_null( loc ) ) {
400419a0: 80 a0 40 1d cmp %g1, %i5
<== NOT EXECUTED
400419a4: 22 80 00 07 be,a 400419c0 <chroot+0x100>
<== NOT EXECUTED
400419a8: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
errno = eno;
400419ac: 40 00 6b da call 4005c914 <__errno>
<== NOT EXECUTED
400419b0: 01 00 00 00 nop
<== NOT EXECUTED
400419b4: 82 10 20 14 mov 0x14, %g1 ! 14 <_TLS_Alignment+0x13>
<== NOT EXECUTED
400419b8: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
rtems_filesystem_global_location_release( new_root_loc, true );
400419bc: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
400419c0: 7f ff 2f 74 call 4000d790 <rtems_filesystem_global_location_release>
<== NOT EXECUTED
400419c4: 92 10 20 01 mov 1, %o1
<== NOT EXECUTED
rtems_filesystem_eval_path_cleanup( &ctx );
400419c8: 7f ff 2e 68 call 4000d368 <rtems_filesystem_eval_path_cleanup>
<== NOT EXECUTED
400419cc: 90 07 bf 68 add %fp, -152, %o0
<== NOT EXECUTED
if ( rv != 0 ) {
rtems_filesystem_global_location_release( new_current_loc, false );
400419d0: d0 07 bf 4c ld [ %fp + -180 ], %o0
<== NOT EXECUTED
400419d4: 92 10 20 00 clr %o1
<== NOT EXECUTED
400419d8: 7f ff 2f 6e call 4000d790 <rtems_filesystem_global_location_release>
<== NOT EXECUTED
400419dc: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
}
return rv;
}
400419e0: 81 c7 e0 08 ret
<== NOT EXECUTED
400419e4: 81 e8 00 00 restore
<== NOT EXECUTED
if (sc != RTEMS_UNSATISFIED) {
400419e8: 22 bf ff f6 be,a 400419c0 <chroot+0x100>
<== NOT EXECUTED
400419ec: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
errno = ENOMEM;
400419f0: 40 00 6b c9 call 4005c914 <__errno>
<== NOT EXECUTED
400419f4: 01 00 00 00 nop
<== NOT EXECUTED
400419f8: 82 10 20 0c mov 0xc, %g1 ! c <_TLS_Alignment+0xb>
<== NOT EXECUTED
400419fc: 10 bf ff f0 b 400419bc <chroot+0xfc>
<== NOT EXECUTED
40041a00: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
rtems_filesystem_eval_path_cleanup( &ctx );
40041a04: 7f ff 2e 59 call 4000d368 <rtems_filesystem_eval_path_cleanup>
<== NOT EXECUTED
40041a08: 90 07 bf 68 add %fp, -152, %o0
<== NOT EXECUTED
rtems_filesystem_global_location_release( new_current_loc, false );
40041a0c: 10 bf ff f2 b 400419d4 <chroot+0x114>
<== NOT EXECUTED
40041a10: d0 07 bf 4c ld [ %fp + -180 ], %o0
<== NOT EXECUTED
4000e664 <close>:
#include <rtems/libio_.h>
int close(
int fd
)
{
4000e664: 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 ) {
4000e668: 03 10 00 3f sethi %hi(0x4000fc00), %g1
4000e66c: c2 00 63 f0 ld [ %g1 + 0x3f0 ], %g1 ! 4000fff0 <rtems_libio_number_iops>
4000e670: 80 a6 00 01 cmp %i0, %g1
4000e674: 1a 80 00 1b bcc 4000e6e0 <close+0x7c>
<== NEVER TAKEN
4000e678: 01 00 00 00 nop
4000e67c: b7 2e 20 01 sll %i0, 1, %i3
4000e680: b0 06 c0 18 add %i3, %i0, %i0
4000e684: 37 10 00 4c sethi %hi(0x40013000), %i3
4000e688: b9 2e 20 04 sll %i0, 4, %i4
4000e68c: b6 16 e1 48 or %i3, 0x148, %i3
4000e690: b8 06 c0 1c add %i3, %i4, %i4
4000e694: c4 07 20 08 ld [ %i4 + 8 ], %g2
unsigned int actual;
(void) succ;
(void) fail;
_ISR_Local_disable( level );
actual = *obj;
4000e698: 10 80 00 0f b 4000e6d4 <close+0x70>
4000e69c: ba 10 00 1c mov %i4, %i5
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4000e6a0: 91 d0 20 09 ta 9
<== NOT EXECUTED
4000e6a4: c6 07 60 08 ld [ %i5 + 8 ], %g3
success = ( actual == *expected );
if ( success ) {
4000e6a8: 80 a1 00 03 cmp %g4, %g3
4000e6ac: 12 80 00 03 bne 4000e6b8 <close+0x54>
<== NEVER TAKEN
4000e6b0: 84 08 ae ff and %g2, 0xeff, %g2
<== NOT EXECUTED
*obj = desired;
4000e6b4: c4 27 60 08 st %g2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4000e6b8: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4000e6bc: 01 00 00 00 nop
desired,
ATOMIC_ORDER_ACQ_REL,
ATOMIC_ORDER_RELAXED
);
if ( success ) {
4000e6c0: 80 a1 00 03 cmp %g4, %g3
4000e6c4: 02 80 00 0d be 4000e6f8 <close+0x94>
<== ALWAYS TAKEN
4000e6c8: 80 88 f0 00 btst -4096, %g3
break;
}
if ( ( flags & ~( LIBIO_FLAGS_REFERENCE_INC - 1U ) ) != 0 ) {
4000e6cc: 12 80 00 16 bne 4000e724 <close+0xc0>
<== NOT EXECUTED
4000e6d0: 84 10 00 03 mov %g3, %g2
<== NOT EXECUTED
if ( ( flags & LIBIO_FLAGS_OPEN ) == 0 ) {
4000e6d4: 80 88 a1 00 btst 0x100, %g2
4000e6d8: 12 bf ff f2 bne 4000e6a0 <close+0x3c>
<== ALWAYS TAKEN
4000e6dc: 88 08 af ff and %g2, 0xfff, %g4
rtems_set_errno_and_return_minus_one( EBADF );
4000e6e0: 40 00 00 1e call 4000e758 <__errno>
<== NOT EXECUTED
4000e6e4: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
4000e6e8: 82 10 20 09 mov 9, %g1
<== NOT EXECUTED
4000e6ec: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
4000e6f0: 81 c7 e0 08 ret
<== NOT EXECUTED
4000e6f4: 81 e8 00 00 restore
<== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EBUSY );
}
}
rc = (*iop->pathinfo.handlers->close_h)( iop );
4000e6f8: b1 2e 20 04 sll %i0, 4, %i0
4000e6fc: b6 06 c0 18 add %i3, %i0, %i3
4000e700: c2 06 e0 1c ld [ %i3 + 0x1c ], %g1
4000e704: c2 00 60 04 ld [ %g1 + 4 ], %g1
4000e708: 9f c0 40 00 call %g1
4000e70c: 90 10 00 1c mov %i4, %o0
4000e710: b0 10 00 08 mov %o0, %i0
rtems_libio_free( iop );
4000e714: 7f ff fb 75 call 4000d4e8 <rtems_libio_free>
4000e718: 90 10 00 1c mov %i4, %o0
return rc;
}
4000e71c: 81 c7 e0 08 ret
4000e720: 81 e8 00 00 restore
rtems_set_errno_and_return_minus_one( EBUSY );
4000e724: 40 00 00 0d call 4000e758 <__errno>
<== NOT EXECUTED
4000e728: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
4000e72c: 82 10 20 10 mov 0x10, %g1
<== NOT EXECUTED
4000e730: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
4000e734: 81 c7 e0 08 ret
<== NOT EXECUTED
4000e738: 81 e8 00 00 restore
<== NOT EXECUTED
4005c534 <endgrent>:
void endgrent(void)
{
4005c534: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
grp_context *ctx = grp_get_context();
4005c538: 7f ff ff b4 call 4005c408 <grp_get_context>
<== NOT EXECUTED
4005c53c: 01 00 00 00 nop
<== NOT EXECUTED
if (ctx == NULL)
4005c540: ba 92 20 00 orcc %o0, 0, %i5
<== NOT EXECUTED
4005c544: 02 80 00 0e be 4005c57c <endgrent+0x48>
<== NOT EXECUTED
4005c548: 01 00 00 00 nop
<== NOT EXECUTED
return;
if (ctx->fp != NULL) {
4005c54c: d0 07 40 00 ld [ %i5 ], %o0
<== NOT EXECUTED
4005c550: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
4005c554: 02 80 00 04 be 4005c564 <endgrent+0x30>
<== NOT EXECUTED
4005c558: 01 00 00 00 nop
<== NOT EXECUTED
fclose(ctx->fp);
4005c55c: 40 00 01 66 call 4005caf4 <fclose>
<== NOT EXECUTED
4005c560: 01 00 00 00 nop
<== NOT EXECUTED
}
free(ctx);
4005c564: 7f fe bc 47 call 4000b680 <free>
<== NOT EXECUTED
4005c568: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
pthread_setspecific(grp_key, NULL);
4005c56c: 03 10 02 41 sethi %hi(0x40090400), %g1
<== NOT EXECUTED
4005c570: f0 00 60 6c ld [ %g1 + 0x6c ], %i0 ! 4009046c <grp_key>
<== NOT EXECUTED
4005c574: 7f fe f2 92 call 40018fbc <pthread_setspecific>
<== NOT EXECUTED
4005c578: 93 e8 20 00 restore %g0, 0, %o1
<== NOT EXECUTED
}
4005c57c: 81 c7 e0 08 ret
<== NOT EXECUTED
4005c580: 81 e8 00 00 restore
<== NOT EXECUTED
40058160 <fchdir>:
/**
* compatible with SVr4, 4.4BSD and X/OPEN - Change Directory
*/
int fchdir( int fd )
{
40058160: 9d e3 bf 28 save %sp, -216, %sp
<== NOT EXECUTED
int rv = 0;
rtems_libio_t *iop;
struct stat st;
rtems_filesystem_location_info_t loc;
st.st_mode = 0;
40058164: c0 27 bf ac clr [ %fp + -84 ]
<== NOT EXECUTED
st.st_uid = 0;
st.st_gid = 0;
LIBIO_GET_IOP( fd, iop );
40058168: 03 10 01 f2 sethi %hi(0x4007c800), %g1
<== NOT EXECUTED
st.st_uid = 0;
4005816c: c0 37 bf b2 clrh [ %fp + -78 ]
<== NOT EXECUTED
LIBIO_GET_IOP( fd, iop );
40058170: c2 00 60 04 ld [ %g1 + 4 ], %g1
<== NOT EXECUTED
40058174: 80 a6 00 01 cmp %i0, %g1
<== NOT EXECUTED
40058178: 1a 80 00 44 bcc 40058288 <fchdir+0x128>
<== NOT EXECUTED
4005817c: c0 37 bf b4 clrh [ %fp + -76 ]
<== NOT EXECUTED
40058180: bb 2e 20 01 sll %i0, 1, %i5
<== NOT EXECUTED
40058184: b0 07 40 18 add %i5, %i0, %i0
<== NOT EXECUTED
return &rtems_libio_iops[ fd ];
40058188: 3b 10 02 41 sethi %hi(0x40090400), %i5
<== NOT EXECUTED
4005818c: b1 2e 20 04 sll %i0, 4, %i0
<== NOT EXECUTED
40058190: ba 17 63 48 or %i5, 0x348, %i5
<== NOT EXECUTED
40058194: b8 06 00 1d add %i0, %i5, %i4
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40058198: 91 d0 20 09 ta 9
<== NOT EXECUTED
val = *obj;
4005819c: c4 07 20 08 ld [ %i4 + 8 ], %g2
<== NOT EXECUTED
*obj = val + arg;
400581a0: 86 20 b0 00 sub %g2, -4096, %g3
<== NOT EXECUTED
400581a4: c6 27 20 08 st %g3, [ %i4 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
400581a8: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
400581ac: 01 00 00 00 nop
<== NOT EXECUTED
400581b0: 80 88 a1 00 btst 0x100, %g2
<== NOT EXECUTED
400581b4: 02 80 00 3b be 400582a0 <fchdir+0x140>
<== NOT EXECUTED
400581b8: 01 00 00 00 nop
<== NOT EXECUTED
rtems_filesystem_instance_lock( &iop->pathinfo );
400581bc: b0 06 20 0c add %i0, 0xc, %i0
<== NOT EXECUTED
400581c0: ba 06 00 1d add %i0, %i5, %i5
<== NOT EXECUTED
400581c4: d0 07 60 14 ld [ %i5 + 0x14 ], %o0
<== NOT EXECUTED
(*mt_entry->ops->lock_h)( mt_entry );
400581c8: c2 02 20 0c ld [ %o0 + 0xc ], %g1
<== NOT EXECUTED
400581cc: c2 00 40 00 ld [ %g1 ], %g1
<== NOT EXECUTED
400581d0: 9f c0 40 00 call %g1
<== NOT EXECUTED
400581d4: 01 00 00 00 nop
<== NOT EXECUTED
rv = (*iop->pathinfo.handlers->fstat_h)( &iop->pathinfo, &st );
400581d8: c2 07 20 1c ld [ %i4 + 0x1c ], %g1
<== NOT EXECUTED
400581dc: c2 00 60 18 ld [ %g1 + 0x18 ], %g1
<== NOT EXECUTED
400581e0: 92 07 bf a0 add %fp, -96, %o1
<== NOT EXECUTED
400581e4: 9f c0 40 00 call %g1
<== NOT EXECUTED
400581e8: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
if ( rv == 0 ) {
400581ec: b0 92 20 00 orcc %o0, 0, %i0
<== NOT EXECUTED
400581f0: 02 80 00 16 be 40058248 <fchdir+0xe8>
<== NOT EXECUTED
400581f4: d6 17 bf b4 lduh [ %fp + -76 ], %o3
<== NOT EXECUTED
400581f8: d0 07 60 14 ld [ %i5 + 0x14 ], %o0
<== NOT EXECUTED
(*mt_entry->ops->unlock_h)( mt_entry );
400581fc: c2 02 20 0c ld [ %o0 + 0xc ], %g1
<== NOT EXECUTED
40058200: c2 00 60 04 ld [ %g1 + 4 ], %g1
<== NOT EXECUTED
40058204: 9f c0 40 00 call %g1
<== NOT EXECUTED
40058208: 01 00 00 00 nop
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4005820c: 91 d0 20 09 ta 9
<== NOT EXECUTED
*obj = val - arg;
40058210: c4 07 20 08 ld [ %i4 + 8 ], %g2
<== NOT EXECUTED
40058214: 84 00 b0 00 add %g2, -4096, %g2
<== NOT EXECUTED
40058218: c4 27 20 08 st %g2, [ %i4 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4005821c: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40058220: 01 00 00 00 nop
<== NOT EXECUTED
}
}
rtems_filesystem_instance_unlock( &iop->pathinfo );
rtems_libio_iop_drop( iop );
if ( rv == 0 ) {
40058224: 80 a6 20 00 cmp %i0, 0
<== NOT EXECUTED
40058228: 02 80 00 04 be 40058238 <fchdir+0xd8>
<== NOT EXECUTED
4005822c: 01 00 00 00 nop
<== NOT EXECUTED
rv = rtems_filesystem_chdir( &loc );
}
return rv;
}
40058230: 81 c7 e0 08 ret
<== NOT EXECUTED
40058234: 81 e8 00 00 restore
<== NOT EXECUTED
rv = rtems_filesystem_chdir( &loc );
40058238: 7f ff a5 61 call 400417bc <rtems_filesystem_chdir>
<== NOT EXECUTED
4005823c: 90 07 bf 88 add %fp, -120, %o0
<== NOT EXECUTED
}
40058240: 81 c7 e0 08 ret
<== NOT EXECUTED
40058244: 91 e8 00 08 restore %g0, %o0, %o0
<== NOT EXECUTED
bool access_ok = rtems_filesystem_check_access(
40058248: d4 17 bf b2 lduh [ %fp + -78 ], %o2
<== NOT EXECUTED
4005824c: d2 07 bf ac ld [ %fp + -84 ], %o1
<== NOT EXECUTED
40058250: 7f fe d2 71 call 4000cc14 <rtems_filesystem_check_access>
<== NOT EXECUTED
40058254: 90 10 20 01 mov 1, %o0
<== NOT EXECUTED
if ( access_ok ) {
40058258: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
4005825c: 02 80 00 06 be 40058274 <fchdir+0x114>
<== NOT EXECUTED
40058260: 92 10 00 1d mov %i5, %o1
<== NOT EXECUTED
rtems_filesystem_location_clone( &loc, &iop->pathinfo );
40058264: 7f ff a5 ec call 40041a14 <rtems_filesystem_location_clone>
<== NOT EXECUTED
40058268: 90 07 bf 88 add %fp, -120, %o0
<== NOT EXECUTED
4005826c: 10 bf ff e4 b 400581fc <fchdir+0x9c>
<== NOT EXECUTED
40058270: d0 07 60 14 ld [ %i5 + 0x14 ], %o0
<== NOT EXECUTED
errno = EACCES;
40058274: 40 00 11 a8 call 4005c914 <__errno>
<== NOT EXECUTED
40058278: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
4005827c: 82 10 20 0d mov 0xd, %g1
<== NOT EXECUTED
40058280: 10 bf ff de b 400581f8 <fchdir+0x98>
<== NOT EXECUTED
40058284: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
LIBIO_GET_IOP( fd, iop );
40058288: 40 00 11 a3 call 4005c914 <__errno>
<== NOT EXECUTED
4005828c: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
40058290: 82 10 20 09 mov 9, %g1
<== NOT EXECUTED
40058294: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
40058298: 81 c7 e0 08 ret
<== NOT EXECUTED
4005829c: 81 e8 00 00 restore
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
400582a0: 91 d0 20 09 ta 9
<== NOT EXECUTED
400582a4: c4 07 20 08 ld [ %i4 + 8 ], %g2
<== NOT EXECUTED
400582a8: 84 00 b0 00 add %g2, -4096, %g2
<== NOT EXECUTED
400582ac: c4 27 20 08 st %g2, [ %i4 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
400582b0: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
400582b4: 01 00 00 00 nop
<== NOT EXECUTED
400582b8: 40 00 11 97 call 4005c914 <__errno>
<== NOT EXECUTED
400582bc: b0 10 3f ff mov -1, %i0 ! ffffffff <RAM_END+0xbfbfffff>
<== NOT EXECUTED
400582c0: 82 10 20 09 mov 9, %g1
<== NOT EXECUTED
400582c4: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
400582c8: 81 c7 e0 08 ret
<== NOT EXECUTED
400582cc: 81 e8 00 00 restore
<== NOT EXECUTED
4000b588 <fchmod>:
/**
* POSIX 1003.1b 5.6.4 - Change File Modes
*/
int fchmod( int fd, mode_t mode )
{
4000b588: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
int rv;
rtems_libio_t *iop;
LIBIO_GET_IOP( fd, iop );
4000b58c: 03 10 01 f2 sethi %hi(0x4007c800), %g1
<== NOT EXECUTED
4000b590: c2 00 60 04 ld [ %g1 + 4 ], %g1 ! 4007c804 <rtems_libio_number_iops>
<== NOT EXECUTED
4000b594: 80 a6 00 01 cmp %i0, %g1
<== NOT EXECUTED
4000b598: 1a 80 00 28 bcc 4000b638 <fchmod+0xb0>
<== NOT EXECUTED
4000b59c: bb 2e 20 01 sll %i0, 1, %i5
<== NOT EXECUTED
4000b5a0: b0 07 40 18 add %i5, %i0, %i0
<== NOT EXECUTED
4000b5a4: 3b 10 02 41 sethi %hi(0x40090400), %i5
<== NOT EXECUTED
4000b5a8: b1 2e 20 04 sll %i0, 4, %i0
<== NOT EXECUTED
4000b5ac: ba 17 63 48 or %i5, 0x348, %i5
<== NOT EXECUTED
4000b5b0: b8 06 00 1d add %i0, %i5, %i4
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4000b5b4: 91 d0 20 09 ta 9
<== NOT EXECUTED
val = *obj;
4000b5b8: c4 07 20 08 ld [ %i4 + 8 ], %g2
<== NOT EXECUTED
*obj = val + arg;
4000b5bc: 86 20 b0 00 sub %g2, -4096, %g3
<== NOT EXECUTED
4000b5c0: c6 27 20 08 st %g3, [ %i4 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4000b5c4: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4000b5c8: 01 00 00 00 nop
<== NOT EXECUTED
4000b5cc: 80 88 a1 00 btst 0x100, %g2
<== NOT EXECUTED
4000b5d0: 02 80 00 20 be 4000b650 <fchmod+0xc8>
<== NOT EXECUTED
4000b5d4: 01 00 00 00 nop
<== NOT EXECUTED
rtems_filesystem_instance_lock( &iop->pathinfo );
4000b5d8: b0 06 20 0c add %i0, 0xc, %i0
<== NOT EXECUTED
4000b5dc: ba 06 00 1d add %i0, %i5, %i5
<== NOT EXECUTED
4000b5e0: d0 07 60 14 ld [ %i5 + 0x14 ], %o0
<== NOT EXECUTED
(*mt_entry->ops->lock_h)( mt_entry );
4000b5e4: c2 02 20 0c ld [ %o0 + 0xc ], %g1
<== NOT EXECUTED
4000b5e8: c2 00 40 00 ld [ %g1 ], %g1
<== NOT EXECUTED
4000b5ec: 9f c0 40 00 call %g1
<== NOT EXECUTED
4000b5f0: 01 00 00 00 nop
<== NOT EXECUTED
rv = rtems_filesystem_chmod( &iop->pathinfo, mode );
4000b5f4: 92 10 00 19 mov %i1, %o1
<== NOT EXECUTED
4000b5f8: 7f ff ff 97 call 4000b454 <rtems_filesystem_chmod>
<== NOT EXECUTED
4000b5fc: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
4000b600: b0 10 00 08 mov %o0, %i0
<== NOT EXECUTED
4000b604: d0 07 60 14 ld [ %i5 + 0x14 ], %o0
<== NOT EXECUTED
(*mt_entry->ops->unlock_h)( mt_entry );
4000b608: c2 02 20 0c ld [ %o0 + 0xc ], %g1
<== NOT EXECUTED
4000b60c: c2 00 60 04 ld [ %g1 + 4 ], %g1
<== NOT EXECUTED
4000b610: 9f c0 40 00 call %g1
<== NOT EXECUTED
4000b614: 01 00 00 00 nop
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4000b618: 91 d0 20 09 ta 9
<== NOT EXECUTED
*obj = val - arg;
4000b61c: c4 07 20 08 ld [ %i4 + 8 ], %g2
<== NOT EXECUTED
4000b620: 84 00 b0 00 add %g2, -4096, %g2
<== NOT EXECUTED
4000b624: c4 27 20 08 st %g2, [ %i4 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4000b628: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4000b62c: 01 00 00 00 nop
<== NOT EXECUTED
rtems_filesystem_instance_unlock( &iop->pathinfo );
rtems_libio_iop_drop( iop );
return rv;
}
4000b630: 81 c7 e0 08 ret
<== NOT EXECUTED
4000b634: 81 e8 00 00 restore
<== NOT EXECUTED
LIBIO_GET_IOP( fd, iop );
4000b638: 40 01 44 b7 call 4005c914 <__errno>
<== NOT EXECUTED
4000b63c: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
4000b640: 82 10 20 09 mov 9, %g1
<== NOT EXECUTED
4000b644: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
4000b648: 81 c7 e0 08 ret
<== NOT EXECUTED
4000b64c: 81 e8 00 00 restore
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4000b650: 91 d0 20 09 ta 9
<== NOT EXECUTED
4000b654: c4 07 20 08 ld [ %i4 + 8 ], %g2
<== NOT EXECUTED
4000b658: 84 00 b0 00 add %g2, -4096, %g2
<== NOT EXECUTED
4000b65c: c4 27 20 08 st %g2, [ %i4 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4000b660: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4000b664: 01 00 00 00 nop
<== NOT EXECUTED
4000b668: 40 01 44 ab call 4005c914 <__errno>
<== NOT EXECUTED
4000b66c: b0 10 3f ff mov -1, %i0 ! ffffffff <RAM_END+0xbfbfffff>
<== NOT EXECUTED
4000b670: 82 10 20 09 mov 9, %g1
<== NOT EXECUTED
4000b674: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
4000b678: 81 c7 e0 08 ret
<== NOT EXECUTED
4000b67c: 81 e8 00 00 restore
<== NOT EXECUTED
40041dd8 <fchown>:
/**
* POSIX 1003.1b 5.6.5 - Change Owner and Group of a File
*/
int fchown( int fd, uid_t owner, gid_t group )
{
40041dd8: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
int rv;
rtems_libio_t *iop;
LIBIO_GET_IOP( fd, iop );
40041ddc: 03 10 01 f2 sethi %hi(0x4007c800), %g1
<== NOT EXECUTED
40041de0: c2 00 60 04 ld [ %g1 + 4 ], %g1 ! 4007c804 <rtems_libio_number_iops>
<== NOT EXECUTED
40041de4: 80 a6 00 01 cmp %i0, %g1
<== NOT EXECUTED
40041de8: 1a 80 00 29 bcc 40041e8c <fchown+0xb4>
<== NOT EXECUTED
40041dec: bb 2e 20 01 sll %i0, 1, %i5
<== NOT EXECUTED
40041df0: b0 07 40 18 add %i5, %i0, %i0
<== NOT EXECUTED
return &rtems_libio_iops[ fd ];
40041df4: 3b 10 02 41 sethi %hi(0x40090400), %i5
<== NOT EXECUTED
40041df8: b1 2e 20 04 sll %i0, 4, %i0
<== NOT EXECUTED
40041dfc: ba 17 63 48 or %i5, 0x348, %i5
<== NOT EXECUTED
40041e00: b8 06 00 1d add %i0, %i5, %i4
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40041e04: 91 d0 20 09 ta 9
<== NOT EXECUTED
val = *obj;
40041e08: c4 07 20 08 ld [ %i4 + 8 ], %g2
<== NOT EXECUTED
*obj = val + arg;
40041e0c: 86 20 b0 00 sub %g2, -4096, %g3
<== NOT EXECUTED
40041e10: c6 27 20 08 st %g3, [ %i4 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40041e14: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40041e18: 01 00 00 00 nop
<== NOT EXECUTED
40041e1c: 80 88 a1 00 btst 0x100, %g2
<== NOT EXECUTED
40041e20: 02 80 00 21 be 40041ea4 <fchown+0xcc>
<== NOT EXECUTED
40041e24: 01 00 00 00 nop
<== NOT EXECUTED
rtems_filesystem_instance_lock( &iop->pathinfo );
40041e28: b0 06 20 0c add %i0, 0xc, %i0
<== NOT EXECUTED
40041e2c: ba 06 00 1d add %i0, %i5, %i5
<== NOT EXECUTED
40041e30: d0 07 60 14 ld [ %i5 + 0x14 ], %o0
<== NOT EXECUTED
(*mt_entry->ops->lock_h)( mt_entry );
40041e34: c2 02 20 0c ld [ %o0 + 0xc ], %g1
<== NOT EXECUTED
40041e38: c2 00 40 00 ld [ %g1 ], %g1
<== NOT EXECUTED
40041e3c: 9f c0 40 00 call %g1
<== NOT EXECUTED
40041e40: 01 00 00 00 nop
<== NOT EXECUTED
rv = rtems_filesystem_chown( &iop->pathinfo, owner, group );
40041e44: 94 10 00 1a mov %i2, %o2
<== NOT EXECUTED
40041e48: 92 10 00 19 mov %i1, %o1
<== NOT EXECUTED
40041e4c: 7f ff ff 98 call 40041cac <rtems_filesystem_chown>
<== NOT EXECUTED
40041e50: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
40041e54: b0 10 00 08 mov %o0, %i0
<== NOT EXECUTED
40041e58: d0 07 60 14 ld [ %i5 + 0x14 ], %o0
<== NOT EXECUTED
(*mt_entry->ops->unlock_h)( mt_entry );
40041e5c: c2 02 20 0c ld [ %o0 + 0xc ], %g1
<== NOT EXECUTED
40041e60: c2 00 60 04 ld [ %g1 + 4 ], %g1
<== NOT EXECUTED
40041e64: 9f c0 40 00 call %g1
<== NOT EXECUTED
40041e68: 01 00 00 00 nop
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40041e6c: 91 d0 20 09 ta 9
<== NOT EXECUTED
*obj = val - arg;
40041e70: c4 07 20 08 ld [ %i4 + 8 ], %g2
<== NOT EXECUTED
40041e74: 84 00 b0 00 add %g2, -4096, %g2
<== NOT EXECUTED
40041e78: c4 27 20 08 st %g2, [ %i4 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40041e7c: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40041e80: 01 00 00 00 nop
<== NOT EXECUTED
rtems_filesystem_instance_unlock( &iop->pathinfo );
rtems_libio_iop_drop( iop );
return rv;
}
40041e84: 81 c7 e0 08 ret
<== NOT EXECUTED
40041e88: 81 e8 00 00 restore
<== NOT EXECUTED
LIBIO_GET_IOP( fd, iop );
40041e8c: 40 00 6a a2 call 4005c914 <__errno>
<== NOT EXECUTED
40041e90: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
40041e94: 82 10 20 09 mov 9, %g1
<== NOT EXECUTED
40041e98: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
40041e9c: 81 c7 e0 08 ret
<== NOT EXECUTED
40041ea0: 81 e8 00 00 restore
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40041ea4: 91 d0 20 09 ta 9
<== NOT EXECUTED
40041ea8: c4 07 20 08 ld [ %i4 + 8 ], %g2
<== NOT EXECUTED
40041eac: 84 00 b0 00 add %g2, -4096, %g2
<== NOT EXECUTED
40041eb0: c4 27 20 08 st %g2, [ %i4 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40041eb4: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40041eb8: 01 00 00 00 nop
<== NOT EXECUTED
40041ebc: 40 00 6a 96 call 4005c914 <__errno>
<== NOT EXECUTED
40041ec0: b0 10 3f ff mov -1, %i0 ! ffffffff <RAM_END+0xbfbfffff>
<== NOT EXECUTED
40041ec4: 82 10 20 09 mov 9, %g1
<== NOT EXECUTED
40041ec8: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
40041ecc: 81 c7 e0 08 ret
<== NOT EXECUTED
40041ed0: 81 e8 00 00 restore
<== NOT EXECUTED
40058324 <fcntl>:
int fcntl(
int fd,
int cmd,
...
)
{
40058324: 9d e3 bf 98 save %sp, -104, %sp
<== NOT EXECUTED
int ret;
va_list ap;
va_start( ap, cmd );
40058328: 86 07 a0 4c add %fp, 0x4c, %g3
<== NOT EXECUTED
4005832c: f4 27 a0 4c st %i2, [ %fp + 0x4c ]
<== NOT EXECUTED
LIBIO_GET_IOP( fd, iop );
40058330: 09 10 01 f2 sethi %hi(0x4007c800), %g4
<== NOT EXECUTED
va_start( ap, cmd );
40058334: f6 27 a0 50 st %i3, [ %fp + 0x50 ]
<== NOT EXECUTED
40058338: f8 27 a0 54 st %i4, [ %fp + 0x54 ]
<== NOT EXECUTED
4005833c: fa 27 a0 58 st %i5, [ %fp + 0x58 ]
<== NOT EXECUTED
LIBIO_GET_IOP( fd, iop );
40058340: c2 01 20 04 ld [ %g4 + 4 ], %g1
<== NOT EXECUTED
40058344: 80 a6 00 01 cmp %i0, %g1
<== NOT EXECUTED
40058348: 1a 80 00 df bcc 400586c4 <fcntl+0x3a0>
<== NOT EXECUTED
4005834c: c6 27 bf fc st %g3, [ %fp + -4 ]
<== NOT EXECUTED
40058350: 83 2e 20 01 sll %i0, 1, %g1
<== NOT EXECUTED
return &rtems_libio_iops[ fd ];
40058354: 39 10 02 41 sethi %hi(0x40090400), %i4
<== NOT EXECUTED
40058358: a0 00 40 18 add %g1, %i0, %l0
<== NOT EXECUTED
4005835c: b8 17 23 48 or %i4, 0x348, %i4
<== NOT EXECUTED
40058360: b7 2c 20 04 sll %l0, 4, %i3
<== NOT EXECUTED
40058364: ba 07 00 1b add %i4, %i3, %i5
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40058368: 91 d0 20 09 ta 9
<== NOT EXECUTED
val = *obj;
4005836c: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
*obj = val + arg;
40058370: b4 20 b0 00 sub %g2, -4096, %i2
<== NOT EXECUTED
40058374: f4 27 60 08 st %i2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40058378: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4005837c: 01 00 00 00 nop
<== NOT EXECUTED
40058380: 80 88 a1 00 btst 0x100, %g2
<== NOT EXECUTED
40058384: 02 80 00 d6 be 400586dc <fcntl+0x3b8>
<== NOT EXECUTED
40058388: 80 a6 60 14 cmp %i1, 0x14
<== NOT EXECUTED
switch ( cmd ) {
4005838c: 18 80 00 b7 bgu 40058668 <fcntl+0x344>
<== NOT EXECUTED
40058390: 85 2e 60 02 sll %i1, 2, %g2
<== NOT EXECUTED
40058394: 03 10 01 60 sethi %hi(0x40058000), %g1
<== NOT EXECUTED
40058398: 82 10 62 d0 or %g1, 0x2d0, %g1 ! 400582d0 <fchdir+0x170>
<== NOT EXECUTED
4005839c: c2 00 40 02 ld [ %g1 + %g2 ], %g1
<== NOT EXECUTED
400583a0: 81 c0 40 00 jmp %g1
<== NOT EXECUTED
400583a4: 01 00 00 00 nop
<== NOT EXECUTED
errno = ENOTSUP;
400583a8: 40 00 11 5b call 4005c914 <__errno>
<== NOT EXECUTED
400583ac: b0 10 3f ff mov -1, %i0 ! ffffffff <RAM_END+0xbfbfffff>
<== NOT EXECUTED
400583b0: 82 10 20 86 mov 0x86, %g1
<== NOT EXECUTED
400583b4: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
400583b8: 91 d0 20 09 ta 9
<== NOT EXECUTED
*obj = val - arg;
400583bc: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
400583c0: 84 00 b0 00 add %g2, -4096, %g2
<== NOT EXECUTED
400583c4: c4 27 60 08 st %g2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
400583c8: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
400583cc: 01 00 00 00 nop
<== NOT EXECUTED
ret = vfcntl(fd,cmd,ap);
va_end(ap);
return ret;
}
400583d0: 81 c7 e0 08 ret
<== NOT EXECUTED
400583d4: 81 e8 00 00 restore
<== NOT EXECUTED
flags = rtems_libio_fcntl_flags( va_arg( ap, int ) );
400583d8: 7f fe cd 8f call 4000ba14 <rtems_libio_fcntl_flags>
<== NOT EXECUTED
400583dc: d0 00 c0 00 ld [ %g3 ], %o0
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
400583e0: 91 d0 20 09 ta 9
<== NOT EXECUTED
*obj = val & arg;
400583e4: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
400583e8: 84 08 bd fe and %g2, -514, %g2
<== NOT EXECUTED
400583ec: c4 27 60 08 st %g2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
400583f0: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
400583f4: 01 00 00 00 nop
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
400583f8: 91 d0 20 09 ta 9
<== NOT EXECUTED
*obj = val | arg;
400583fc: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
rtems_libio_iop_flags_set( iop, flags & mask );
40058400: 90 0a 22 01 and %o0, 0x201, %o0
<== NOT EXECUTED
40058404: 90 10 80 08 or %g2, %o0, %o0
<== NOT EXECUTED
40058408: d0 27 60 08 st %o0, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4005840c: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40058410: 01 00 00 00 nop
<== NOT EXECUTED
int ret = 0;
40058414: b0 10 20 00 clr %i0 ! 0 <PROM_START>
<== NOT EXECUTED
int err = (*iop->pathinfo.handlers->fcntl_h)( iop, cmd );
40058418: 83 2c 20 04 sll %l0, 4, %g1
<== NOT EXECUTED
4005841c: b8 07 00 01 add %i4, %g1, %i4
<== NOT EXECUTED
40058420: c2 07 20 1c ld [ %i4 + 0x1c ], %g1
<== NOT EXECUTED
40058424: c2 00 60 28 ld [ %g1 + 0x28 ], %g1
<== NOT EXECUTED
40058428: 92 10 00 19 mov %i1, %o1
<== NOT EXECUTED
4005842c: 9f c0 40 00 call %g1
<== NOT EXECUTED
40058430: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
if (err) {
40058434: b8 92 20 00 orcc %o0, 0, %i4
<== NOT EXECUTED
40058438: 02 bf ff e0 be 400583b8 <fcntl+0x94>
<== NOT EXECUTED
4005843c: 01 00 00 00 nop
<== NOT EXECUTED
errno = err;
40058440: 40 00 11 35 call 4005c914 <__errno>
<== NOT EXECUTED
40058444: b0 10 3f ff mov -1, %i0 ! ffffffff <RAM_END+0xbfbfffff>
<== NOT EXECUTED
40058448: f8 22 00 00 st %i4, [ %o0 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4005844c: 91 d0 20 09 ta 9
<== NOT EXECUTED
*obj = val - arg;
40058450: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
40058454: 84 00 b0 00 add %g2, -4096, %g2
<== NOT EXECUTED
40058458: c4 27 60 08 st %g2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4005845c: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40058460: 01 00 00 00 nop
<== NOT EXECUTED
}
40058464: 81 c7 e0 08 ret
<== NOT EXECUTED
40058468: 81 e8 00 00 restore
<== NOT EXECUTED
fd2 = va_arg( ap, int );
4005846c: e6 00 c0 00 ld [ %g3 ], %l3
<== NOT EXECUTED
if ( (uint32_t) fd2 >= rtems_libio_number_iops ) {
40058470: c2 01 20 04 ld [ %g4 + 4 ], %g1
<== NOT EXECUTED
40058474: 80 a4 c0 01 cmp %l3, %g1
<== NOT EXECUTED
40058478: 1a 80 00 a5 bcc 4005870c <fcntl+0x3e8>
<== NOT EXECUTED
4005847c: b5 2c e0 01 sll %l3, 1, %i2
<== NOT EXECUTED
40058480: b4 06 80 13 add %i2, %l3, %i2
<== NOT EXECUTED
40058484: a3 2e a0 04 sll %i2, 4, %l1
<== NOT EXECUTED
40058488: a4 07 00 11 add %i4, %l1, %l2
<== NOT EXECUTED
if (iop != iop2)
4005848c: 80 a7 40 12 cmp %i5, %l2
<== NOT EXECUTED
40058490: 02 bf ff e2 be 40058418 <fcntl+0xf4>
<== NOT EXECUTED
40058494: b0 10 20 00 clr %i0
<== NOT EXECUTED
40058498: c2 04 a0 08 ld [ %l2 + 8 ], %g1
<== NOT EXECUTED
if ((rtems_libio_iop_flags( iop2 ) & LIBIO_FLAGS_OPEN) != 0) {
4005849c: 80 88 61 00 btst 0x100, %g1
<== NOT EXECUTED
400584a0: 22 80 00 0a be,a 400584c8 <fcntl+0x1a4>
<== NOT EXECUTED
400584a4: d0 07 60 08 ld [ %i5 + 8 ], %o0
<== NOT EXECUTED
rv = (*iop2->pathinfo.handlers->close_h)( iop2 );
400584a8: c2 04 a0 1c ld [ %l2 + 0x1c ], %g1
<== NOT EXECUTED
400584ac: c2 00 60 04 ld [ %g1 + 4 ], %g1
<== NOT EXECUTED
400584b0: 9f c0 40 00 call %g1
<== NOT EXECUTED
400584b4: 90 10 00 12 mov %l2, %o0
<== NOT EXECUTED
if (rv == 0) {
400584b8: b0 92 20 00 orcc %o0, 0, %i0
<== NOT EXECUTED
400584bc: 12 80 00 5d bne 40058630 <fcntl+0x30c>
<== NOT EXECUTED
400584c0: 80 a6 20 00 cmp %i0, 0
<== NOT EXECUTED
400584c4: d0 07 60 08 ld [ %i5 + 8 ], %o0
<== NOT EXECUTED
oflag = rtems_libio_to_fcntl_flags( rtems_libio_iop_flags( iop ) );
400584c8: 7f fe cd 60 call 4000ba48 <rtems_libio_to_fcntl_flags>
<== NOT EXECUTED
400584cc: 01 00 00 00 nop
<== NOT EXECUTED
rtems_libio_iop_flags_set( iop2, rtems_libio_fcntl_flags( oflag ) );
400584d0: 7f fe cd 51 call 4000ba14 <rtems_libio_fcntl_flags>
<== NOT EXECUTED
400584d4: b0 10 00 08 mov %o0, %i0
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
400584d8: 91 d0 20 09 ta 9
<== NOT EXECUTED
*obj = val | arg;
400584dc: c4 04 a0 08 ld [ %l2 + 8 ], %g2
<== NOT EXECUTED
400584e0: 90 10 80 08 or %g2, %o0, %o0
<== NOT EXECUTED
400584e4: d0 24 a0 08 st %o0, [ %l2 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
400584e8: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
400584ec: 01 00 00 00 nop
<== NOT EXECUTED
400584f0: d0 07 60 20 ld [ %i5 + 0x20 ], %o0
<== NOT EXECUTED
(*mt_entry->ops->lock_h)( mt_entry );
400584f4: c2 02 20 0c ld [ %o0 + 0xc ], %g1
<== NOT EXECUTED
400584f8: c2 00 40 00 ld [ %g1 ], %g1
<== NOT EXECUTED
400584fc: 9f c0 40 00 call %g1
<== NOT EXECUTED
40058500: b5 2e a0 04 sll %i2, 4, %i2
<== NOT EXECUTED
rtems_filesystem_location_clone( &iop2->pathinfo, &iop->pathinfo );
40058504: 92 06 e0 0c add %i3, 0xc, %o1
<== NOT EXECUTED
40058508: 90 04 60 0c add %l1, 0xc, %o0
<== NOT EXECUTED
4005850c: 92 07 00 09 add %i4, %o1, %o1
<== NOT EXECUTED
40058510: 7f ff a5 41 call 40041a14 <rtems_filesystem_location_clone>
<== NOT EXECUTED
40058514: 90 07 00 08 add %i4, %o0, %o0
<== NOT EXECUTED
40058518: d0 07 60 20 ld [ %i5 + 0x20 ], %o0
<== NOT EXECUTED
(*mt_entry->ops->unlock_h)( mt_entry );
4005851c: c2 02 20 0c ld [ %o0 + 0xc ], %g1
<== NOT EXECUTED
40058520: c2 00 60 04 ld [ %g1 + 4 ], %g1
<== NOT EXECUTED
40058524: 9f c0 40 00 call %g1
<== NOT EXECUTED
40058528: b4 07 00 1a add %i4, %i2, %i2
<== NOT EXECUTED
rv = (*iop2->pathinfo.handlers->open_h)( iop2, NULL, oflag, 0 );
4005852c: c2 06 a0 1c ld [ %i2 + 0x1c ], %g1
<== NOT EXECUTED
40058530: c2 00 40 00 ld [ %g1 ], %g1
<== NOT EXECUTED
40058534: 94 10 00 18 mov %i0, %o2
<== NOT EXECUTED
40058538: 96 10 20 00 clr %o3
<== NOT EXECUTED
4005853c: 92 10 20 00 clr %o1
<== NOT EXECUTED
40058540: 9f c0 40 00 call %g1
<== NOT EXECUTED
40058544: 90 10 00 12 mov %l2, %o0
<== NOT EXECUTED
if ( rv == 0 ) {
40058548: b0 92 20 00 orcc %o0, 0, %i0
<== NOT EXECUTED
4005854c: 22 80 00 38 be,a 4005862c <fcntl+0x308>
<== NOT EXECUTED
40058550: b0 10 00 13 mov %l3, %i0
<== NOT EXECUTED
if (ret >= 0) {
40058554: 10 80 00 37 b 40058630 <fcntl+0x30c>
<== NOT EXECUTED
40058558: 80 a6 20 00 cmp %i0, 0
<== NOT EXECUTED
4005855c: d0 07 60 08 ld [ %i5 + 8 ], %o0
<== NOT EXECUTED
oflag = rtems_libio_to_fcntl_flags( rtems_libio_iop_flags( iop ) );
40058560: 7f fe cd 3a call 4000ba48 <rtems_libio_to_fcntl_flags>
<== NOT EXECUTED
40058564: 01 00 00 00 nop
<== NOT EXECUTED
diop = rtems_libio_allocate();
40058568: 7f fe cd 4b call 4000ba94 <rtems_libio_allocate>
<== NOT EXECUTED
4005856c: a2 10 00 08 mov %o0, %l1
<== NOT EXECUTED
if (diop != NULL) {
40058570: b4 92 20 00 orcc %o0, 0, %i2
<== NOT EXECUTED
40058574: 02 bf ff 91 be 400583b8 <fcntl+0x94>
<== NOT EXECUTED
40058578: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
4005857c: d0 07 60 20 ld [ %i5 + 0x20 ], %o0
<== NOT EXECUTED
(*mt_entry->ops->lock_h)( mt_entry );
40058580: c2 02 20 0c ld [ %o0 + 0xc ], %g1
<== NOT EXECUTED
40058584: c2 00 40 00 ld [ %g1 ], %g1
<== NOT EXECUTED
40058588: 9f c0 40 00 call %g1
<== NOT EXECUTED
4005858c: 01 00 00 00 nop
<== NOT EXECUTED
rtems_filesystem_location_clone( &diop->pathinfo, &iop->pathinfo );
40058590: 90 06 a0 0c add %i2, 0xc, %o0
<== NOT EXECUTED
40058594: 92 06 e0 0c add %i3, 0xc, %o1
<== NOT EXECUTED
40058598: 7f ff a5 1f call 40041a14 <rtems_filesystem_location_clone>
<== NOT EXECUTED
4005859c: 92 07 00 09 add %i4, %o1, %o1
<== NOT EXECUTED
400585a0: d0 07 60 20 ld [ %i5 + 0x20 ], %o0
<== NOT EXECUTED
(*mt_entry->ops->unlock_h)( mt_entry );
400585a4: c2 02 20 0c ld [ %o0 + 0xc ], %g1
<== NOT EXECUTED
400585a8: c2 00 60 04 ld [ %g1 + 4 ], %g1
<== NOT EXECUTED
400585ac: 9f c0 40 00 call %g1
<== NOT EXECUTED
400585b0: 01 00 00 00 nop
<== NOT EXECUTED
rv = (*diop->pathinfo.handlers->open_h)( diop, NULL, oflag, 0 );
400585b4: c2 06 a0 1c ld [ %i2 + 0x1c ], %g1
<== NOT EXECUTED
400585b8: c2 00 40 00 ld [ %g1 ], %g1
<== NOT EXECUTED
400585bc: 96 10 20 00 clr %o3
<== NOT EXECUTED
400585c0: 94 10 00 11 mov %l1, %o2
<== NOT EXECUTED
400585c4: 92 10 20 00 clr %o1
<== NOT EXECUTED
400585c8: 9f c0 40 00 call %g1
<== NOT EXECUTED
400585cc: 90 10 00 1a mov %i2, %o0
<== NOT EXECUTED
if ( rv == 0 ) {
400585d0: b0 92 20 00 orcc %o0, 0, %i0
<== NOT EXECUTED
400585d4: 02 80 00 32 be 4005869c <fcntl+0x378>
<== NOT EXECUTED
400585d8: 01 00 00 00 nop
<== NOT EXECUTED
rtems_libio_free( diop );
400585dc: 7f fe cd 43 call 4000bae8 <rtems_libio_free>
<== NOT EXECUTED
400585e0: 90 10 00 1a mov %i2, %o0
<== NOT EXECUTED
if (ret >= 0) {
400585e4: 10 80 00 13 b 40058630 <fcntl+0x30c>
<== NOT EXECUTED
400585e8: 80 a6 20 00 cmp %i0, 0
<== NOT EXECUTED
if ( va_arg( ap, int ) )
400585ec: f0 00 c0 00 ld [ %g3 ], %i0
<== NOT EXECUTED
400585f0: 80 a6 20 00 cmp %i0, 0
<== NOT EXECUTED
400585f4: 02 80 00 22 be 4005867c <fcntl+0x358>
<== NOT EXECUTED
400585f8: 01 00 00 00 nop
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
400585fc: 91 d0 20 09 ta 9
<== NOT EXECUTED
40058600: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
40058604: 84 10 a8 00 or %g2, 0x800, %g2
<== NOT EXECUTED
40058608: c4 27 60 08 st %g2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4005860c: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40058610: 01 00 00 00 nop
<== NOT EXECUTED
int ret = 0;
40058614: 10 bf ff 81 b 40058418 <fcntl+0xf4>
<== NOT EXECUTED
40058618: b0 10 20 00 clr %i0 ! 0 <PROM_START>
<== NOT EXECUTED
4005861c: d0 07 60 08 ld [ %i5 + 8 ], %o0
<== NOT EXECUTED
ret = rtems_libio_to_fcntl_flags( rtems_libio_iop_flags( iop ) );
40058620: 7f fe cd 0a call 4000ba48 <rtems_libio_to_fcntl_flags>
<== NOT EXECUTED
40058624: 01 00 00 00 nop
<== NOT EXECUTED
40058628: b0 10 00 08 mov %o0, %i0
<== NOT EXECUTED
if (ret >= 0) {
4005862c: 80 a6 20 00 cmp %i0, 0
<== NOT EXECUTED
40058630: 16 bf ff 7b bge 4005841c <fcntl+0xf8>
<== NOT EXECUTED
40058634: 83 2c 20 04 sll %l0, 4, %g1
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40058638: 91 d0 20 09 ta 9
<== NOT EXECUTED
*obj = val - arg;
4005863c: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
40058640: 84 00 b0 00 add %g2, -4096, %g2
<== NOT EXECUTED
40058644: c4 27 60 08 st %g2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40058648: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4005864c: 01 00 00 00 nop
<== NOT EXECUTED
}
40058650: 81 c7 e0 08 ret
<== NOT EXECUTED
40058654: 81 e8 00 00 restore
<== NOT EXECUTED
40058658: f0 07 60 08 ld [ %i5 + 8 ], %i0
<== NOT EXECUTED
ret = ((rtems_libio_iop_flags(iop) & LIBIO_FLAGS_CLOSE_ON_EXEC) != 0);
4005865c: b1 36 20 0b srl %i0, 0xb, %i0
<== NOT EXECUTED
40058660: 10 bf ff 6e b 40058418 <fcntl+0xf4>
<== NOT EXECUTED
40058664: b0 0e 20 01 and %i0, 1, %i0
<== NOT EXECUTED
errno = EINVAL;
40058668: 40 00 10 ab call 4005c914 <__errno>
<== NOT EXECUTED
4005866c: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
40058670: 82 10 20 16 mov 0x16, %g1
<== NOT EXECUTED
40058674: 10 bf ff 51 b 400583b8 <fcntl+0x94>
<== NOT EXECUTED
40058678: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4005867c: 91 d0 20 09 ta 9
<== NOT EXECUTED
*obj = val & arg;
40058680: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
40058684: 84 08 b7 ff and %g2, -2049, %g2
<== NOT EXECUTED
40058688: c4 27 60 08 st %g2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4005868c: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40058690: 01 00 00 00 nop
<== NOT EXECUTED
int err = (*iop->pathinfo.handlers->fcntl_h)( iop, cmd );
40058694: 10 bf ff 62 b 4005841c <fcntl+0xf8>
<== NOT EXECUTED
40058698: 83 2c 20 04 sll %l0, 4, %g1
<== NOT EXECUTED
rtems_libio_fcntl_flags( oflag )
4005869c: 7f fe cc de call 4000ba14 <rtems_libio_fcntl_flags>
<== NOT EXECUTED
400586a0: 90 10 00 11 mov %l1, %o0
<== NOT EXECUTED
rv = rtems_libio_iop_to_descriptor( diop );
400586a4: b0 26 80 1c sub %i2, %i4, %i0
<== NOT EXECUTED
_Atomic_Store_uint(
400586a8: 90 12 21 00 or %o0, 0x100, %o0
<== NOT EXECUTED
400586ac: 83 3e 20 04 sra %i0, 4, %g1
<== NOT EXECUTED
*obj = desired;
400586b0: d0 26 a0 08 st %o0, [ %i2 + 8 ]
<== NOT EXECUTED
400586b4: 31 2a aa aa sethi %hi(0xaaaaa800), %i0
<== NOT EXECUTED
400586b8: b0 16 22 ab or %i0, 0x2ab, %i0 ! aaaaaaab <RAM_END+0x6a6aaaab>
<== NOT EXECUTED
400586bc: 10 bf ff dc b 4005862c <fcntl+0x308>
<== NOT EXECUTED
400586c0: b0 58 40 18 smul %g1, %i0, %i0
<== NOT EXECUTED
LIBIO_GET_IOP( fd, iop );
400586c4: 40 00 10 94 call 4005c914 <__errno>
<== NOT EXECUTED
400586c8: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
400586cc: 82 10 20 09 mov 9, %g1
<== NOT EXECUTED
400586d0: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
400586d4: 81 c7 e0 08 ret
<== NOT EXECUTED
400586d8: 81 e8 00 00 restore
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
400586dc: 91 d0 20 09 ta 9
<== NOT EXECUTED
*obj = val - arg;
400586e0: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
400586e4: 84 00 b0 00 add %g2, -4096, %g2
<== NOT EXECUTED
400586e8: c4 27 60 08 st %g2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
400586ec: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
400586f0: 01 00 00 00 nop
<== NOT EXECUTED
400586f4: 40 00 10 88 call 4005c914 <__errno>
<== NOT EXECUTED
400586f8: b0 10 3f ff mov -1, %i0 ! ffffffff <RAM_END+0xbfbfffff>
<== NOT EXECUTED
400586fc: 82 10 20 09 mov 9, %g1
<== NOT EXECUTED
40058700: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
40058704: 81 c7 e0 08 ret
<== NOT EXECUTED
40058708: 81 e8 00 00 restore
<== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EBADF );
4005870c: 40 00 10 82 call 4005c914 <__errno>
<== NOT EXECUTED
40058710: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
40058714: 82 10 20 09 mov 9, %g1
<== NOT EXECUTED
40058718: 10 bf ff 28 b 400583b8 <fcntl+0x94>
<== NOT EXECUTED
4005871c: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
40004678 <free>:
#include <stdlib.h>
void free(
void *ptr
)
{
40004678: 9d e3 bf a0 save %sp, -96, %sp
if ( !ptr )
4000467c: ba 96 20 00 orcc %i0, 0, %i5
40004680: 02 80 00 0d be 400046b4 <free+0x3c>
40004684: 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 ) {
40004688: 40 00 00 7a call 40004870 <_Malloc_System_state>
4000468c: 01 00 00 00 nop
40004690: 80 a2 20 00 cmp %o0, 0
40004694: 12 80 00 0a bne 400046bc <free+0x44>
<== NEVER TAKEN
40004698: 03 10 00 47 sethi %hi(0x40011c00), %g1
_Malloc_Deferred_free(ptr);
return;
}
if ( !_Protected_heap_Free( RTEMS_Malloc_Heap, ptr ) ) {
4000469c: d0 00 61 e4 ld [ %g1 + 0x1e4 ], %o0 ! 40011de4 <RTEMS_Malloc_Heap>
400046a0: 40 00 12 42 call 40008fa8 <_Protected_heap_Free>
400046a4: 92 10 00 1d mov %i5, %o1
400046a8: 80 a2 20 00 cmp %o0, 0
400046ac: 02 80 00 06 be 400046c4 <free+0x4c>
<== NEVER TAKEN
400046b0: 92 10 00 1d mov %i5, %o1
rtems_fatal( RTEMS_FATAL_SOURCE_INVALID_HEAP_FREE, (rtems_fatal_code) ptr );
}
}
400046b4: 81 c7 e0 08 ret
400046b8: 81 e8 00 00 restore
_Malloc_Deferred_free(ptr);
400046bc: 40 00 00 cf call 400049f8 <_Malloc_Deferred_free>
<== NOT EXECUTED
400046c0: 81 e8 00 00 restore
<== NOT EXECUTED
400046c4: 40 00 0a f7 call 400072a0 <_Terminate>
<== NOT EXECUTED
400046c8: 90 10 20 0c mov 0xc, %o0
<== NOT EXECUTED
400046cc: 01 00 00 00 nop
<== NOT EXECUTED
4002bfac <fstat>:
int fstat(
int fd,
struct stat *sbuf
)
{
4002bfac: 9d e3 bf a0 save %sp, -96, %sp
int rv;
/*
* Check to see if we were passed a valid pointer.
*/
if ( !sbuf )
4002bfb0: 80 a6 60 00 cmp %i1, 0
4002bfb4: 02 80 00 32 be 4002c07c <fstat+0xd0>
<== NEVER TAKEN
4002bfb8: 03 10 00 b5 sethi %hi(0x4002d400), %g1
rtems_set_errno_and_return_minus_one( EFAULT );
/*
* Now process the stat() request.
*/
LIBIO_GET_IOP( fd, iop );
4002bfbc: c2 00 60 e0 ld [ %g1 + 0xe0 ], %g1 ! 4002d4e0 <rtems_libio_number_iops>
4002bfc0: 80 a6 00 01 cmp %i0, %g1
4002bfc4: 1a 80 00 28 bcc 4002c064 <fstat+0xb8>
<== NEVER TAKEN
4002bfc8: 91 2e 20 01 sll %i0, 1, %o0
<== NOT EXECUTED
4002bfcc: 39 10 00 d2 sethi %hi(0x40034800), %i4
<== NOT EXECUTED
4002bfd0: b0 02 00 18 add %o0, %i0, %i0
<== NOT EXECUTED
4002bfd4: b8 17 23 f0 or %i4, 0x3f0, %i4
<== NOT EXECUTED
4002bfd8: b1 2e 20 04 sll %i0, 4, %i0
<== NOT EXECUTED
4002bfdc: ba 06 00 1c add %i0, %i4, %i5
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4002bfe0: 91 d0 20 09 ta 9
<== NOT EXECUTED
val = *obj;
4002bfe4: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
*obj = val + arg;
4002bfe8: 86 20 b0 00 sub %g2, -4096, %g3
<== NOT EXECUTED
4002bfec: c6 27 60 08 st %g3, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4002bff0: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4002bff4: 01 00 00 00 nop
4002bff8: 80 88 a1 00 btst 0x100, %g2
4002bffc: 02 80 00 14 be 4002c04c <fstat+0xa0>
<== NEVER TAKEN
4002c000: 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) );
4002c004: 92 10 20 00 clr %o1
4002c008: 7f ff c8 9c call 4001e278 <memset>
4002c00c: 90 10 00 19 mov %i1, %o0
rv = (*iop->pathinfo.handlers->fstat_h)( &iop->pathinfo, sbuf );
4002c010: c2 07 60 1c ld [ %i5 + 0x1c ], %g1
4002c014: c2 00 60 18 ld [ %g1 + 0x18 ], %g1
4002c018: 90 06 20 0c add %i0, 0xc, %o0
4002c01c: 92 10 00 19 mov %i1, %o1
4002c020: 9f c0 40 00 call %g1
4002c024: 90 07 00 08 add %i4, %o0, %o0
4002c028: b0 10 00 08 mov %o0, %i0
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4002c02c: 91 d0 20 09 ta 9
<== NOT EXECUTED
*obj = val - arg;
4002c030: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
4002c034: 84 00 b0 00 add %g2, -4096, %g2
<== NOT EXECUTED
4002c038: c4 27 60 08 st %g2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4002c03c: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4002c040: 01 00 00 00 nop
rtems_libio_iop_drop( iop );
return rv;
}
4002c044: 81 c7 e0 08 ret
4002c048: 81 e8 00 00 restore
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4002c04c: 91 d0 20 09 ta 9
<== NOT EXECUTED
4002c050: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
4002c054: 84 00 b0 00 add %g2, -4096, %g2
<== NOT EXECUTED
4002c058: c4 27 60 08 st %g2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4002c05c: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4002c060: 01 00 00 00 nop
<== NOT EXECUTED
LIBIO_GET_IOP( fd, iop );
4002c064: 7f ff bf 27 call 4001bd00 <__errno>
<== NOT EXECUTED
4002c068: b0 10 3f ff mov -1, %i0 ! ffffffff <RAM_END+0xbfbfffff>
<== NOT EXECUTED
4002c06c: 82 10 20 09 mov 9, %g1
<== NOT EXECUTED
4002c070: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
4002c074: 81 c7 e0 08 ret
<== NOT EXECUTED
4002c078: 81 e8 00 00 restore
<== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EFAULT );
4002c07c: 7f ff bf 21 call 4001bd00 <__errno>
<== NOT EXECUTED
4002c080: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
4002c084: 82 10 20 0e mov 0xe, %g1
<== NOT EXECUTED
4002c088: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
4002c08c: 81 c7 e0 08 ret
<== NOT EXECUTED
4002c090: 81 e8 00 00 restore
<== NOT EXECUTED
40041f1c <fsync>:
* POSIX 1003.1b 6.6.1 - Synchronize the State of a File
*/
int fsync(
int fd
)
{
40041f1c: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
rtems_libio_t *iop;
int rv;
LIBIO_GET_IOP( fd, iop );
40041f20: 03 10 01 f2 sethi %hi(0x4007c800), %g1
<== NOT EXECUTED
40041f24: c2 00 60 04 ld [ %g1 + 4 ], %g1 ! 4007c804 <rtems_libio_number_iops>
<== NOT EXECUTED
40041f28: 80 a6 00 01 cmp %i0, %g1
<== NOT EXECUTED
40041f2c: 1a 80 00 23 bcc 40041fb8 <fsync+0x9c>
<== NOT EXECUTED
40041f30: bb 2e 20 01 sll %i0, 1, %i5
<== NOT EXECUTED
return &rtems_libio_iops[ fd ];
40041f34: ba 07 40 18 add %i5, %i0, %i5
<== NOT EXECUTED
40041f38: 31 10 02 41 sethi %hi(0x40090400), %i0
<== NOT EXECUTED
40041f3c: bb 2f 60 04 sll %i5, 4, %i5
<== NOT EXECUTED
40041f40: b0 16 23 48 or %i0, 0x348, %i0
<== NOT EXECUTED
40041f44: ba 07 40 18 add %i5, %i0, %i5
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40041f48: 91 d0 20 09 ta 9
<== NOT EXECUTED
val = *obj;
40041f4c: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
*obj = val + arg;
40041f50: 86 20 b0 00 sub %g2, -4096, %g3
<== NOT EXECUTED
40041f54: c6 27 60 08 st %g3, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40041f58: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40041f5c: 01 00 00 00 nop
<== NOT EXECUTED
40041f60: 80 88 a1 00 btst 0x100, %g2
<== NOT EXECUTED
40041f64: 02 80 00 0f be 40041fa0 <fsync+0x84>
<== NOT EXECUTED
40041f68: 01 00 00 00 nop
<== NOT EXECUTED
/*
* Now process the fsync().
*/
rv = (*iop->pathinfo.handlers->fsync_h)( iop );
40041f6c: c2 07 60 1c ld [ %i5 + 0x1c ], %g1
<== NOT EXECUTED
40041f70: c2 00 60 20 ld [ %g1 + 0x20 ], %g1
<== NOT EXECUTED
40041f74: 9f c0 40 00 call %g1
<== NOT EXECUTED
40041f78: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
40041f7c: b0 10 00 08 mov %o0, %i0
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40041f80: 91 d0 20 09 ta 9
<== NOT EXECUTED
*obj = val - arg;
40041f84: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
40041f88: 84 00 b0 00 add %g2, -4096, %g2
<== NOT EXECUTED
40041f8c: c4 27 60 08 st %g2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40041f90: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40041f94: 01 00 00 00 nop
<== NOT EXECUTED
rtems_libio_iop_drop( iop );
return rv;
}
40041f98: 81 c7 e0 08 ret
<== NOT EXECUTED
40041f9c: 81 e8 00 00 restore
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40041fa0: 91 d0 20 09 ta 9
<== NOT EXECUTED
40041fa4: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
40041fa8: 84 00 b0 00 add %g2, -4096, %g2
<== NOT EXECUTED
40041fac: c4 27 60 08 st %g2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40041fb0: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40041fb4: 01 00 00 00 nop
<== NOT EXECUTED
LIBIO_GET_IOP( fd, iop );
40041fb8: 40 00 6a 57 call 4005c914 <__errno>
<== NOT EXECUTED
40041fbc: b0 10 3f ff mov -1, %i0 ! ffffffff <RAM_END+0xbfbfffff>
<== NOT EXECUTED
40041fc0: 82 10 20 09 mov 9, %g1
<== NOT EXECUTED
40041fc4: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
40041fc8: 81 c7 e0 08 ret
<== NOT EXECUTED
40041fcc: 81 e8 00 00 restore
<== NOT EXECUTED
4000d33c <ftruncate>:
#include <unistd.h>
#include <rtems/libio_.h>
int ftruncate( int fd, off_t length )
{
4000d33c: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
int rv = 0;
if ( length >= 0 ) {
4000d340: 80 a6 60 00 cmp %i1, 0
<== NOT EXECUTED
4000d344: 06 80 00 39 bl 4000d428 <ftruncate+0xec>
<== NOT EXECUTED
4000d348: 03 10 00 3f sethi %hi(0x4000fc00), %g1
<== NOT EXECUTED
rtems_libio_t *iop;
LIBIO_GET_IOP_WITH_ACCESS( fd, iop, LIBIO_FLAGS_WRITE, EINVAL );
4000d34c: c2 00 63 f0 ld [ %g1 + 0x3f0 ], %g1 ! 4000fff0 <rtems_libio_number_iops>
<== NOT EXECUTED
4000d350: 80 a6 00 01 cmp %i0, %g1
<== NOT EXECUTED
4000d354: 1a 80 00 1f bcc 4000d3d0 <ftruncate+0x94>
<== NOT EXECUTED
4000d358: bb 2e 20 01 sll %i0, 1, %i5
<== NOT EXECUTED
return &rtems_libio_iops[ fd ];
4000d35c: ba 07 40 18 add %i5, %i0, %i5
<== NOT EXECUTED
4000d360: 31 10 00 4c sethi %hi(0x40013000), %i0
<== NOT EXECUTED
4000d364: bb 2f 60 04 sll %i5, 4, %i5
<== NOT EXECUTED
4000d368: b0 16 21 48 or %i0, 0x148, %i0
<== NOT EXECUTED
4000d36c: ba 07 40 18 add %i5, %i0, %i5
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4000d370: 91 d0 20 09 ta 9
<== NOT EXECUTED
val = *obj;
4000d374: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
*obj = val + arg;
4000d378: 86 20 b0 00 sub %g2, -4096, %g3
<== NOT EXECUTED
4000d37c: c6 27 60 08 st %g3, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4000d380: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4000d384: 01 00 00 00 nop
<== NOT EXECUTED
4000d388: 82 08 a1 04 and %g2, 0x104, %g1
<== NOT EXECUTED
4000d38c: 80 a0 61 04 cmp %g1, 0x104
<== NOT EXECUTED
4000d390: 12 80 00 16 bne 4000d3e8 <ftruncate+0xac>
<== NOT EXECUTED
4000d394: 92 10 00 19 mov %i1, %o1
<== NOT EXECUTED
rv = (*iop->pathinfo.handlers->ftruncate_h)( iop, length );
4000d398: c2 07 60 1c ld [ %i5 + 0x1c ], %g1
<== NOT EXECUTED
4000d39c: c2 00 60 1c ld [ %g1 + 0x1c ], %g1
<== NOT EXECUTED
4000d3a0: 94 10 00 1a mov %i2, %o2
<== NOT EXECUTED
4000d3a4: 9f c0 40 00 call %g1
<== NOT EXECUTED
4000d3a8: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
4000d3ac: b0 10 00 08 mov %o0, %i0
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4000d3b0: 91 d0 20 09 ta 9
<== NOT EXECUTED
*obj = val - arg;
4000d3b4: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
4000d3b8: 84 00 b0 00 add %g2, -4096, %g2
<== NOT EXECUTED
4000d3bc: c4 27 60 08 st %g2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4000d3c0: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4000d3c4: 01 00 00 00 nop
<== NOT EXECUTED
4000d3c8: 81 c7 e0 08 ret
<== NOT EXECUTED
4000d3cc: 81 e8 00 00 restore
<== NOT EXECUTED
LIBIO_GET_IOP_WITH_ACCESS( fd, iop, LIBIO_FLAGS_WRITE, EINVAL );
4000d3d0: 40 00 04 e2 call 4000e758 <__errno>
<== NOT EXECUTED
4000d3d4: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
4000d3d8: 82 10 20 09 mov 9, %g1
<== NOT EXECUTED
4000d3dc: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
4000d3e0: 81 c7 e0 08 ret
<== NOT EXECUTED
4000d3e4: 81 e8 00 00 restore
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4000d3e8: 91 d0 20 09 ta 9
<== NOT EXECUTED
4000d3ec: c6 07 60 08 ld [ %i5 + 8 ], %g3
<== NOT EXECUTED
4000d3f0: 86 00 f0 00 add %g3, -4096, %g3
<== NOT EXECUTED
4000d3f4: c6 27 60 08 st %g3, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4000d3f8: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4000d3fc: 01 00 00 00 nop
<== NOT EXECUTED
4000d400: 84 08 a1 00 and %g2, 0x100, %g2
<== NOT EXECUTED
4000d404: 80 a0 00 02 cmp %g0, %g2
<== NOT EXECUTED
4000d408: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
4000d40c: 40 00 04 d3 call 4000e758 <__errno>
<== NOT EXECUTED
4000d410: ba 60 20 00 subx %g0, 0, %i5
<== NOT EXECUTED
4000d414: ba 0f 60 0d and %i5, 0xd, %i5
<== NOT EXECUTED
4000d418: ba 07 60 09 add %i5, 9, %i5
<== NOT EXECUTED
4000d41c: fa 22 00 00 st %i5, [ %o0 ]
<== NOT EXECUTED
4000d420: 81 c7 e0 08 ret
<== NOT EXECUTED
4000d424: 81 e8 00 00 restore
<== NOT EXECUTED
rtems_libio_iop_drop( iop );
} else {
errno = EINVAL;
4000d428: 40 00 04 cc call 4000e758 <__errno>
<== NOT EXECUTED
4000d42c: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
4000d430: 82 10 20 16 mov 0x16, %g1
<== NOT EXECUTED
4000d434: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
rv = -1;
}
return rv;
}
4000d438: 81 c7 e0 08 ret
<== NOT EXECUTED
4000d43c: 81 e8 00 00 restore
<== NOT EXECUTED
400046d0 <getchark>:
#include <rtems.h>
#include <rtems/bspIo.h>
int getchark(void)
{
400046d0: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
if ( BSP_poll_char )
400046d4: 03 10 00 48 sethi %hi(0x40012000), %g1
<== NOT EXECUTED
400046d8: d0 00 61 d0 ld [ %g1 + 0x1d0 ], %o0 ! 400121d0 <BSP_poll_char>
<== NOT EXECUTED
400046dc: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
400046e0: 02 80 00 06 be 400046f8 <getchark+0x28>
<== NOT EXECUTED
400046e4: 01 00 00 00 nop
<== NOT EXECUTED
return (*BSP_poll_char)();
400046e8: 9f c2 00 00 call %o0
<== NOT EXECUTED
400046ec: 01 00 00 00 nop
<== NOT EXECUTED
400046f0: 81 c7 e0 08 ret
<== NOT EXECUTED
400046f4: 91 e8 00 08 restore %g0, %o0, %o0
<== NOT EXECUTED
return -1;
}
400046f8: 81 c7 e0 08 ret
<== NOT EXECUTED
400046fc: 91 e8 3f ff restore %g0, -1, %o0
<== NOT EXECUTED
4007a4c4 <getdents>:
int getdents(
int dd_fd,
char *dd_buf,
int dd_len
)
{
4007a4c4: 9d e3 bf 40 save %sp, -192, %sp
<== NOT EXECUTED
4007a4c8: 91 2e 20 01 sll %i0, 1, %o0
<== NOT EXECUTED
st.st_mode = 0;
4007a4cc: c0 27 bf ac clr [ %fp + -84 ]
<== NOT EXECUTED
4007a4d0: b0 02 00 18 add %o0, %i0, %i0
<== NOT EXECUTED
return &rtems_libio_iops[ fd ];
4007a4d4: 11 10 02 41 sethi %hi(0x40090400), %o0
<== NOT EXECUTED
4007a4d8: b1 2e 20 04 sll %i0, 4, %i0
<== NOT EXECUTED
4007a4dc: 90 12 23 48 or %o0, 0x348, %o0
<== NOT EXECUTED
4007a4e0: ba 06 00 08 add %i0, %o0, %i5
<== NOT EXECUTED
(void) ( *loc->handlers->fstat_h )( loc, &st );
4007a4e4: c2 07 60 1c ld [ %i5 + 0x1c ], %g1
<== NOT EXECUTED
4007a4e8: c2 00 60 18 ld [ %g1 + 0x18 ], %g1
<== NOT EXECUTED
iop = rtems_libio_iop( dd_fd );
/*
* Make sure we are working on a directory
*/
type = rtems_filesystem_location_type( &iop->pathinfo );
4007a4ec: b0 06 20 0c add %i0, 0xc, %i0
<== NOT EXECUTED
4007a4f0: 92 07 bf a0 add %fp, -96, %o1
<== NOT EXECUTED
4007a4f4: 9f c0 40 00 call %g1
<== NOT EXECUTED
4007a4f8: 90 02 00 18 add %o0, %i0, %o0
<== NOT EXECUTED
if ( !S_ISDIR( type ) )
4007a4fc: 05 00 00 3c sethi %hi(0xf000), %g2
<== NOT EXECUTED
4007a500: c2 07 bf ac ld [ %fp + -84 ], %g1
<== NOT EXECUTED
4007a504: 82 08 40 02 and %g1, %g2, %g1
<== NOT EXECUTED
4007a508: 05 00 00 10 sethi %hi(0x4000), %g2
<== NOT EXECUTED
4007a50c: 80 a0 40 02 cmp %g1, %g2
<== NOT EXECUTED
4007a510: 12 80 00 09 bne 4007a534 <getdents+0x70>
<== NOT EXECUTED
4007a514: 94 10 00 1a mov %i2, %o2
<== NOT EXECUTED
/*
* Return the number of bytes that were actually transfered as a result
* of the read attempt.
*/
return (*iop->pathinfo.handlers->read_h)( iop, dd_buf, dd_len );
4007a518: c2 07 60 1c ld [ %i5 + 0x1c ], %g1
<== NOT EXECUTED
4007a51c: c2 00 60 08 ld [ %g1 + 8 ], %g1
<== NOT EXECUTED
4007a520: 92 10 00 19 mov %i1, %o1
<== NOT EXECUTED
4007a524: 9f c0 40 00 call %g1
<== NOT EXECUTED
4007a528: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
}
4007a52c: 81 c7 e0 08 ret
<== NOT EXECUTED
4007a530: 91 e8 00 08 restore %g0, %o0, %o0
<== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOTDIR );
4007a534: 7f ff 88 f8 call 4005c914 <__errno>
<== NOT EXECUTED
4007a538: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
4007a53c: 82 10 20 14 mov 0x14, %g1
<== NOT EXECUTED
4007a540: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
4007a544: 81 c7 e0 08 ret
<== NOT EXECUTED
4007a548: 81 e8 00 00 restore
<== NOT EXECUTED
400420d4 <getgid>:
/**
* 4.2.1 Get Real User, Effective User, Ral Group, and Effective Group IDs,
* P1003.1b-1993, p. 84
*/
gid_t getgid( void )
{
400420d4: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
return _POSIX_types_Gid;
400420d8: 7f ff 29 5d call 4000c64c <rtems_current_user_env_get>
<== NOT EXECUTED
400420dc: 01 00 00 00 nop
<== NOT EXECUTED
}
400420e0: f0 12 20 0e lduh [ %o0 + 0xe ], %i0
<== NOT EXECUTED
400420e4: 81 c7 e0 08 ret
<== NOT EXECUTED
400420e8: 81 e8 00 00 restore
<== NOT EXECUTED
4005c44c <getgrent>:
}
struct group *getgrent(void)
{
4005c44c: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
grp_context *ctx = grp_get_context();
4005c450: 7f ff ff ee call 4005c408 <grp_get_context>
<== NOT EXECUTED
4005c454: 01 00 00 00 nop
<== NOT EXECUTED
if (ctx == NULL)
4005c458: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
4005c45c: 02 80 00 10 be 4005c49c <getgrent+0x50>
<== NOT EXECUTED
4005c460: 01 00 00 00 nop
<== NOT EXECUTED
return NULL;
if (ctx->fp == NULL)
4005c464: c2 02 00 00 ld [ %o0 ], %g1
<== NOT EXECUTED
4005c468: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
4005c46c: 02 80 00 0c be 4005c49c <getgrent+0x50>
<== NOT EXECUTED
4005c470: 94 02 20 04 add %o0, 4, %o2
<== NOT EXECUTED
return NULL;
if (!_libcsupport_scangr(ctx->fp, &ctx->grp, ctx->buf, sizeof(ctx->buf)))
4005c474: b0 02 21 04 add %o0, 0x104, %i0
<== NOT EXECUTED
4005c478: 96 10 21 00 mov 0x100, %o3
<== NOT EXECUTED
4005c47c: 92 10 00 18 mov %i0, %o1
<== NOT EXECUTED
4005c480: 7f ff 99 5e call 400429f8 <_libcsupport_scangr>
<== NOT EXECUTED
4005c484: 90 10 00 01 mov %g1, %o0
<== NOT EXECUTED
4005c488: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
4005c48c: 02 80 00 04 be 4005c49c <getgrent+0x50>
<== NOT EXECUTED
4005c490: 01 00 00 00 nop
<== NOT EXECUTED
return NULL;
return &ctx->grp;
}
4005c494: 81 c7 e0 08 ret
<== NOT EXECUTED
4005c498: 81 e8 00 00 restore
<== NOT EXECUTED
return NULL;
4005c49c: 81 c7 e0 08 ret
<== NOT EXECUTED
4005c4a0: 91 e8 20 00 restore %g0, 0, %o0
<== NOT EXECUTED
40042130 <getgrgid>:
struct group *getgrgid(
gid_t gid
)
{
40042130: 9d e3 bf 98 save %sp, -104, %sp
<== NOT EXECUTED
struct group *p;
if(getgrgid_r(gid, &grent, grbuf, sizeof grbuf, &p))
40042134: 96 10 20 c8 mov 0xc8, %o3
<== NOT EXECUTED
40042138: 98 07 bf fc add %fp, -4, %o4
<== NOT EXECUTED
4004213c: 15 10 02 40 sethi %hi(0x40090000), %o2
<== NOT EXECUTED
40042140: 13 10 02 40 sethi %hi(0x40090000), %o1
<== NOT EXECUTED
40042144: 94 12 a2 80 or %o2, 0x280, %o2
<== NOT EXECUTED
40042148: 92 12 62 70 or %o1, 0x270, %o1
<== NOT EXECUTED
4004214c: 40 00 02 cf call 40042c88 <getgrgid_r>
<== NOT EXECUTED
40042150: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
40042154: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
40042158: 12 80 00 05 bne 4004216c <getgrgid+0x3c>
<== NOT EXECUTED
4004215c: 01 00 00 00 nop
<== NOT EXECUTED
return NULL;
return p;
40042160: f0 07 bf fc ld [ %fp + -4 ], %i0
<== NOT EXECUTED
40042164: 81 c7 e0 08 ret
<== NOT EXECUTED
40042168: 81 e8 00 00 restore
<== NOT EXECUTED
}
4004216c: 81 c7 e0 08 ret
<== NOT EXECUTED
40042170: 91 e8 20 00 restore %g0, 0, %o0
<== NOT EXECUTED
40042c88 <getgrgid_r>:
char *buffer,
size_t bufsize,
struct group **result
)
{
return getgr_r(NULL, gid, grp, buffer, bufsize, result);
40042c88: 9a 10 00 0c mov %o4, %o5
<== NOT EXECUTED
40042c8c: 98 10 00 0b mov %o3, %o4
<== NOT EXECUTED
40042c90: 96 10 00 0a mov %o2, %o3
<== NOT EXECUTED
40042c94: 94 10 00 09 mov %o1, %o2
<== NOT EXECUTED
40042c98: 92 10 00 08 mov %o0, %o1
<== NOT EXECUTED
40042c9c: 90 10 20 00 clr %o0
<== NOT EXECUTED
40042ca0: 82 13 c0 00 mov %o7, %g1
<== NOT EXECUTED
40042ca4: 7f ff ff b6 call 40042b7c <getgr_r>
<== NOT EXECUTED
40042ca8: 9e 10 40 00 mov %g1, %o7
<== NOT EXECUTED
400420ec <getgrnam>:
static struct group grent;
struct group *getgrnam(
const char *name
)
{
400420ec: 9d e3 bf 98 save %sp, -104, %sp
<== NOT EXECUTED
struct group *p;
if(getgrnam_r(name, &grent, grbuf, sizeof grbuf, &p))
400420f0: 96 10 20 c8 mov 0xc8, %o3
<== NOT EXECUTED
400420f4: 98 07 bf fc add %fp, -4, %o4
<== NOT EXECUTED
400420f8: 15 10 02 40 sethi %hi(0x40090000), %o2
<== NOT EXECUTED
400420fc: 13 10 02 40 sethi %hi(0x40090000), %o1
<== NOT EXECUTED
40042100: 94 12 a2 80 or %o2, 0x280, %o2
<== NOT EXECUTED
40042104: 92 12 62 70 or %o1, 0x270, %o1
<== NOT EXECUTED
40042108: 40 00 02 d8 call 40042c68 <getgrnam_r>
<== NOT EXECUTED
4004210c: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
40042110: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
40042114: 12 80 00 05 bne 40042128 <getgrnam+0x3c>
<== NOT EXECUTED
40042118: 01 00 00 00 nop
<== NOT EXECUTED
return NULL;
return p;
4004211c: f0 07 bf fc ld [ %fp + -4 ], %i0
<== NOT EXECUTED
40042120: 81 c7 e0 08 ret
<== NOT EXECUTED
40042124: 81 e8 00 00 restore
<== NOT EXECUTED
}
40042128: 81 c7 e0 08 ret
<== NOT EXECUTED
4004212c: 91 e8 20 00 restore %g0, 0, %o0
<== NOT EXECUTED
40042c68 <getgrnam_r>:
char *buffer,
size_t bufsize,
struct group **result
)
{
return getgr_r(name, 0, grp, buffer, bufsize, result);
40042c68: 9a 10 00 0c mov %o4, %o5
<== NOT EXECUTED
40042c6c: 98 10 00 0b mov %o3, %o4
<== NOT EXECUTED
40042c70: 96 10 00 0a mov %o2, %o3
<== NOT EXECUTED
40042c74: 94 10 00 09 mov %o1, %o2
<== NOT EXECUTED
40042c78: 92 10 20 00 clr %o1
<== NOT EXECUTED
40042c7c: 82 13 c0 00 mov %o7, %g1
<== NOT EXECUTED
40042c80: 7f ff ff bf call 40042b7c <getgr_r>
<== NOT EXECUTED
40042c84: 9e 10 40 00 mov %g1, %o7
<== NOT EXECUTED
4005873c <getgroups>:
*/
int getgroups(
int gidsetsize,
gid_t grouplist[]
)
{
4005873c: 9d e3 be 80 save %sp, -384, %sp
<== NOT EXECUTED
char buf[256];
gid_t gid;
const char *user;
struct group *grp;
rv = getpwuid_r(getuid(), &pwd, &buf[0], sizeof(buf), &pwd_res);
40058740: 7f ff a6 9e call 400421b8 <getuid>
<== NOT EXECUTED
40058744: 01 00 00 00 nop
<== NOT EXECUTED
40058748: 98 07 be e0 add %fp, -288, %o4
<== NOT EXECUTED
4005874c: 91 2a 20 10 sll %o0, 0x10, %o0
<== NOT EXECUTED
40058750: 96 10 21 00 mov 0x100, %o3
<== NOT EXECUTED
40058754: 94 07 bf 00 add %fp, -256, %o2
<== NOT EXECUTED
40058758: 92 07 be e4 add %fp, -284, %o1
<== NOT EXECUTED
4005875c: 7f ff a8 9e call 400429d4 <getpwuid_r>
<== NOT EXECUTED
40058760: 91 32 20 10 srl %o0, 0x10, %o0
<== NOT EXECUTED
if (rv != 0) {
40058764: b6 92 20 00 orcc %o0, 0, %i3
<== NOT EXECUTED
40058768: 02 80 00 04 be 40058778 <getgroups+0x3c>
<== NOT EXECUTED
4005876c: e0 17 be ee lduh [ %fp + -274 ], %l0
<== NOT EXECUTED
if (gidsetsize == 0 || rv <= gidsetsize) {
return rv;
} else {
rtems_set_errno_and_return_minus_one(EINVAL);
}
}
40058770: 81 c7 e0 08 ret
<== NOT EXECUTED
40058774: 91 e8 00 1b restore %g0, %i3, %o0
<== NOT EXECUTED
setgrent();
40058778: 40 00 0f 4b call 4005c4a4 <setgrent>
<== NOT EXECUTED
4005877c: f8 07 be e4 ld [ %fp + -284 ], %i4
<== NOT EXECUTED
while ((grp = getgrent()) != NULL) {
40058780: 40 00 0f 33 call 4005c44c <getgrent>
<== NOT EXECUTED
40058784: 01 00 00 00 nop
<== NOT EXECUTED
40058788: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
4005878c: 02 80 00 19 be 400587f0 <getgroups+0xb4>
<== NOT EXECUTED
40058790: 01 00 00 00 nop
<== NOT EXECUTED
if (grp->gr_gid == gid) {
40058794: f4 12 20 08 lduh [ %o0 + 8 ], %i2
<== NOT EXECUTED
40058798: 80 a4 00 1a cmp %l0, %i2
<== NOT EXECUTED
4005879c: 02 bf ff f9 be 40058780 <getgroups+0x44>
<== NOT EXECUTED
400587a0: 01 00 00 00 nop
<== NOT EXECUTED
char **mem = &grp->gr_mem[0];
400587a4: fa 02 20 0c ld [ %o0 + 0xc ], %i5
<== NOT EXECUTED
while (*mem != NULL) {
400587a8: d0 07 40 00 ld [ %i5 ], %o0
<== NOT EXECUTED
400587ac: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
400587b0: 02 bf ff f4 be 40058780 <getgroups+0x44>
<== NOT EXECUTED
400587b4: 92 10 00 1c mov %i4, %o1
<== NOT EXECUTED
if (strcmp(*mem, user) == 0) {
400587b8: 40 00 2d 57 call 40063d14 <strcmp>
<== NOT EXECUTED
400587bc: ba 07 60 04 add %i5, 4, %i5
<== NOT EXECUTED
400587c0: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
400587c4: 32 bf ff fa bne,a 400587ac <getgroups+0x70>
<== NOT EXECUTED
400587c8: d0 07 40 00 ld [ %i5 ], %o0
<== NOT EXECUTED
if (rv < gidsetsize) {
400587cc: 80 a6 c0 18 cmp %i3, %i0
<== NOT EXECUTED
400587d0: 16 80 00 03 bge 400587dc <getgroups+0xa0>
<== NOT EXECUTED
400587d4: 83 2e e0 01 sll %i3, 1, %g1
<== NOT EXECUTED
grouplist[rv] = grp->gr_gid;
400587d8: f4 36 40 01 sth %i2, [ %i1 + %g1 ]
<== NOT EXECUTED
while ((grp = getgrent()) != NULL) {
400587dc: 40 00 0f 1c call 4005c44c <getgrent>
<== NOT EXECUTED
400587e0: b6 06 e0 01 inc %i3
<== NOT EXECUTED
400587e4: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
400587e8: 32 bf ff ec bne,a 40058798 <getgroups+0x5c>
<== NOT EXECUTED
400587ec: f4 12 20 08 lduh [ %o0 + 8 ], %i2
<== NOT EXECUTED
endgrent();
400587f0: 40 00 0f 51 call 4005c534 <endgrent>
<== NOT EXECUTED
400587f4: 01 00 00 00 nop
<== NOT EXECUTED
if (gidsetsize == 0 || rv <= gidsetsize) {
400587f8: 80 a6 20 00 cmp %i0, 0
<== NOT EXECUTED
400587fc: 02 bf ff dd be 40058770 <getgroups+0x34>
<== NOT EXECUTED
40058800: 80 a6 c0 18 cmp %i3, %i0
<== NOT EXECUTED
40058804: 04 80 00 03 ble 40058810 <getgroups+0xd4>
<== NOT EXECUTED
40058808: 82 10 20 01 mov 1, %g1
<== NOT EXECUTED
4005880c: 82 10 20 00 clr %g1
<== NOT EXECUTED
40058810: 80 88 60 ff btst 0xff, %g1
<== NOT EXECUTED
40058814: 12 bf ff d7 bne 40058770 <getgroups+0x34>
<== NOT EXECUTED
40058818: 01 00 00 00 nop
<== NOT EXECUTED
rtems_set_errno_and_return_minus_one(EINVAL);
4005881c: 40 00 10 3e call 4005c914 <__errno>
<== NOT EXECUTED
40058820: b6 10 3f ff mov -1, %i3 ! ffffffff <RAM_END+0xbfbfffff>
<== NOT EXECUTED
40058824: 82 10 20 16 mov 0x16, %g1
<== NOT EXECUTED
40058828: 10 bf ff d2 b 40058770 <getgroups+0x34>
<== NOT EXECUTED
4005882c: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
4002c0a8 <getpid>:
* 4.1.1 Get Process and Parent Process IDs, P1003.1b-1993, p. 83
*/
pid_t getpid( void )
{
return _Objects_Local_node;
}
4002c0a8: 81 c3 e0 08 retl
<== NOT EXECUTED
4002c0ac: 90 10 20 01 mov 1, %o0
<== NOT EXECUTED
400429b4 <getpwnam_r>:
char *buffer,
size_t bufsize,
struct passwd **result
)
{
return getpw_r(name, 0, pwd, buffer, bufsize, result);
400429b4: 9a 10 00 0c mov %o4, %o5
<== NOT EXECUTED
400429b8: 98 10 00 0b mov %o3, %o4
<== NOT EXECUTED
400429bc: 96 10 00 0a mov %o2, %o3
<== NOT EXECUTED
400429c0: 94 10 00 09 mov %o1, %o2
<== NOT EXECUTED
400429c4: 92 10 20 00 clr %o1
<== NOT EXECUTED
400429c8: 82 13 c0 00 mov %o7, %g1
<== NOT EXECUTED
400429cc: 7f ff ff bf call 400428c8 <getpw_r>
<== NOT EXECUTED
400429d0: 9e 10 40 00 mov %g1, %o7
<== NOT EXECUTED
40042174 <getpwuid>:
}
struct passwd *getpwuid(
uid_t uid
)
{
40042174: 9d e3 bf 98 save %sp, -104, %sp
<== NOT EXECUTED
struct passwd *p;
if(getpwuid_r(uid, &pwent, pwbuf, sizeof pwbuf, &p))
40042178: 96 10 20 c8 mov 0xc8, %o3
<== NOT EXECUTED
4004217c: 98 07 bf fc add %fp, -4, %o4
<== NOT EXECUTED
40042180: 15 10 02 40 sethi %hi(0x40090000), %o2
<== NOT EXECUTED
40042184: 13 10 02 40 sethi %hi(0x40090000), %o1
<== NOT EXECUTED
40042188: 94 12 a3 68 or %o2, 0x368, %o2
<== NOT EXECUTED
4004218c: 92 12 63 48 or %o1, 0x348, %o1
<== NOT EXECUTED
40042190: 40 00 02 11 call 400429d4 <getpwuid_r>
<== NOT EXECUTED
40042194: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
40042198: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
4004219c: 12 80 00 05 bne 400421b0 <getpwuid+0x3c>
<== NOT EXECUTED
400421a0: 01 00 00 00 nop
<== NOT EXECUTED
return NULL;
return p;
400421a4: f0 07 bf fc ld [ %fp + -4 ], %i0
<== NOT EXECUTED
400421a8: 81 c7 e0 08 ret
<== NOT EXECUTED
400421ac: 81 e8 00 00 restore
<== NOT EXECUTED
}
400421b0: 81 c7 e0 08 ret
<== NOT EXECUTED
400421b4: 91 e8 20 00 restore %g0, 0, %o0
<== NOT EXECUTED
400429d4 <getpwuid_r>:
char *buffer,
size_t bufsize,
struct passwd **result
)
{
return getpw_r(NULL, uid, pwd, buffer, bufsize, result);
400429d4: 9a 10 00 0c mov %o4, %o5
<== NOT EXECUTED
400429d8: 98 10 00 0b mov %o3, %o4
<== NOT EXECUTED
400429dc: 96 10 00 0a mov %o2, %o3
<== NOT EXECUTED
400429e0: 94 10 00 09 mov %o1, %o2
<== NOT EXECUTED
400429e4: 92 10 00 08 mov %o0, %o1
<== NOT EXECUTED
400429e8: 90 10 20 00 clr %o0
<== NOT EXECUTED
400429ec: 82 13 c0 00 mov %o7, %g1
<== NOT EXECUTED
400429f0: 7f ff ff b6 call 400428c8 <getpw_r>
<== NOT EXECUTED
400429f4: 9e 10 40 00 mov %g1, %o7
<== NOT EXECUTED
40004730 <gettimeofday>:
*/
int gettimeofday(
struct timeval *__restrict tp,
void *__restrict __tz RTEMS_UNUSED
)
{
40004730: 9d e3 bf a0 save %sp, -96, %sp
/* struct timezone* tzp = (struct timezone*) __tz; */
if ( !tp )
40004734: 80 a6 20 00 cmp %i0, 0
40004738: 02 80 00 06 be 40004750 <gettimeofday+0x20>
<== NEVER TAKEN
4000473c: 90 10 00 18 mov %i0, %o0
RTEMS_INLINE_ROUTINE void _TOD_Get_timeval(
struct timeval *time
)
{
_Timecounter_Microtime( time );
40004740: 40 00 0f 39 call 40008424 <_Timecounter_Microtime>
40004744: 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;
}
40004748: 81 c7 e0 08 ret
4000474c: 81 e8 00 00 restore
rtems_set_errno_and_return_minus_one( EFAULT );
40004750: 40 00 28 02 call 4000e758 <__errno>
<== NOT EXECUTED
40004754: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
40004758: 82 10 20 0e mov 0xe, %g1
<== NOT EXECUTED
4000475c: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
40004760: 81 c7 e0 08 ret
<== NOT EXECUTED
40004764: 81 e8 00 00 restore
<== NOT EXECUTED
400421b8 <getuid>:
/**
* 4.2.1 Get Real User, Effective User, Ral Group, and Effective Group IDs,
* P1003.1b-1993, p. 84
*/
uid_t getuid( void )
{
400421b8: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
return _POSIX_types_Uid;
400421bc: 7f ff 29 24 call 4000c64c <rtems_current_user_env_get>
<== NOT EXECUTED
400421c0: 01 00 00 00 nop
<== NOT EXECUTED
}
400421c4: f0 12 20 0c lduh [ %o0 + 0xc ], %i0
<== NOT EXECUTED
400421c8: 81 c7 e0 08 ret
<== NOT EXECUTED
400421cc: 81 e8 00 00 restore
<== NOT EXECUTED
4001bb14 <ioctl>:
int ioctl(
int fd,
ioctl_command_t command,
...
)
{
4001bb14: 9d e3 bf 98 save %sp, -104, %sp
rtems_libio_t *iop;
void *buffer;
LIBIO_GET_IOP( fd, iop );
va_start(ap, command);
4001bb18: f4 27 a0 4c st %i2, [ %fp + 0x4c ]
LIBIO_GET_IOP( fd, iop );
4001bb1c: 03 10 00 b5 sethi %hi(0x4002d400), %g1
va_start(ap, command);
4001bb20: f6 27 a0 50 st %i3, [ %fp + 0x50 ]
4001bb24: f8 27 a0 54 st %i4, [ %fp + 0x54 ]
LIBIO_GET_IOP( fd, iop );
4001bb28: c2 00 60 e0 ld [ %g1 + 0xe0 ], %g1
4001bb2c: 80 a6 00 01 cmp %i0, %g1
4001bb30: 1a 80 00 27 bcc 4001bbcc <ioctl+0xb8>
<== NEVER TAKEN
4001bb34: fa 27 a0 58 st %i5, [ %fp + 0x58 ]
<== NOT EXECUTED
4001bb38: bb 2e 20 01 sll %i0, 1, %i5
<== NOT EXECUTED
4001bb3c: ba 07 40 18 add %i5, %i0, %i5
<== NOT EXECUTED
4001bb40: 31 10 00 d2 sethi %hi(0x40034800), %i0
<== NOT EXECUTED
4001bb44: bb 2f 60 04 sll %i5, 4, %i5
<== NOT EXECUTED
4001bb48: b0 16 23 f0 or %i0, 0x3f0, %i0
<== NOT EXECUTED
4001bb4c: ba 07 40 18 add %i5, %i0, %i5
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4001bb50: 91 d0 20 09 ta 9
<== NOT EXECUTED
val = *obj;
4001bb54: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
*obj = val + arg;
4001bb58: 86 20 b0 00 sub %g2, -4096, %g3
<== NOT EXECUTED
4001bb5c: c6 27 60 08 st %g3, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4001bb60: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4001bb64: 01 00 00 00 nop
4001bb68: 80 88 a1 00 btst 0x100, %g2
4001bb6c: 02 80 00 12 be 4001bbb4 <ioctl+0xa0>
<== NEVER TAKEN
4001bb70: 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 );
4001bb74: c2 07 60 1c ld [ %i5 + 0x1c ], %g1
4001bb78: c2 00 60 10 ld [ %g1 + 0x10 ], %g1
4001bb7c: d4 07 a0 4c ld [ %fp + 0x4c ], %o2
4001bb80: 92 10 00 19 mov %i1, %o1
va_start(ap, command);
4001bb84: c4 27 bf fc st %g2, [ %fp + -4 ]
rc = (*iop->pathinfo.handlers->ioctl_h)( iop, command, buffer );
4001bb88: 9f c0 40 00 call %g1
4001bb8c: 90 10 00 1d mov %i5, %o0
4001bb90: b0 10 00 08 mov %o0, %i0
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4001bb94: 91 d0 20 09 ta 9
<== NOT EXECUTED
*obj = val - arg;
4001bb98: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
4001bb9c: 84 00 b0 00 add %g2, -4096, %g2
<== NOT EXECUTED
4001bba0: c4 27 60 08 st %g2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4001bba4: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4001bba8: 01 00 00 00 nop
va_end( ap );
rtems_libio_iop_drop( iop );
return rc;
}
4001bbac: 81 c7 e0 08 ret
4001bbb0: 81 e8 00 00 restore
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4001bbb4: 91 d0 20 09 ta 9
<== NOT EXECUTED
4001bbb8: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
4001bbbc: 84 00 b0 00 add %g2, -4096, %g2
<== NOT EXECUTED
4001bbc0: c4 27 60 08 st %g2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4001bbc4: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4001bbc8: 01 00 00 00 nop
<== NOT EXECUTED
LIBIO_GET_IOP( fd, iop );
4001bbcc: 40 00 00 4d call 4001bd00 <__errno>
<== NOT EXECUTED
4001bbd0: b0 10 3f ff mov -1, %i0 ! ffffffff <RAM_END+0xbfbfffff>
<== NOT EXECUTED
4001bbd4: 82 10 20 09 mov 9, %g1
<== NOT EXECUTED
4001bbd8: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
4001bbdc: 81 c7 e0 08 ret
<== NOT EXECUTED
4001bbe0: 81 e8 00 00 restore
<== NOT EXECUTED
4001ad6c <issetugid>:
* Dummy version of BSD routine
*/
int issetugid (void)
{
return 0;
}
4001ad6c: 81 c3 e0 08 retl
<== NOT EXECUTED
4001ad70: 90 10 20 00 clr %o0
<== NOT EXECUTED
400421f0 <link>:
/**
* link() - POSIX 1003.1b - 5.3.4 - Create a new link
*/
int link( const char *path1, const char *path2 )
{
400421f0: 9d e3 bf 30 save %sp, -208, %sp
<== NOT EXECUTED
rtems_filesystem_eval_path_context_t ctx_2;
int eval_flags_1 = RTEMS_FS_FOLLOW_LINK;
int eval_flags_2 = RTEMS_FS_FOLLOW_LINK
| RTEMS_FS_MAKE
| RTEMS_FS_EXCLUSIVE;
const rtems_filesystem_location_info_t *currentloc_1 =
400421f4: 94 10 20 18 mov 0x18, %o2
<== NOT EXECUTED
400421f8: 92 10 00 18 mov %i0, %o1
<== NOT EXECUTED
400421fc: 7f ff 2c 11 call 4000d240 <rtems_filesystem_eval_path_start>
<== NOT EXECUTED
40042200: 90 07 bf 90 add %fp, -112, %o0
<== NOT EXECUTED
rtems_filesystem_eval_path_start( &ctx_1, path1, eval_flags_1 );
const rtems_filesystem_location_info_t *currentloc_2 =
40042204: 94 10 20 78 mov 0x78, %o2
<== NOT EXECUTED
const rtems_filesystem_location_info_t *currentloc_1 =
40042208: b8 10 00 08 mov %o0, %i4
<== NOT EXECUTED
const rtems_filesystem_location_info_t *currentloc_2 =
4004220c: 92 10 00 19 mov %i1, %o1
<== NOT EXECUTED
40042210: 7f ff 2c 0c call 4000d240 <rtems_filesystem_eval_path_start>
<== NOT EXECUTED
40042214: 90 07 bf c8 add %fp, -56, %o0
<== NOT EXECUTED
rtems_filesystem_eval_path_start( &ctx_2, path2, eval_flags_2 );
rv = rtems_filesystem_location_exists_in_same_instance_as(
40042218: 92 10 00 08 mov %o0, %o1
<== NOT EXECUTED
const rtems_filesystem_location_info_t *currentloc_2 =
4004221c: ba 10 00 08 mov %o0, %i5
<== NOT EXECUTED
rv = rtems_filesystem_location_exists_in_same_instance_as(
40042220: 40 00 04 b9 call 40043504 <rtems_filesystem_location_exists_in_same_instance_as>
<== NOT EXECUTED
40042224: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
currentloc_1,
currentloc_2
);
if ( rv == 0 ) {
40042228: b0 92 20 00 orcc %o0, 0, %i0
<== NOT EXECUTED
4004222c: 12 80 00 09 bne 40042250 <link+0x60>
<== NOT EXECUTED
40042230: d4 1f bf d0 ldd [ %fp + -48 ], %o2
<== NOT EXECUTED
rv = (*currentloc_2->mt_entry->ops->link_h)(
40042234: c2 07 60 14 ld [ %i5 + 0x14 ], %g1
<== NOT EXECUTED
40042238: c2 00 60 0c ld [ %g1 + 0xc ], %g1
<== NOT EXECUTED
4004223c: c2 00 60 0c ld [ %g1 + 0xc ], %g1
<== NOT EXECUTED
40042240: 92 10 00 1c mov %i4, %o1
<== NOT EXECUTED
40042244: 9f c0 40 00 call %g1
<== NOT EXECUTED
40042248: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
4004224c: b0 10 00 08 mov %o0, %i0
<== NOT EXECUTED
rtems_filesystem_eval_path_get_token( &ctx_2 ),
rtems_filesystem_eval_path_get_tokenlen( &ctx_2 )
);
}
rtems_filesystem_eval_path_cleanup( &ctx_1 );
40042250: 7f ff 2c 46 call 4000d368 <rtems_filesystem_eval_path_cleanup>
<== NOT EXECUTED
40042254: 90 07 bf 90 add %fp, -112, %o0
<== NOT EXECUTED
rtems_filesystem_eval_path_cleanup( &ctx_2 );
40042258: 7f ff 2c 44 call 4000d368 <rtems_filesystem_eval_path_cleanup>
<== NOT EXECUTED
4004225c: 90 07 bf c8 add %fp, -56, %o0
<== NOT EXECUTED
return rv;
}
40042260: 81 c7 e0 08 ret
<== NOT EXECUTED
40042264: 81 e8 00 00 restore
<== NOT EXECUTED
4002c0c8 <lseek>:
#include <unistd.h>
#include <rtems/libio_.h>
off_t lseek( int fd, off_t offset, int whence )
{
4002c0c8: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
rtems_libio_t *iop;
off_t rv;
LIBIO_GET_IOP( fd, iop );
4002c0cc: 03 10 00 b5 sethi %hi(0x4002d400), %g1
<== NOT EXECUTED
4002c0d0: c2 00 60 e0 ld [ %g1 + 0xe0 ], %g1 ! 4002d4e0 <rtems_libio_number_iops>
<== NOT EXECUTED
4002c0d4: 80 a6 00 01 cmp %i0, %g1
<== NOT EXECUTED
4002c0d8: 1a 80 00 26 bcc 4002c170 <lseek+0xa8>
<== NOT EXECUTED
4002c0dc: bb 2e 20 01 sll %i0, 1, %i5
<== NOT EXECUTED
4002c0e0: ba 07 40 18 add %i5, %i0, %i5
<== NOT EXECUTED
4002c0e4: 31 10 00 d2 sethi %hi(0x40034800), %i0
<== NOT EXECUTED
4002c0e8: bb 2f 60 04 sll %i5, 4, %i5
<== NOT EXECUTED
4002c0ec: b0 16 23 f0 or %i0, 0x3f0, %i0
<== NOT EXECUTED
4002c0f0: ba 07 40 18 add %i5, %i0, %i5
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4002c0f4: 91 d0 20 09 ta 9
<== NOT EXECUTED
val = *obj;
4002c0f8: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
*obj = val + arg;
4002c0fc: 86 20 b0 00 sub %g2, -4096, %g3
<== NOT EXECUTED
4002c100: c6 27 60 08 st %g3, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4002c104: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4002c108: 01 00 00 00 nop
<== NOT EXECUTED
4002c10c: 80 88 a1 00 btst 0x100, %g2
<== NOT EXECUTED
4002c110: 02 80 00 12 be 4002c158 <lseek+0x90>
<== NOT EXECUTED
4002c114: 96 10 00 1b mov %i3, %o3
<== NOT EXECUTED
rv = (*iop->pathinfo.handlers->lseek_h)( iop, offset, whence );
4002c118: c2 07 60 1c ld [ %i5 + 0x1c ], %g1
<== NOT EXECUTED
4002c11c: c2 00 60 14 ld [ %g1 + 0x14 ], %g1
<== NOT EXECUTED
4002c120: 92 10 00 19 mov %i1, %o1
<== NOT EXECUTED
4002c124: 94 10 00 1a mov %i2, %o2
<== NOT EXECUTED
4002c128: 9f c0 40 00 call %g1
<== NOT EXECUTED
4002c12c: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
4002c130: b0 10 00 08 mov %o0, %i0
<== NOT EXECUTED
4002c134: b2 10 00 09 mov %o1, %i1
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4002c138: 91 d0 20 09 ta 9
<== NOT EXECUTED
*obj = val - arg;
4002c13c: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
4002c140: 84 00 b0 00 add %g2, -4096, %g2
<== NOT EXECUTED
4002c144: c4 27 60 08 st %g2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4002c148: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4002c14c: 01 00 00 00 nop
<== NOT EXECUTED
rtems_libio_iop_drop( iop );
return rv;
}
4002c150: 81 c7 e0 08 ret
<== NOT EXECUTED
4002c154: 81 e8 00 00 restore
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4002c158: 91 d0 20 09 ta 9
<== NOT EXECUTED
4002c15c: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
4002c160: 84 00 b0 00 add %g2, -4096, %g2
<== NOT EXECUTED
4002c164: c4 27 60 08 st %g2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4002c168: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4002c16c: 01 00 00 00 nop
<== NOT EXECUTED
LIBIO_GET_IOP( fd, iop );
4002c170: 7f ff be e4 call 4001bd00 <__errno>
<== NOT EXECUTED
4002c174: b0 10 3f ff mov -1, %i0 ! ffffffff <RAM_END+0xbfbfffff>
<== NOT EXECUTED
4002c178: 82 10 20 09 mov 9, %g1
<== NOT EXECUTED
4002c17c: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
4002c180: 81 c7 e0 08 ret
<== NOT EXECUTED
4002c184: 93 e8 3f ff restore %g0, -1, %o1
<== NOT EXECUTED
40042348 <lstat>:
{
40042348: 9d e3 bf 68 save %sp, -152, %sp
<== NOT EXECUTED
const rtems_filesystem_location_info_t *currentloc =
4004234c: 94 10 20 08 mov 8, %o2
<== NOT EXECUTED
40042350: 92 10 00 18 mov %i0, %o1
<== NOT EXECUTED
40042354: 7f ff 2b bb call 4000d240 <rtems_filesystem_eval_path_start>
<== NOT EXECUTED
40042358: 90 07 bf c8 add %fp, -56, %o0
<== NOT EXECUTED
memset( buf, 0, sizeof( *buf ) );
4004235c: 94 10 20 60 mov 0x60, %o2
<== NOT EXECUTED
const rtems_filesystem_location_info_t *currentloc =
40042360: ba 10 00 08 mov %o0, %i5
<== NOT EXECUTED
memset( buf, 0, sizeof( *buf ) );
40042364: 92 10 20 00 clr %o1
<== NOT EXECUTED
40042368: 40 00 7b a4 call 400611f8 <memset>
<== NOT EXECUTED
4004236c: 90 10 00 19 mov %i1, %o0
<== NOT EXECUTED
rv = (*currentloc->handlers->fstat_h)( currentloc, buf );
40042370: c2 07 60 10 ld [ %i5 + 0x10 ], %g1
<== NOT EXECUTED
40042374: c2 00 60 18 ld [ %g1 + 0x18 ], %g1
<== NOT EXECUTED
40042378: 92 10 00 19 mov %i1, %o1
<== NOT EXECUTED
4004237c: 9f c0 40 00 call %g1
<== NOT EXECUTED
40042380: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
40042384: b0 10 00 08 mov %o0, %i0
<== NOT EXECUTED
rtems_filesystem_eval_path_cleanup( &ctx );
40042388: 7f ff 2b f8 call 4000d368 <rtems_filesystem_eval_path_cleanup>
<== NOT EXECUTED
4004238c: 90 07 bf c8 add %fp, -56, %o0
<== NOT EXECUTED
}
40042390: 81 c7 e0 08 ret
<== NOT EXECUTED
40042394: 81 e8 00 00 restore
<== NOT EXECUTED
40004ab4 <malloc>:
#include "malloc_p.h"
void *malloc(
size_t size
)
{
40004ab4: 9d e3 bf a0 save %sp, -96, %sp
void *return_this;
/*
* Validate the parameters
*/
if ( !size )
40004ab8: 80 a6 20 00 cmp %i0, 0
40004abc: 02 80 00 0a be 40004ae4 <malloc+0x30>
<== NEVER TAKEN
40004ac0: 90 10 00 18 mov %i0, %o0
return (void *) 0;
return_this = rtems_heap_allocate_aligned_with_boundary( size, 0, 0 );
40004ac4: 94 10 20 00 clr %o2
40004ac8: 7f ff ff 92 call 40004910 <rtems_heap_allocate_aligned_with_boundary>
40004acc: 92 10 20 00 clr %o1
if ( !return_this ) {
40004ad0: b0 92 20 00 orcc %o0, 0, %i0
40004ad4: 02 80 00 06 be 40004aec <malloc+0x38>
<== NEVER TAKEN
40004ad8: 01 00 00 00 nop
errno = ENOMEM;
return (void *) 0;
}
return return_this;
}
40004adc: 81 c7 e0 08 ret
40004ae0: 81 e8 00 00 restore
40004ae4: 81 c7 e0 08 ret
<== NOT EXECUTED
40004ae8: 91 e8 20 00 restore %g0, 0, %o0
<== NOT EXECUTED
errno = ENOMEM;
40004aec: 40 00 27 1b call 4000e758 <__errno>
<== NOT EXECUTED
40004af0: 01 00 00 00 nop
<== NOT EXECUTED
40004af4: 82 10 20 0c mov 0xc, %g1 ! c <_TLS_Alignment+0xb>
<== NOT EXECUTED
40004af8: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
return (void *) 0;
40004afc: 81 c7 e0 08 ret
<== NOT EXECUTED
40004b00: 81 e8 00 00 restore
<== NOT EXECUTED
4000bce4 <malloc_free_space>:
/*
* Find amount of free heap remaining
*/
size_t malloc_free_space( void )
{
4000bce4: 9d e3 bf 90 save %sp, -112, %sp
<== NOT EXECUTED
Heap_Information info;
_Protected_heap_Get_free_information( RTEMS_Malloc_Heap, &info );
4000bce8: 03 10 02 2e sethi %hi(0x4008b800), %g1
<== NOT EXECUTED
4000bcec: d0 00 61 e8 ld [ %g1 + 0x1e8 ], %o0 ! 4008b9e8 <RTEMS_Malloc_Heap>
<== NOT EXECUTED
4000bcf0: 40 00 42 b0 call 4001c7b0 <_Protected_heap_Get_free_information>
<== NOT EXECUTED
4000bcf4: 92 07 bf f4 add %fp, -12, %o1
<== NOT EXECUTED
return (size_t) info.largest;
}
4000bcf8: f0 07 bf f8 ld [ %fp + -8 ], %i0
<== NOT EXECUTED
4000bcfc: 81 c7 e0 08 ret
<== NOT EXECUTED
4000bd00: 81 e8 00 00 restore
<== NOT EXECUTED
40042398 <malloc_info>:
#include <rtems/score/protectedheap.h>
int malloc_info(
Heap_Information_block *the_info
)
{
40042398: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
if ( !the_info )
4004239c: 80 a6 20 00 cmp %i0, 0
<== NOT EXECUTED
400423a0: 02 80 00 08 be 400423c0 <malloc_info+0x28>
<== NOT EXECUTED
400423a4: 03 10 02 2e sethi %hi(0x4008b800), %g1
<== NOT EXECUTED
return -1;
_Protected_heap_Get_information( RTEMS_Malloc_Heap, the_info );
400423a8: d0 00 61 e8 ld [ %g1 + 0x1e8 ], %o0 ! 4008b9e8 <RTEMS_Malloc_Heap>
<== NOT EXECUTED
400423ac: 92 10 00 18 mov %i0, %o1
<== NOT EXECUTED
400423b0: 40 00 0a 87 call 40044dcc <_Protected_heap_Get_information>
<== NOT EXECUTED
400423b4: b0 10 20 00 clr %i0
<== NOT EXECUTED
return 0;
400423b8: 81 c7 e0 08 ret
<== NOT EXECUTED
400423bc: 81 e8 00 00 restore
<== NOT EXECUTED
}
400423c0: 81 c7 e0 08 ret
<== NOT EXECUTED
400423c4: 91 e8 3f ff restore %g0, -1, %o0
<== NOT EXECUTED
400423c8 <malloc_walk>:
#include <stdlib.h>
bool malloc_walk(int source, bool printf_enabled)
{
return _Protected_heap_Walk( RTEMS_Malloc_Heap, source, printf_enabled );
400423c8: 94 10 00 09 mov %o1, %o2
<== NOT EXECUTED
400423cc: 03 10 02 2e sethi %hi(0x4008b800), %g1
<== NOT EXECUTED
400423d0: 92 10 00 08 mov %o0, %o1
<== NOT EXECUTED
400423d4: d0 00 61 e8 ld [ %g1 + 0x1e8 ], %o0
<== NOT EXECUTED
400423d8: 82 13 c0 00 mov %o7, %g1
<== NOT EXECUTED
400423dc: 40 00 0a 90 call 40044e1c <_Protected_heap_Walk>
<== NOT EXECUTED
400423e0: 9e 10 40 00 mov %g1, %o7
<== NOT EXECUTED
400423e4 <mkfifo>:
int mkfifo(
const char *path,
mode_t mode
)
{
return mknod( path, mode | S_IFIFO, 0LL );
400423e4: 03 00 00 04 sethi %hi(0x1000), %g1
<== NOT EXECUTED
400423e8: 94 10 20 00 clr %o2
<== NOT EXECUTED
400423ec: 96 10 20 00 clr %o3
<== NOT EXECUTED
400423f0: 92 12 40 01 or %o1, %g1, %o1
<== NOT EXECUTED
400423f4: 82 13 c0 00 mov %o7, %g1
<== NOT EXECUTED
400423f8: 7f ff 26 ab call 4000bea4 <mknod>
<== NOT EXECUTED
400423fc: 9e 10 40 00 mov %g1, %o7
<== NOT EXECUTED
40004bcc <mknod>:
* This routine is not defined in the POSIX 1003.1b standard but is
* commonly supported on most UNIX and POSIX systems. It is the
* foundation for creating file system objects.
*/
int mknod( const char *path, mode_t mode, dev_t dev )
{
40004bcc: 9d e3 bf 68 save %sp, -152, %sp
int rv = 0;
rtems_filesystem_eval_path_context_t ctx;
int eval_flags = RTEMS_FS_FOLLOW_LINK
| RTEMS_FS_MAKE
| RTEMS_FS_EXCLUSIVE
| (S_ISDIR(mode) ? RTEMS_FS_ACCEPT_RESIDUAL_DELIMITERS : 0);
40004bd0: 03 00 00 3c sethi %hi(0xf000), %g1
40004bd4: 05 00 00 10 sethi %hi(0x4000), %g2
40004bd8: 82 0e 40 01 and %i1, %g1, %g1
40004bdc: 80 a0 40 02 cmp %g1, %g2
40004be0: 02 80 00 03 be 40004bec <mknod+0x20>
<== ALWAYS TAKEN
40004be4: 94 10 20 f8 mov 0xf8, %o2
40004be8: 94 10 20 78 mov 0x78, %o2
<== NOT EXECUTED
const rtems_filesystem_location_info_t *currentloc =
40004bec: 92 10 00 18 mov %i0, %o1
40004bf0: 40 00 03 5e call 40005968 <rtems_filesystem_eval_path_start>
40004bf4: 90 07 bf c8 add %fp, -56, %o0
rtems_filesystem_eval_path_start( &ctx, path, eval_flags );
rv = rtems_filesystem_mknod(
40004bf8: d4 07 bf d4 ld [ %fp + -44 ], %o2
40004bfc: d2 07 bf d0 ld [ %fp + -48 ], %o1
40004c00: 98 10 00 1a mov %i2, %o4
40004c04: 9a 10 00 1b mov %i3, %o5
40004c08: 7f ff ff c6 call 40004b20 <rtems_filesystem_mknod>
40004c0c: 96 10 00 19 mov %i1, %o3
40004c10: b0 10 00 08 mov %o0, %i0
rtems_filesystem_eval_path_get_tokenlen( &ctx ),
mode,
dev
);
rtems_filesystem_eval_path_cleanup( &ctx );
40004c14: 40 00 03 61 call 40005998 <rtems_filesystem_eval_path_cleanup>
40004c18: 90 07 bf c8 add %fp, -56, %o0
return rv;
}
40004c1c: 81 c7 e0 08 ret
40004c20: 81 e8 00 00 restore
40004c24 <mount>:
const char *target,
const char *filesystemtype,
rtems_filesystem_options_t options,
const void *data
)
{
40004c24: 9d e3 bf 50 save %sp, -176, %sp
int rv = 0;
if (
40004c28: 80 a6 e0 01 cmp %i3, 1
40004c2c: 18 80 00 b2 bgu 40004ef4 <mount+0x2d0>
<== NEVER TAKEN
40004c30: 01 00 00 00 nop
options == RTEMS_FILESYSTEM_READ_ONLY
|| options == RTEMS_FILESYSTEM_READ_WRITE
) {
rtems_filesystem_fsmount_me_t fsmount_me_h =
40004c34: 40 00 22 76 call 4000d60c <rtems_filesystem_get_mount_handler>
40004c38: 90 10 00 1a mov %i2, %o0
rtems_filesystem_get_mount_handler( filesystemtype );
if ( fsmount_me_h != NULL ) {
40004c3c: a2 92 20 00 orcc %o0, 0, %l1
40004c40: 02 80 00 ad be 40004ef4 <mount+0x2d0>
<== NEVER TAKEN
40004c44: 80 a6 60 00 cmp %i1, 0
const char *target = target_or_null != NULL ? target_or_null : "/";
40004c48: 02 80 00 78 be 40004e28 <mount+0x204>
<== ALWAYS TAKEN
40004c4c: 90 10 00 19 mov %i1, %o0
40004c50: 40 00 28 21 call 4000ecd4 <strlen>
<== NOT EXECUTED
40004c54: a6 10 00 19 mov %i1, %l3
<== NOT EXECUTED
40004c58: a4 02 20 01 add %o0, 1, %l2
<== NOT EXECUTED
size_t filesystemtype_size = strlen( filesystemtype ) + 1;
40004c5c: 40 00 28 1e call 4000ecd4 <strlen>
40004c60: 90 10 00 1a mov %i2, %o0
strlen( source_or_null ) + 1 : 0;
40004c64: 80 a6 20 00 cmp %i0, 0
size_t filesystemtype_size = strlen( filesystemtype ) + 1;
40004c68: a8 02 20 01 add %o0, 1, %l4
strlen( source_or_null ) + 1 : 0;
40004c6c: 02 80 00 61 be 40004df0 <mount+0x1cc>
<== ALWAYS TAKEN
40004c70: ba 02 20 65 add %o0, 0x65, %i5
40004c74: 40 00 28 18 call 4000ecd4 <strlen>
<== NOT EXECUTED
40004c78: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
size_t size = sizeof( rtems_filesystem_mount_table_entry_t )
40004c7c: 92 07 40 12 add %i5, %l2, %o1
<== NOT EXECUTED
strlen( source_or_null ) + 1 : 0;
40004c80: a0 02 20 01 add %o0, 1, %l0
<== NOT EXECUTED
rtems_filesystem_mount_table_entry_t *mt_entry = calloc( 1, size );
40004c84: 90 10 20 01 mov 1, %o0
<== NOT EXECUTED
40004c88: 7f ff fe 31 call 4000454c <calloc>
<== NOT EXECUTED
40004c8c: 92 02 40 10 add %o1, %l0, %o1
<== NOT EXECUTED
if ( mt_entry != NULL ) {
40004c90: ba 92 20 00 orcc %o0, 0, %i5
<== NOT EXECUTED
40004c94: 12 80 00 08 bne 40004cb4 <mount+0x90>
<== NOT EXECUTED
40004c98: 84 07 60 64 add %i5, 0x64, %g2
<== NOT EXECUTED
if ( rv != 0 ) {
free( mt_entry );
}
} else {
errno = ENOMEM;
40004c9c: 40 00 26 af call 4000e758 <__errno>
<== NOT EXECUTED
40004ca0: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
40004ca4: 82 10 20 0c mov 0xc, %g1
<== NOT EXECUTED
40004ca8: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
40004cac: 81 c7 e0 08 ret
<== NOT EXECUTED
40004cb0: 81 e8 00 00 restore
<== NOT EXECUTED
memcpy( str, filesystemtype, filesystemtype_size );
40004cb4: 92 10 00 1a mov %i2, %o1
<== NOT EXECUTED
40004cb8: 94 10 00 14 mov %l4, %o2
<== NOT EXECUTED
40004cbc: 40 00 26 e4 call 4000e84c <memcpy>
<== NOT EXECUTED
40004cc0: 90 10 00 02 mov %g2, %o0
<== NOT EXECUTED
mt_entry->type = str;
40004cc4: d0 27 60 34 st %o0, [ %i5 + 0x34 ]
<== NOT EXECUTED
str += filesystemtype_size;
40004cc8: 84 02 00 14 add %o0, %l4, %g2
<== NOT EXECUTED
memcpy( str, source_or_null, source_size );
40004ccc: 94 10 00 10 mov %l0, %o2
<== NOT EXECUTED
40004cd0: 92 10 00 18 mov %i0, %o1
<== NOT EXECUTED
40004cd4: 40 00 26 de call 4000e84c <memcpy>
<== NOT EXECUTED
40004cd8: 90 10 00 02 mov %g2, %o0
<== NOT EXECUTED
mt_entry->dev = str;
40004cdc: d0 27 60 38 st %o0, [ %i5 + 0x38 ]
<== NOT EXECUTED
rtems_filesystem_global_location_t *mt_fs_root =
40004ce0: b4 07 60 40 add %i5, 0x40, %i2
<== NOT EXECUTED
str += source_size;
40004ce4: a0 02 00 10 add %o0, %l0, %l0
<== NOT EXECUTED
memcpy( str, target, target_size );
40004ce8: 94 10 00 12 mov %l2, %o2
40004cec: 92 10 00 13 mov %l3, %o1
40004cf0: 40 00 26 d7 call 4000e84c <memcpy>
40004cf4: 90 10 00 10 mov %l0, %o0
mt_entry->mounted = true;
40004cf8: 82 10 20 01 mov 1, %g1
40004cfc: c2 2f 60 28 stb %g1, [ %i5 + 0x28 ]
mt_entry->pathconf_limits_and_options = &rtems_filesystem_default_pathconf;
40004d00: 03 10 00 40 sethi %hi(0x40010000), %g1
40004d04: 82 10 63 d0 or %g1, 0x3d0, %g1 ! 400103d0 <rtems_filesystem_default_pathconf>
mt_entry->target = str;
40004d08: e0 27 60 30 st %l0, [ %i5 + 0x30 ]
void *starting_address,
size_t number_nodes,
size_t node_size
)
{
_Chain_Initialize(
40004d0c: 96 10 20 24 mov 0x24, %o3
mt_entry->pathconf_limits_and_options = &rtems_filesystem_default_pathconf;
40004d10: c2 27 60 2c st %g1, [ %i5 + 0x2c ]
mt_fs_root->reference_count = 1;
40004d14: 82 10 20 01 mov 1, %g1
mt_entry->mt_fs_root = mt_fs_root;
40004d18: f4 27 60 24 st %i2, [ %i5 + 0x24 ]
40004d1c: 94 10 20 01 mov 1, %o2
mt_fs_root->reference_count = 1;
40004d20: c2 27 60 58 st %g1, [ %i5 + 0x58 ]
40004d24: 92 10 00 1a mov %i2, %o1
mt_fs_root->location.mt_entry = mt_entry;
40004d28: fa 27 60 54 st %i5, [ %i5 + 0x54 ]
40004d2c: 90 07 60 14 add %i5, 0x14, %o0
40004d30: 40 00 07 7f call 40006b2c <_Chain_Initialize>
40004d34: b6 0e e0 01 and %i3, 1, %i3
mt_entry->writeable = options == RTEMS_FILESYSTEM_READ_WRITE;
40004d38: f6 2f 60 29 stb %i3, [ %i5 + 0x29 ]
rv = (*fsmount_me_h)( mt_entry, data );
40004d3c: 92 10 00 1c mov %i4, %o1
40004d40: 9f c4 40 00 call %l1
40004d44: 90 10 00 1d mov %i5, %o0
if ( rv == 0 ) {
40004d48: b0 92 20 00 orcc %o0, 0, %i0
40004d4c: 12 80 00 25 bne 40004de0 <mount+0x1bc>
<== NEVER TAKEN
40004d50: 80 a6 60 00 cmp %i1, 0
if ( target != NULL ) {
40004d54: 02 80 00 48 be 40004e74 <mount+0x250>
<== ALWAYS TAKEN
40004d58: 94 10 20 1f mov 0x1f, %o2
rtems_filesystem_location_info_t *currentloc =
40004d5c: 92 10 00 19 mov %i1, %o1
<== NOT EXECUTED
40004d60: 40 00 03 02 call 40005968 <rtems_filesystem_eval_path_start>
<== NOT EXECUTED
40004d64: 90 07 bf c8 add %fp, -56, %o0
<== NOT EXECUTED
const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
40004d68: c2 02 20 14 ld [ %o0 + 0x14 ], %g1
<== NOT EXECUTED
return (*mt_entry->ops->are_nodes_equal_h)(
40004d6c: c4 00 60 0c ld [ %g1 + 0xc ], %g2
<== NOT EXECUTED
40004d70: c4 00 a0 10 ld [ %g2 + 0x10 ], %g2
<== NOT EXECUTED
40004d74: 9f c0 80 00 call %g2
<== NOT EXECUTED
40004d78: d2 00 60 24 ld [ %g1 + 0x24 ], %o1
<== NOT EXECUTED
if ( !rtems_filesystem_location_is_instance_root( currentloc ) ) {
40004d7c: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
40004d80: 12 80 00 63 bne 40004f0c <mount+0x2e8>
<== NOT EXECUTED
40004d84: 92 07 bf e0 add %fp, -32, %o1
<== NOT EXECUTED
rtems_filesystem_location_copy_and_detach(
40004d88: 40 00 04 4e call 40005ec0 <rtems_filesystem_location_copy_and_detach>
<== NOT EXECUTED
40004d8c: 90 07 bf b0 add %fp, -80, %o0
<== NOT EXECUTED
mt_point_node = rtems_filesystem_location_transform_to_global( &targetloc );
40004d90: 40 00 04 77 call 40005f6c <rtems_filesystem_location_transform_to_global>
<== NOT EXECUTED
40004d94: 90 07 bf b0 add %fp, -80, %o0
<== NOT EXECUTED
rv = (*mt_point_node->location.mt_entry->ops->mount_h)( mt_entry );
40004d98: c2 02 20 14 ld [ %o0 + 0x14 ], %g1
<== NOT EXECUTED
40004d9c: c2 00 60 0c ld [ %g1 + 0xc ], %g1
<== NOT EXECUTED
mt_entry->mt_point_node = mt_point_node;
40004da0: d0 27 60 20 st %o0, [ %i5 + 0x20 ]
<== NOT EXECUTED
mt_point_node = rtems_filesystem_location_transform_to_global( &targetloc );
40004da4: b8 10 00 08 mov %o0, %i4
<== NOT EXECUTED
rv = (*mt_point_node->location.mt_entry->ops->mount_h)( mt_entry );
40004da8: c2 00 60 2c ld [ %g1 + 0x2c ], %g1
<== NOT EXECUTED
40004dac: 9f c0 40 00 call %g1
<== NOT EXECUTED
40004db0: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
if ( rv == 0 ) {
40004db4: b0 92 20 00 orcc %o0, 0, %i0
<== NOT EXECUTED
40004db8: 02 80 00 20 be 40004e38 <mount+0x214>
<== NOT EXECUTED
40004dbc: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
rtems_filesystem_global_location_release( mt_point_node, true );
40004dc0: 40 00 03 fb call 40005dac <rtems_filesystem_global_location_release>
<== NOT EXECUTED
40004dc4: 92 10 20 01 mov 1, %o1
<== NOT EXECUTED
rtems_filesystem_eval_path_cleanup( &ctx );
40004dc8: 40 00 02 f4 call 40005998 <rtems_filesystem_eval_path_cleanup>
<== NOT EXECUTED
40004dcc: 90 07 bf c8 add %fp, -56, %o0
<== NOT EXECUTED
(*mt_entry->ops->fsunmount_me_h)( mt_entry );
40004dd0: c2 07 60 0c ld [ %i5 + 0xc ], %g1
<== NOT EXECUTED
40004dd4: c2 00 60 34 ld [ %g1 + 0x34 ], %g1
<== NOT EXECUTED
40004dd8: 9f c0 40 00 call %g1
<== NOT EXECUTED
40004ddc: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
free( mt_entry );
40004de0: 7f ff fe 26 call 40004678 <free>
<== NOT EXECUTED
40004de4: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
errno = EINVAL;
rv = -1;
}
return rv;
}
40004de8: 81 c7 e0 08 ret
<== NOT EXECUTED
40004dec: 81 e8 00 00 restore
<== NOT EXECUTED
rtems_filesystem_mount_table_entry_t *mt_entry = calloc( 1, size );
40004df0: 92 07 40 12 add %i5, %l2, %o1
40004df4: 7f ff fd d6 call 4000454c <calloc>
40004df8: 90 10 20 01 mov 1, %o0
if ( mt_entry != NULL ) {
40004dfc: ba 92 20 00 orcc %o0, 0, %i5
40004e00: 02 bf ff a7 be 40004c9c <mount+0x78>
<== NEVER TAKEN
40004e04: 84 07 60 64 add %i5, 0x64, %g2
memcpy( str, filesystemtype, filesystemtype_size );
40004e08: 92 10 00 1a mov %i2, %o1
40004e0c: 94 10 00 14 mov %l4, %o2
40004e10: 90 10 00 02 mov %g2, %o0
40004e14: 40 00 26 8e call 4000e84c <memcpy>
40004e18: b4 07 60 40 add %i5, 0x40, %i2
str += filesystemtype_size;
40004e1c: a0 02 00 14 add %o0, %l4, %l0
mt_entry->type = str;
40004e20: 10 bf ff b2 b 40004ce8 <mount+0xc4>
40004e24: d0 27 60 34 st %o0, [ %i5 + 0x34 ]
const char *target = target_or_null != NULL ? target_or_null : "/";
40004e28: 27 10 00 3f sethi %hi(0x4000fc00), %l3
40004e2c: a4 10 20 02 mov 2, %l2
40004e30: 10 bf ff 8b b 40004c5c <mount+0x38>
40004e34: a6 14 e3 60 or %l3, 0x360, %l3
rtems_libio_lock();
40004e38: 7f ff fe 84 call 40004848 <rtems_libio_lock>
<== NOT EXECUTED
40004e3c: 01 00 00 00 nop
<== NOT EXECUTED
old_last = tail->previous;
40004e40: 03 10 00 47 sethi %hi(0x40011c00), %g1
<== NOT EXECUTED
40004e44: 82 10 62 1c or %g1, 0x21c, %g1 ! 40011e1c <rtems_filesystem_mount_table>
<== NOT EXECUTED
40004e48: c4 00 60 08 ld [ %g1 + 8 ], %g2
<== NOT EXECUTED
the_node->next = tail;
40004e4c: 86 00 60 04 add %g1, 4, %g3
<== NOT EXECUTED
tail->previous = the_node;
40004e50: fa 20 60 08 st %i5, [ %g1 + 8 ]
<== NOT EXECUTED
the_node->next = tail;
40004e54: c6 27 40 00 st %g3, [ %i5 ]
<== NOT EXECUTED
old_last->next = the_node;
40004e58: fa 20 80 00 st %i5, [ %g2 ]
<== NOT EXECUTED
rtems_libio_unlock();
40004e5c: 7f ff fe 80 call 4000485c <rtems_libio_unlock>
<== NOT EXECUTED
40004e60: c4 27 60 04 st %g2, [ %i5 + 4 ]
<== NOT EXECUTED
rtems_filesystem_eval_path_cleanup( &ctx );
40004e64: 40 00 02 cd call 40005998 <rtems_filesystem_eval_path_cleanup>
<== NOT EXECUTED
40004e68: 90 07 bf c8 add %fp, -56, %o0
<== NOT EXECUTED
40004e6c: 81 c7 e0 08 ret
<== NOT EXECUTED
40004e70: 81 e8 00 00 restore
<== NOT EXECUTED
rtems_libio_lock();
40004e74: 7f ff fe 75 call 40004848 <rtems_libio_lock>
40004e78: 01 00 00 00 nop
return _Chain_Immutable_head( the_chain )->next;
40004e7c: 03 10 00 47 sethi %hi(0x40011c00), %g1
if ( rtems_chain_is_empty( &rtems_filesystem_mount_table ) ) {
40004e80: c4 00 62 1c ld [ %g1 + 0x21c ], %g2 ! 40011e1c <rtems_filesystem_mount_table>
40004e84: 82 10 62 1c or %g1, 0x21c, %g1
40004e88: 86 00 60 04 add %g1, 4, %g3
40004e8c: 80 a0 80 03 cmp %g2, %g3
40004e90: 12 80 00 27 bne 40004f2c <mount+0x308>
<== NEVER TAKEN
40004e94: 01 00 00 00 nop
old_last = tail->previous;
40004e98: c6 00 60 08 ld [ %g1 + 8 ], %g3
the_node->next = tail;
40004e9c: c4 27 40 00 st %g2, [ %i5 ]
rtems_filesystem_global_location_obtain( &mt_entry->mt_fs_root );
40004ea0: b8 07 60 24 add %i5, 0x24, %i4
tail->previous = the_node;
40004ea4: fa 20 60 08 st %i5, [ %g1 + 8 ]
old_last->next = the_node;
40004ea8: fa 20 c0 00 st %i5, [ %g3 ]
rtems_libio_unlock();
40004eac: 7f ff fe 6c call 4000485c <rtems_libio_unlock>
40004eb0: c6 27 60 04 st %g3, [ %i5 + 4 ]
rtems_filesystem_global_location_t *new_fs_root =
40004eb4: 40 00 03 84 call 40005cc4 <rtems_filesystem_global_location_obtain>
40004eb8: 90 10 00 1c mov %i4, %o0
40004ebc: b6 10 00 08 mov %o0, %i3
rtems_filesystem_global_location_t *new_fs_current =
40004ec0: 40 00 03 81 call 40005cc4 <rtems_filesystem_global_location_obtain>
40004ec4: 90 10 00 1c mov %i4, %o0
&rtems_filesystem_root,
40004ec8: 40 00 00 fa call 400052b0 <rtems_current_user_env_get>
40004ecc: ba 10 00 08 mov %o0, %i5
rtems_filesystem_global_location_assign(
40004ed0: 92 10 00 1b mov %i3, %o1
40004ed4: 40 00 03 d0 call 40005e14 <rtems_filesystem_global_location_assign>
40004ed8: 90 02 20 04 add %o0, 4, %o0
&rtems_filesystem_current,
40004edc: 40 00 00 f5 call 400052b0 <rtems_current_user_env_get>
40004ee0: 01 00 00 00 nop
rtems_filesystem_global_location_assign(
40004ee4: 40 00 03 cc call 40005e14 <rtems_filesystem_global_location_assign>
40004ee8: 92 10 00 1d mov %i5, %o1
40004eec: 81 c7 e0 08 ret
40004ef0: 81 e8 00 00 restore
errno = EINVAL;
40004ef4: 40 00 26 19 call 4000e758 <__errno>
<== NOT EXECUTED
40004ef8: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
40004efc: 82 10 20 16 mov 0x16, %g1
<== NOT EXECUTED
40004f00: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
return rv;
40004f04: 81 c7 e0 08 ret
<== NOT EXECUTED
40004f08: 81 e8 00 00 restore
<== NOT EXECUTED
rtems_filesystem_eval_path_error( &ctx, EBUSY );
40004f0c: 90 07 bf c8 add %fp, -56, %o0
<== NOT EXECUTED
40004f10: 40 00 01 db call 4000567c <rtems_filesystem_eval_path_error>
<== NOT EXECUTED
40004f14: 92 10 20 10 mov 0x10, %o1
<== NOT EXECUTED
rv = -1;
40004f18: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
rtems_filesystem_eval_path_cleanup( &ctx );
40004f1c: 40 00 02 9f call 40005998 <rtems_filesystem_eval_path_cleanup>
<== NOT EXECUTED
40004f20: 90 07 bf c8 add %fp, -56, %o0
<== NOT EXECUTED
(*mt_entry->ops->fsunmount_me_h)( mt_entry );
40004f24: 10 bf ff ac b 40004dd4 <mount+0x1b0>
<== NOT EXECUTED
40004f28: c2 07 60 0c ld [ %i5 + 0xc ], %g1
<== NOT EXECUTED
errno = EINVAL;
40004f2c: 40 00 26 0b call 4000e758 <__errno>
<== NOT EXECUTED
40004f30: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
40004f34: 82 10 20 16 mov 0x16, %g1
<== NOT EXECUTED
40004f38: 7f ff fe 49 call 4000485c <rtems_libio_unlock>
<== NOT EXECUTED
40004f3c: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
(*mt_entry->ops->fsunmount_me_h)( mt_entry );
40004f40: 10 bf ff a5 b 40004dd4 <mount+0x1b0>
<== NOT EXECUTED
40004f44: c2 07 60 0c ld [ %i5 + 0xc ], %g1
<== NOT EXECUTED
40005044 <open>:
/**
* POSIX 1003.1 5.3.1 - Open a File
*/
int open( const char *path, int oflag, ... )
{
40005044: 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 );
40005048: 82 07 a0 50 add %fp, 0x50, %g1
va_start( ap, oflag );
4000504c: fa 27 a0 58 st %i5, [ %fp + 0x58 ]
40005050: f4 27 a0 4c st %i2, [ %fp + 0x4c ]
40005054: f6 27 a0 50 st %i3, [ %fp + 0x50 ]
40005058: f8 27 a0 54 st %i4, [ %fp + 0x54 ]
iop = rtems_libio_allocate();
4000505c: 40 00 21 0e call 4000d494 <rtems_libio_allocate>
40005060: c2 27 bf 64 st %g1, [ %fp + -156 ]
if ( iop != NULL ) {
40005064: ba 92 20 00 orcc %o0, 0, %i5
40005068: 02 80 00 76 be 40005240 <open+0x1fc>
<== NEVER TAKEN
4000506c: 82 06 60 01 add %i1, 1, %g1
bool make = (oflag & O_CREAT) == O_CREAT;
40005070: 86 0e 62 00 and %i1, 0x200, %g3
bool read_access = (rwflag & _FREAD) == _FREAD;
40005074: 94 08 60 01 and %g1, 1, %o2
bool exclusive = (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL);
40005078: 84 0e 6a 00 and %i1, 0xa00, %g2
| (read_access ? RTEMS_FS_PERMS_READ : 0)
4000507c: 94 02 bf ff add %o2, -1, %o2
| (write_access ? RTEMS_FS_PERMS_WRITE : 0)
40005080: b8 88 60 02 andcc %g1, 2, %i4
| (read_access ? RTEMS_FS_PERMS_READ : 0)
40005084: 94 0a bf fc and %o2, -4, %o2
| (write_access ? RTEMS_FS_PERMS_WRITE : 0)
40005088: 02 80 00 03 be 40005094 <open+0x50>
4000508c: 94 02 a0 1c add %o2, 0x1c, %o2
40005090: 94 12 a0 02 or %o2, 2, %o2
| (make ? RTEMS_FS_MAKE : 0)
40005094: 80 a0 e0 00 cmp %g3, 0
40005098: 32 80 00 02 bne,a 400050a0 <open+0x5c>
<== NEVER TAKEN
4000509c: 94 12 a0 20 or %o2, 0x20, %o2
<== NOT EXECUTED
| (exclusive ? RTEMS_FS_EXCLUSIVE : 0);
400050a0: 80 a0 aa 00 cmp %g2, 0xa00
400050a4: 22 80 00 02 be,a 400050ac <open+0x68>
<== NEVER TAKEN
400050a8: 94 12 a0 40 or %o2, 0x40, %o2
<== NOT EXECUTED
rtems_filesystem_eval_path_start( &ctx, path, eval_flags );
400050ac: 92 10 00 18 mov %i0, %o1
400050b0: 40 00 02 2e call 40005968 <rtems_filesystem_eval_path_start>
400050b4: 90 07 bf 68 add %fp, -152, %o0
400050b8: f6 07 bf 74 ld [ %fp + -140 ], %i3
if ( rtems_filesystem_eval_path_has_token( &ctx ) ) {
400050bc: 80 a6 e0 00 cmp %i3, 0
400050c0: 12 80 00 45 bne 400051d4 <open+0x190>
<== NEVER TAKEN
400050c4: 80 a7 20 00 cmp %i4, 0
if ( write_access ) {
400050c8: 02 80 00 0e be 40005100 <open+0xbc>
400050cc: c2 07 bf 90 ld [ %fp + -112 ], %g1
const rtems_filesystem_location_info_t *loc
)
{
struct stat st;
st.st_mode = 0;
400050d0: c0 27 bf ac clr [ %fp + -84 ]
(void) ( *loc->handlers->fstat_h )( loc, &st );
400050d4: 92 07 bf a0 add %fp, -96, %o1
400050d8: c2 00 60 18 ld [ %g1 + 0x18 ], %g1
400050dc: 9f c0 40 00 call %g1
400050e0: 90 07 bf 80 add %fp, -128, %o0
if ( S_ISDIR( type ) ) {
400050e4: 05 00 00 3c sethi %hi(0xf000), %g2
400050e8: c2 07 bf ac ld [ %fp + -84 ], %g1
400050ec: 82 08 40 02 and %g1, %g2, %g1
400050f0: 05 00 00 10 sethi %hi(0x4000), %g2
400050f4: 80 a0 40 02 cmp %g1, %g2
400050f8: 02 80 00 4e be 40005230 <open+0x1ec>
<== NEVER TAKEN
400050fc: 92 10 20 15 mov 0x15, %o1
rtems_filesystem_location_copy_and_detach(
40005100: 92 07 bf 80 add %fp, -128, %o1
40005104: 40 00 03 6f call 40005ec0 <rtems_filesystem_location_copy_and_detach>
40005108: 90 07 60 0c add %i5, 0xc, %o0
rtems_filesystem_eval_path_cleanup( &ctx );
4000510c: 40 00 02 23 call 40005998 <rtems_filesystem_eval_path_cleanup>
40005110: 90 07 bf 68 add %fp, -152, %o0
_Atomic_Store_uint(
40005114: 40 00 20 d3 call 4000d460 <rtems_libio_fcntl_flags>
40005118: 90 10 00 19 mov %i1, %o0
rv = (*iop->pathinfo.handlers->open_h)( iop, path, oflag, mode );
4000511c: 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;
40005120: d0 27 60 08 st %o0, [ %i5 + 8 ]
40005124: 92 10 00 18 mov %i0, %o1
40005128: c2 00 40 00 ld [ %g1 ], %g1
4000512c: 96 10 00 1a mov %i2, %o3
40005130: 94 10 00 19 mov %i1, %o2
40005134: 9f c0 40 00 call %g1
40005138: 90 10 00 1d mov %i5, %o0
if ( rv == 0 ) {
4000513c: b0 92 20 00 orcc %o0, 0, %i0
40005140: 12 80 00 13 bne 4000518c <open+0x148>
<== NEVER TAKEN
40005144: 80 a6 20 00 cmp %i0, 0
int fd = rtems_libio_iop_to_descriptor( iop );
40005148: 31 10 00 4c sethi %hi(0x40013000), %i0
4000514c: 03 2a aa aa sethi %hi(0xaaaaa800), %g1
40005150: b0 16 21 48 or %i0, 0x148, %i0
<== NOT EXECUTED
40005154: 82 10 62 ab or %g1, 0x2ab, %g1
<== NOT EXECUTED
40005158: b0 27 40 18 sub %i5, %i0, %i0
<== NOT EXECUTED
4000515c: b1 3e 20 04 sra %i0, 4, %i0
<== NOT EXECUTED
40005160: b0 5e 00 01 smul %i0, %g1, %i0
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40005164: 91 d0 20 09 ta 9
<== NOT EXECUTED
ISR_Level level;
(void) order;
_ISR_Local_disable( level );
val = *obj;
*obj = val | arg;
40005168: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
4000516c: 84 10 a1 00 or %g2, 0x100, %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
if ( truncate ) {
4000517c: 80 8e 64 00 btst 0x400, %i1
40005180: 12 80 00 07 bne 4000519c <open+0x158>
<== NEVER TAKEN
40005184: 92 10 20 00 clr %o1
if ( rv < 0 ) {
40005188: 80 a6 20 00 cmp %i0, 0
4000518c: 06 80 00 0e bl 400051c4 <open+0x180>
<== NEVER TAKEN
40005190: 01 00 00 00 nop
}
va_end( ap );
return rv;
}
40005194: 81 c7 e0 08 ret
40005198: 81 e8 00 00 restore
rv = ftruncate( fd, 0 );
4000519c: 94 10 20 00 clr %o2
<== NOT EXECUTED
400051a0: 40 00 20 67 call 4000d33c <ftruncate>
<== NOT EXECUTED
400051a4: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
if ( rv != 0 ) {
400051a8: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
400051ac: 02 bf ff f7 be 40005188 <open+0x144>
<== NOT EXECUTED
400051b0: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
(*iop->pathinfo.handlers->close_h)( iop );
400051b4: c2 07 60 1c ld [ %i5 + 0x1c ], %g1
<== NOT EXECUTED
400051b8: c2 00 60 04 ld [ %g1 + 4 ], %g1
<== NOT EXECUTED
400051bc: 9f c0 40 00 call %g1
<== NOT EXECUTED
400051c0: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
rtems_libio_free( iop );
400051c4: 40 00 20 c9 call 4000d4e8 <rtems_libio_free>
<== NOT EXECUTED
400051c8: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
400051cc: 81 c7 e0 08 ret
<== NOT EXECUTED
400051d0: 81 e8 00 00 restore
<== NOT EXECUTED
400051d4: e0 07 bf 70 ld [ %fp + -144 ], %l0
<== NOT EXECUTED
rv = rtems_filesystem_mknod(
400051d8: 98 10 20 00 clr %o4
<== NOT EXECUTED
400051dc: 9a 10 20 00 clr %o5
<== NOT EXECUTED
400051e0: 17 00 00 20 sethi %hi(0x8000), %o3
<== NOT EXECUTED
400051e4: 94 10 00 1b mov %i3, %o2
<== NOT EXECUTED
400051e8: 96 16 80 0b or %i2, %o3, %o3
<== NOT EXECUTED
400051ec: 92 10 00 10 mov %l0, %o1
<== NOT EXECUTED
400051f0: 7f ff fe 4c call 40004b20 <rtems_filesystem_mknod>
<== NOT EXECUTED
400051f4: 90 07 bf 80 add %fp, -128, %o0
<== NOT EXECUTED
if ( rv == 0 ) {
400051f8: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
400051fc: 02 80 00 06 be 40005214 <open+0x1d0>
<== NOT EXECUTED
40005200: 92 10 20 00 clr %o1
<== NOT EXECUTED
rtems_filesystem_eval_path_error( ctx, 0 );
40005204: 40 00 01 1e call 4000567c <rtems_filesystem_eval_path_error>
<== NOT EXECUTED
40005208: 90 07 bf 68 add %fp, -152, %o0
<== NOT EXECUTED
if ( write_access ) {
4000520c: 10 bf ff af b 400050c8 <open+0x84>
<== NOT EXECUTED
40005210: 80 a7 20 00 cmp %i4, 0
<== NOT EXECUTED
ctx->flags = flags;
40005214: c0 27 bf 78 clr [ %fp + -136 ]
<== NOT EXECUTED
rtems_filesystem_eval_path_continue( ctx );
40005218: 90 07 bf 68 add %fp, -152, %o0
<== NOT EXECUTED
ctx->path = path;
4000521c: e0 27 bf 68 st %l0, [ %fp + -152 ]
<== NOT EXECUTED
40005220: 40 00 01 5f call 4000579c <rtems_filesystem_eval_path_continue>
<== NOT EXECUTED
40005224: f6 27 bf 6c st %i3, [ %fp + -148 ]
<== NOT EXECUTED
if ( write_access ) {
40005228: 10 bf ff a8 b 400050c8 <open+0x84>
<== NOT EXECUTED
4000522c: 80 a7 20 00 cmp %i4, 0
<== NOT EXECUTED
rtems_filesystem_eval_path_error( &ctx, EISDIR );
40005230: 40 00 01 13 call 4000567c <rtems_filesystem_eval_path_error>
<== NOT EXECUTED
40005234: 90 07 bf 68 add %fp, -152, %o0
<== NOT EXECUTED
rtems_filesystem_location_copy_and_detach(
40005238: 10 bf ff b3 b 40005104 <open+0xc0>
<== NOT EXECUTED
4000523c: 92 07 bf 80 add %fp, -128, %o1
<== NOT EXECUTED
errno = ENFILE;
40005240: 40 00 25 46 call 4000e758 <__errno>
<== NOT EXECUTED
40005244: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
40005248: 82 10 20 17 mov 0x17, %g1
<== NOT EXECUTED
4000524c: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
}
40005250: 81 c7 e0 08 ret
<== NOT EXECUTED
40005254: 81 e8 00 00 restore
<== NOT EXECUTED
40019d7c <read>:
ssize_t read(
int fd,
void *buffer,
size_t count
)
{
40019d7c: 9d e3 bf a0 save %sp, -96, %sp
rtems_libio_t *iop;
ssize_t n;
rtems_libio_check_buffer( buffer );
40019d80: 80 a6 60 00 cmp %i1, 0
40019d84: 02 80 00 32 be 40019e4c <read+0xd0>
<== NEVER TAKEN
40019d88: 80 a6 a0 00 cmp %i2, 0
rtems_libio_check_count( count );
40019d8c: 02 80 00 22 be 40019e14 <read+0x98>
<== NEVER TAKEN
40019d90: 84 10 20 00 clr %g2
LIBIO_GET_IOP_WITH_ACCESS( fd, iop, LIBIO_FLAGS_READ, EBADF );
40019d94: 03 10 00 b5 sethi %hi(0x4002d400), %g1
40019d98: c2 00 60 e0 ld [ %g1 + 0xe0 ], %g1 ! 4002d4e0 <rtems_libio_number_iops>
40019d9c: 80 a6 00 01 cmp %i0, %g1
40019da0: 1a 80 00 25 bcc 40019e34 <read+0xb8>
<== NEVER TAKEN
40019da4: bb 2e 20 01 sll %i0, 1, %i5
<== NOT EXECUTED
40019da8: ba 07 40 18 add %i5, %i0, %i5
<== NOT EXECUTED
40019dac: 31 10 00 d2 sethi %hi(0x40034800), %i0
<== NOT EXECUTED
40019db0: bb 2f 60 04 sll %i5, 4, %i5
<== NOT EXECUTED
40019db4: b0 16 23 f0 or %i0, 0x3f0, %i0
<== NOT EXECUTED
40019db8: ba 07 40 18 add %i5, %i0, %i5
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40019dbc: 91 d0 20 09 ta 9
<== NOT EXECUTED
val = *obj;
40019dc0: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
*obj = val + arg;
40019dc4: 86 20 b0 00 sub %g2, -4096, %g3
<== NOT EXECUTED
40019dc8: c6 27 60 08 st %g3, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40019dcc: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40019dd0: 01 00 00 00 nop
40019dd4: 84 08 a1 02 and %g2, 0x102, %g2
40019dd8: 80 a0 a1 02 cmp %g2, 0x102
40019ddc: 12 80 00 10 bne 40019e1c <read+0xa0>
<== NEVER TAKEN
40019de0: 94 10 00 1a mov %i2, %o2
/*
* Now process the read().
*/
n = (*iop->pathinfo.handlers->read_h)( iop, buffer, count );
40019de4: c2 07 60 1c ld [ %i5 + 0x1c ], %g1
40019de8: c2 00 60 08 ld [ %g1 + 8 ], %g1
40019dec: 92 10 00 19 mov %i1, %o1
40019df0: 9f c0 40 00 call %g1
40019df4: 90 10 00 1d mov %i5, %o0
40019df8: 84 10 00 08 mov %o0, %g2
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40019dfc: 91 d0 20 09 ta 9
<== NOT EXECUTED
*obj = val - arg;
40019e00: c6 07 60 08 ld [ %i5 + 8 ], %g3
<== NOT EXECUTED
40019e04: 86 00 f0 00 add %g3, -4096, %g3
<== NOT EXECUTED
40019e08: c6 27 60 08 st %g3, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40019e0c: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40019e10: 01 00 00 00 nop
rtems_libio_iop_drop( iop );
return n;
}
40019e14: 81 c7 e0 08 ret
40019e18: 91 e8 00 02 restore %g0, %g2, %o0
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40019e1c: 91 d0 20 09 ta 9
<== NOT EXECUTED
40019e20: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
40019e24: 84 00 b0 00 add %g2, -4096, %g2
<== NOT EXECUTED
40019e28: c4 27 60 08 st %g2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40019e2c: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40019e30: 01 00 00 00 nop
<== NOT EXECUTED
LIBIO_GET_IOP_WITH_ACCESS( fd, iop, LIBIO_FLAGS_READ, EBADF );
40019e34: 40 00 07 b3 call 4001bd00 <__errno>
<== NOT EXECUTED
40019e38: 01 00 00 00 nop
<== NOT EXECUTED
40019e3c: 82 10 20 09 mov 9, %g1 ! 9 <_TLS_Alignment+0x8>
<== NOT EXECUTED
40019e40: 84 10 3f ff mov -1, %g2
<== NOT EXECUTED
40019e44: 10 bf ff f4 b 40019e14 <read+0x98>
<== NOT EXECUTED
40019e48: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
rtems_libio_check_buffer( buffer );
40019e4c: 40 00 07 ad call 4001bd00 <__errno>
<== NOT EXECUTED
40019e50: 01 00 00 00 nop
<== NOT EXECUTED
40019e54: 82 10 20 16 mov 0x16, %g1 ! 16 <_TLS_Alignment+0x15>
<== NOT EXECUTED
40019e58: 84 10 3f ff mov -1, %g2
<== NOT EXECUTED
40019e5c: 10 bf ff ee b 40019e14 <read+0x98>
<== NOT EXECUTED
40019e60: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
40042cac <readlink>:
/**
* POSIX 1003.1b - X.X.X - XXX
*/
ssize_t readlink( const char *__restrict path, char *__restrict buf,
size_t bufsize )
{
40042cac: 9d e3 bf 08 save %sp, -248, %sp
<== NOT EXECUTED
ssize_t rv = 0;
rtems_filesystem_eval_path_context_t ctx;
int eval_flags = RTEMS_FS_FOLLOW_HARD_LINK;
const rtems_filesystem_location_info_t *currentloc =
40042cb0: 94 10 20 08 mov 8, %o2
<== NOT EXECUTED
40042cb4: 92 10 00 18 mov %i0, %o1
<== NOT EXECUTED
40042cb8: 7f ff 29 62 call 4000d240 <rtems_filesystem_eval_path_start>
<== NOT EXECUTED
40042cbc: 90 07 bf 68 add %fp, -152, %o0
<== NOT EXECUTED
rtems_filesystem_eval_path_start( &ctx, path, eval_flags );
const rtems_filesystem_operations_table *ops = currentloc->mt_entry->ops;
40042cc0: c2 02 20 14 ld [ %o0 + 0x14 ], %g1
<== NOT EXECUTED
40042cc4: f8 00 60 0c ld [ %g1 + 0xc ], %i4
<== NOT EXECUTED
(void) ( *loc->handlers->fstat_h )( loc, &st );
40042cc8: c2 02 20 10 ld [ %o0 + 0x10 ], %g1
<== NOT EXECUTED
st.st_mode = 0;
40042ccc: c0 27 bf ac clr [ %fp + -84 ]
<== NOT EXECUTED
const rtems_filesystem_location_info_t *currentloc =
40042cd0: ba 10 00 08 mov %o0, %i5
<== NOT EXECUTED
(void) ( *loc->handlers->fstat_h )( loc, &st );
40042cd4: c2 00 60 18 ld [ %g1 + 0x18 ], %g1
<== NOT EXECUTED
40042cd8: 9f c0 40 00 call %g1
<== NOT EXECUTED
40042cdc: 92 07 bf a0 add %fp, -96, %o1
<== NOT EXECUTED
mode_t type = rtems_filesystem_location_type( currentloc );
if ( S_ISLNK( type ) ) {
40042ce0: 05 00 00 3c sethi %hi(0xf000), %g2
<== NOT EXECUTED
40042ce4: c2 07 bf ac ld [ %fp + -84 ], %g1
<== NOT EXECUTED
40042ce8: 82 08 40 02 and %g1, %g2, %g1
<== NOT EXECUTED
40042cec: 05 00 00 28 sethi %hi(0xa000), %g2
<== NOT EXECUTED
40042cf0: 80 a0 40 02 cmp %g1, %g2
<== NOT EXECUTED
40042cf4: 12 80 00 0b bne 40042d20 <readlink+0x74>
<== NOT EXECUTED
40042cf8: 94 10 00 1a mov %i2, %o2
<== NOT EXECUTED
rv = (*ops->readlink_h)( currentloc, buf, bufsize );
40042cfc: c2 07 20 40 ld [ %i4 + 0x40 ], %g1
<== NOT EXECUTED
40042d00: 92 10 00 19 mov %i1, %o1
<== NOT EXECUTED
40042d04: 9f c0 40 00 call %g1
<== NOT EXECUTED
40042d08: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
40042d0c: b0 10 00 08 mov %o0, %i0
<== NOT EXECUTED
} else {
rtems_filesystem_eval_path_error( &ctx, EINVAL );
rv = -1;
}
rtems_filesystem_eval_path_cleanup( &ctx );
40042d10: 7f ff 29 96 call 4000d368 <rtems_filesystem_eval_path_cleanup>
<== NOT EXECUTED
40042d14: 90 07 bf 68 add %fp, -152, %o0
<== NOT EXECUTED
return rv;
}
40042d18: 81 c7 e0 08 ret
<== NOT EXECUTED
40042d1c: 81 e8 00 00 restore
<== NOT EXECUTED
rtems_filesystem_eval_path_error( &ctx, EINVAL );
40042d20: 92 10 20 16 mov 0x16, %o1
<== NOT EXECUTED
40042d24: 90 07 bf 68 add %fp, -152, %o0
<== NOT EXECUTED
40042d28: 7f ff 28 8b call 4000cf54 <rtems_filesystem_eval_path_error>
<== NOT EXECUTED
40042d2c: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
40042d30: 30 bf ff f8 b,a 40042d10 <readlink+0x64>
<== NOT EXECUTED
40009fa4 <realloc>:
return new_ptr;
}
void *realloc( void *ptr, size_t size )
{
40009fa4: 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 ) {
40009fa8: 80 a6 60 00 cmp %i1, 0
<== NOT EXECUTED
40009fac: 02 80 00 40 be 4000a0ac <realloc+0x108>
<== NOT EXECUTED
40009fb0: 80 a6 20 00 cmp %i0, 0
<== NOT EXECUTED
free( ptr );
return NULL;
}
if ( ptr == NULL ) {
40009fb4: 02 80 00 34 be 4000a084 <realloc+0xe0>
<== NOT EXECUTED
40009fb8: 03 10 00 ca sethi %hi(0x40032800), %g1
<== NOT EXECUTED
return malloc( size );
}
heap = RTEMS_Malloc_Heap;
switch ( _Malloc_System_state() ) {
40009fbc: 7f ff fd 22 call 40009444 <_Malloc_System_state>
<== NOT EXECUTED
40009fc0: fa 00 62 a0 ld [ %g1 + 0x2a0 ], %i5 ! 40032aa0 <RTEMS_Malloc_Heap>
<== NOT EXECUTED
40009fc4: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
40009fc8: 02 80 00 21 be 4000a04c <realloc+0xa8>
<== NOT EXECUTED
40009fcc: 01 00 00 00 nop
<== NOT EXECUTED
40009fd0: 80 a2 20 01 cmp %o0, 1
<== NOT EXECUTED
40009fd4: 32 80 00 2e bne,a 4000a08c <realloc+0xe8>
<== NOT EXECUTED
40009fd8: 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 );
40009fdc: 98 07 bf fc add %fp, -4, %o4
<== NOT EXECUTED
40009fe0: 96 07 bf f8 add %fp, -8, %o3
<== NOT EXECUTED
40009fe4: 94 10 00 19 mov %i1, %o2
<== NOT EXECUTED
40009fe8: 92 10 00 18 mov %i0, %o1
<== NOT EXECUTED
40009fec: 40 00 17 60 call 4000fd6c <_Heap_Resize_block>
<== NOT EXECUTED
40009ff0: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
40009ff4: b8 10 00 08 mov %o0, %i4
<== NOT EXECUTED
break;
default:
return NULL;
}
switch ( status ) {
40009ff8: 80 a7 20 00 cmp %i4, 0
<== NOT EXECUTED
40009ffc: 02 80 00 12 be 4000a044 <realloc+0xa0>
<== NOT EXECUTED
4000a000: ba 10 00 18 mov %i0, %i5
<== NOT EXECUTED
4000a004: 80 a7 20 01 cmp %i4, 1
<== NOT EXECUTED
4000a008: 12 80 00 23 bne 4000a094 <realloc+0xf0>
<== NOT EXECUTED
4000a00c: f8 07 bf f8 ld [ %fp + -8 ], %i4
<== NOT EXECUTED
new_ptr = malloc( new_size );
4000a010: 7f ff fd 9e call 40009688 <malloc>
<== NOT EXECUTED
4000a014: 90 10 00 19 mov %i1, %o0
<== NOT EXECUTED
if ( new_ptr == NULL ) {
4000a018: ba 92 20 00 orcc %o0, 0, %i5
<== NOT EXECUTED
4000a01c: 02 80 00 0a be 4000a044 <realloc+0xa0>
<== NOT EXECUTED
4000a020: 80 a7 00 19 cmp %i4, %i1
<== NOT EXECUTED
memcpy( new_ptr, old_ptr, ( new_size < old_size ) ? new_size : old_size );
4000a024: 08 80 00 03 bleu 4000a030 <realloc+0x8c>
<== NOT EXECUTED
4000a028: 94 10 00 1c mov %i4, %o2
<== NOT EXECUTED
4000a02c: 94 10 00 19 mov %i1, %o2
<== NOT EXECUTED
4000a030: 92 10 00 18 mov %i0, %o1
<== NOT EXECUTED
4000a034: 40 00 50 07 call 4001e050 <memcpy>
<== NOT EXECUTED
4000a038: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
free( old_ptr );
4000a03c: 7f ff fc 90 call 4000927c <free>
<== NOT EXECUTED
4000a040: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
return new_alloc( ptr, size, old_size );
default:
errno = EINVAL;
return NULL;
}
}
4000a044: 81 c7 e0 08 ret
<== NOT EXECUTED
4000a048: 91 e8 00 1d restore %g0, %i5, %o0
<== NOT EXECUTED
_RTEMS_Lock_allocator();
4000a04c: 40 00 15 2d call 4000f500 <_RTEMS_Lock_allocator>
<== NOT EXECUTED
4000a050: 01 00 00 00 nop
<== NOT EXECUTED
_Malloc_Process_deferred_frees();
4000a054: 7f ff fd 0b call 40009480 <_Malloc_Process_deferred_frees>
<== NOT EXECUTED
4000a058: 01 00 00 00 nop
<== NOT EXECUTED
status = _Heap_Resize_block( heap, ptr, size, &old_size, &avail_size );
4000a05c: 98 07 bf fc add %fp, -4, %o4
<== NOT EXECUTED
4000a060: 96 07 bf f8 add %fp, -8, %o3
<== NOT EXECUTED
4000a064: 94 10 00 19 mov %i1, %o2
<== NOT EXECUTED
4000a068: 92 10 00 18 mov %i0, %o1
<== NOT EXECUTED
4000a06c: 40 00 17 40 call 4000fd6c <_Heap_Resize_block>
<== NOT EXECUTED
4000a070: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
_RTEMS_Unlock_allocator();
4000a074: 40 00 15 28 call 4000f514 <_RTEMS_Unlock_allocator>
<== NOT EXECUTED
4000a078: b8 10 00 08 mov %o0, %i4
<== NOT EXECUTED
break;
4000a07c: 10 bf ff e0 b 40009ffc <realloc+0x58>
<== NOT EXECUTED
4000a080: 80 a7 20 00 cmp %i4, 0
<== NOT EXECUTED
return malloc( size );
4000a084: 7f ff fd 81 call 40009688 <malloc>
<== NOT EXECUTED
4000a088: 91 e8 00 19 restore %g0, %i1, %o0
<== NOT EXECUTED
}
4000a08c: 81 c7 e0 08 ret
<== NOT EXECUTED
4000a090: 91 e8 00 1d restore %g0, %i5, %o0
<== NOT EXECUTED
errno = EINVAL;
4000a094: 40 00 47 1b call 4001bd00 <__errno>
<== NOT EXECUTED
4000a098: ba 10 20 00 clr %i5
<== NOT EXECUTED
4000a09c: 82 10 20 16 mov 0x16, %g1
<== NOT EXECUTED
4000a0a0: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
}
4000a0a4: 81 c7 e0 08 ret
<== NOT EXECUTED
4000a0a8: 91 e8 00 1d restore %g0, %i5, %o0
<== NOT EXECUTED
free( ptr );
4000a0ac: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
4000a0b0: 7f ff fc 73 call 4000927c <free>
<== NOT EXECUTED
4000a0b4: ba 10 20 00 clr %i5
<== NOT EXECUTED
return NULL;
4000a0b8: 30 bf ff e3 b,a 4000a044 <realloc+0xa0>
<== NOT EXECUTED
40042d34 <realpath>:
* components. Returns (resolved) on success, or (NULL) on failure,
* in which case the path which caused trouble is left in (resolved).
*/
char *
realpath(const char * __restrict path, char * __restrict resolved)
{
40042d34: 9d e3 bc 40 save %sp, -960, %sp
<== NOT EXECUTED
size_t left_len, resolved_len;
unsigned symlinks;
int m, slen;
char left[PATH_MAX], next_token[PATH_MAX], symlink[PATH_MAX];
if (path == NULL) {
40042d38: b8 96 20 00 orcc %i0, 0, %i4
<== NOT EXECUTED
40042d3c: 02 80 01 18 be 4004319c <realpath+0x468>
<== NOT EXECUTED
40042d40: 01 00 00 00 nop
<== NOT EXECUTED
errno = EINVAL;
return (NULL);
}
if (path[0] == '\0') {
40042d44: fa 0f 00 00 ldub [ %i4 ], %i5
<== NOT EXECUTED
40042d48: bb 2f 60 18 sll %i5, 0x18, %i5
<== NOT EXECUTED
40042d4c: 80 a7 60 00 cmp %i5, 0
<== NOT EXECUTED
40042d50: 02 80 01 05 be 40043164 <realpath+0x430>
<== NOT EXECUTED
40042d54: 80 a6 60 00 cmp %i1, 0
<== NOT EXECUTED
errno = ENOENT;
return (NULL);
}
if (resolved == NULL) {
40042d58: 02 80 00 e2 be 400430e0 <realpath+0x3ac>
<== NOT EXECUTED
40042d5c: a4 10 20 00 clr %l2
<== NOT EXECUTED
return (NULL);
m = 1;
} else
m = 0;
symlinks = 0;
if (path[0] == '/') {
40042d60: bb 3f 60 18 sra %i5, 0x18, %i5
<== NOT EXECUTED
40042d64: 80 a7 60 2f cmp %i5, 0x2f
<== NOT EXECUTED
40042d68: 12 80 00 0a bne 40042d90 <realpath+0x5c>
<== NOT EXECUTED
40042d6c: 92 10 20 ff mov 0xff, %o1
<== NOT EXECUTED
resolved[0] = '/';
40042d70: fa 2e 40 00 stb %i5, [ %i1 ]
<== NOT EXECUTED
resolved[1] = '\0';
40042d74: c0 2e 60 01 clrb [ %i1 + 1 ]
<== NOT EXECUTED
if (path[1] == '\0')
40042d78: c2 4f 20 01 ldsb [ %i4 + 1 ], %g1
<== NOT EXECUTED
40042d7c: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
40042d80: 12 80 00 c6 bne 40043098 <realpath+0x364>
<== NOT EXECUTED
40042d84: b0 10 00 19 mov %i1, %i0
<== NOT EXECUTED
* is a single "/".
*/
if (resolved_len > 1 && resolved[resolved_len - 1] == '/')
resolved[resolved_len - 1] = '\0';
return (resolved);
}
40042d88: 81 c7 e0 08 ret
<== NOT EXECUTED
40042d8c: 81 e8 00 00 restore
<== NOT EXECUTED
if (getcwd(resolved, PATH_MAX) == NULL) {
40042d90: 40 00 70 bc call 4005f080 <getcwd>
<== NOT EXECUTED
40042d94: 90 10 00 19 mov %i1, %o0
<== NOT EXECUTED
40042d98: b0 92 20 00 orcc %o0, 0, %i0
<== NOT EXECUTED
40042d9c: 02 80 00 b9 be 40043080 <realpath+0x34c>
<== NOT EXECUTED
40042da0: 80 a4 a0 00 cmp %l2, 0
<== NOT EXECUTED
resolved_len = strlen(resolved);
40042da4: 40 00 86 57 call 40064700 <strlen>
<== NOT EXECUTED
40042da8: 90 10 00 19 mov %i1, %o0
<== NOT EXECUTED
left_len = strlcpy(left, path, sizeof(left));
40042dac: 92 10 00 1c mov %i4, %o1
<== NOT EXECUTED
resolved_len = strlen(resolved);
40042db0: ba 10 00 08 mov %o0, %i5
<== NOT EXECUTED
left_len = strlcpy(left, path, sizeof(left));
40042db4: b4 07 bd 00 add %fp, -768, %i2
<== NOT EXECUTED
40042db8: 94 10 20 ff mov 0xff, %o2
<== NOT EXECUTED
40042dbc: 40 00 86 36 call 40064694 <strlcpy>
<== NOT EXECUTED
40042dc0: 90 10 00 1a mov %i2, %o0
<== NOT EXECUTED
40042dc4: 84 10 20 01 mov 1, %g2
<== NOT EXECUTED
40042dc8: 80 a7 60 fe cmp %i5, 0xfe
<== NOT EXECUTED
40042dcc: 08 80 00 bc bleu 400430bc <realpath+0x388>
<== NOT EXECUTED
40042dd0: b8 10 00 08 mov %o0, %i4
<== NOT EXECUTED
if (left_len >= sizeof(left) || resolved_len >= PATH_MAX) {
40042dd4: 80 a7 20 fe cmp %i4, 0xfe
<== NOT EXECUTED
40042dd8: 18 80 00 03 bgu 40042de4 <realpath+0xb0>
<== NOT EXECUTED
40042ddc: 82 10 20 01 mov 1, %g1
<== NOT EXECUTED
40042de0: 82 10 20 00 clr %g1
<== NOT EXECUTED
40042de4: 80 88 60 ff btst 0xff, %g1
<== NOT EXECUTED
40042de8: 12 80 00 c6 bne 40043100 <realpath+0x3cc>
<== NOT EXECUTED
40042dec: 80 88 a0 ff btst 0xff, %g2
<== NOT EXECUTED
40042df0: 12 80 00 c4 bne 40043100 <realpath+0x3cc>
<== NOT EXECUTED
40042df4: 80 a7 20 00 cmp %i4, 0
<== NOT EXECUTED
while (left_len != 0) {
40042df8: 02 80 00 d0 be 40043138 <realpath+0x404>
<== NOT EXECUTED
40042dfc: aa 10 20 00 clr %l5
<== NOT EXECUTED
else if (strcmp(next_token, ".") == 0)
40042e00: 21 10 01 fc sethi %hi(0x4007f000), %l0
<== NOT EXECUTED
else if (strcmp(next_token, "..") == 0) {
40042e04: 23 10 01 f3 sethi %hi(0x4007cc00), %l1
<== NOT EXECUTED
else if (strcmp(next_token, ".") == 0)
40042e08: a0 14 21 e0 or %l0, 0x1e0, %l0
<== NOT EXECUTED
else if (strcmp(next_token, "..") == 0) {
40042e0c: a2 14 63 48 or %l1, 0x348, %l1
<== NOT EXECUTED
if (S_ISLNK(sb.st_mode)) {
40042e10: 27 00 00 3c sethi %hi(0xf000), %l3
<== NOT EXECUTED
40042e14: 2d 00 00 28 sethi %hi(0xa000), %l6
<== NOT EXECUTED
if (!S_ISDIR(sb.st_mode)) {
40042e18: 10 80 00 19 b 40042e7c <realpath+0x148>
<== NOT EXECUTED
40042e1c: 29 00 00 10 sethi %hi(0x4000), %l4
<== NOT EXECUTED
else if (strcmp(next_token, ".") == 0)
40042e20: 40 00 83 bd call 40063d14 <strcmp>
<== NOT EXECUTED
40042e24: 90 07 be 00 add %fp, -512, %o0
<== NOT EXECUTED
40042e28: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
40042e2c: 02 80 00 11 be 40042e70 <realpath+0x13c>
<== NOT EXECUTED
40042e30: 92 10 00 11 mov %l1, %o1
<== NOT EXECUTED
else if (strcmp(next_token, "..") == 0) {
40042e34: 40 00 83 b8 call 40063d14 <strcmp>
<== NOT EXECUTED
40042e38: 90 07 be 00 add %fp, -512, %o0
<== NOT EXECUTED
40042e3c: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
40042e40: 12 80 00 4e bne 40042f78 <realpath+0x244>
<== NOT EXECUTED
40042e44: 94 10 20 ff mov 0xff, %o2
<== NOT EXECUTED
if (resolved_len > 1) {
40042e48: 80 a7 60 01 cmp %i5, 1
<== NOT EXECUTED
40042e4c: 08 80 00 09 bleu 40042e70 <realpath+0x13c>
<== NOT EXECUTED
40042e50: 92 10 20 2f mov 0x2f, %o1
<== NOT EXECUTED
resolved[resolved_len - 1] = '\0';
40042e54: ba 06 40 1d add %i1, %i5, %i5
<== NOT EXECUTED
40042e58: c0 2f 7f ff clrb [ %i5 + -1 ]
<== NOT EXECUTED
q = strrchr(resolved, '/') + 1;
40042e5c: 40 00 8b 3d call 40065b50 <strrchr>
<== NOT EXECUTED
40042e60: 90 10 00 19 mov %i1, %o0
<== NOT EXECUTED
*q = '\0';
40042e64: c0 2a 20 01 clrb [ %o0 + 1 ]
<== NOT EXECUTED
q = strrchr(resolved, '/') + 1;
40042e68: ba 02 20 01 add %o0, 1, %i5
<== NOT EXECUTED
resolved_len = q - resolved;
40042e6c: ba 27 40 19 sub %i5, %i1, %i5
<== NOT EXECUTED
while (left_len != 0) {
40042e70: 80 a7 20 00 cmp %i4, 0
<== NOT EXECUTED
40042e74: 02 80 00 b2 be 4004313c <realpath+0x408>
<== NOT EXECUTED
40042e78: 80 a7 60 01 cmp %i5, 1
<== NOT EXECUTED
p = strchr(left, '/');
40042e7c: 92 10 20 2f mov 0x2f, %o1
<== NOT EXECUTED
40042e80: 40 00 83 33 call 40063b4c <strchr>
<== NOT EXECUTED
40042e84: 90 10 00 1a mov %i2, %o0
<== NOT EXECUTED
s = p ? p : left + left_len;
40042e88: b0 92 20 00 orcc %o0, 0, %i0
<== NOT EXECUTED
40042e8c: 02 80 00 31 be 40042f50 <realpath+0x21c>
<== NOT EXECUTED
40042e90: b6 26 00 1a sub %i0, %i2, %i3
<== NOT EXECUTED
if (s - left >= sizeof(next_token)) {
40042e94: 80 a6 e0 fe cmp %i3, 0xfe
<== NOT EXECUTED
40042e98: 18 80 00 9a bgu 40043100 <realpath+0x3cc>
<== NOT EXECUTED
40042e9c: 94 10 00 1b mov %i3, %o2
<== NOT EXECUTED
memcpy(next_token, left, s - left);
40042ea0: 92 10 00 1a mov %i2, %o1
<== NOT EXECUTED
40042ea4: 40 00 78 4b call 40060fd0 <memcpy>
<== NOT EXECUTED
40042ea8: 90 07 be 00 add %fp, -512, %o0
<== NOT EXECUTED
left_len -= s - left;
40042eac: b8 27 00 1b sub %i4, %i3, %i4
<== NOT EXECUTED
memmove(left, s + 1, left_len + 1);
40042eb0: 92 06 20 01 add %i0, 1, %o1
<== NOT EXECUTED
next_token[s - left] = '\0';
40042eb4: b6 07 80 1b add %fp, %i3, %i3
<== NOT EXECUTED
memmove(left, s + 1, left_len + 1);
40042eb8: 94 07 20 01 add %i4, 1, %o2
<== NOT EXECUTED
next_token[s - left] = '\0';
40042ebc: c0 2e fe 00 clrb [ %i3 + -512 ]
<== NOT EXECUTED
memmove(left, s + 1, left_len + 1);
40042ec0: 40 00 78 80 call 400610c0 <memmove>
<== NOT EXECUTED
40042ec4: 90 10 00 1a mov %i2, %o0
<== NOT EXECUTED
if (resolved[resolved_len - 1] != '/') {
40042ec8: 82 06 40 1d add %i1, %i5, %g1
<== NOT EXECUTED
40042ecc: c2 48 7f ff ldsb [ %g1 + -1 ], %g1
<== NOT EXECUTED
40042ed0: 80 a0 60 2f cmp %g1, 0x2f
<== NOT EXECUTED
40042ed4: 02 80 00 08 be 40042ef4 <realpath+0x1c0>
<== NOT EXECUTED
40042ed8: 82 07 60 01 add %i5, 1, %g1
<== NOT EXECUTED
if (resolved_len + 1 >= PATH_MAX) {
40042edc: 80 a0 60 fe cmp %g1, 0xfe
<== NOT EXECUTED
40042ee0: 18 80 00 88 bgu 40043100 <realpath+0x3cc>
<== NOT EXECUTED
40042ee4: 84 10 20 2f mov 0x2f, %g2
<== NOT EXECUTED
resolved[resolved_len++] = '/';
40042ee8: c4 2e 40 1d stb %g2, [ %i1 + %i5 ]
<== NOT EXECUTED
resolved[resolved_len] = '\0';
40042eec: ba 10 00 01 mov %g1, %i5
<== NOT EXECUTED
40042ef0: c0 2e 40 01 clrb [ %i1 + %g1 ]
<== NOT EXECUTED
if (next_token[0] == '\0') {
40042ef4: c2 4f be 00 ldsb [ %fp + -512 ], %g1
<== NOT EXECUTED
40042ef8: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
40042efc: 12 bf ff c9 bne 40042e20 <realpath+0xec>
<== NOT EXECUTED
40042f00: 92 10 00 10 mov %l0, %o1
<== NOT EXECUTED
if (lstat(resolved, &sb) != 0) {
40042f04: 92 07 bc a0 add %fp, -864, %o1
<== NOT EXECUTED
40042f08: 7f ff fd 10 call 40042348 <lstat>
<== NOT EXECUTED
40042f0c: 90 10 00 19 mov %i1, %o0
<== NOT EXECUTED
40042f10: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
40042f14: 12 80 00 9a bne 4004317c <realpath+0x448>
<== NOT EXECUTED
40042f18: c2 07 bc ac ld [ %fp + -852 ], %g1
<== NOT EXECUTED
if (!S_ISDIR(sb.st_mode)) {
40042f1c: 82 08 40 13 and %g1, %l3, %g1
<== NOT EXECUTED
40042f20: 80 a0 40 14 cmp %g1, %l4
<== NOT EXECUTED
40042f24: 02 bf ff d4 be 40042e74 <realpath+0x140>
<== NOT EXECUTED
40042f28: 80 a7 20 00 cmp %i4, 0
<== NOT EXECUTED
if (m)
40042f2c: 80 a4 a0 00 cmp %l2, 0
<== NOT EXECUTED
40042f30: 12 80 00 65 bne 400430c4 <realpath+0x390>
<== NOT EXECUTED
40042f34: 01 00 00 00 nop
<== NOT EXECUTED
errno = ENOTDIR;
40042f38: 40 00 66 77 call 4005c914 <__errno>
<== NOT EXECUTED
40042f3c: b0 10 20 00 clr %i0 ! 0 <PROM_START>
<== NOT EXECUTED
40042f40: 82 10 20 14 mov 0x14, %g1
<== NOT EXECUTED
40042f44: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
return (NULL);
40042f48: 81 c7 e0 08 ret
<== NOT EXECUTED
40042f4c: 81 e8 00 00 restore
<== NOT EXECUTED
if (s - left >= sizeof(next_token)) {
40042f50: 80 a7 20 fe cmp %i4, 0xfe
<== NOT EXECUTED
40042f54: 18 80 00 6b bgu 40043100 <realpath+0x3cc>
<== NOT EXECUTED
40042f58: 94 10 00 1c mov %i4, %o2
<== NOT EXECUTED
memcpy(next_token, left, s - left);
40042f5c: 92 10 00 1a mov %i2, %o1
<== NOT EXECUTED
40042f60: 40 00 78 1c call 40060fd0 <memcpy>
<== NOT EXECUTED
40042f64: 90 07 be 00 add %fp, -512, %o0
<== NOT EXECUTED
next_token[s - left] = '\0';
40042f68: 82 07 80 1c add %fp, %i4, %g1
<== NOT EXECUTED
left_len -= s - left;
40042f6c: b8 10 20 00 clr %i4
<== NOT EXECUTED
next_token[s - left] = '\0';
40042f70: 10 bf ff d6 b 40042ec8 <realpath+0x194>
<== NOT EXECUTED
40042f74: c0 28 7e 00 clrb [ %g1 + -512 ]
<== NOT EXECUTED
resolved_len = strlcat(resolved, next_token, PATH_MAX);
40042f78: 92 07 be 00 add %fp, -512, %o1
<== NOT EXECUTED
40042f7c: 40 00 85 97 call 400645d8 <strlcat>
<== NOT EXECUTED
40042f80: 90 10 00 19 mov %i1, %o0
<== NOT EXECUTED
if (resolved_len >= PATH_MAX) {
40042f84: 80 a2 20 fe cmp %o0, 0xfe
<== NOT EXECUTED
40042f88: 18 80 00 5e bgu 40043100 <realpath+0x3cc>
<== NOT EXECUTED
40042f8c: ba 10 00 08 mov %o0, %i5
<== NOT EXECUTED
if (lstat(resolved, &sb) != 0) {
40042f90: 92 07 bc a0 add %fp, -864, %o1
<== NOT EXECUTED
40042f94: 7f ff fc ed call 40042348 <lstat>
<== NOT EXECUTED
40042f98: 90 10 00 19 mov %i1, %o0
<== NOT EXECUTED
40042f9c: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
40042fa0: 12 80 00 77 bne 4004317c <realpath+0x448>
<== NOT EXECUTED
40042fa4: c2 07 bc ac ld [ %fp + -852 ], %g1
<== NOT EXECUTED
if (S_ISLNK(sb.st_mode)) {
40042fa8: 82 08 40 13 and %g1, %l3, %g1
<== NOT EXECUTED
40042fac: 80 a0 40 16 cmp %g1, %l6
<== NOT EXECUTED
40042fb0: 12 bf ff b1 bne 40042e74 <realpath+0x140>
<== NOT EXECUTED
40042fb4: 80 a7 20 00 cmp %i4, 0
<== NOT EXECUTED
if (symlinks++ > MAXSYMLINKS) {
40042fb8: 80 a5 60 20 cmp %l5, 0x20
<== NOT EXECUTED
40042fbc: 18 80 00 7e bgu 400431b4 <realpath+0x480>
<== NOT EXECUTED
40042fc0: b6 05 60 01 add %l5, 1, %i3
<== NOT EXECUTED
slen = readlink(resolved, symlink, sizeof(symlink) - 1);
40042fc4: 94 10 20 fe mov 0xfe, %o2
<== NOT EXECUTED
40042fc8: 92 07 bf 00 add %fp, -256, %o1
<== NOT EXECUTED
40042fcc: 7f ff ff 38 call 40042cac <readlink>
<== NOT EXECUTED
40042fd0: 90 10 00 19 mov %i1, %o0
<== NOT EXECUTED
if (slen < 0) {
40042fd4: b8 92 20 00 orcc %o0, 0, %i4
<== NOT EXECUTED
40042fd8: 06 80 00 69 bl 4004317c <realpath+0x448>
<== NOT EXECUTED
40042fdc: aa 07 80 1c add %fp, %i4, %l5
<== NOT EXECUTED
symlink[slen] = '\0';
40042fe0: c0 2d 7f 00 clrb [ %l5 + -256 ]
<== NOT EXECUTED
if (symlink[0] == '/') {
40042fe4: c2 4f bf 00 ldsb [ %fp + -256 ], %g1
<== NOT EXECUTED
40042fe8: 80 a0 60 2f cmp %g1, 0x2f
<== NOT EXECUTED
40042fec: 02 80 00 50 be 4004312c <realpath+0x3f8>
<== NOT EXECUTED
40042ff0: 80 a7 60 01 cmp %i5, 1
<== NOT EXECUTED
} else if (resolved_len > 1) {
40042ff4: 08 80 00 09 bleu 40043018 <realpath+0x2e4>
<== NOT EXECUTED
40042ff8: 92 10 20 2f mov 0x2f, %o1
<== NOT EXECUTED
resolved[resolved_len - 1] = '\0';
40042ffc: ba 06 40 1d add %i1, %i5, %i5
<== NOT EXECUTED
40043000: c0 2f 7f ff clrb [ %i5 + -1 ]
<== NOT EXECUTED
q = strrchr(resolved, '/') + 1;
40043004: 40 00 8a d3 call 40065b50 <strrchr>
<== NOT EXECUTED
40043008: 90 10 00 19 mov %i1, %o0
<== NOT EXECUTED
*q = '\0';
4004300c: c0 2a 20 01 clrb [ %o0 + 1 ]
<== NOT EXECUTED
q = strrchr(resolved, '/') + 1;
40043010: ba 02 20 01 add %o0, 1, %i5
<== NOT EXECUTED
resolved_len = q - resolved;
40043014: ba 27 40 19 sub %i5, %i1, %i5
<== NOT EXECUTED
if (p != NULL) {
40043018: 80 a6 20 00 cmp %i0, 0
<== NOT EXECUTED
4004301c: 02 80 00 13 be 40043068 <realpath+0x334>
<== NOT EXECUTED
40043020: 94 10 20 ff mov 0xff, %o2
<== NOT EXECUTED
if (symlink[slen - 1] != '/') {
40043024: c2 4d 7e ff ldsb [ %l5 + -257 ], %g1
<== NOT EXECUTED
40043028: 80 a0 60 2f cmp %g1, 0x2f
<== NOT EXECUTED
4004302c: 02 80 00 09 be 40043050 <realpath+0x31c>
<== NOT EXECUTED
40043030: b8 07 20 01 inc %i4
<== NOT EXECUTED
if (slen + 1 >= sizeof(symlink)) {
40043034: 80 a7 20 fe cmp %i4, 0xfe
<== NOT EXECUTED
40043038: 14 80 00 32 bg 40043100 <realpath+0x3cc>
<== NOT EXECUTED
4004303c: 82 10 20 2f mov 0x2f, %g1
<== NOT EXECUTED
symlink[slen] = '/';
40043040: c2 2d 7f 00 stb %g1, [ %l5 + -256 ]
<== NOT EXECUTED
symlink[slen + 1] = 0;
40043044: b8 07 80 1c add %fp, %i4, %i4
<== NOT EXECUTED
40043048: c0 2f 3f 00 clrb [ %i4 + -256 ]
<== NOT EXECUTED
left_len = strlcat(symlink, left,
4004304c: 94 10 20 ff mov 0xff, %o2
<== NOT EXECUTED
40043050: 92 10 00 1a mov %i2, %o1
<== NOT EXECUTED
40043054: 40 00 85 61 call 400645d8 <strlcat>
<== NOT EXECUTED
40043058: 90 07 bf 00 add %fp, -256, %o0
<== NOT EXECUTED
if (left_len >= sizeof(left)) {
4004305c: 80 a2 20 fe cmp %o0, 0xfe
<== NOT EXECUTED
40043060: 18 80 00 28 bgu 40043100 <realpath+0x3cc>
<== NOT EXECUTED
40043064: 94 10 20 ff mov 0xff, %o2
<== NOT EXECUTED
left_len = strlcpy(left, symlink, sizeof(left));
40043068: 92 07 bf 00 add %fp, -256, %o1
<== NOT EXECUTED
4004306c: 90 10 00 1a mov %i2, %o0
<== NOT EXECUTED
40043070: 40 00 85 89 call 40064694 <strlcpy>
<== NOT EXECUTED
40043074: aa 10 00 1b mov %i3, %l5
<== NOT EXECUTED
40043078: 10 bf ff 7e b 40042e70 <realpath+0x13c>
<== NOT EXECUTED
4004307c: b8 10 00 08 mov %o0, %i4
<== NOT EXECUTED
if (m)
40043080: 12 80 00 14 bne 400430d0 <realpath+0x39c>
<== NOT EXECUTED
40043084: 82 10 20 2e mov 0x2e, %g1
<== NOT EXECUTED
resolved[1] = '\0';
40043088: c0 2e 60 01 clrb [ %i1 + 1 ]
<== NOT EXECUTED
resolved[0] = '.';
4004308c: c2 2e 40 00 stb %g1, [ %i1 ]
<== NOT EXECUTED
40043090: 81 c7 e0 08 ret
<== NOT EXECUTED
40043094: 81 e8 00 00 restore
<== NOT EXECUTED
left_len = strlcpy(left, path + 1, sizeof(left));
40043098: 92 07 20 01 add %i4, 1, %o1
<== NOT EXECUTED
4004309c: b4 07 bd 00 add %fp, -768, %i2
<== NOT EXECUTED
400430a0: 94 10 20 ff mov 0xff, %o2
<== NOT EXECUTED
400430a4: 40 00 85 7c call 40064694 <strlcpy>
<== NOT EXECUTED
400430a8: 90 10 00 1a mov %i2, %o0
<== NOT EXECUTED
resolved_len = 1;
400430ac: ba 10 20 01 mov 1, %i5
<== NOT EXECUTED
left_len = strlcpy(left, path + 1, sizeof(left));
400430b0: b8 10 00 08 mov %o0, %i4
<== NOT EXECUTED
400430b4: 10 bf ff 48 b 40042dd4 <realpath+0xa0>
<== NOT EXECUTED
400430b8: 84 10 20 00 clr %g2
<== NOT EXECUTED
400430bc: 10 bf ff 46 b 40042dd4 <realpath+0xa0>
<== NOT EXECUTED
400430c0: 84 10 20 00 clr %g2
<== NOT EXECUTED
free(resolved);
400430c4: 7f ff 21 6f call 4000b680 <free>
<== NOT EXECUTED
400430c8: 90 10 00 19 mov %i1, %o0
<== NOT EXECUTED
400430cc: 30 bf ff 9b b,a 40042f38 <realpath+0x204>
<== NOT EXECUTED
free(resolved);
400430d0: 7f ff 21 6c call 4000b680 <free>
<== NOT EXECUTED
400430d4: 90 10 00 19 mov %i1, %o0
<== NOT EXECUTED
400430d8: 81 c7 e0 08 ret
<== NOT EXECUTED
400430dc: 81 e8 00 00 restore
<== NOT EXECUTED
resolved = malloc(PATH_MAX);
400430e0: 90 10 20 ff mov 0xff, %o0
<== NOT EXECUTED
400430e4: 7f ff 23 2a call 4000bd8c <malloc>
<== NOT EXECUTED
400430e8: a4 10 20 01 mov 1, %l2
<== NOT EXECUTED
if (resolved == NULL)
400430ec: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
400430f0: 12 bf ff 1c bne 40042d60 <realpath+0x2c>
<== NOT EXECUTED
400430f4: b2 10 00 08 mov %o0, %i1
<== NOT EXECUTED
return (NULL);
400430f8: 81 c7 e0 08 ret
<== NOT EXECUTED
400430fc: 91 e8 20 00 restore %g0, 0, %o0
<== NOT EXECUTED
if (m)
40043100: 80 a4 a0 00 cmp %l2, 0
<== NOT EXECUTED
40043104: 02 80 00 04 be 40043114 <realpath+0x3e0>
<== NOT EXECUTED
40043108: 01 00 00 00 nop
<== NOT EXECUTED
free(resolved);
4004310c: 7f ff 21 5d call 4000b680 <free>
<== NOT EXECUTED
40043110: 90 10 00 19 mov %i1, %o0
<== NOT EXECUTED
errno = ENAMETOOLONG;
40043114: 40 00 66 00 call 4005c914 <__errno>
<== NOT EXECUTED
40043118: b0 10 20 00 clr %i0
<== NOT EXECUTED
4004311c: 82 10 20 5b mov 0x5b, %g1
<== NOT EXECUTED
40043120: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
return (NULL);
40043124: 81 c7 e0 08 ret
<== NOT EXECUTED
40043128: 81 e8 00 00 restore
<== NOT EXECUTED
resolved[1] = 0;
4004312c: c0 2e 60 01 clrb [ %i1 + 1 ]
<== NOT EXECUTED
40043130: 10 bf ff ba b 40043018 <realpath+0x2e4>
<== NOT EXECUTED
40043134: ba 10 20 01 mov 1, %i5
<== NOT EXECUTED
if (resolved_len > 1 && resolved[resolved_len - 1] == '/')
40043138: 80 a7 60 01 cmp %i5, 1
<== NOT EXECUTED
4004313c: 08 bf ff 13 bleu 40042d88 <realpath+0x54>
<== NOT EXECUTED
40043140: b0 10 00 19 mov %i1, %i0
<== NOT EXECUTED
40043144: ba 07 7f ff add %i5, -1, %i5
<== NOT EXECUTED
40043148: c2 4e 40 1d ldsb [ %i1 + %i5 ], %g1
<== NOT EXECUTED
4004314c: 80 a0 60 2f cmp %g1, 0x2f
<== NOT EXECUTED
40043150: 12 80 00 22 bne 400431d8 <realpath+0x4a4>
<== NOT EXECUTED
40043154: 01 00 00 00 nop
<== NOT EXECUTED
resolved[resolved_len - 1] = '\0';
40043158: c0 2e 40 1d clrb [ %i1 + %i5 ]
<== NOT EXECUTED
4004315c: 81 c7 e0 08 ret
<== NOT EXECUTED
40043160: 81 e8 00 00 restore
<== NOT EXECUTED
errno = ENOENT;
40043164: 40 00 65 ec call 4005c914 <__errno>
<== NOT EXECUTED
40043168: b0 10 20 00 clr %i0
<== NOT EXECUTED
4004316c: 82 10 20 02 mov 2, %g1
<== NOT EXECUTED
40043170: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
return (NULL);
40043174: 81 c7 e0 08 ret
<== NOT EXECUTED
40043178: 81 e8 00 00 restore
<== NOT EXECUTED
if (m)
4004317c: 80 a4 a0 00 cmp %l2, 0
<== NOT EXECUTED
40043180: 02 bf ff de be 400430f8 <realpath+0x3c4>
<== NOT EXECUTED
40043184: 01 00 00 00 nop
<== NOT EXECUTED
return (NULL);
40043188: b0 10 20 00 clr %i0 ! 0 <PROM_START>
<== NOT EXECUTED
free(resolved);
4004318c: 7f ff 21 3d call 4000b680 <free>
<== NOT EXECUTED
40043190: 90 10 00 19 mov %i1, %o0
<== NOT EXECUTED
40043194: 81 c7 e0 08 ret
<== NOT EXECUTED
40043198: 81 e8 00 00 restore
<== NOT EXECUTED
errno = EINVAL;
4004319c: 40 00 65 de call 4005c914 <__errno>
<== NOT EXECUTED
400431a0: b0 10 20 00 clr %i0
<== NOT EXECUTED
400431a4: 82 10 20 16 mov 0x16, %g1
<== NOT EXECUTED
400431a8: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
return (NULL);
400431ac: 81 c7 e0 08 ret
<== NOT EXECUTED
400431b0: 81 e8 00 00 restore
<== NOT EXECUTED
if (m)
400431b4: 80 a4 a0 00 cmp %l2, 0
<== NOT EXECUTED
400431b8: 02 80 00 04 be 400431c8 <realpath+0x494>
<== NOT EXECUTED
400431bc: 01 00 00 00 nop
<== NOT EXECUTED
free(resolved);
400431c0: 7f ff 21 30 call 4000b680 <free>
<== NOT EXECUTED
400431c4: 90 10 00 19 mov %i1, %o0
<== NOT EXECUTED
errno = ELOOP;
400431c8: 40 00 65 d3 call 4005c914 <__errno>
<== NOT EXECUTED
400431cc: b0 10 20 00 clr %i0
<== NOT EXECUTED
400431d0: 82 10 20 5c mov 0x5c, %g1
<== NOT EXECUTED
400431d4: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
return (NULL);
400431d8: 81 c7 e0 08 ret
<== NOT EXECUTED
400431dc: 81 e8 00 00 restore
<== NOT EXECUTED
400431e0 <rmdir>:
/**
* POSIX 1003.1b - 5.2.2 - Remove a Directory
*/
int rmdir( const char *path )
{
400431e0: 9d e3 be f0 save %sp, -272, %sp
<== NOT EXECUTED
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 =
400431e4: 98 10 20 1b mov 0x1b, %o4
<== NOT EXECUTED
400431e8: 94 10 21 00 mov 0x100, %o2
<== NOT EXECUTED
400431ec: 92 10 00 18 mov %i0, %o1
<== NOT EXECUTED
400431f0: 96 07 bf 50 add %fp, -176, %o3
<== NOT EXECUTED
400431f4: 7f ff 28 1f call 4000d270 <rtems_filesystem_eval_path_start_with_parent>
<== NOT EXECUTED
400431f8: 90 07 bf 68 add %fp, -152, %o0
<== NOT EXECUTED
path,
eval_flags,
&parentloc,
parent_eval_flags
);
const rtems_filesystem_operations_table *ops = currentloc->mt_entry->ops;
400431fc: c2 02 20 14 ld [ %o0 + 0x14 ], %g1
<== NOT EXECUTED
40043200: f8 00 60 0c ld [ %g1 + 0xc ], %i4
<== NOT EXECUTED
40043204: c2 02 20 10 ld [ %o0 + 0x10 ], %g1
<== NOT EXECUTED
st.st_mode = 0;
40043208: c0 27 bf ac clr [ %fp + -84 ]
<== NOT EXECUTED
const rtems_filesystem_location_info_t *currentloc =
4004320c: ba 10 00 08 mov %o0, %i5
<== NOT EXECUTED
(void) ( *loc->handlers->fstat_h )( loc, &st );
40043210: c2 00 60 18 ld [ %g1 + 0x18 ], %g1
<== NOT EXECUTED
40043214: 9f c0 40 00 call %g1
<== NOT EXECUTED
40043218: 92 07 bf a0 add %fp, -96, %o1
<== NOT EXECUTED
mode_t type = rtems_filesystem_location_type( currentloc );
if ( S_ISDIR( type ) ) {
4004321c: 05 00 00 3c sethi %hi(0xf000), %g2
<== NOT EXECUTED
40043220: c2 07 bf ac ld [ %fp + -84 ], %g1
<== NOT EXECUTED
40043224: 82 08 40 02 and %g1, %g2, %g1
<== NOT EXECUTED
40043228: 05 00 00 10 sethi %hi(0x4000), %g2
<== NOT EXECUTED
4004322c: 80 a0 40 02 cmp %g1, %g2
<== NOT EXECUTED
40043230: 12 80 00 15 bne 40043284 <rmdir+0xa4>
<== NOT EXECUTED
40043234: 92 10 20 14 mov 0x14, %o1
<== NOT EXECUTED
const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
40043238: c2 07 60 14 ld [ %i5 + 0x14 ], %g1
<== NOT EXECUTED
return (*mt_entry->ops->are_nodes_equal_h)(
4004323c: c4 00 60 0c ld [ %g1 + 0xc ], %g2
<== NOT EXECUTED
40043240: c4 00 a0 10 ld [ %g2 + 0x10 ], %g2
<== NOT EXECUTED
40043244: d2 00 60 24 ld [ %g1 + 0x24 ], %o1
<== NOT EXECUTED
40043248: 9f c0 80 00 call %g2
<== NOT EXECUTED
4004324c: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
if ( !rtems_filesystem_location_is_instance_root( currentloc ) ) {
40043250: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
40043254: 12 80 00 11 bne 40043298 <rmdir+0xb8>
<== NOT EXECUTED
40043258: 92 10 20 10 mov 0x10, %o1
<== NOT EXECUTED
rv = (*ops->rmnod_h)( &parentloc, currentloc );
4004325c: c2 07 20 18 ld [ %i4 + 0x18 ], %g1
<== NOT EXECUTED
40043260: 92 10 00 1d mov %i5, %o1
<== NOT EXECUTED
40043264: 9f c0 40 00 call %g1
<== NOT EXECUTED
40043268: 90 07 bf 50 add %fp, -176, %o0
<== NOT EXECUTED
4004326c: b0 10 00 08 mov %o0, %i0
<== NOT EXECUTED
} else {
rtems_filesystem_eval_path_error( &ctx, ENOTDIR );
rv = -1;
}
rtems_filesystem_eval_path_cleanup_with_parent( &ctx, &parentloc );
40043270: 92 07 bf 50 add %fp, -176, %o1
<== NOT EXECUTED
40043274: 7f ff 28 4c call 4000d3a4 <rtems_filesystem_eval_path_cleanup_with_parent>
<== NOT EXECUTED
40043278: 90 07 bf 68 add %fp, -152, %o0
<== NOT EXECUTED
return rv;
}
4004327c: 81 c7 e0 08 ret
<== NOT EXECUTED
40043280: 81 e8 00 00 restore
<== NOT EXECUTED
rtems_filesystem_eval_path_error( &ctx, ENOTDIR );
40043284: 90 07 bf 68 add %fp, -152, %o0
<== NOT EXECUTED
40043288: 7f ff 27 33 call 4000cf54 <rtems_filesystem_eval_path_error>
<== NOT EXECUTED
4004328c: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
rtems_filesystem_eval_path_cleanup_with_parent( &ctx, &parentloc );
40043290: 10 bf ff f9 b 40043274 <rmdir+0x94>
<== NOT EXECUTED
40043294: 92 07 bf 50 add %fp, -176, %o1
<== NOT EXECUTED
rtems_filesystem_eval_path_error( &ctx, EBUSY );
40043298: 90 07 bf 68 add %fp, -152, %o0
<== NOT EXECUTED
4004329c: 7f ff 27 2e call 4000cf54 <rtems_filesystem_eval_path_error>
<== NOT EXECUTED
400432a0: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
rtems_filesystem_eval_path_cleanup_with_parent( &ctx, &parentloc );
400432a4: 10 bf ff f4 b 40043274 <rmdir+0x94>
<== NOT EXECUTED
400432a8: 92 07 bf 50 add %fp, -176, %o1
<== NOT EXECUTED
4001b92c <rtems_assoc_32_to_string>:
const rtems_assoc_32_pair *pairs,
size_t pair_count,
const char *separator,
const char *fallback
)
{
4001b92c: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
4001b930: a2 10 00 19 mov %i1, %l1
<== NOT EXECUTED
size_t len;
size_t i;
len = 0;
for ( i = 0; i < pair_count ; ++i ) {
4001b934: 80 a7 20 00 cmp %i4, 0
<== NOT EXECUTED
4001b938: 02 80 00 25 be 4001b9cc <rtems_assoc_32_to_string+0xa0>
<== NOT EXECUTED
4001b93c: f2 07 a0 5c ld [ %fp + 0x5c ], %i1
<== NOT EXECUTED
4001b940: b9 2f 20 03 sll %i4, 3, %i4
<== NOT EXECUTED
len = 0;
4001b944: a0 10 20 00 clr %l0
<== NOT EXECUTED
4001b948: b8 06 c0 1c add %i3, %i4, %i4
<== NOT EXECUTED
const rtems_assoc_32_pair *p;
p = &pairs[ i ];
if ( ( value & p->bits ) != 0 ) {
4001b94c: c2 06 c0 00 ld [ %i3 ], %g1
<== NOT EXECUTED
4001b950: 80 8e 00 01 btst %i0, %g1
<== NOT EXECUTED
4001b954: 22 80 00 16 be,a 4001b9ac <rtems_assoc_32_to_string+0x80>
<== NOT EXECUTED
4001b958: b6 06 e0 08 add %i3, 8, %i3
<== NOT EXECUTED
if ( len > 0 ) {
4001b95c: 80 a4 20 00 cmp %l0, 0
<== NOT EXECUTED
4001b960: 02 80 00 0b be 4001b98c <rtems_assoc_32_to_string+0x60>
<== NOT EXECUTED
4001b964: 90 10 00 11 mov %l1, %o0
<== NOT EXECUTED
if ( len < buffer_size ) {
4001b968: 80 a6 80 10 cmp %i2, %l0
<== NOT EXECUTED
len += strlcpy( &buffer[ len ], separator, space( buffer_size, len ) );
4001b96c: 90 04 40 10 add %l1, %l0, %o0
<== NOT EXECUTED
if ( len < buffer_size ) {
4001b970: 08 80 00 03 bleu 4001b97c <rtems_assoc_32_to_string+0x50>
<== NOT EXECUTED
4001b974: 94 10 20 00 clr %o2
<== NOT EXECUTED
return buffer_size - len;
4001b978: 94 26 80 10 sub %i2, %l0, %o2
<== NOT EXECUTED
len += strlcpy( &buffer[ len ], separator, space( buffer_size, len ) );
4001b97c: 40 00 10 ef call 4001fd38 <strlcpy>
<== NOT EXECUTED
4001b980: 92 10 00 1d mov %i5, %o1
<== NOT EXECUTED
4001b984: a0 04 00 08 add %l0, %o0, %l0
<== NOT EXECUTED
4001b988: 90 04 40 10 add %l1, %l0, %o0
<== NOT EXECUTED
}
len += strlcpy( &buffer[ len ], p->name, space( buffer_size, len ) );
4001b98c: d2 06 e0 04 ld [ %i3 + 4 ], %o1
<== NOT EXECUTED
if ( len < buffer_size ) {
4001b990: 80 a4 00 1a cmp %l0, %i2
<== NOT EXECUTED
4001b994: 1a 80 00 03 bcc 4001b9a0 <rtems_assoc_32_to_string+0x74>
<== NOT EXECUTED
4001b998: 94 10 20 00 clr %o2
<== NOT EXECUTED
return buffer_size - len;
4001b99c: 94 26 80 10 sub %i2, %l0, %o2
<== NOT EXECUTED
len += strlcpy( &buffer[ len ], p->name, space( buffer_size, len ) );
4001b9a0: 40 00 10 e6 call 4001fd38 <strlcpy>
<== NOT EXECUTED
4001b9a4: b6 06 e0 08 add %i3, 8, %i3
<== NOT EXECUTED
4001b9a8: a0 04 00 08 add %l0, %o0, %l0
<== NOT EXECUTED
for ( i = 0; i < pair_count ; ++i ) {
4001b9ac: 80 a7 00 1b cmp %i4, %i3
<== NOT EXECUTED
4001b9b0: 32 bf ff e8 bne,a 4001b950 <rtems_assoc_32_to_string+0x24>
<== NOT EXECUTED
4001b9b4: c2 06 c0 00 ld [ %i3 ], %g1
<== NOT EXECUTED
}
}
if ( len == 0 ) {
4001b9b8: 80 a4 20 00 cmp %l0, 0
<== NOT EXECUTED
4001b9bc: 02 80 00 04 be 4001b9cc <rtems_assoc_32_to_string+0xa0>
<== NOT EXECUTED
4001b9c0: b0 10 00 10 mov %l0, %i0
<== NOT EXECUTED
len += strlcpy( buffer, fallback, buffer_size );
}
return len;
}
4001b9c4: 81 c7 e0 08 ret
<== NOT EXECUTED
4001b9c8: 81 e8 00 00 restore
<== NOT EXECUTED
len += strlcpy( buffer, fallback, buffer_size );
4001b9cc: 40 00 10 db call 4001fd38 <strlcpy>
<== NOT EXECUTED
4001b9d0: 91 e8 00 11 restore %g0, %l1, %o0
<== NOT EXECUTED
4000e5b0 <rtems_assoc_local_by_remote>:
uint32_t rtems_assoc_local_by_remote(
const rtems_assoc_t *ap,
uint32_t remote_value
)
{
4000e5b0: 9d e3 bf a0 save %sp, -96, %sp
const rtems_assoc_t *nap;
nap = rtems_assoc_ptr_by_remote(ap, remote_value);
4000e5b4: 90 10 00 18 mov %i0, %o0
4000e5b8: 92 10 00 19 mov %i1, %o1
4000e5bc: 40 00 00 07 call 4000e5d8 <rtems_assoc_ptr_by_remote>
4000e5c0: b0 10 20 00 clr %i0
if (nap)
4000e5c4: 80 a2 20 00 cmp %o0, 0
4000e5c8: 32 80 00 02 bne,a 4000e5d0 <rtems_assoc_local_by_remote+0x20>
<== ALWAYS TAKEN
4000e5cc: f0 02 20 04 ld [ %o0 + 4 ], %i0
return nap->local_value;
return 0;
}
4000e5d0: 81 c7 e0 08 ret
4000e5d4: 81 e8 00 00 restore
4000e564 <rtems_assoc_local_by_remote_bitfield>:
uint32_t rtems_assoc_local_by_remote_bitfield(
const rtems_assoc_t *ap,
uint32_t remote_value
)
{
4000e564: 9d e3 bf a0 save %sp, -96, %sp
4000e568: b8 10 20 20 mov 0x20, %i4
uint32_t b;
uint32_t local_value = 0;
4000e56c: b6 10 20 00 clr %i3
for (b = 1; b; b <<= 1) {
4000e570: 10 80 00 04 b 4000e580 <rtems_assoc_local_by_remote_bitfield+0x1c>
4000e574: ba 10 20 01 mov 1, %i5
4000e578: 02 80 00 0c be 4000e5a8 <rtems_assoc_local_by_remote_bitfield+0x44>
4000e57c: bb 2f 60 01 sll %i5, 1, %i5
if (b & remote_value)
4000e580: 80 8e 40 1d btst %i1, %i5
4000e584: 22 bf ff fd be,a 4000e578 <rtems_assoc_local_by_remote_bitfield+0x14>
<== ALWAYS TAKEN
4000e588: b8 87 3f ff addcc %i4, -1, %i4
local_value |= rtems_assoc_local_by_remote(ap, b);
4000e58c: 92 10 00 1d mov %i5, %o1
<== NOT EXECUTED
4000e590: 40 00 00 08 call 4000e5b0 <rtems_assoc_local_by_remote>
<== NOT EXECUTED
4000e594: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
for (b = 1; b; b <<= 1) {
4000e598: bb 2f 60 01 sll %i5, 1, %i5
<== NOT EXECUTED
4000e59c: b8 87 3f ff addcc %i4, -1, %i4
<== NOT EXECUTED
4000e5a0: 12 bf ff f8 bne 4000e580 <rtems_assoc_local_by_remote_bitfield+0x1c>
<== NOT EXECUTED
4000e5a4: b6 16 c0 08 or %i3, %o0, %i3
<== NOT EXECUTED
}
return local_value;
}
4000e5a8: 81 c7 e0 08 ret
4000e5ac: 91 e8 00 1b restore %g0, %i3, %o0
4001ba20 <rtems_assoc_name_bad>:
sprintf(bad_buffer, "< %" PRId32 "[0x%" PRIx32 " ] >", bad_value, bad_value);
#else
static char bad_buffer[40] = "<assocnamebad.c: : BAD NAME>";
#endif
return bad_buffer;
4001ba20: 11 10 00 cb sethi %hi(0x40032c00), %o0
<== NOT EXECUTED
}
4001ba24: 81 c3 e0 08 retl
<== NOT EXECUTED
4001ba28: 90 12 23 40 or %o0, 0x340, %o0 ! 40032f40 <bad_buffer.5658>
<== NOT EXECUTED
40019550 <rtems_assoc_name_by_local>:
const char *rtems_assoc_name_by_local(
const rtems_assoc_t *ap,
uint32_t local_value
)
{
40019550: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
const rtems_assoc_t *nap;
nap = rtems_assoc_ptr_by_local(ap, local_value);
40019554: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
40019558: 40 00 00 0a call 40019580 <rtems_assoc_ptr_by_local>
<== NOT EXECUTED
4001955c: 92 10 00 19 mov %i1, %o1
<== NOT EXECUTED
if (nap)
40019560: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
40019564: 02 80 00 05 be 40019578 <rtems_assoc_name_by_local+0x28>
<== NOT EXECUTED
40019568: 01 00 00 00 nop
<== NOT EXECUTED
return nap->name;
4001956c: f0 02 00 00 ld [ %o0 ], %i0
<== NOT EXECUTED
return rtems_assoc_name_bad(local_value);
}
40019570: 81 c7 e0 08 ret
<== NOT EXECUTED
40019574: 81 e8 00 00 restore
<== NOT EXECUTED
return rtems_assoc_name_bad(local_value);
40019578: 40 00 09 2a call 4001ba20 <rtems_assoc_name_bad>
<== NOT EXECUTED
4001957c: 91 e8 00 19 restore %g0, %i1, %o0
<== NOT EXECUTED
40019580 <rtems_assoc_ptr_by_local>:
const rtems_assoc_t *rtems_assoc_ptr_by_local(
const rtems_assoc_t *ap,
uint32_t local_value
)
{
40019580: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
const rtems_assoc_t *default_ap = 0;
if (rtems_assoc_is_default(ap))
40019584: d0 06 00 00 ld [ %i0 ], %o0
<== NOT EXECUTED
{
40019588: ba 10 00 18 mov %i0, %i5
<== NOT EXECUTED
if (rtems_assoc_is_default(ap))
4001958c: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
40019590: 02 80 00 16 be 400195e8 <rtems_assoc_ptr_by_local+0x68>
<== NOT EXECUTED
40019594: b0 10 20 00 clr %i0
<== NOT EXECUTED
40019598: 13 10 00 c1 sethi %hi(0x40030400), %o1
<== NOT EXECUTED
4001959c: 40 00 17 e8 call 4001f53c <strcmp>
<== NOT EXECUTED
400195a0: 92 12 60 08 or %o1, 8, %o1 ! 40030408 <IMFS_LIMITS_AND_OPTIONS+0x34>
<== NOT EXECUTED
400195a4: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
400195a8: 22 80 00 12 be,a 400195f0 <rtems_assoc_ptr_by_local+0x70>
<== NOT EXECUTED
400195ac: c4 07 60 0c ld [ %i5 + 0xc ], %g2
<== NOT EXECUTED
default_ap = ap++;
for ( ; ap->name; ap++)
if (ap->local_value == local_value)
400195b0: c2 07 60 04 ld [ %i5 + 4 ], %g1
<== NOT EXECUTED
400195b4: 80 a6 40 01 cmp %i1, %g1
<== NOT EXECUTED
400195b8: 32 80 00 08 bne,a 400195d8 <rtems_assoc_ptr_by_local+0x58>
<== NOT EXECUTED
400195bc: ba 07 60 0c add %i5, 0xc, %i5
<== NOT EXECUTED
for ( ; ap->name; ap++)
400195c0: 81 c7 e0 08 ret
<== NOT EXECUTED
400195c4: 91 e8 00 1d restore %g0, %i5, %o0
<== NOT EXECUTED
if (ap->local_value == local_value)
400195c8: 80 a0 40 19 cmp %g1, %i1
<== NOT EXECUTED
400195cc: 22 80 00 07 be,a 400195e8 <rtems_assoc_ptr_by_local+0x68>
<== NOT EXECUTED
400195d0: b0 10 00 1d mov %i5, %i0
<== NOT EXECUTED
for ( ; ap->name; ap++)
400195d4: ba 07 60 0c add %i5, 0xc, %i5
<== NOT EXECUTED
400195d8: c2 07 40 00 ld [ %i5 ], %g1
<== NOT EXECUTED
400195dc: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
400195e0: 32 bf ff fa bne,a 400195c8 <rtems_assoc_ptr_by_local+0x48>
<== NOT EXECUTED
400195e4: c2 07 60 04 ld [ %i5 + 4 ], %g1
<== NOT EXECUTED
400195e8: 81 c7 e0 08 ret
<== NOT EXECUTED
400195ec: 81 e8 00 00 restore
<== NOT EXECUTED
default_ap = ap++;
400195f0: 82 07 60 0c add %i5, 0xc, %g1
<== NOT EXECUTED
for ( ; ap->name; ap++)
400195f4: b0 10 00 1d mov %i5, %i0
<== NOT EXECUTED
400195f8: 80 a0 a0 00 cmp %g2, 0
<== NOT EXECUTED
400195fc: 12 bf ff ed bne 400195b0 <rtems_assoc_ptr_by_local+0x30>
<== NOT EXECUTED
40019600: ba 10 00 01 mov %g1, %i5
<== NOT EXECUTED
40019604: 81 c7 e0 08 ret
<== NOT EXECUTED
40019608: 81 e8 00 00 restore
<== NOT EXECUTED
4000e5d8 <rtems_assoc_ptr_by_remote>:
const rtems_assoc_t *rtems_assoc_ptr_by_remote(
const rtems_assoc_t *ap,
uint32_t remote_value
)
{
4000e5d8: 9d e3 bf a0 save %sp, -96, %sp
const rtems_assoc_t *default_ap = 0;
if (rtems_assoc_is_default(ap))
4000e5dc: d0 06 00 00 ld [ %i0 ], %o0
{
4000e5e0: ba 10 00 18 mov %i0, %i5
if (rtems_assoc_is_default(ap))
4000e5e4: 80 a2 20 00 cmp %o0, 0
4000e5e8: 02 80 00 16 be 4000e640 <rtems_assoc_ptr_by_remote+0x68>
<== NEVER TAKEN
4000e5ec: b0 10 20 00 clr %i0
4000e5f0: 13 10 00 42 sethi %hi(0x40010800), %o1
4000e5f4: 40 00 01 5d call 4000eb68 <strcmp>
4000e5f8: 92 12 63 90 or %o1, 0x390, %o1 ! 40010b90 <CSWTCH.1+0x10>
4000e5fc: 80 a2 20 00 cmp %o0, 0
4000e600: 22 80 00 12 be,a 4000e648 <rtems_assoc_ptr_by_remote+0x70>
<== NEVER TAKEN
4000e604: c4 07 60 0c ld [ %i5 + 0xc ], %g2
<== NOT EXECUTED
default_ap = ap++;
for ( ; ap->name; ap++)
if (ap->remote_value == remote_value)
4000e608: c2 07 60 08 ld [ %i5 + 8 ], %g1
4000e60c: 80 a6 40 01 cmp %i1, %g1
4000e610: 32 80 00 08 bne,a 4000e630 <rtems_assoc_ptr_by_remote+0x58>
4000e614: ba 07 60 0c add %i5, 0xc, %i5
for ( ; ap->name; ap++)
4000e618: 81 c7 e0 08 ret
4000e61c: 91 e8 00 1d restore %g0, %i5, %o0
if (ap->remote_value == remote_value)
4000e620: 80 a0 40 19 cmp %g1, %i1
4000e624: 22 80 00 07 be,a 4000e640 <rtems_assoc_ptr_by_remote+0x68>
4000e628: b0 10 00 1d mov %i5, %i0
for ( ; ap->name; ap++)
4000e62c: ba 07 60 0c add %i5, 0xc, %i5
4000e630: c2 07 40 00 ld [ %i5 ], %g1
4000e634: 80 a0 60 00 cmp %g1, 0
4000e638: 32 bf ff fa bne,a 4000e620 <rtems_assoc_ptr_by_remote+0x48>
<== ALWAYS TAKEN
4000e63c: c2 07 60 08 ld [ %i5 + 8 ], %g1
4000e640: 81 c7 e0 08 ret
4000e644: 81 e8 00 00 restore
default_ap = ap++;
4000e648: 82 07 60 0c add %i5, 0xc, %g1
<== NOT EXECUTED
for ( ; ap->name; ap++)
4000e64c: b0 10 00 1d mov %i5, %i0
<== NOT EXECUTED
4000e650: 80 a0 a0 00 cmp %g2, 0
<== NOT EXECUTED
4000e654: 12 bf ff ed bne 4000e608 <rtems_assoc_ptr_by_remote+0x30>
<== NOT EXECUTED
4000e658: ba 10 00 01 mov %g1, %i5
<== NOT EXECUTED
4000e65c: 81 c7 e0 08 ret
<== NOT EXECUTED
4000e660: 81 e8 00 00 restore
<== NOT EXECUTED
40019698 <rtems_assoc_thread_states_to_string>:
size_t rtems_assoc_thread_states_to_string(
uint32_t states,
char *buffer,
size_t buffer_size
)
{
40019698: 9d e3 bf 98 save %sp, -104, %sp
<== NOT EXECUTED
return rtems_assoc_32_to_string(
4001969c: 03 10 00 c1 sethi %hi(0x40030400), %g1
<== NOT EXECUTED
400196a0: 82 10 60 18 or %g1, 0x18, %g1 ! 40030418 <IMFS_LIMITS_AND_OPTIONS+0x44>
<== NOT EXECUTED
400196a4: c2 23 a0 5c st %g1, [ %sp + 0x5c ]
<== NOT EXECUTED
400196a8: 98 10 20 17 mov 0x17, %o4
<== NOT EXECUTED
400196ac: 94 10 00 1a mov %i2, %o2
<== NOT EXECUTED
400196b0: 92 10 00 19 mov %i1, %o1
<== NOT EXECUTED
400196b4: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
400196b8: 1b 10 00 bf sethi %hi(0x4002fc00), %o5
<== NOT EXECUTED
400196bc: 17 10 00 c1 sethi %hi(0x40030400), %o3
<== NOT EXECUTED
400196c0: 9a 13 63 40 or %o5, 0x340, %o5
<== NOT EXECUTED
400196c4: 40 00 08 9a call 4001b92c <rtems_assoc_32_to_string>
<== NOT EXECUTED
400196c8: 96 12 e0 d8 or %o3, 0xd8, %o3
<== NOT EXECUTED
state_pairs,
RTEMS_ARRAY_SIZE( state_pairs ),
":",
"READY"
);
}
400196cc: 81 c7 e0 08 ret
<== NOT EXECUTED
400196d0: 91 e8 00 08 restore %g0, %o0, %o0
<== NOT EXECUTED
4000b310 <rtems_cache_aligned_malloc>:
#include <rtems.h>
#include <rtems/malloc.h>
void *rtems_cache_aligned_malloc( size_t nbytes )
{
4000b310: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
size_t line_size = rtems_cache_get_maximal_line_size();
4000b314: 40 01 bc 61 call 4007a498 <rtems_cache_get_maximal_line_size>
<== NOT EXECUTED
4000b318: 01 00 00 00 nop
<== NOT EXECUTED
if ( line_size > 0 ) {
4000b31c: b2 92 20 00 orcc %o0, 0, %i1
<== NOT EXECUTED
4000b320: 02 80 00 05 be 4000b334 <rtems_cache_aligned_malloc+0x24>
<== NOT EXECUTED
4000b324: 82 06 3f ff add %i0, -1, %g1
<== NOT EXECUTED
/* Assume that the cache line size is a power of two */
size_t m = line_size - 1;
nbytes = (nbytes + m) & ~m;
4000b328: b0 20 00 19 neg %i1, %i0
<== NOT EXECUTED
4000b32c: 82 00 40 19 add %g1, %i1, %g1
<== NOT EXECUTED
4000b330: b0 0e 00 01 and %i0, %g1, %i0
<== NOT EXECUTED
}
return rtems_heap_allocate_aligned_with_boundary( nbytes, line_size, 0 );
4000b334: 40 00 02 25 call 4000bbc8 <rtems_heap_allocate_aligned_with_boundary>
<== NOT EXECUTED
4000b338: 95 e8 20 00 restore %g0, 0, %o2
<== NOT EXECUTED
400052b0 <rtems_current_user_env_get>:
{
400052b0: 9d e3 bf a0 save %sp, -96, %sp
void *ptr = pthread_getspecific(rtems_current_user_env_key);
400052b4: 03 10 00 4d sethi %hi(0x40013400), %g1
400052b8: 40 00 03 fb call 400062a4 <pthread_getspecific>
400052bc: d0 00 60 cc ld [ %g1 + 0xcc ], %o0 ! 400134cc <rtems_current_user_env_key>
if (ptr == NULL) {
400052c0: b0 92 20 00 orcc %o0, 0, %i0
400052c4: 22 80 00 04 be,a 400052d4 <rtems_current_user_env_get+0x24>
<== ALWAYS TAKEN
400052c8: 31 10 00 47 sethi %hi(0x40011c00), %i0
}
400052cc: 81 c7 e0 08 ret
<== NOT EXECUTED
400052d0: 81 e8 00 00 restore
<== NOT EXECUTED
400052d4: 81 c7 e0 08 ret
400052d8: 91 ee 22 28 restore %i0, 0x228, %o0
400436f0 <rtems_current_user_env_getgroups>:
#include <sys/types.h>
#include <unistd.h>
void rtems_current_user_env_getgroups(void)
{
400436f0: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
rtems_user_env_t *uenv = rtems_current_user_env_get();
400436f4: 7f ff 23 d6 call 4000c64c <rtems_current_user_env_get>
<== NOT EXECUTED
400436f8: 01 00 00 00 nop
<== NOT EXECUTED
400436fc: ba 10 00 08 mov %o0, %i5
<== NOT EXECUTED
int ngroups = (int) RTEMS_ARRAY_SIZE( uenv->groups );
ngroups = getgroups( ngroups, &uenv->groups[ 0 ] );
40043700: 90 10 20 10 mov 0x10, %o0
<== NOT EXECUTED
40043704: 40 00 54 0e call 4005873c <getgroups>
<== NOT EXECUTED
40043708: 92 07 60 28 add %i5, 0x28, %o1
<== NOT EXECUTED
if ( ngroups > 0 ) {
4004370c: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
40043710: 24 80 00 03 ble,a 4004371c <rtems_current_user_env_getgroups+0x2c>
<== NOT EXECUTED
40043714: c0 27 60 24 clr [ %i5 + 0x24 ]
<== NOT EXECUTED
uenv->ngroups = (size_t) ngroups;
40043718: d0 27 60 24 st %o0, [ %i5 + 0x24 ]
<== NOT EXECUTED
4004371c: 81 c7 e0 08 ret
<== NOT EXECUTED
40043720: 81 e8 00 00 restore
<== NOT EXECUTED
} else {
uenv->ngroups = 0;
}
}
40043724: 81 c7 e0 08 ret
<== NOT EXECUTED
40043728: 81 e8 00 00 restore
<== NOT EXECUTED
4000d720 <rtems_deviceio_close>:
int rtems_deviceio_close(
rtems_libio_t *iop,
rtems_device_major_number major,
rtems_device_minor_number minor
)
{
4000d720: 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 );
4000d724: 94 07 bf f4 add %fp, -12, %o2
<== NOT EXECUTED
4000d728: 92 10 00 1a mov %i2, %o1
<== NOT EXECUTED
args.iop = iop;
4000d72c: f0 27 bf f4 st %i0, [ %fp + -12 ]
<== NOT EXECUTED
status = rtems_io_close( major, minor, &args );
4000d730: 90 10 00 19 mov %i1, %o0
<== NOT EXECUTED
args.flags = 0;
4000d734: c0 27 bf f8 clr [ %fp + -8 ]
<== NOT EXECUTED
status = rtems_io_close( major, minor, &args );
4000d738: 40 00 00 ae call 4000d9f0 <rtems_io_close>
<== NOT EXECUTED
4000d73c: c0 27 bf fc clr [ %fp + -4 ]
<== NOT EXECUTED
return rtems_status_code_to_errno( status );
4000d740: 40 00 00 96 call 4000d998 <rtems_status_code_to_errno>
<== NOT EXECUTED
4000d744: 01 00 00 00 nop
<== NOT EXECUTED
}
4000d748: 81 c7 e0 08 ret
<== NOT EXECUTED
4000d74c: 91 e8 00 08 restore %g0, %o0, %o0
<== NOT EXECUTED
4000d830 <rtems_deviceio_control>:
ioctl_command_t command,
void *buffer,
rtems_device_major_number major,
rtems_device_minor_number minor
)
{
4000d830: 9d e3 bf 90 save %sp, -112, %sp
<== NOT EXECUTED
rtems_status_code status;
rtems_libio_ioctl_args_t args;
args.iop = iop;
4000d834: f0 27 bf f0 st %i0, [ %fp + -16 ]
<== NOT EXECUTED
args.command = command;
args.buffer = buffer;
status = rtems_io_control( major, minor, &args );
4000d838: 94 07 bf f0 add %fp, -16, %o2
<== NOT EXECUTED
args.command = command;
4000d83c: f2 27 bf f4 st %i1, [ %fp + -12 ]
<== NOT EXECUTED
status = rtems_io_control( major, minor, &args );
4000d840: 92 10 00 1c mov %i4, %o1
<== NOT EXECUTED
args.buffer = buffer;
4000d844: f4 27 bf f8 st %i2, [ %fp + -8 ]
<== NOT EXECUTED
status = rtems_io_control( major, minor, &args );
4000d848: 40 00 00 82 call 4000da50 <rtems_io_control>
<== NOT EXECUTED
4000d84c: 90 10 00 1b mov %i3, %o0
<== NOT EXECUTED
if ( status == RTEMS_SUCCESSFUL ) {
4000d850: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
4000d854: 12 80 00 05 bne 4000d868 <rtems_deviceio_control+0x38>
<== NOT EXECUTED
4000d858: 01 00 00 00 nop
<== NOT EXECUTED
return args.ioctl_return;
4000d85c: f0 07 bf fc ld [ %fp + -4 ], %i0
<== NOT EXECUTED
4000d860: 81 c7 e0 08 ret
<== NOT EXECUTED
4000d864: 81 e8 00 00 restore
<== NOT EXECUTED
} else {
return rtems_status_code_to_errno(status);
4000d868: 40 00 00 4c call 4000d998 <rtems_status_code_to_errno>
<== NOT EXECUTED
4000d86c: 01 00 00 00 nop
<== NOT EXECUTED
}
}
4000d870: 81 c7 e0 08 ret
<== NOT EXECUTED
4000d874: 91 e8 00 08 restore %g0, %o0, %o0
<== NOT EXECUTED
4000d6ec <rtems_deviceio_open>:
int oflag,
mode_t mode,
rtems_device_major_number major,
rtems_device_minor_number minor
)
{
4000d6ec: 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;
4000d6f0: c2 06 20 08 ld [ %i0 + 8 ], %g1
<== NOT EXECUTED
args.mode = mode;
status = rtems_io_open( major, minor, &args );
4000d6f4: 94 07 bf f4 add %fp, -12, %o2
<== NOT EXECUTED
4000d6f8: 92 10 00 1d mov %i5, %o1
<== NOT EXECUTED
args.iop = iop;
4000d6fc: f0 27 bf f4 st %i0, [ %fp + -12 ]
<== NOT EXECUTED
status = rtems_io_open( major, minor, &args );
4000d700: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
args.flags = iop->flags;
4000d704: c2 27 bf f8 st %g1, [ %fp + -8 ]
<== NOT EXECUTED
status = rtems_io_open( major, minor, &args );
4000d708: 40 00 01 01 call 4000db0c <rtems_io_open>
<== NOT EXECUTED
4000d70c: f6 27 bf fc st %i3, [ %fp + -4 ]
<== NOT EXECUTED
return rtems_status_code_to_errno( status );
4000d710: 40 00 00 a2 call 4000d998 <rtems_status_code_to_errno>
<== NOT EXECUTED
4000d714: 01 00 00 00 nop
<== NOT EXECUTED
}
4000d718: 81 c7 e0 08 ret
<== NOT EXECUTED
4000d71c: 91 e8 00 08 restore %g0, %o0, %o0
<== NOT EXECUTED
4000d750 <rtems_deviceio_read>:
void *buf,
size_t nbyte,
rtems_device_major_number major,
rtems_device_minor_number minor
)
{
4000d750: 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;
4000d754: c4 1e 00 00 ldd [ %i0 ], %g2
<== NOT EXECUTED
args.buffer = buf;
args.count = nbyte;
args.flags = iop->flags;
4000d758: c2 06 20 08 ld [ %i0 + 8 ], %g1
<== NOT EXECUTED
args.iop = iop;
4000d75c: f0 27 bf e0 st %i0, [ %fp + -32 ]
<== NOT EXECUTED
args.bytes_moved = 0;
status = rtems_io_read( major, minor, &args );
4000d760: 94 07 bf e0 add %fp, -32, %o2
<== NOT EXECUTED
args.offset = iop->offset;
4000d764: c4 3f bf e8 std %g2, [ %fp + -24 ]
<== NOT EXECUTED
status = rtems_io_read( major, minor, &args );
4000d768: 92 10 00 1c mov %i4, %o1
<== NOT EXECUTED
args.buffer = buf;
4000d76c: f2 27 bf f0 st %i1, [ %fp + -16 ]
<== NOT EXECUTED
status = rtems_io_read( major, minor, &args );
4000d770: 90 10 00 1b mov %i3, %o0
<== NOT EXECUTED
args.count = nbyte;
4000d774: f4 27 bf f4 st %i2, [ %fp + -12 ]
<== NOT EXECUTED
{
4000d778: ba 10 00 18 mov %i0, %i5
<== NOT EXECUTED
args.flags = iop->flags;
4000d77c: c2 27 bf f8 st %g1, [ %fp + -8 ]
<== NOT EXECUTED
status = rtems_io_read( major, minor, &args );
4000d780: 40 00 00 fb call 4000db6c <rtems_io_read>
<== NOT EXECUTED
4000d784: c0 27 bf fc clr [ %fp + -4 ]
<== NOT EXECUTED
if ( status == RTEMS_SUCCESSFUL ) {
4000d788: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
4000d78c: 12 80 00 09 bne 4000d7b0 <rtems_deviceio_read+0x60>
<== NOT EXECUTED
4000d790: 01 00 00 00 nop
<== NOT EXECUTED
iop->offset += args.bytes_moved;
4000d794: f4 1f 40 00 ldd [ %i5 ], %i2
<== NOT EXECUTED
4000d798: f0 07 bf fc ld [ %fp + -4 ], %i0
<== NOT EXECUTED
4000d79c: 86 86 c0 18 addcc %i3, %i0, %g3
<== NOT EXECUTED
4000d7a0: 84 46 a0 00 addx %i2, 0, %g2
<== NOT EXECUTED
4000d7a4: c4 3f 40 00 std %g2, [ %i5 ]
<== NOT EXECUTED
return (ssize_t) args.bytes_moved;
4000d7a8: 81 c7 e0 08 ret
<== NOT EXECUTED
4000d7ac: 81 e8 00 00 restore
<== NOT EXECUTED
} else {
return rtems_status_code_to_errno( status );
4000d7b0: 40 00 00 7a call 4000d998 <rtems_status_code_to_errno>
<== NOT EXECUTED
4000d7b4: 01 00 00 00 nop
<== NOT EXECUTED
}
}
4000d7b8: 81 c7 e0 08 ret
<== NOT EXECUTED
4000d7bc: 91 e8 00 08 restore %g0, %o0, %o0
<== NOT EXECUTED
4000d7c0 <rtems_deviceio_write>:
const void *buf,
size_t nbyte,
rtems_device_major_number major,
rtems_device_minor_number minor
)
{
4000d7c0: 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;
4000d7c4: c4 1e 00 00 ldd [ %i0 ], %g2
<== NOT EXECUTED
args.buffer = RTEMS_DECONST( void *, buf );
args.count = nbyte;
args.flags = iop->flags;
4000d7c8: c2 06 20 08 ld [ %i0 + 8 ], %g1
<== NOT EXECUTED
args.iop = iop;
4000d7cc: f0 27 bf e0 st %i0, [ %fp + -32 ]
<== NOT EXECUTED
args.bytes_moved = 0;
status = rtems_io_write( major, minor, &args );
4000d7d0: 94 07 bf e0 add %fp, -32, %o2
<== NOT EXECUTED
args.offset = iop->offset;
4000d7d4: c4 3f bf e8 std %g2, [ %fp + -24 ]
<== NOT EXECUTED
status = rtems_io_write( major, minor, &args );
4000d7d8: 92 10 00 1c mov %i4, %o1
<== NOT EXECUTED
args.buffer = RTEMS_DECONST( void *, buf );
4000d7dc: f2 27 bf f0 st %i1, [ %fp + -16 ]
<== NOT EXECUTED
status = rtems_io_write( major, minor, &args );
4000d7e0: 90 10 00 1b mov %i3, %o0
<== NOT EXECUTED
args.count = nbyte;
4000d7e4: f4 27 bf f4 st %i2, [ %fp + -12 ]
<== NOT EXECUTED
{
4000d7e8: ba 10 00 18 mov %i0, %i5
<== NOT EXECUTED
args.flags = iop->flags;
4000d7ec: c2 27 bf f8 st %g1, [ %fp + -8 ]
<== NOT EXECUTED
status = rtems_io_write( major, minor, &args );
4000d7f0: 40 00 00 f7 call 4000dbcc <rtems_io_write>
<== NOT EXECUTED
4000d7f4: c0 27 bf fc clr [ %fp + -4 ]
<== NOT EXECUTED
if ( status == RTEMS_SUCCESSFUL ) {
4000d7f8: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
4000d7fc: 12 80 00 09 bne 4000d820 <rtems_deviceio_write+0x60>
<== NOT EXECUTED
4000d800: 01 00 00 00 nop
<== NOT EXECUTED
iop->offset += args.bytes_moved;
4000d804: f4 1f 40 00 ldd [ %i5 ], %i2
<== NOT EXECUTED
4000d808: f0 07 bf fc ld [ %fp + -4 ], %i0
<== NOT EXECUTED
4000d80c: 86 86 c0 18 addcc %i3, %i0, %g3
<== NOT EXECUTED
4000d810: 84 46 a0 00 addx %i2, 0, %g2
<== NOT EXECUTED
4000d814: c4 3f 40 00 std %g2, [ %i5 ]
<== NOT EXECUTED
return (ssize_t) args.bytes_moved;
4000d818: 81 c7 e0 08 ret
<== NOT EXECUTED
4000d81c: 81 e8 00 00 restore
<== NOT EXECUTED
} else {
return rtems_status_code_to_errno( status );
4000d820: 40 00 00 5e call 4000d998 <rtems_status_code_to_errno>
<== NOT EXECUTED
4000d824: 01 00 00 00 nop
<== NOT EXECUTED
}
}
4000d828: 81 c7 e0 08 ret
<== NOT EXECUTED
4000d82c: 91 e8 00 08 restore %g0, %o0, %o0
<== NOT EXECUTED
400198e0 <rtems_error>:
int rtems_error(
rtems_error_code_t error_flag,
const char *printf_format,
...
)
{
400198e0: 9d e3 bf 98 save %sp, -104, %sp
<== NOT EXECUTED
va_list arglist;
int chars_written;
va_start(arglist, printf_format);
400198e4: 82 07 a0 4c add %fp, 0x4c, %g1
<== NOT EXECUTED
400198e8: f4 27 a0 4c st %i2, [ %fp + 0x4c ]
<== NOT EXECUTED
chars_written = rtems_verror(error_flag, printf_format, arglist);
400198ec: 94 10 00 01 mov %g1, %o2
<== NOT EXECUTED
va_start(arglist, printf_format);
400198f0: c2 27 bf fc st %g1, [ %fp + -4 ]
<== NOT EXECUTED
chars_written = rtems_verror(error_flag, printf_format, arglist);
400198f4: 92 10 00 19 mov %i1, %o1
<== NOT EXECUTED
va_start(arglist, printf_format);
400198f8: f6 27 a0 50 st %i3, [ %fp + 0x50 ]
<== NOT EXECUTED
chars_written = rtems_verror(error_flag, printf_format, arglist);
400198fc: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
va_start(arglist, printf_format);
40019900: f8 27 a0 54 st %i4, [ %fp + 0x54 ]
<== NOT EXECUTED
chars_written = rtems_verror(error_flag, printf_format, arglist);
40019904: 7f ff ff 87 call 40019720 <rtems_verror>
<== NOT EXECUTED
40019908: fa 27 a0 58 st %i5, [ %fp + 0x58 ]
<== NOT EXECUTED
va_end(arglist);
if (error_flag & RTEMS_ERROR_PANIC) {
4001990c: 03 08 00 00 sethi %hi(0x20000000), %g1
<== NOT EXECUTED
40019910: 80 8e 00 01 btst %i0, %g1
<== NOT EXECUTED
40019914: 12 80 00 07 bne 40019930 <rtems_error+0x50>
<== NOT EXECUTED
40019918: 03 04 00 00 sethi %hi(0x10000000), %g1
<== NOT EXECUTED
rtems_error(0, "fatal error, exiting");
_exit(errno);
}
if (error_flag & RTEMS_ERROR_ABORT) {
4001991c: 80 8e 00 01 btst %i0, %g1
<== NOT EXECUTED
40019920: 12 80 00 0c bne 40019950 <rtems_error+0x70>
<== NOT EXECUTED
40019924: b0 10 00 08 mov %o0, %i0
<== NOT EXECUTED
rtems_error(0, "fatal error, aborting");
abort();
}
return chars_written;
}
40019928: 81 c7 e0 08 ret
<== NOT EXECUTED
4001992c: 81 e8 00 00 restore
<== NOT EXECUTED
rtems_error(0, "fatal error, exiting");
40019930: 13 10 00 c1 sethi %hi(0x40030400), %o1
<== NOT EXECUTED
40019934: 92 12 61 c8 or %o1, 0x1c8, %o1 ! 400305c8 <state_pairs+0xf0>
<== NOT EXECUTED
40019938: 7f ff ff ea call 400198e0 <rtems_error>
<== NOT EXECUTED
4001993c: 90 10 20 00 clr %o0
<== NOT EXECUTED
_exit(errno);
40019940: 40 00 08 f0 call 4001bd00 <__errno>
<== NOT EXECUTED
40019944: 01 00 00 00 nop
<== NOT EXECUTED
40019948: 40 00 00 dd call 40019cbc <_exit>
<== NOT EXECUTED
4001994c: d0 02 00 00 ld [ %o0 ], %o0
<== NOT EXECUTED
rtems_error(0, "fatal error, aborting");
40019950: 13 10 00 c1 sethi %hi(0x40030400), %o1
<== NOT EXECUTED
40019954: 92 12 61 e0 or %o1, 0x1e0, %o1 ! 400305e0 <state_pairs+0x108>
<== NOT EXECUTED
40019958: 7f ff ff e2 call 400198e0 <rtems_error>
<== NOT EXECUTED
4001995c: 90 10 20 00 clr %o0
<== NOT EXECUTED
abort();
40019960: 40 00 08 db call 4001bccc <abort>
<== NOT EXECUTED
40019964: 01 00 00 00 nop
<== NOT EXECUTED
40019968: 01 00 00 00 nop
<== NOT EXECUTED
400417bc <rtems_filesystem_chdir>:
#include <unistd.h>
#include <rtems/libio_.h>
int rtems_filesystem_chdir( rtems_filesystem_location_info_t *loc )
{
400417bc: 9d e3 bf 40 save %sp, -192, %sp
<== NOT EXECUTED
int rv = 0;
rtems_filesystem_global_location_t *global_loc =
400417c0: 7f ff 30 64 call 4000d950 <rtems_filesystem_location_transform_to_global>
<== NOT EXECUTED
400417c4: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
st.st_mode = 0;
400417c8: c0 27 bf ac clr [ %fp + -84 ]
<== NOT EXECUTED
400417cc: ba 10 00 08 mov %o0, %i5
<== NOT EXECUTED
(void) ( *loc->handlers->fstat_h )( loc, &st );
400417d0: c2 02 20 10 ld [ %o0 + 0x10 ], %g1
<== NOT EXECUTED
400417d4: c2 00 60 18 ld [ %g1 + 0x18 ], %g1
<== NOT EXECUTED
400417d8: 9f c0 40 00 call %g1
<== NOT EXECUTED
400417dc: 92 07 bf a0 add %fp, -96, %o1
<== NOT EXECUTED
rtems_filesystem_location_transform_to_global( loc );
mode_t type = rtems_filesystem_location_type( &global_loc->location );
if ( S_ISDIR( type ) ) {
400417e0: 05 00 00 3c sethi %hi(0xf000), %g2
<== NOT EXECUTED
400417e4: c2 07 bf ac ld [ %fp + -84 ], %g1
<== NOT EXECUTED
400417e8: 82 08 40 02 and %g1, %g2, %g1
<== NOT EXECUTED
400417ec: 05 00 00 10 sethi %hi(0x4000), %g2
<== NOT EXECUTED
400417f0: 80 a0 40 02 cmp %g1, %g2
<== NOT EXECUTED
400417f4: 32 80 00 08 bne,a 40041814 <rtems_filesystem_chdir+0x58>
<== NOT EXECUTED
400417f8: c4 07 60 10 ld [ %i5 + 0x10 ], %g2
<== NOT EXECUTED
rtems_filesystem_global_location_assign(
&rtems_filesystem_current,
400417fc: 7f ff 2b 94 call 4000c64c <rtems_current_user_env_get>
<== NOT EXECUTED
40041800: b0 10 20 00 clr %i0
<== NOT EXECUTED
rtems_filesystem_global_location_assign(
40041804: 7f ff 2f fd call 4000d7f8 <rtems_filesystem_global_location_assign>
<== NOT EXECUTED
40041808: 92 10 00 1d mov %i5, %o1
<== NOT EXECUTED
4004180c: 81 c7 e0 08 ret
<== NOT EXECUTED
40041810: 81 e8 00 00 restore
<== NOT EXECUTED
if ( !rtems_filesystem_location_is_null( loc ) ) {
40041814: 03 10 01 f4 sethi %hi(0x4007d000), %g1
<== NOT EXECUTED
40041818: 82 10 62 58 or %g1, 0x258, %g1 ! 4007d258 <rtems_filesystem_null_handlers>
<== NOT EXECUTED
4004181c: 80 a0 80 01 cmp %g2, %g1
<== NOT EXECUTED
40041820: 02 80 00 07 be 4004183c <rtems_filesystem_chdir+0x80>
<== NOT EXECUTED
40041824: 92 10 20 01 mov 1, %o1
<== NOT EXECUTED
errno = eno;
40041828: 40 00 6c 3b call 4005c914 <__errno>
<== NOT EXECUTED
4004182c: 01 00 00 00 nop
<== NOT EXECUTED
40041830: 82 10 20 14 mov 0x14, %g1 ! 14 <_TLS_Alignment+0x13>
<== NOT EXECUTED
40041834: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
global_loc
);
} else {
rtems_filesystem_location_error( &global_loc->location, ENOTDIR );
rtems_filesystem_global_location_release( global_loc, true );
40041838: 92 10 20 01 mov 1, %o1
<== NOT EXECUTED
4004183c: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
40041840: 7f ff 2f d4 call 4000d790 <rtems_filesystem_global_location_release>
<== NOT EXECUTED
40041844: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
rv = -1;
}
return rv;
}
40041848: 81 c7 e0 08 ret
<== NOT EXECUTED
4004184c: 81 e8 00 00 restore
<== NOT EXECUTED
4000533c <rtems_filesystem_check_access>:
int flags,
mode_t object_mode,
uid_t object_uid,
gid_t object_gid
)
{
4000533c: 9d e3 bf a0 save %sp, -96, %sp
const rtems_user_env_t *uenv = rtems_current_user_env_get();
40005340: 7f ff ff dc call 400052b0 <rtems_current_user_env_get>
40005344: 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) {
40005348: c2 12 20 10 lduh [ %o0 + 0x10 ], %g1
4000534c: 80 a0 60 00 cmp %g1, 0
40005350: 02 80 00 24 be 400053e0 <rtems_filesystem_check_access+0xa4>
<== ALWAYS TAKEN
40005354: 80 a0 40 1a cmp %g1, %i2
40005358: 22 80 00 23 be,a 400053e4 <rtems_filesystem_check_access+0xa8>
<== NOT EXECUTED
4000535c: 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
40005360: c2 12 20 12 lduh [ %o0 + 0x12 ], %g1
<== NOT EXECUTED
if (
40005364: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
40005368: 02 80 00 18 be 400053c8 <rtems_filesystem_check_access+0x8c>
<== NOT EXECUTED
4000536c: 80 a0 40 1b cmp %g1, %i3
<== NOT EXECUTED
40005370: 22 80 00 17 be,a 400053cc <rtems_filesystem_check_access+0x90>
<== NOT EXECUTED
40005374: b1 2e 20 03 sll %i0, 3, %i0
<== NOT EXECUTED
for (i = 0; i < uenv->ngroups; ++i) {
40005378: c6 02 20 24 ld [ %o0 + 0x24 ], %g3
<== NOT EXECUTED
4000537c: 80 a0 e0 00 cmp %g3, 0
<== NOT EXECUTED
40005380: 22 80 00 14 be,a 400053d0 <rtems_filesystem_check_access+0x94>
<== NOT EXECUTED
40005384: b0 2e 00 19 andn %i0, %i1, %i0
<== NOT EXECUTED
if (uenv->groups[i] == object_gid) {
40005388: c2 12 20 28 lduh [ %o0 + 0x28 ], %g1
<== NOT EXECUTED
4000538c: 80 a0 40 1b cmp %g1, %i3
<== NOT EXECUTED
40005390: 02 80 00 0e be 400053c8 <rtems_filesystem_check_access+0x8c>
<== NOT EXECUTED
40005394: 90 02 20 2a add %o0, 0x2a, %o0
<== NOT EXECUTED
for (i = 0; i < uenv->ngroups; ++i) {
40005398: 10 80 00 06 b 400053b0 <rtems_filesystem_check_access+0x74>
<== NOT EXECUTED
4000539c: 82 10 20 00 clr %g1
<== NOT EXECUTED
if (uenv->groups[i] == object_gid) {
400053a0: c4 12 3f fe lduh [ %o0 + -2 ], %g2
<== NOT EXECUTED
400053a4: 80 a0 80 1b cmp %g2, %i3
<== NOT EXECUTED
400053a8: 22 80 00 09 be,a 400053cc <rtems_filesystem_check_access+0x90>
<== NOT EXECUTED
400053ac: b1 2e 20 03 sll %i0, 3, %i0
<== NOT EXECUTED
for (i = 0; i < uenv->ngroups; ++i) {
400053b0: 82 00 60 01 inc %g1
<== NOT EXECUTED
400053b4: 80 a0 40 03 cmp %g1, %g3
<== NOT EXECUTED
400053b8: 12 bf ff fa bne 400053a0 <rtems_filesystem_check_access+0x64>
<== NOT EXECUTED
400053bc: 90 02 20 02 add %o0, 2, %o0
<== NOT EXECUTED
} else {
access_flags <<= RTEMS_FS_OTH_SHIFT;
}
}
return (access_flags & object_mode) == access_flags;
400053c0: 10 80 00 04 b 400053d0 <rtems_filesystem_check_access+0x94>
<== NOT EXECUTED
400053c4: b0 2e 00 19 andn %i0, %i1, %i0
<== NOT EXECUTED
access_flags <<= RTEMS_FS_GRP_SHIFT;
400053c8: b1 2e 20 03 sll %i0, 3, %i0
<== NOT EXECUTED
return (access_flags & object_mode) == access_flags;
400053cc: b0 2e 00 19 andn %i0, %i1, %i0
<== NOT EXECUTED
}
400053d0: 80 a0 00 18 cmp %g0, %i0
<== NOT EXECUTED
400053d4: b0 60 3f ff subx %g0, -1, %i0
<== NOT EXECUTED
400053d8: 81 c7 e0 08 ret
<== NOT EXECUTED
400053dc: 81 e8 00 00 restore
<== NOT EXECUTED
access_flags <<= RTEMS_FS_USR_SHIFT;
400053e0: b1 2e 20 06 sll %i0, 6, %i0
return (access_flags & object_mode) == access_flags;
400053e4: b0 2e 00 19 andn %i0, %i1, %i0
}
400053e8: 80 a0 00 18 cmp %g0, %i0
400053ec: b0 60 3f ff subx %g0, -1, %i0
400053f0: 81 c7 e0 08 ret
400053f4: 81 e8 00 00 restore
4000b454 <rtems_filesystem_chmod>:
int rtems_filesystem_chmod(
const rtems_filesystem_location_info_t *loc,
mode_t mode
)
{
4000b454: 9d e3 bf 40 save %sp, -192, %sp
<== NOT EXECUTED
const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
4000b458: f8 06 20 14 ld [ %i0 + 0x14 ], %i4
<== NOT EXECUTED
int rv;
if ( mt_entry->writeable || rtems_filesystem_location_is_null( loc ) ) {
4000b45c: c2 0f 20 29 ldub [ %i4 + 0x29 ], %g1
<== NOT EXECUTED
{
4000b460: ba 10 00 18 mov %i0, %i5
<== NOT EXECUTED
if ( mt_entry->writeable || rtems_filesystem_location_is_null( loc ) ) {
4000b464: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
4000b468: 12 80 00 07 bne 4000b484 <rtems_filesystem_chmod+0x30>
<== NOT EXECUTED
4000b46c: c4 06 20 10 ld [ %i0 + 0x10 ], %g2
<== NOT EXECUTED
4000b470: 03 10 01 f4 sethi %hi(0x4007d000), %g1
<== NOT EXECUTED
4000b474: 82 10 62 58 or %g1, 0x258, %g1 ! 4007d258 <rtems_filesystem_null_handlers>
<== NOT EXECUTED
4000b478: 80 a0 80 01 cmp %g2, %g1
<== NOT EXECUTED
4000b47c: 12 80 00 3d bne 4000b570 <rtems_filesystem_chmod+0x11c>
<== NOT EXECUTED
4000b480: 01 00 00 00 nop
<== NOT EXECUTED
struct stat st;
memset( &st, 0, sizeof(st) );
4000b484: c0 27 bf a0 clr [ %fp + -96 ]
<== NOT EXECUTED
rv = (*loc->handlers->fstat_h)( loc, &st );
4000b488: 92 07 bf a0 add %fp, -96, %o1
<== NOT EXECUTED
memset( &st, 0, sizeof(st) );
4000b48c: c0 27 bf a4 clr [ %fp + -92 ]
<== NOT EXECUTED
4000b490: c0 27 bf a8 clr [ %fp + -88 ]
<== NOT EXECUTED
4000b494: c0 27 bf ac clr [ %fp + -84 ]
<== NOT EXECUTED
4000b498: c0 27 bf b0 clr [ %fp + -80 ]
<== NOT EXECUTED
4000b49c: c0 27 bf b4 clr [ %fp + -76 ]
<== NOT EXECUTED
4000b4a0: c0 27 bf b8 clr [ %fp + -72 ]
<== NOT EXECUTED
4000b4a4: c0 27 bf bc clr [ %fp + -68 ]
<== NOT EXECUTED
4000b4a8: c0 27 bf c0 clr [ %fp + -64 ]
<== NOT EXECUTED
4000b4ac: c0 27 bf c4 clr [ %fp + -60 ]
<== NOT EXECUTED
4000b4b0: c0 27 bf c8 clr [ %fp + -56 ]
<== NOT EXECUTED
4000b4b4: c0 27 bf cc clr [ %fp + -52 ]
<== NOT EXECUTED
4000b4b8: c0 27 bf d0 clr [ %fp + -48 ]
<== NOT EXECUTED
4000b4bc: c0 27 bf d4 clr [ %fp + -44 ]
<== NOT EXECUTED
4000b4c0: c0 27 bf d8 clr [ %fp + -40 ]
<== NOT EXECUTED
4000b4c4: c0 27 bf dc clr [ %fp + -36 ]
<== NOT EXECUTED
4000b4c8: c0 27 bf e0 clr [ %fp + -32 ]
<== NOT EXECUTED
4000b4cc: c0 27 bf e4 clr [ %fp + -28 ]
<== NOT EXECUTED
4000b4d0: c0 27 bf e8 clr [ %fp + -24 ]
<== NOT EXECUTED
4000b4d4: c0 27 bf ec clr [ %fp + -20 ]
<== NOT EXECUTED
4000b4d8: c0 27 bf f0 clr [ %fp + -16 ]
<== NOT EXECUTED
4000b4dc: c0 27 bf f4 clr [ %fp + -12 ]
<== NOT EXECUTED
4000b4e0: c0 27 bf f8 clr [ %fp + -8 ]
<== NOT EXECUTED
4000b4e4: c0 27 bf fc clr [ %fp + -4 ]
<== NOT EXECUTED
rv = (*loc->handlers->fstat_h)( loc, &st );
4000b4e8: c2 00 a0 18 ld [ %g2 + 0x18 ], %g1
<== NOT EXECUTED
4000b4ec: 9f c0 40 00 call %g1
<== NOT EXECUTED
4000b4f0: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
if ( rv == 0 ) {
4000b4f4: b0 92 20 00 orcc %o0, 0, %i0
<== NOT EXECUTED
4000b4f8: 02 80 00 04 be 4000b508 <rtems_filesystem_chmod+0xb4>
<== NOT EXECUTED
4000b4fc: 01 00 00 00 nop
<== NOT EXECUTED
errno = EROFS;
rv = -1;
}
return rv;
}
4000b500: 81 c7 e0 08 ret
<== NOT EXECUTED
4000b504: 81 e8 00 00 restore
<== NOT EXECUTED
uid_t uid = geteuid();
4000b508: 40 00 00 b9 call 4000b7ec <geteuid>
<== NOT EXECUTED
4000b50c: 01 00 00 00 nop
<== NOT EXECUTED
if ( uid == 0 || st.st_uid == uid ) {
4000b510: 91 2a 20 10 sll %o0, 0x10, %o0
<== NOT EXECUTED
4000b514: 91 32 20 10 srl %o0, 0x10, %o0
<== NOT EXECUTED
4000b518: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
4000b51c: 12 80 00 0c bne 4000b54c <rtems_filesystem_chmod+0xf8>
<== NOT EXECUTED
4000b520: c2 17 bf b2 lduh [ %fp + -78 ], %g1
<== NOT EXECUTED
rv = (*mt_entry->ops->fchmod_h)( loc, mode );
4000b524: c2 07 20 0c ld [ %i4 + 0xc ], %g1
<== NOT EXECUTED
mode = (st.st_mode & ~mask) | (mode & mask);
4000b528: d2 07 bf ac ld [ %fp + -84 ], %o1
<== NOT EXECUTED
rv = (*mt_entry->ops->fchmod_h)( loc, mode );
4000b52c: c2 00 60 1c ld [ %g1 + 0x1c ], %g1
<== NOT EXECUTED
mode = (st.st_mode & ~mask) | (mode & mask);
4000b530: b2 0e 6f ff and %i1, 0xfff, %i1
<== NOT EXECUTED
rv = (*mt_entry->ops->fchmod_h)( loc, mode );
4000b534: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
mode = (st.st_mode & ~mask) | (mode & mask);
4000b538: 92 0a 70 00 and %o1, -4096, %o1
<== NOT EXECUTED
rv = (*mt_entry->ops->fchmod_h)( loc, mode );
4000b53c: 9f c0 40 00 call %g1
<== NOT EXECUTED
4000b540: 92 12 40 19 or %o1, %i1, %o1
<== NOT EXECUTED
if ( uid == 0 || st.st_uid == uid ) {
4000b544: 81 c7 e0 08 ret
<== NOT EXECUTED
4000b548: 91 e8 00 08 restore %g0, %o0, %o0
<== NOT EXECUTED
4000b54c: 80 a0 40 08 cmp %g1, %o0
<== NOT EXECUTED
4000b550: 22 bf ff f6 be,a 4000b528 <rtems_filesystem_chmod+0xd4>
<== NOT EXECUTED
4000b554: c2 07 20 0c ld [ %i4 + 0xc ], %g1
<== NOT EXECUTED
errno = EPERM;
4000b558: 40 01 44 ef call 4005c914 <__errno>
<== NOT EXECUTED
4000b55c: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
4000b560: 82 10 20 01 mov 1, %g1
<== NOT EXECUTED
4000b564: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
if ( mt_entry->writeable || rtems_filesystem_location_is_null( loc ) ) {
4000b568: 81 c7 e0 08 ret
<== NOT EXECUTED
4000b56c: 81 e8 00 00 restore
<== NOT EXECUTED
errno = EROFS;
4000b570: 40 01 44 e9 call 4005c914 <__errno>
<== NOT EXECUTED
4000b574: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
4000b578: 82 10 20 1e mov 0x1e, %g1
<== NOT EXECUTED
4000b57c: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
}
4000b580: 81 c7 e0 08 ret
<== NOT EXECUTED
4000b584: 81 e8 00 00 restore
<== NOT EXECUTED
40041cac <rtems_filesystem_chown>:
int rtems_filesystem_chown(
const rtems_filesystem_location_info_t *loc,
uid_t owner,
gid_t group
)
{
40041cac: 9d e3 bf 40 save %sp, -192, %sp
<== NOT EXECUTED
const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
40041cb0: f8 06 20 14 ld [ %i0 + 0x14 ], %i4
<== NOT EXECUTED
int rv;
if ( mt_entry->writeable || rtems_filesystem_location_is_null( loc ) ) {
40041cb4: c2 0f 20 29 ldub [ %i4 + 0x29 ], %g1
<== NOT EXECUTED
{
40041cb8: ba 10 00 18 mov %i0, %i5
<== NOT EXECUTED
if ( mt_entry->writeable || rtems_filesystem_location_is_null( loc ) ) {
40041cbc: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
40041cc0: 12 80 00 07 bne 40041cdc <rtems_filesystem_chown+0x30>
<== NOT EXECUTED
40041cc4: c4 06 20 10 ld [ %i0 + 0x10 ], %g2
<== NOT EXECUTED
40041cc8: 03 10 01 f4 sethi %hi(0x4007d000), %g1
<== NOT EXECUTED
40041ccc: 82 10 62 58 or %g1, 0x258, %g1 ! 4007d258 <rtems_filesystem_null_handlers>
<== NOT EXECUTED
40041cd0: 80 a0 80 01 cmp %g2, %g1
<== NOT EXECUTED
40041cd4: 12 80 00 3b bne 40041dc0 <rtems_filesystem_chown+0x114>
<== NOT EXECUTED
40041cd8: 01 00 00 00 nop
<== NOT EXECUTED
struct stat st;
memset( &st, 0, sizeof(st) );
40041cdc: c0 27 bf a0 clr [ %fp + -96 ]
<== NOT EXECUTED
rv = (*loc->handlers->fstat_h)( loc, &st );
40041ce0: 92 07 bf a0 add %fp, -96, %o1
<== NOT EXECUTED
memset( &st, 0, sizeof(st) );
40041ce4: c0 27 bf a4 clr [ %fp + -92 ]
<== NOT EXECUTED
40041ce8: c0 27 bf a8 clr [ %fp + -88 ]
<== NOT EXECUTED
40041cec: c0 27 bf ac clr [ %fp + -84 ]
<== NOT EXECUTED
40041cf0: c0 27 bf b0 clr [ %fp + -80 ]
<== NOT EXECUTED
40041cf4: c0 27 bf b4 clr [ %fp + -76 ]
<== NOT EXECUTED
40041cf8: c0 27 bf b8 clr [ %fp + -72 ]
<== NOT EXECUTED
40041cfc: c0 27 bf bc clr [ %fp + -68 ]
<== NOT EXECUTED
40041d00: c0 27 bf c0 clr [ %fp + -64 ]
<== NOT EXECUTED
40041d04: c0 27 bf c4 clr [ %fp + -60 ]
<== NOT EXECUTED
40041d08: c0 27 bf c8 clr [ %fp + -56 ]
<== NOT EXECUTED
40041d0c: c0 27 bf cc clr [ %fp + -52 ]
<== NOT EXECUTED
40041d10: c0 27 bf d0 clr [ %fp + -48 ]
<== NOT EXECUTED
40041d14: c0 27 bf d4 clr [ %fp + -44 ]
<== NOT EXECUTED
40041d18: c0 27 bf d8 clr [ %fp + -40 ]
<== NOT EXECUTED
40041d1c: c0 27 bf dc clr [ %fp + -36 ]
<== NOT EXECUTED
40041d20: c0 27 bf e0 clr [ %fp + -32 ]
<== NOT EXECUTED
40041d24: c0 27 bf e4 clr [ %fp + -28 ]
<== NOT EXECUTED
40041d28: c0 27 bf e8 clr [ %fp + -24 ]
<== NOT EXECUTED
40041d2c: c0 27 bf ec clr [ %fp + -20 ]
<== NOT EXECUTED
40041d30: c0 27 bf f0 clr [ %fp + -16 ]
<== NOT EXECUTED
40041d34: c0 27 bf f4 clr [ %fp + -12 ]
<== NOT EXECUTED
40041d38: c0 27 bf f8 clr [ %fp + -8 ]
<== NOT EXECUTED
40041d3c: c0 27 bf fc clr [ %fp + -4 ]
<== NOT EXECUTED
rv = (*loc->handlers->fstat_h)( loc, &st );
40041d40: c2 00 a0 18 ld [ %g2 + 0x18 ], %g1
<== NOT EXECUTED
40041d44: 9f c0 40 00 call %g1
<== NOT EXECUTED
40041d48: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
if ( rv == 0 ) {
40041d4c: b0 92 20 00 orcc %o0, 0, %i0
<== NOT EXECUTED
40041d50: 02 80 00 04 be 40041d60 <rtems_filesystem_chown+0xb4>
<== NOT EXECUTED
40041d54: 01 00 00 00 nop
<== NOT EXECUTED
errno = EROFS;
rv = -1;
}
return rv;
}
40041d58: 81 c7 e0 08 ret
<== NOT EXECUTED
40041d5c: 81 e8 00 00 restore
<== NOT EXECUTED
uid_t uid = geteuid();
40041d60: 7f ff 26 a3 call 4000b7ec <geteuid>
<== NOT EXECUTED
40041d64: 01 00 00 00 nop
<== NOT EXECUTED
if ( uid == 0 || st.st_uid == uid ) {
40041d68: 91 2a 20 10 sll %o0, 0x10, %o0
<== NOT EXECUTED
40041d6c: 91 32 20 10 srl %o0, 0x10, %o0
<== NOT EXECUTED
40041d70: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
40041d74: 12 80 00 0a bne 40041d9c <rtems_filesystem_chown+0xf0>
<== NOT EXECUTED
40041d78: c2 17 bf b2 lduh [ %fp + -78 ], %g1
<== NOT EXECUTED
rv = (*mt_entry->ops->chown_h)( loc, owner, group );
40041d7c: c2 07 20 0c ld [ %i4 + 0xc ], %g1
<== NOT EXECUTED
40041d80: c2 00 60 20 ld [ %g1 + 0x20 ], %g1
<== NOT EXECUTED
40041d84: 94 10 00 1a mov %i2, %o2
<== NOT EXECUTED
40041d88: 92 10 00 19 mov %i1, %o1
<== NOT EXECUTED
40041d8c: 9f c0 40 00 call %g1
<== NOT EXECUTED
40041d90: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
40041d94: 81 c7 e0 08 ret
<== NOT EXECUTED
40041d98: 91 e8 00 08 restore %g0, %o0, %o0
<== NOT EXECUTED
if ( uid == 0 || st.st_uid == uid ) {
40041d9c: 80 a0 40 08 cmp %g1, %o0
<== NOT EXECUTED
40041da0: 22 bf ff f8 be,a 40041d80 <rtems_filesystem_chown+0xd4>
<== NOT EXECUTED
40041da4: c2 07 20 0c ld [ %i4 + 0xc ], %g1
<== NOT EXECUTED
errno = EPERM;
40041da8: 40 00 6a db call 4005c914 <__errno>
<== NOT EXECUTED
40041dac: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
40041db0: 82 10 20 01 mov 1, %g1
<== NOT EXECUTED
40041db4: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
if ( mt_entry->writeable || rtems_filesystem_location_is_null( loc ) ) {
40041db8: 81 c7 e0 08 ret
<== NOT EXECUTED
40041dbc: 81 e8 00 00 restore
<== NOT EXECUTED
errno = EROFS;
40041dc0: 40 00 6a d5 call 4005c914 <__errno>
<== NOT EXECUTED
40041dc4: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
40041dc8: 82 10 20 1e mov 0x1e, %g1
<== NOT EXECUTED
40041dcc: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
}
40041dd0: 81 c7 e0 08 ret
<== NOT EXECUTED
40041dd4: 81 e8 00 00 restore
<== NOT EXECUTED
400103d0 <rtems_filesystem_default_pathconf>:
400103d0: 00 00 00 05 00 00 00 80 00 00 00 07 00 00 00 ff ................
400103e0: 00 00 00 ff 00 00 04 00 00 00 00 00 00 00 00 00 ................
400103f0: 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 ................
40010400: 2e 00 00 00 00 00 00 00 2e 2e 00 00 ............
40005ba0 <rtems_filesystem_do_unmount>:
}
void rtems_filesystem_do_unmount(
rtems_filesystem_mount_table_entry_t *mt_entry
)
{
40005ba0: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
rtems_libio_lock();
40005ba4: 7f ff fb 29 call 40004848 <rtems_libio_lock>
<== NOT EXECUTED
40005ba8: 01 00 00 00 nop
<== NOT EXECUTED
next = the_node->next;
40005bac: c4 06 00 00 ld [ %i0 ], %g2
<== NOT EXECUTED
previous = the_node->previous;
40005bb0: c2 06 20 04 ld [ %i0 + 4 ], %g1
<== NOT EXECUTED
next->previous = previous;
40005bb4: c2 20 a0 04 st %g1, [ %g2 + 4 ]
<== NOT EXECUTED
rtems_libio_unlock();
40005bb8: 7f ff fb 29 call 4000485c <rtems_libio_unlock>
<== NOT EXECUTED
40005bbc: c4 20 40 00 st %g2, [ %g1 ]
<== NOT EXECUTED
release_with_count(global_loc, 1);
40005bc0: d0 06 20 20 ld [ %i0 + 0x20 ], %o0
<== NOT EXECUTED
40005bc4: 40 00 00 14 call 40005c14 <release_with_count>
<== NOT EXECUTED
40005bc8: 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);
40005bcc: c2 06 20 0c ld [ %i0 + 0xc ], %g1
<== NOT EXECUTED
40005bd0: c2 00 60 34 ld [ %g1 + 0x34 ], %g1
<== NOT EXECUTED
40005bd4: 9f c0 40 00 call %g1
<== NOT EXECUTED
40005bd8: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
if (mt_entry->unmount_task != 0) {
40005bdc: d0 06 20 3c ld [ %i0 + 0x3c ], %o0
<== NOT EXECUTED
40005be0: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
40005be4: 02 80 00 07 be 40005c00 <rtems_filesystem_do_unmount+0x60>
<== NOT EXECUTED
40005be8: 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 );
40005bec: 40 00 02 35 call 400064c0 <rtems_event_system_send>
<== NOT EXECUTED
40005bf0: 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) {
40005bf4: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
40005bf8: 32 80 00 04 bne,a 40005c08 <rtems_filesystem_do_unmount+0x68>
<== NOT EXECUTED
40005bfc: 11 37 ab 6f sethi %hi(0xdeadbc00), %o0
<== NOT EXECUTED
rtems_fatal_error_occurred(0xdeadbeef);
}
}
free(mt_entry);
40005c00: 7f ff fa 9e call 40004678 <free>
<== NOT EXECUTED
40005c04: 81 e8 00 00 restore
<== NOT EXECUTED
rtems_fatal_error_occurred(0xdeadbeef);
40005c08: 40 00 03 53 call 40006954 <rtems_fatal_error_occurred>
<== NOT EXECUTED
40005c0c: 90 12 22 ef or %o0, 0x2ef, %o0
<== NOT EXECUTED
40005c10: 01 00 00 00 nop
<== NOT EXECUTED
400053f8 <rtems_filesystem_eval_path_check_access>:
int eval_flags,
mode_t node_mode,
uid_t node_uid,
gid_t node_gid
)
{
400053f8: 9d e3 bf a0 save %sp, -96, %sp
bool access_ok = rtems_filesystem_check_access(
400053fc: 96 10 00 1c mov %i4, %o3
40005400: 94 10 00 1b mov %i3, %o2
40005404: 92 10 00 1a mov %i2, %o1
40005408: 7f ff ff cd call 4000533c <rtems_filesystem_check_access>
4000540c: 90 10 00 19 mov %i1, %o0
node_mode,
node_uid,
node_gid
);
if (!access_ok) {
40005410: ba 92 20 00 orcc %o0, 0, %i5
40005414: 12 80 00 04 bne 40005424 <rtems_filesystem_eval_path_check_access+0x2c>
<== ALWAYS TAKEN
40005418: 92 10 20 0d mov 0xd, %o1
rtems_filesystem_eval_path_error(ctx, EACCES);
4000541c: 40 00 00 98 call 4000567c <rtems_filesystem_eval_path_error>
<== NOT EXECUTED
40005420: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
}
return access_ok;
}
40005424: 81 c7 e0 08 ret
40005428: 91 e8 00 1d restore %g0, %i5, %o0
4000d3a4 <rtems_filesystem_eval_path_cleanup_with_parent>:
void rtems_filesystem_eval_path_cleanup_with_parent(
rtems_filesystem_eval_path_context_t *ctx,
rtems_filesystem_location_info_t *parentloc
)
{
4000d3a4: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
free_location(parentloc);
4000d3a8: 7f ff fe dc call 4000cf18 <free_location>
<== NOT EXECUTED
4000d3ac: 90 10 00 19 mov %i1, %o0
<== NOT EXECUTED
rtems_filesystem_eval_path_cleanup(ctx);
4000d3b0: 7f ff ff ee call 4000d368 <rtems_filesystem_eval_path_cleanup>
<== NOT EXECUTED
4000d3b4: 81 e8 00 00 restore
<== NOT EXECUTED
4000579c <rtems_filesystem_eval_path_continue>:
{
4000579c: 9d e3 bf a0 save %sp, -96, %sp
while (ctx->pathlen > 0) {
400057a0: c2 06 20 04 ld [ %i0 + 4 ], %g1
400057a4: 80 a0 60 00 cmp %g1, 0
400057a8: 22 80 00 0c be,a 400057d8 <rtems_filesystem_eval_path_continue+0x3c>
<== NEVER TAKEN
400057ac: c2 06 20 0c ld [ %i0 + 0xc ], %g1
<== NOT EXECUTED
(*ctx->currentloc.mt_entry->ops->eval_path_h)(ctx);
400057b0: c2 06 20 2c ld [ %i0 + 0x2c ], %g1
400057b4: c2 00 60 0c ld [ %g1 + 0xc ], %g1
400057b8: c2 00 60 08 ld [ %g1 + 8 ], %g1
400057bc: 9f c0 40 00 call %g1
400057c0: 90 10 00 18 mov %i0, %o0
while (ctx->pathlen > 0) {
400057c4: c2 06 20 04 ld [ %i0 + 4 ], %g1
400057c8: 80 a0 60 00 cmp %g1, 0
400057cc: 32 bf ff fa bne,a 400057b4 <rtems_filesystem_eval_path_continue+0x18>
<== NEVER TAKEN
400057d0: c2 06 20 2c ld [ %i0 + 0x2c ], %g1
<== NOT EXECUTED
if (rtems_filesystem_eval_path_has_token(ctx)) {
400057d4: c2 06 20 0c ld [ %i0 + 0xc ], %g1
400057d8: 80 a0 60 00 cmp %g1, 0
400057dc: 02 80 00 07 be 400057f8 <rtems_filesystem_eval_path_continue+0x5c>
400057e0: f2 06 20 10 ld [ %i0 + 0x10 ], %i1
if (make) {
400057e4: 80 8e 60 20 btst 0x20, %i1
400057e8: 02 80 00 08 be 40005808 <rtems_filesystem_eval_path_continue+0x6c>
<== NEVER TAKEN
400057ec: b2 10 20 02 mov 2, %i1
check_access(ctx, ctx->flags);
400057f0: 7f ff ff b9 call 400056d4 <check_access>
400057f4: 81 e8 00 00 restore
if (!exclusive) {
400057f8: 80 8e 60 40 btst 0x40, %i1
400057fc: 02 bf ff fd be 400057f0 <rtems_filesystem_eval_path_continue+0x54>
<== ALWAYS TAKEN
40005800: 01 00 00 00 nop
rtems_filesystem_eval_path_error(ctx, EEXIST);
40005804: b2 10 20 11 mov 0x11, %i1 ! 11 <_TLS_Alignment+0x10>
<== NOT EXECUTED
40005808: 7f ff ff 9d call 4000567c <rtems_filesystem_eval_path_error>
<== NOT EXECUTED
4000580c: 81 e8 00 00 restore
<== NOT EXECUTED
40006018 <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;
40006018: c2 02 00 00 ld [ %o0 ], %g1
<== NOT EXECUTED
const char *end = current + ctx->pathlen;
4000601c: c4 02 20 04 ld [ %o0 + 4 ], %g2
<== NOT EXECUTED
40006020: 86 00 40 02 add %g1, %g2, %g3
<== NOT EXECUTED
while (current != end && rtems_filesystem_is_delimiter(*current)) {
40006024: 80 a0 40 03 cmp %g1, %g3
<== NOT EXECUTED
40006028: 22 80 00 17 be,a 40006084 <rtems_filesystem_eval_path_eat_delimiter+0x6c>
<== NOT EXECUTED
4000602c: 84 10 20 00 clr %g2
<== NOT EXECUTED
return c == '/' || c == '\\';
40006030: c8 48 40 00 ldsb [ %g1 ], %g4
<== NOT EXECUTED
40006034: 80 a1 20 2f cmp %g4, 0x2f
<== NOT EXECUTED
40006038: 02 80 00 04 be 40006048 <rtems_filesystem_eval_path_eat_delimiter+0x30>
<== NOT EXECUTED
4000603c: 80 a1 20 5c cmp %g4, 0x5c
<== NOT EXECUTED
40006040: 32 80 00 11 bne,a 40006084 <rtems_filesystem_eval_path_eat_delimiter+0x6c>
<== NOT EXECUTED
40006044: 86 10 00 01 mov %g1, %g3
<== NOT EXECUTED
++current;
40006048: 82 00 60 01 inc %g1
<== NOT EXECUTED
while (current != end && rtems_filesystem_is_delimiter(*current)) {
4000604c: 80 a0 c0 01 cmp %g3, %g1
<== NOT EXECUTED
40006050: 02 80 00 0d be 40006084 <rtems_filesystem_eval_path_eat_delimiter+0x6c>
<== NOT EXECUTED
40006054: 84 10 20 00 clr %g2
<== NOT EXECUTED
40006058: c4 48 40 00 ldsb [ %g1 ], %g2
<== NOT EXECUTED
4000605c: 80 a0 a0 2f cmp %g2, 0x2f
<== NOT EXECUTED
40006060: 02 bf ff fa be 40006048 <rtems_filesystem_eval_path_eat_delimiter+0x30>
<== NOT EXECUTED
40006064: 80 a0 a0 5c cmp %g2, 0x5c
<== NOT EXECUTED
40006068: 22 bf ff f9 be,a 4000604c <rtems_filesystem_eval_path_eat_delimiter+0x34>
<== NOT EXECUTED
4000606c: 82 00 60 01 inc %g1
<== NOT EXECUTED
40006070: 84 20 c0 01 sub %g3, %g1, %g2
<== NOT EXECUTED
++current;
40006074: 86 10 00 01 mov %g1, %g3
<== NOT EXECUTED
}
ctx->path = current;
ctx->pathlen = (size_t) (end - current);
40006078: c4 22 20 04 st %g2, [ %o0 + 4 ]
<== NOT EXECUTED
}
4000607c: 81 c3 e0 08 retl
<== NOT EXECUTED
40006080: c6 22 00 00 st %g3, [ %o0 ]
<== NOT EXECUTED
ctx->path = current;
40006084: c6 22 00 00 st %g3, [ %o0 ]
<== NOT EXECUTED
}
40006088: 81 c3 e0 08 retl
<== NOT EXECUTED
4000608c: c4 22 20 04 st %g2, [ %o0 + 4 ]
<== NOT EXECUTED
4000567c <rtems_filesystem_eval_path_error>:
{
4000567c: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
ctx->path = NULL;
40005680: c0 26 00 00 clr [ %i0 ]
<== NOT EXECUTED
if (!rtems_filesystem_location_is_null(&ctx->currentloc)) {
40005684: 03 10 00 41 sethi %hi(0x40010400), %g1
<== NOT EXECUTED
ctx->pathlen = 0;
40005688: c0 26 20 04 clr [ %i0 + 4 ]
<== NOT EXECUTED
if (!rtems_filesystem_location_is_null(&ctx->currentloc)) {
4000568c: 82 10 60 58 or %g1, 0x58, %g1
<== NOT EXECUTED
ctx->token = NULL;
40005690: c0 26 20 08 clr [ %i0 + 8 ]
<== NOT EXECUTED
ctx->tokenlen = 0;
40005694: c0 26 20 0c clr [ %i0 + 0xc ]
<== NOT EXECUTED
if (!rtems_filesystem_location_is_null(&ctx->currentloc)) {
40005698: c4 06 20 28 ld [ %i0 + 0x28 ], %g2
<== NOT EXECUTED
4000569c: 80 a0 80 01 cmp %g2, %g1
<== NOT EXECUTED
400056a0: 02 80 00 0b be 400056cc <rtems_filesystem_eval_path_error+0x50>
<== NOT EXECUTED
400056a4: 80 a6 60 00 cmp %i1, 0
<== NOT EXECUTED
if (eno != 0) {
400056a8: 12 80 00 04 bne 400056b8 <rtems_filesystem_eval_path_error+0x3c>
<== NOT EXECUTED
400056ac: 01 00 00 00 nop
<== NOT EXECUTED
rtems_filesystem_location_detach(&ctx->currentloc);
400056b0: 40 00 01 23 call 40005b3c <rtems_filesystem_location_detach>
<== NOT EXECUTED
400056b4: 91 ee 20 18 restore %i0, 0x18, %o0
<== NOT EXECUTED
errno = eno;
400056b8: 40 00 24 28 call 4000e758 <__errno>
<== NOT EXECUTED
400056bc: b0 06 20 18 add %i0, 0x18, %i0
<== NOT EXECUTED
400056c0: f2 22 00 00 st %i1, [ %o0 ]
<== NOT EXECUTED
rtems_filesystem_location_detach(&ctx->currentloc);
400056c4: 40 00 01 1e call 40005b3c <rtems_filesystem_location_detach>
<== NOT EXECUTED
400056c8: 81 e8 00 00 restore
<== NOT EXECUTED
}
400056cc: 81 c7 e0 08 ret
<== NOT EXECUTED
400056d0: 81 e8 00 00 restore
<== NOT EXECUTED
4000542c <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
)
{
4000542c: 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);
40005430: 21 10 00 41 sethi %hi(0x40010400), %l0
{
40005434: ba 10 00 18 mov %i0, %i5
return &ctx->currentloc;
40005438: a2 06 20 18 add %i0, 0x18, %l1
status = (*config->eval_token)(ctx, arg, "..", 2);
4000543c: a0 14 20 08 or %l0, 8, %l0
status = (*config->eval_token)(ctx, arg, ".", 1);
40005440: 31 10 00 41 sethi %hi(0x40010400), %i0
40005444: b0 16 20 00 mov %i0, %i0 ! 40010400 <rtems_filesystem_default_pathconf+0x30>
rtems_filesystem_eval_path_next_token(ctx);
40005448: 40 00 03 12 call 40006090 <rtems_filesystem_eval_path_next_token>
4000544c: 90 10 00 1d mov %i5, %o0
*tokenlen = ctx->tokenlen;
40005450: f8 07 60 0c ld [ %i5 + 0xc ], %i4
if (tokenlen > 0) {
40005454: 80 a7 20 00 cmp %i4, 0
40005458: 02 80 00 19 be 400054bc <rtems_filesystem_eval_path_generic+0x90>
<== NEVER TAKEN
4000545c: f6 07 60 08 ld [ %i5 + 8 ], %i3
if ((*config->is_directory)(ctx, arg)) {
40005460: c2 06 80 00 ld [ %i2 ], %g1
40005464: 92 10 00 19 mov %i1, %o1
40005468: 9f c0 40 00 call %g1
4000546c: 90 10 00 1d mov %i5, %o0
40005470: 80 a2 20 00 cmp %o0, 0
40005474: 02 80 00 60 be 400055f4 <rtems_filesystem_eval_path_generic+0x1c8>
<== NEVER TAKEN
40005478: 80 a7 20 01 cmp %i4, 1
return tokenlen == 1 && token [0] == '.';
4000547c: 02 80 00 12 be 400054c4 <rtems_filesystem_eval_path_generic+0x98>
<== NEVER TAKEN
40005480: 80 a7 20 02 cmp %i4, 2
return tokenlen == 2 && token [0] == '.' && token [1] == '.';
40005484: 22 80 00 33 be,a 40005550 <rtems_filesystem_eval_path_generic+0x124>
<== NEVER TAKEN
40005488: c2 4e c0 00 ldsb [ %i3 ], %g1
<== NOT EXECUTED
}
} else {
status = (*config->eval_token)(ctx, arg, token, tokenlen);
4000548c: c2 06 a0 04 ld [ %i2 + 4 ], %g1
40005490: 96 10 00 1c mov %i4, %o3
40005494: 94 10 00 1b mov %i3, %o2
40005498: 92 10 00 19 mov %i1, %o1
4000549c: 9f c0 40 00 call %g1
400054a0: 90 10 00 1d mov %i5, %o0
}
if (status == RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_NO_ENTRY) {
400054a4: 80 a2 20 02 cmp %o0, 2
400054a8: 22 80 00 19 be,a 4000550c <rtems_filesystem_eval_path_generic+0xe0>
400054ac: c2 07 60 04 ld [ %i5 + 4 ], %g1
while (status == RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_CONTINUE) {
400054b0: 80 a2 20 00 cmp %o0, 0
400054b4: 02 bf ff e5 be 40005448 <rtems_filesystem_eval_path_generic+0x1c>
400054b8: 01 00 00 00 nop
400054bc: 81 c7 e0 08 ret
400054c0: 81 e8 00 00 restore
return tokenlen == 1 && token [0] == '.';
400054c4: c2 4e c0 00 ldsb [ %i3 ], %g1
<== NOT EXECUTED
400054c8: 80 a0 60 2e cmp %g1, 0x2e
<== NOT EXECUTED
400054cc: 32 bf ff f1 bne,a 40005490 <rtems_filesystem_eval_path_generic+0x64>
<== NOT EXECUTED
400054d0: c2 06 a0 04 ld [ %i2 + 4 ], %g1
<== NOT EXECUTED
if (rtems_filesystem_eval_path_has_path(ctx)) {
400054d4: c2 07 60 04 ld [ %i5 + 4 ], %g1
<== NOT EXECUTED
400054d8: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
400054dc: 22 80 00 40 be,a 400055dc <rtems_filesystem_eval_path_generic+0x1b0>
<== NOT EXECUTED
400054e0: c2 07 60 10 ld [ %i5 + 0x10 ], %g1
<== NOT EXECUTED
status = (*config->eval_token)(ctx, arg, ".", 1);
400054e4: c2 06 a0 04 ld [ %i2 + 4 ], %g1
<== NOT EXECUTED
400054e8: 96 10 20 01 mov 1, %o3
<== NOT EXECUTED
400054ec: 94 10 00 18 mov %i0, %o2
<== NOT EXECUTED
400054f0: 92 10 00 19 mov %i1, %o1
<== NOT EXECUTED
400054f4: 9f c0 40 00 call %g1
<== NOT EXECUTED
400054f8: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
if (status == RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_NO_ENTRY) {
400054fc: 80 a2 20 02 cmp %o0, 2
<== NOT EXECUTED
40005500: 12 bf ff ed bne 400054b4 <rtems_filesystem_eval_path_generic+0x88>
<== NOT EXECUTED
40005504: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
if (rtems_filesystem_eval_path_has_path(ctx)) {
40005508: c2 07 60 04 ld [ %i5 + 4 ], %g1
<== NOT EXECUTED
4000550c: 80 a0 60 00 cmp %g1, 0
40005510: 12 80 00 04 bne 40005520 <rtems_filesystem_eval_path_generic+0xf4>
<== NEVER TAKEN
40005514: 01 00 00 00 nop
}
} else {
status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_DONE;
}
}
}
40005518: 81 c7 e0 08 ret
4000551c: 81 e8 00 00 restore
rtems_filesystem_eval_path_eat_delimiter(ctx);
40005520: 40 00 02 be call 40006018 <rtems_filesystem_eval_path_eat_delimiter>
<== NOT EXECUTED
40005524: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
(eval_flags & RTEMS_FS_ACCEPT_RESIDUAL_DELIMITERS) == 0
40005528: c2 07 60 10 ld [ %i5 + 0x10 ], %g1
<== NOT EXECUTED
if (
4000552c: 80 88 60 80 btst 0x80, %g1
<== NOT EXECUTED
40005530: 02 80 00 06 be 40005548 <rtems_filesystem_eval_path_generic+0x11c>
<== NOT EXECUTED
40005534: b2 10 20 02 mov 2, %i1
<== NOT EXECUTED
|| rtems_filesystem_eval_path_has_path(ctx)
40005538: c2 07 60 04 ld [ %i5 + 4 ], %g1
<== NOT EXECUTED
4000553c: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
40005540: 02 bf ff f6 be 40005518 <rtems_filesystem_eval_path_generic+0xec>
<== NOT EXECUTED
40005544: 01 00 00 00 nop
<== NOT EXECUTED
rtems_filesystem_eval_path_error(ctx, ENOENT);
40005548: 40 00 00 4d call 4000567c <rtems_filesystem_eval_path_error>
<== NOT EXECUTED
4000554c: 91 e8 00 1d restore %g0, %i5, %o0
<== NOT EXECUTED
return tokenlen == 2 && token [0] == '.' && token [1] == '.';
40005550: 80 a0 60 2e cmp %g1, 0x2e
<== NOT EXECUTED
40005554: 32 bf ff cf bne,a 40005490 <rtems_filesystem_eval_path_generic+0x64>
<== NOT EXECUTED
40005558: c2 06 a0 04 ld [ %i2 + 4 ], %g1
<== NOT EXECUTED
4000555c: c2 4e e0 01 ldsb [ %i3 + 1 ], %g1
<== NOT EXECUTED
40005560: 80 a0 60 2e cmp %g1, 0x2e
<== NOT EXECUTED
40005564: 32 bf ff cb bne,a 40005490 <rtems_filesystem_eval_path_generic+0x64>
<== NOT EXECUTED
40005568: c2 06 a0 04 ld [ %i2 + 4 ], %g1
<== NOT EXECUTED
const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
4000556c: c2 07 60 2c ld [ %i5 + 0x2c ], %g1
<== NOT EXECUTED
40005570: d2 07 60 30 ld [ %i5 + 0x30 ], %o1
<== NOT EXECUTED
40005574: c4 00 60 0c ld [ %g1 + 0xc ], %g2
<== NOT EXECUTED
&& (*mt_entry->ops->are_nodes_equal_h)( loc, rootloc );
40005578: c6 02 60 14 ld [ %o1 + 0x14 ], %g3
<== NOT EXECUTED
4000557c: 80 a0 40 03 cmp %g1, %g3
<== NOT EXECUTED
40005580: 12 80 00 0a bne 400055a8 <rtems_filesystem_eval_path_generic+0x17c>
<== NOT EXECUTED
40005584: c4 00 a0 10 ld [ %g2 + 0x10 ], %g2
<== NOT EXECUTED
40005588: 9f c0 80 00 call %g2
<== NOT EXECUTED
4000558c: 90 10 00 11 mov %l1, %o0
<== NOT EXECUTED
40005590: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
40005594: 32 bf ff d5 bne,a 400054e8 <rtems_filesystem_eval_path_generic+0xbc>
<== NOT EXECUTED
40005598: c2 06 a0 04 ld [ %i2 + 4 ], %g1
<== NOT EXECUTED
4000559c: c2 07 60 2c ld [ %i5 + 0x2c ], %g1
<== NOT EXECUTED
400055a0: c4 00 60 0c ld [ %g1 + 0xc ], %g2
<== NOT EXECUTED
400055a4: c4 00 a0 10 ld [ %g2 + 0x10 ], %g2
<== NOT EXECUTED
return (*mt_entry->ops->are_nodes_equal_h)( loc, mt_fs_root );
400055a8: d2 00 60 24 ld [ %g1 + 0x24 ], %o1
<== NOT EXECUTED
400055ac: 9f c0 80 00 call %g2
<== NOT EXECUTED
400055b0: 90 10 00 11 mov %l1, %o0
<== NOT EXECUTED
} else if (is_fs_root(currentloc)) {
400055b4: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
400055b8: 12 80 00 12 bne 40005600 <rtems_filesystem_eval_path_generic+0x1d4>
<== NOT EXECUTED
400055bc: 96 10 20 02 mov 2, %o3
<== NOT EXECUTED
status = (*config->eval_token)(ctx, arg, "..", 2);
400055c0: c2 06 a0 04 ld [ %i2 + 4 ], %g1
<== NOT EXECUTED
400055c4: 94 10 00 10 mov %l0, %o2
<== NOT EXECUTED
400055c8: 92 10 00 19 mov %i1, %o1
<== NOT EXECUTED
400055cc: 9f c0 40 00 call %g1
<== NOT EXECUTED
400055d0: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
if (status == RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_NO_ENTRY) {
400055d4: 10 bf ff b5 b 400054a8 <rtems_filesystem_eval_path_generic+0x7c>
<== NOT EXECUTED
400055d8: 80 a2 20 02 cmp %o0, 2
<== NOT EXECUTED
if ((eval_flags & RTEMS_FS_REJECT_TERMINAL_DOT) == 0) {
400055dc: 80 88 61 00 btst 0x100, %g1
<== NOT EXECUTED
400055e0: 22 bf ff c2 be,a 400054e8 <rtems_filesystem_eval_path_generic+0xbc>
<== NOT EXECUTED
400055e4: c2 06 a0 04 ld [ %i2 + 4 ], %g1
<== NOT EXECUTED
rtems_filesystem_eval_path_error(ctx, EINVAL);
400055e8: b2 10 20 16 mov 0x16, %i1
<== NOT EXECUTED
400055ec: 40 00 00 24 call 4000567c <rtems_filesystem_eval_path_error>
<== NOT EXECUTED
400055f0: 91 e8 00 1d restore %g0, %i5, %o0
<== NOT EXECUTED
rtems_filesystem_eval_path_error(ctx, ENOTDIR);
400055f4: b2 10 20 14 mov 0x14, %i1
<== NOT EXECUTED
400055f8: 40 00 00 21 call 4000567c <rtems_filesystem_eval_path_error>
<== NOT EXECUTED
400055fc: 91 e8 00 1d restore %g0, %i5, %o0
<== NOT EXECUTED
if (currentloc->mt_entry->mt_point_node != NULL) {
40005600: c2 07 60 2c ld [ %i5 + 0x2c ], %g1
<== NOT EXECUTED
40005604: c4 00 60 20 ld [ %g1 + 0x20 ], %g2
<== NOT EXECUTED
40005608: 80 a0 a0 00 cmp %g2, 0
<== NOT EXECUTED
4000560c: 22 bf ff b7 be,a 400054e8 <rtems_filesystem_eval_path_generic+0xbc>
<== NOT EXECUTED
40005610: c2 06 a0 04 ld [ %i2 + 4 ], %g1
<== NOT EXECUTED
size_t tokenlen = ctx->tokenlen;
40005614: c8 07 60 0c ld [ %i5 + 0xc ], %g4
<== NOT EXECUTED
ctx->path -= tokenlen;
40005618: c6 07 40 00 ld [ %i5 ], %g3
<== NOT EXECUTED
ctx->pathlen += tokenlen;
4000561c: c4 07 60 04 ld [ %i5 + 4 ], %g2
<== NOT EXECUTED
ctx->path -= tokenlen;
40005620: 86 20 c0 04 sub %g3, %g4, %g3
<== NOT EXECUTED
ctx->pathlen += tokenlen;
40005624: 84 00 80 04 add %g2, %g4, %g2
<== NOT EXECUTED
ctx->path -= tokenlen;
40005628: c6 27 40 00 st %g3, [ %i5 ]
<== NOT EXECUTED
rtems_filesystem_eval_path_restart(
4000562c: b2 00 60 20 add %g1, 0x20, %i1
<== NOT EXECUTED
ctx->pathlen += tokenlen;
40005630: c4 27 60 04 st %g2, [ %i5 + 4 ]
<== NOT EXECUTED
ctx->tokenlen = 0;
40005634: c0 27 60 0c clr [ %i5 + 0xc ]
<== NOT EXECUTED
40005638: 40 00 00 e7 call 400059d4 <rtems_filesystem_eval_path_restart>
<== NOT EXECUTED
4000563c: 91 e8 00 1d restore %g0, %i5, %o0
<== NOT EXECUTED
40006090 <rtems_filesystem_eval_path_next_token>:
const char *current = ctx->path;
40006090: c2 02 00 00 ld [ %o0 ], %g1
const char *end = current + ctx->pathlen;
40006094: c6 02 20 04 ld [ %o0 + 4 ], %g3
40006098: 86 00 40 03 add %g1, %g3, %g3
while (current != end && rtems_filesystem_is_delimiter(*current)) {
4000609c: 80 a0 40 03 cmp %g1, %g3
400060a0: 32 80 00 09 bne,a 400060c4 <rtems_filesystem_eval_path_next_token+0x34>
<== ALWAYS TAKEN
400060a4: c4 48 40 00 ldsb [ %g1 ], %g2
400060a8: 10 80 00 20 b 40006128 <rtems_filesystem_eval_path_next_token+0x98>
<== NOT EXECUTED
400060ac: 9a 10 20 00 clr %o5
<== NOT EXECUTED
++current;
400060b0: 82 00 60 01 inc %g1
while (current != end && rtems_filesystem_is_delimiter(*current)) {
400060b4: 80 a0 c0 01 cmp %g3, %g1
400060b8: 22 80 00 22 be,a 40006140 <rtems_filesystem_eval_path_next_token+0xb0>
<== NEVER TAKEN
400060bc: 82 10 00 03 mov %g3, %g1
<== NOT EXECUTED
400060c0: c4 48 40 00 ldsb [ %g1 ], %g2
400060c4: 80 a0 a0 2f cmp %g2, 0x2f
400060c8: 02 bf ff fa be 400060b0 <rtems_filesystem_eval_path_next_token+0x20>
400060cc: 80 a0 a0 5c cmp %g2, 0x5c
400060d0: 22 bf ff f9 be,a 400060b4 <rtems_filesystem_eval_path_next_token+0x24>
<== NEVER TAKEN
400060d4: 82 00 60 01 inc %g1
<== NOT EXECUTED
ctx->path = current;
400060d8: c2 22 00 00 st %g1, [ %o0 ]
ctx->pathlen = (size_t) (end - current);
400060dc: 9a 20 c0 01 sub %g3, %g1, %o5
400060e0: da 22 20 04 st %o5, [ %o0 + 4 ]
400060e4: 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)) {
400060e8: 80 a0 a0 5c cmp %g2, 0x5c
400060ec: 02 80 00 1f be 40006168 <rtems_filesystem_eval_path_next_token+0xd8>
<== NEVER TAKEN
400060f0: 80 a0 a0 2f cmp %g2, 0x2f
400060f4: 02 80 00 1e be 4000616c <rtems_filesystem_eval_path_next_token+0xdc>
<== NEVER TAKEN
400060f8: 88 10 00 0d mov %o5, %g4
400060fc: 10 80 00 07 b 40006118 <rtems_filesystem_eval_path_next_token+0x88>
40006100: 84 10 00 01 mov %g1, %g2
40006104: 80 a1 20 2f cmp %g4, 0x2f
40006108: 02 80 00 10 be 40006148 <rtems_filesystem_eval_path_next_token+0xb8>
4000610c: 80 a1 20 5c cmp %g4, 0x5c
40006110: 02 80 00 0f be 4000614c <rtems_filesystem_eval_path_next_token+0xbc>
<== NEVER TAKEN
40006114: 88 20 c0 02 sub %g3, %g2, %g4
++current;
40006118: 84 00 a0 01 inc %g2
while (current != end && !rtems_filesystem_is_delimiter(*current)) {
4000611c: 80 a0 80 03 cmp %g2, %g3
40006120: 32 bf ff f9 bne,a 40006104 <rtems_filesystem_eval_path_next_token+0x74>
40006124: c8 48 80 00 ldsb [ %g2 ], %g4
while (current != end && rtems_filesystem_is_delimiter(*current)) {
40006128: 88 10 20 00 clr %g4
}
ctx->path = current;
4000612c: c6 22 00 00 st %g3, [ %o0 ]
ctx->pathlen = (size_t) (end - current);
40006130: c8 22 20 04 st %g4, [ %o0 + 4 ]
ctx->token = begin;
40006134: 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);
}
40006138: 81 c3 e0 08 retl
4000613c: da 22 20 0c st %o5, [ %o0 + 0xc ]
while (current != end && rtems_filesystem_is_delimiter(*current)) {
40006140: 10 bf ff fa b 40006128 <rtems_filesystem_eval_path_next_token+0x98>
<== NOT EXECUTED
40006144: 9a 10 20 00 clr %o5
<== NOT EXECUTED
40006148: 88 20 c0 02 sub %g3, %g2, %g4
4000614c: 9a 20 80 01 sub %g2, %g1, %o5
++current;
40006150: 86 10 00 02 mov %g2, %g3
ctx->pathlen = (size_t) (end - current);
40006154: c8 22 20 04 st %g4, [ %o0 + 4 ]
ctx->path = current;
40006158: c6 22 00 00 st %g3, [ %o0 ]
ctx->token = begin;
4000615c: c2 22 20 08 st %g1, [ %o0 + 8 ]
}
40006160: 81 c3 e0 08 retl
40006164: da 22 20 0c st %o5, [ %o0 + 0xc ]
while (current != end && !rtems_filesystem_is_delimiter(*current)) {
40006168: 88 10 00 0d mov %o5, %g4
<== NOT EXECUTED
4000616c: 86 10 00 01 mov %g1, %g3
<== NOT EXECUTED
40006170: 10 bf ff ef b 4000612c <rtems_filesystem_eval_path_next_token+0x9c>
<== NOT EXECUTED
40006174: 9a 10 20 00 clr %o5
<== NOT EXECUTED
40005a38 <rtems_filesystem_eval_path_recursive>:
{
40005a38: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
if (pathlen > 0) {
40005a3c: 80 a6 a0 00 cmp %i2, 0
<== NOT EXECUTED
40005a40: 02 80 00 22 be 40005ac8 <rtems_filesystem_eval_path_recursive+0x90>
<== NOT EXECUTED
40005a44: ba 10 00 18 mov %i0, %i5
<== NOT EXECUTED
if (ctx->recursionlevel < RTEMS_FILESYSTEM_SYMLOOP_MAX) {
40005a48: c2 06 20 14 ld [ %i0 + 0x14 ], %g1
<== NOT EXECUTED
40005a4c: 80 a0 60 1f cmp %g1, 0x1f
<== NOT EXECUTED
40005a50: 14 80 00 20 bg 40005ad0 <rtems_filesystem_eval_path_recursive+0x98>
<== NOT EXECUTED
40005a54: 01 00 00 00 nop
<== NOT EXECUTED
return c == '/' || c == '\\';
40005a58: c4 4e 40 00 ldsb [ %i1 ], %g2
<== NOT EXECUTED
const char *saved_path = ctx->path;
40005a5c: f6 06 00 00 ld [ %i0 ], %i3
<== NOT EXECUTED
if (rtems_filesystem_is_delimiter(path [0])) {
40005a60: 80 a0 a0 2f cmp %g2, 0x2f
<== NOT EXECUTED
40005a64: 02 80 00 1d be 40005ad8 <rtems_filesystem_eval_path_recursive+0xa0>
<== NOT EXECUTED
40005a68: f8 06 20 04 ld [ %i0 + 4 ], %i4
<== NOT EXECUTED
40005a6c: 80 a0 a0 5c cmp %g2, 0x5c
<== NOT EXECUTED
40005a70: 02 80 00 1b be 40005adc <rtems_filesystem_eval_path_recursive+0xa4>
<== NOT EXECUTED
40005a74: 92 07 60 30 add %i5, 0x30, %o1
<== NOT EXECUTED
++ctx->recursionlevel;
40005a78: 82 00 60 01 inc %g1
<== NOT EXECUTED
ctx->path = path;
40005a7c: f2 27 40 00 st %i1, [ %i5 ]
<== NOT EXECUTED
ctx->pathlen = pathlen;
40005a80: f4 27 60 04 st %i2, [ %i5 + 4 ]
<== NOT EXECUTED
++ctx->recursionlevel;
40005a84: c2 27 60 14 st %g1, [ %i5 + 0x14 ]
<== NOT EXECUTED
(*ctx->currentloc.mt_entry->ops->eval_path_h)(ctx);
40005a88: c2 07 60 2c ld [ %i5 + 0x2c ], %g1
<== NOT EXECUTED
40005a8c: c2 00 60 0c ld [ %g1 + 0xc ], %g1
<== NOT EXECUTED
40005a90: c2 00 60 08 ld [ %g1 + 8 ], %g1
<== NOT EXECUTED
40005a94: 9f c0 40 00 call %g1
<== NOT EXECUTED
40005a98: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
while (ctx->pathlen > 0) {
40005a9c: c2 07 60 04 ld [ %i5 + 4 ], %g1
<== NOT EXECUTED
40005aa0: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
40005aa4: 32 bf ff fa bne,a 40005a8c <rtems_filesystem_eval_path_recursive+0x54>
<== NOT EXECUTED
40005aa8: c2 07 60 2c ld [ %i5 + 0x2c ], %g1
<== NOT EXECUTED
--ctx->recursionlevel;
40005aac: c2 07 60 14 ld [ %i5 + 0x14 ], %g1
<== NOT EXECUTED
40005ab0: 82 00 7f ff add %g1, -1, %g1
<== NOT EXECUTED
ctx->path = saved_path;
40005ab4: f6 27 40 00 st %i3, [ %i5 ]
<== NOT EXECUTED
--ctx->recursionlevel;
40005ab8: c2 27 60 14 st %g1, [ %i5 + 0x14 ]
<== NOT EXECUTED
ctx->pathlen = saved_pathlen;
40005abc: f8 27 60 04 st %i4, [ %i5 + 4 ]
<== NOT EXECUTED
}
40005ac0: 81 c7 e0 08 ret
<== NOT EXECUTED
40005ac4: 81 e8 00 00 restore
<== NOT EXECUTED
rtems_filesystem_eval_path_error(ctx, ENOENT);
40005ac8: 7f ff fe ed call 4000567c <rtems_filesystem_eval_path_error>
<== NOT EXECUTED
40005acc: 93 e8 20 02 restore %g0, 2, %o1
<== NOT EXECUTED
rtems_filesystem_eval_path_error(ctx, ELOOP);
40005ad0: 7f ff fe eb call 4000567c <rtems_filesystem_eval_path_error>
<== NOT EXECUTED
40005ad4: 93 e8 20 5c restore %g0, 0x5c, %o1
<== NOT EXECUTED
rtems_filesystem_eval_path_restart(ctx, &ctx->rootloc);
40005ad8: 92 07 60 30 add %i5, 0x30, %o1
<== NOT EXECUTED
40005adc: 7f ff ff be call 400059d4 <rtems_filesystem_eval_path_restart>
<== NOT EXECUTED
40005ae0: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
40005ae4: 10 bf ff e5 b 40005a78 <rtems_filesystem_eval_path_recursive+0x40>
<== NOT EXECUTED
40005ae8: c2 07 60 14 ld [ %i5 + 0x14 ], %g1
<== NOT EXECUTED
400059d4 <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
)
{
400059d4: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
400059d8: ba 10 00 18 mov %i0, %i5
<== NOT EXECUTED
free_location(&ctx->currentloc);
400059dc: b0 06 20 18 add %i0, 0x18, %i0
<== NOT EXECUTED
400059e0: 7f ff ff 18 call 40005640 <free_location>
<== NOT EXECUTED
400059e4: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
400059e8: c2 07 60 34 ld [ %i5 + 0x34 ], %g1
<== NOT EXECUTED
400059ec: d0 00 60 14 ld [ %g1 + 0x14 ], %o0
<== NOT EXECUTED
400059f0: c2 02 20 0c ld [ %o0 + 0xc ], %g1
<== NOT EXECUTED
400059f4: c2 00 60 04 ld [ %g1 + 4 ], %g1
<== NOT EXECUTED
400059f8: 9f c0 40 00 call %g1
<== NOT EXECUTED
400059fc: 01 00 00 00 nop
<== NOT EXECUTED
rtems_filesystem_instance_unlock(&ctx->startloc->location);
rtems_filesystem_global_location_assign(
40005a00: 40 00 00 b1 call 40005cc4 <rtems_filesystem_global_location_obtain>
<== NOT EXECUTED
40005a04: 90 10 00 19 mov %i1, %o0
<== NOT EXECUTED
40005a08: 92 10 00 08 mov %o0, %o1
<== NOT EXECUTED
40005a0c: 40 00 01 02 call 40005e14 <rtems_filesystem_global_location_assign>
<== NOT EXECUTED
40005a10: 90 07 60 34 add %i5, 0x34, %o0
<== NOT EXECUTED
40005a14: c2 07 60 34 ld [ %i5 + 0x34 ], %g1
<== NOT EXECUTED
40005a18: d0 00 60 14 ld [ %g1 + 0x14 ], %o0
<== NOT EXECUTED
(*mt_entry->ops->lock_h)( mt_entry );
40005a1c: c2 02 20 0c ld [ %o0 + 0xc ], %g1
<== NOT EXECUTED
40005a20: c2 00 40 00 ld [ %g1 ], %g1
<== NOT EXECUTED
40005a24: 9f c0 40 00 call %g1
<== NOT EXECUTED
40005a28: 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);
40005a2c: f2 07 60 34 ld [ %i5 + 0x34 ], %i1
<== NOT EXECUTED
40005a30: 40 00 1e 1e call 4000d2a8 <rtems_filesystem_location_clone>
<== NOT EXECUTED
40005a34: 81 e8 00 00 restore
<== NOT EXECUTED
4000d270 <rtems_filesystem_eval_path_start_with_parent>:
{
4000d270: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
size_t pathlen = strlen(path);
4000d274: 40 01 5d 23 call 40064700 <strlen>
<== NOT EXECUTED
4000d278: 90 10 00 19 mov %i1, %o0
<== NOT EXECUTED
while (pathlen > 0) {
4000d27c: a0 92 20 00 orcc %o0, 0, %l0
<== NOT EXECUTED
4000d280: 02 80 00 32 be 4000d348 <rtems_filesystem_eval_path_start_with_parent+0xd8>
<== NOT EXECUTED
4000d284: a2 10 00 19 mov %i1, %l1
<== NOT EXECUTED
size_t i = pathlen - 1;
4000d288: ba 04 3f ff add %l0, -1, %i5
<== NOT EXECUTED
return c == '/' || c == '\\';
4000d28c: c2 4e 40 1d ldsb [ %i1 + %i5 ], %g1
<== NOT EXECUTED
if (rtems_filesystem_is_delimiter(path [i])) {
4000d290: 80 a0 60 2f cmp %g1, 0x2f
<== NOT EXECUTED
4000d294: 02 80 00 30 be 4000d354 <rtems_filesystem_eval_path_start_with_parent+0xe4>
<== NOT EXECUTED
4000d298: 80 a0 60 5c cmp %g1, 0x5c
<== NOT EXECUTED
4000d29c: 12 80 00 0c bne 4000d2cc <rtems_filesystem_eval_path_start_with_parent+0x5c>
<== NOT EXECUTED
4000d2a0: 80 a7 60 00 cmp %i5, 0
<== NOT EXECUTED
4000d2a4: 10 80 00 2e b 4000d35c <rtems_filesystem_eval_path_start_with_parent+0xec>
<== NOT EXECUTED
4000d2a8: ba 10 00 10 mov %l0, %i5
<== NOT EXECUTED
4000d2ac: c4 4e 40 01 ldsb [ %i1 + %g1 ], %g2
<== NOT EXECUTED
4000d2b0: 80 a0 a0 2f cmp %g2, 0x2f
<== NOT EXECUTED
4000d2b4: 02 80 00 21 be 4000d338 <rtems_filesystem_eval_path_start_with_parent+0xc8>
<== NOT EXECUTED
4000d2b8: 80 a0 a0 5c cmp %g2, 0x5c
<== NOT EXECUTED
4000d2bc: 02 80 00 20 be 4000d33c <rtems_filesystem_eval_path_start_with_parent+0xcc>
<== NOT EXECUTED
4000d2c0: a2 10 00 19 mov %i1, %l1
<== NOT EXECUTED
size_t i = pathlen - 1;
4000d2c4: ba 10 00 01 mov %g1, %i5
<== NOT EXECUTED
while (pathlen > 0) {
4000d2c8: 80 a7 60 00 cmp %i5, 0
<== NOT EXECUTED
4000d2cc: 12 bf ff f8 bne 4000d2ac <rtems_filesystem_eval_path_start_with_parent+0x3c>
<== NOT EXECUTED
4000d2d0: 82 07 7f ff add %i5, -1, %g1
<== NOT EXECUTED
parentpath = ".";
4000d2d4: 23 10 01 fc sethi %hi(0x4007f000), %l1
<== NOT EXECUTED
parentpathlen = 1;
4000d2d8: ba 10 20 01 mov 1, %i5
<== NOT EXECUTED
parentpath = ".";
4000d2dc: a2 14 61 e0 or %l1, 0x1e0, %l1
<== NOT EXECUTED
&rtems_filesystem_root,
4000d2e0: 7f ff fc db call 4000c64c <rtems_current_user_env_get>
<== NOT EXECUTED
4000d2e4: 01 00 00 00 nop
<== NOT EXECUTED
&rtems_filesystem_current
4000d2e8: 7f ff fc d9 call 4000c64c <rtems_current_user_env_get>
<== NOT EXECUTED
4000d2ec: a4 10 00 08 mov %o0, %l2
<== NOT EXECUTED
currentloc = rtems_filesystem_eval_path_start_with_root_and_current(
4000d2f0: 98 04 a0 04 add %l2, 4, %o4
<== NOT EXECUTED
4000d2f4: 9a 10 00 08 mov %o0, %o5
<== NOT EXECUTED
4000d2f8: 96 10 00 1c mov %i4, %o3
<== NOT EXECUTED
4000d2fc: 94 10 00 1d mov %i5, %o2
<== NOT EXECUTED
4000d300: 92 10 00 11 mov %l1, %o1
<== NOT EXECUTED
4000d304: 7f ff ff 79 call 4000d0e8 <rtems_filesystem_eval_path_start_with_root_and_current>
<== NOT EXECUTED
4000d308: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
rtems_filesystem_location_clone(parentloc, currentloc);
4000d30c: 92 10 00 08 mov %o0, %o1
<== NOT EXECUTED
4000d310: 40 00 d1 c1 call 40041a14 <rtems_filesystem_location_clone>
<== NOT EXECUTED
4000d314: 90 10 00 1b mov %i3, %o0
<== NOT EXECUTED
ctx->path = name;
4000d318: f2 26 00 00 st %i1, [ %i0 ]
<== NOT EXECUTED
rtems_filesystem_eval_path_continue(ctx);
4000d31c: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
ctx->pathlen = namelen;
4000d320: e0 26 20 04 st %l0, [ %i0 + 4 ]
<== NOT EXECUTED
return &ctx->currentloc;
4000d324: b0 06 20 18 add %i0, 0x18, %i0
<== NOT EXECUTED
rtems_filesystem_eval_path_continue(ctx);
4000d328: 7f ff ff 53 call 4000d074 <rtems_filesystem_eval_path_continue>
<== NOT EXECUTED
4000d32c: f4 26 3f f8 st %i2, [ %i0 + -8 ]
<== NOT EXECUTED
}
4000d330: 81 c7 e0 08 ret
<== NOT EXECUTED
4000d334: 81 e8 00 00 restore
<== NOT EXECUTED
name = path + parentpathlen;
4000d338: a2 10 00 19 mov %i1, %l1
<== NOT EXECUTED
4000d33c: a0 24 00 1d sub %l0, %i5, %l0
<== NOT EXECUTED
4000d340: 10 bf ff e8 b 4000d2e0 <rtems_filesystem_eval_path_start_with_parent+0x70>
<== NOT EXECUTED
4000d344: b2 06 40 1d add %i1, %i5, %i1
<== NOT EXECUTED
return 0;
4000d348: ba 10 20 00 clr %i5
<== NOT EXECUTED
const char *name = NULL;
4000d34c: 10 bf ff e5 b 4000d2e0 <rtems_filesystem_eval_path_start_with_parent+0x70>
<== NOT EXECUTED
4000d350: b2 10 20 00 clr %i1
<== NOT EXECUTED
if (rtems_filesystem_is_delimiter(path [i])) {
4000d354: ba 10 00 10 mov %l0, %i5
<== NOT EXECUTED
name = path + parentpathlen;
4000d358: a2 10 00 19 mov %i1, %l1
<== NOT EXECUTED
if (rtems_filesystem_is_delimiter(path [i])) {
4000d35c: a0 10 20 00 clr %l0
<== NOT EXECUTED
name = path + parentpathlen;
4000d360: 10 bf ff e0 b 4000d2e0 <rtems_filesystem_eval_path_start_with_parent+0x70>
<== NOT EXECUTED
4000d364: b2 06 40 1d add %i1, %i5, %i1
<== NOT EXECUTED
40005810 <rtems_filesystem_eval_path_start_with_root_and_current>:
{
40005810: 9d e3 bf 98 save %sp, -104, %sp
memset(ctx, 0, sizeof(*ctx));
40005814: 94 10 20 30 mov 0x30, %o2
40005818: 92 10 20 00 clr %o1
4000581c: 40 00 24 48 call 4000e93c <memset>
40005820: 90 06 20 08 add %i0, 8, %o0
ctx->path = path;
40005824: f2 26 00 00 st %i1, [ %i0 ]
if (ctx->pathlen > 0) {
40005828: 80 a6 a0 00 cmp %i2, 0
ctx->pathlen = pathlen;
4000582c: f4 26 20 04 st %i2, [ %i0 + 4 ]
if (ctx->pathlen > 0) {
40005830: 02 80 00 1d be 400058a4 <rtems_filesystem_eval_path_start_with_root_and_current+0x94>
<== NEVER TAKEN
40005834: f6 26 20 10 st %i3, [ %i0 + 0x10 ]
char c = ctx->path [0];
40005838: f6 0e 40 00 ldub [ %i1 ], %i3
ctx->rootloc = rtems_filesystem_global_location_obtain(global_root_ptr);
4000583c: 40 00 01 22 call 40005cc4 <rtems_filesystem_global_location_obtain>
40005840: 90 10 00 1c mov %i4, %o0
return c == '/' || c == '\\';
40005844: 83 2e e0 18 sll %i3, 0x18, %g1
40005848: 83 38 60 18 sra %g1, 0x18, %g1
if (rtems_filesystem_is_delimiter(c)) {
4000584c: 80 a0 60 2f cmp %g1, 0x2f
40005850: 02 80 00 2f be 4000590c <rtems_filesystem_eval_path_start_with_root_and_current+0xfc>
<== ALWAYS TAKEN
40005854: d0 26 20 30 st %o0, [ %i0 + 0x30 ]
40005858: 80 a0 60 5c cmp %g1, 0x5c
<== NOT EXECUTED
4000585c: 22 80 00 2d be,a 40005910 <rtems_filesystem_eval_path_start_with_root_and_current+0x100>
<== NOT EXECUTED
40005860: c4 06 00 00 ld [ %i0 ], %g2
<== NOT EXECUTED
ctx->startloc = rtems_filesystem_global_location_obtain(
40005864: 40 00 01 18 call 40005cc4 <rtems_filesystem_global_location_obtain>
<== NOT EXECUTED
40005868: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
4000586c: d0 26 20 34 st %o0, [ %i0 + 0x34 ]
<== NOT EXECUTED
40005870: d0 02 20 14 ld [ %o0 + 0x14 ], %o0
<== NOT EXECUTED
(*mt_entry->ops->lock_h)( mt_entry );
40005874: c2 02 20 0c ld [ %o0 + 0xc ], %g1
<== NOT EXECUTED
40005878: c2 00 40 00 ld [ %g1 ], %g1
<== NOT EXECUTED
4000587c: 9f c0 40 00 call %g1
<== NOT EXECUTED
40005880: ba 06 20 18 add %i0, 0x18, %i5
<== NOT EXECUTED
rtems_filesystem_location_clone(
40005884: d2 06 20 34 ld [ %i0 + 0x34 ], %o1
<== NOT EXECUTED
40005888: 40 00 1e 88 call 4000d2a8 <rtems_filesystem_location_clone>
<== NOT EXECUTED
4000588c: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
rtems_filesystem_eval_path_continue(ctx);
40005890: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
40005894: 7f ff ff c2 call 4000579c <rtems_filesystem_eval_path_continue>
<== NOT EXECUTED
40005898: b0 10 00 1d mov %i5, %i0
<== NOT EXECUTED
}
4000589c: 81 c7 e0 08 ret
<== NOT EXECUTED
400058a0: 81 e8 00 00 restore
<== NOT EXECUTED
rtems_filesystem_global_location_t *global_loc = NULL;
400058a4: c0 27 bf fc clr [ %fp + -4 ]
<== NOT EXECUTED
return rtems_filesystem_global_location_obtain( &global_loc );
400058a8: 40 00 01 07 call 40005cc4 <rtems_filesystem_global_location_obtain>
<== NOT EXECUTED
400058ac: 90 07 bf fc add %fp, -4, %o0
<== NOT EXECUTED
ctx->rootloc = rtems_filesystem_global_location_obtain_null();
400058b0: d0 26 20 30 st %o0, [ %i0 + 0x30 ]
<== NOT EXECUTED
400058b4: 90 07 bf fc add %fp, -4, %o0
<== NOT EXECUTED
400058b8: 40 00 01 03 call 40005cc4 <rtems_filesystem_global_location_obtain>
<== NOT EXECUTED
400058bc: c0 27 bf fc clr [ %fp + -4 ]
<== NOT EXECUTED
ctx->startloc = rtems_filesystem_global_location_obtain_null();
400058c0: d0 26 20 34 st %o0, [ %i0 + 0x34 ]
<== NOT EXECUTED
errno = ENOENT;
400058c4: 40 00 23 a5 call 4000e758 <__errno>
<== NOT EXECUTED
400058c8: ba 06 20 18 add %i0, 0x18, %i5
<== NOT EXECUTED
400058cc: 82 10 20 02 mov 2, %g1
<== NOT EXECUTED
400058d0: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
400058d4: d0 06 20 34 ld [ %i0 + 0x34 ], %o0
<== NOT EXECUTED
400058d8: d0 02 20 14 ld [ %o0 + 0x14 ], %o0
<== NOT EXECUTED
(*mt_entry->ops->lock_h)( mt_entry );
400058dc: c2 02 20 0c ld [ %o0 + 0xc ], %g1
<== NOT EXECUTED
400058e0: c2 00 40 00 ld [ %g1 ], %g1
<== NOT EXECUTED
400058e4: 9f c0 40 00 call %g1
<== NOT EXECUTED
400058e8: 01 00 00 00 nop
<== NOT EXECUTED
rtems_filesystem_location_clone(
400058ec: d2 06 20 34 ld [ %i0 + 0x34 ], %o1
<== NOT EXECUTED
400058f0: 40 00 1e 6e call 4000d2a8 <rtems_filesystem_location_clone>
<== NOT EXECUTED
400058f4: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
rtems_filesystem_eval_path_continue(ctx);
400058f8: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
400058fc: 7f ff ff a8 call 4000579c <rtems_filesystem_eval_path_continue>
<== NOT EXECUTED
40005900: b0 10 00 1d mov %i5, %i0
<== NOT EXECUTED
}
40005904: 81 c7 e0 08 ret
<== NOT EXECUTED
40005908: 81 e8 00 00 restore
<== NOT EXECUTED
++ctx->path;
4000590c: c4 06 00 00 ld [ %i0 ], %g2
--ctx->pathlen;
40005910: c2 06 20 04 ld [ %i0 + 4 ], %g1
++ctx->path;
40005914: 84 00 a0 01 inc %g2
--ctx->pathlen;
40005918: 82 00 7f ff add %g1, -1, %g1
++ctx->path;
4000591c: c4 26 00 00 st %g2, [ %i0 ]
ctx->startloc = rtems_filesystem_global_location_obtain(
40005920: 90 06 20 30 add %i0, 0x30, %o0
--ctx->pathlen;
40005924: c2 26 20 04 st %g1, [ %i0 + 4 ]
ctx->startloc = rtems_filesystem_global_location_obtain(
40005928: 40 00 00 e7 call 40005cc4 <rtems_filesystem_global_location_obtain>
4000592c: ba 06 20 18 add %i0, 0x18, %i5
40005930: d0 26 20 34 st %o0, [ %i0 + 0x34 ]
40005934: d0 02 20 14 ld [ %o0 + 0x14 ], %o0
40005938: c2 02 20 0c ld [ %o0 + 0xc ], %g1
4000593c: c2 00 40 00 ld [ %g1 ], %g1
40005940: 9f c0 40 00 call %g1
40005944: 01 00 00 00 nop
rtems_filesystem_location_clone(
40005948: d2 06 20 34 ld [ %i0 + 0x34 ], %o1
4000594c: 40 00 1e 57 call 4000d2a8 <rtems_filesystem_location_clone>
40005950: 90 10 00 1d mov %i5, %o0
rtems_filesystem_eval_path_continue(ctx);
40005954: 90 10 00 18 mov %i0, %o0
40005958: 7f ff ff 91 call 4000579c <rtems_filesystem_eval_path_continue>
4000595c: b0 10 00 1d mov %i5, %i0
}
40005960: 81 c7 e0 08 ret
40005964: 81 e8 00 00 restore
4000d60c <rtems_filesystem_get_mount_handler>:
rtems_filesystem_fsmount_me_t
rtems_filesystem_get_mount_handler(
const char *type
)
{
4000d60c: 9d e3 bf 98 save %sp, -104, %sp
4000d610: 82 10 00 18 mov %i0, %g1
find_arg fa = {
4000d614: c0 27 bf fc clr [ %fp + -4 ]
4000d618: b0 10 20 00 clr %i0
.type = type,
.mount_h = NULL
};
if ( type != NULL ) {
4000d61c: 80 a0 60 00 cmp %g1, 0
4000d620: 02 80 00 07 be 4000d63c <rtems_filesystem_get_mount_handler+0x30>
<== NEVER TAKEN
4000d624: c2 27 bf f8 st %g1, [ %fp + -8 ]
rtems_filesystem_iterate( find_handler, &fa );
4000d628: 92 07 bf f8 add %fp, -8, %o1
4000d62c: 11 10 00 35 sethi %hi(0x4000d400), %o0
4000d630: 7f ff ff cb call 4000d55c <rtems_filesystem_iterate>
4000d634: 90 12 21 28 or %o0, 0x128, %o0 ! 4000d528 <find_handler>
4000d638: f0 07 bf fc ld [ %fp + -4 ], %i0
}
return fa.mount_h;
}
4000d63c: 81 c7 e0 08 ret
4000d640: 81 e8 00 00 restore
40005e14 <rtems_filesystem_global_location_assign>:
{
40005e14: 84 10 00 08 mov %o0, %g2
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40005e18: 91 d0 20 09 ta 9
<== NOT EXECUTED
lhs_global_loc = *lhs_global_loc_ptr;
40005e1c: d0 02 00 00 ld [ %o0 ], %o0
<== NOT EXECUTED
*lhs_global_loc_ptr = rhs_global_loc;
40005e20: d2 20 80 00 st %o1, [ %g2 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40005e24: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40005e28: 01 00 00 00 nop
rtems_filesystem_global_location_release(lhs_global_loc, true);
40005e2c: 92 10 20 01 mov 1, %o1 ! 1 <_TLS_Alignment>
40005e30: 82 13 c0 00 mov %o7, %g1
40005e34: 7f ff ff de call 40005dac <rtems_filesystem_global_location_release>
40005e38: 9e 10 40 00 mov %g1, %o7
40005cc4 <rtems_filesystem_global_location_obtain>:
{
40005cc4: 9d e3 bf 98 save %sp, -104, %sp
if (deferred_released_global_locations != NULL) {
40005cc8: 3b 10 00 4b sethi %hi(0x40012c00), %i5
40005ccc: c2 07 63 20 ld [ %i5 + 0x320 ], %g1 ! 40012f20 <deferred_released_global_locations>
40005cd0: 80 a0 60 00 cmp %g1, 0
40005cd4: 02 80 00 1e be 40005d4c <rtems_filesystem_global_location_obtain+0x88>
40005cd8: 01 00 00 00 nop
40005cdc: ba 17 63 20 or %i5, 0x320, %i5
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40005ce0: 91 d0 20 09 ta 9
<== NOT EXECUTED
current = deferred_released_global_locations;
40005ce4: d0 07 40 00 ld [ %i5 ], %o0
if (current != NULL) {
40005ce8: 80 a2 20 00 cmp %o0, 0
40005cec: 02 80 00 07 be 40005d08 <rtems_filesystem_global_location_obtain+0x44>
<== NEVER TAKEN
40005cf0: 92 10 20 00 clr %o1
<== NOT EXECUTED
deferred_released_global_locations = current->deferred_released_next;
40005cf4: c4 02 20 1c ld [ %o0 + 0x1c ], %g2
<== NOT EXECUTED
count = current->deferred_released_count;
40005cf8: d2 02 20 20 ld [ %o0 + 0x20 ], %o1
<== NOT EXECUTED
deferred_released_global_locations = current->deferred_released_next;
40005cfc: c4 27 40 00 st %g2, [ %i5 ]
<== NOT EXECUTED
current->deferred_released_next = NULL;
40005d00: c0 22 20 1c clr [ %o0 + 0x1c ]
<== NOT EXECUTED
current->deferred_released_count = 0;
40005d04: c0 22 20 20 clr [ %o0 + 0x20 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40005d08: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40005d0c: 01 00 00 00 nop
if (current != NULL) {
40005d10: 80 a2 20 00 cmp %o0, 0
40005d14: 02 80 00 0e be 40005d4c <rtems_filesystem_global_location_obtain+0x88>
<== NEVER TAKEN
40005d18: 01 00 00 00 nop
release_with_count(current, count);
40005d1c: 7f ff ff be call 40005c14 <release_with_count>
40005d20: 01 00 00 00 nop
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40005d24: 91 d0 20 09 ta 9
<== NOT EXECUTED
current = deferred_released_global_locations;
40005d28: d0 07 40 00 ld [ %i5 ], %o0
if (current != NULL) {
40005d2c: 80 a2 20 00 cmp %o0, 0
40005d30: 12 bf ff f1 bne 40005cf4 <rtems_filesystem_global_location_obtain+0x30>
<== NEVER TAKEN
40005d34: 92 10 20 00 clr %o1
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40005d38: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40005d3c: 01 00 00 00 nop
if (current != NULL) {
40005d40: 80 a2 20 00 cmp %o0, 0
40005d44: 12 bf ff f6 bne 40005d1c <rtems_filesystem_global_location_obtain+0x58>
<== NEVER TAKEN
40005d48: 01 00 00 00 nop
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40005d4c: 91 d0 20 09 ta 9
<== NOT EXECUTED
global_loc = *global_loc_ptr;
40005d50: f0 06 00 00 ld [ %i0 ], %i0
if (global_loc == NULL || !global_loc->location.mt_entry->mounted) {
40005d54: 80 a6 20 00 cmp %i0, 0
40005d58: 02 80 00 07 be 40005d74 <rtems_filesystem_global_location_obtain+0xb0>
<== NEVER TAKEN
40005d5c: 01 00 00 00 nop
40005d60: c4 06 20 14 ld [ %i0 + 0x14 ], %g2
40005d64: c4 08 a0 28 ldub [ %g2 + 0x28 ], %g2
40005d68: 80 a0 a0 00 cmp %g2, 0
40005d6c: 32 80 00 0a bne,a 40005d94 <rtems_filesystem_global_location_obtain+0xd0>
<== ALWAYS TAKEN
40005d70: c4 06 20 18 ld [ %i0 + 0x18 ], %g2
errno = ENXIO;
40005d74: 40 00 22 79 call 4000e758 <__errno>
<== NOT EXECUTED
40005d78: c2 27 bf fc st %g1, [ %fp + -4 ]
<== NOT EXECUTED
40005d7c: 84 10 20 06 mov 6, %g2
<== NOT EXECUTED
40005d80: c4 22 00 00 st %g2, [ %o0 ]
<== NOT EXECUTED
global_loc = &rtems_filesystem_global_location_null;
40005d84: 31 10 00 47 sethi %hi(0x40011c00), %i0
<== NOT EXECUTED
40005d88: c2 07 bf fc ld [ %fp + -4 ], %g1
<== NOT EXECUTED
40005d8c: b0 16 22 70 or %i0, 0x270, %i0
<== NOT EXECUTED
++global_loc->reference_count;
40005d90: c4 06 20 18 ld [ %i0 + 0x18 ], %g2
<== NOT EXECUTED
40005d94: 84 00 a0 01 inc %g2
<== NOT EXECUTED
40005d98: c4 26 20 18 st %g2, [ %i0 + 0x18 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40005d9c: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40005da0: 01 00 00 00 nop
}
40005da4: 81 c7 e0 08 ret
40005da8: 81 e8 00 00 restore
40005dac <rtems_filesystem_global_location_release>:
if (!deferred) {
40005dac: 80 a2 60 00 cmp %o1, 0
40005db0: 22 80 00 16 be,a 40005e08 <rtems_filesystem_global_location_release+0x5c>
40005db4: 92 10 20 01 mov 1, %o1
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40005db8: 91 d0 20 09 ta 9
<== NOT EXECUTED
if (global_loc->deferred_released_count == 0) {
40005dbc: c6 02 20 20 ld [ %o0 + 0x20 ], %g3
40005dc0: 80 a0 e0 00 cmp %g3, 0
40005dc4: 22 80 00 08 be,a 40005de4 <rtems_filesystem_global_location_release+0x38>
40005dc8: 07 10 00 4b sethi %hi(0x40012c00), %g3
++global_loc->deferred_released_count;
40005dcc: 86 00 e0 01 inc %g3
<== NOT EXECUTED
40005dd0: c6 22 20 20 st %g3, [ %o0 + 0x20 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40005dd4: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40005dd8: 01 00 00 00 nop
}
40005ddc: 81 c3 e0 08 retl
40005de0: 01 00 00 00 nop
rtems_filesystem_global_location_t *head =
40005de4: c8 00 e3 20 ld [ %g3 + 0x320 ], %g4
<== NOT EXECUTED
global_loc->deferred_released_next = head;
40005de8: c8 22 20 1c st %g4, [ %o0 + 0x1c ]
<== NOT EXECUTED
global_loc->deferred_released_count = 1;
40005dec: 88 10 20 01 mov 1, %g4
<== NOT EXECUTED
deferred_released_global_locations = global_loc;
40005df0: d0 20 e3 20 st %o0, [ %g3 + 0x320 ]
<== NOT EXECUTED
global_loc->deferred_released_count = 1;
40005df4: c8 22 20 20 st %g4, [ %o0 + 0x20 ]
<== NOT EXECUTED
40005df8: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40005dfc: 01 00 00 00 nop
}
40005e00: 81 c3 e0 08 retl
40005e04: 01 00 00 00 nop
release_with_count(global_loc, 1);
40005e08: 82 13 c0 00 mov %o7, %g1
40005e0c: 7f ff ff 82 call 40005c14 <release_with_count>
40005e10: 9e 10 40 00 mov %g1, %o7
40004578 <rtems_filesystem_initialize>:
/*
* Default mode for created files.
*/
void rtems_filesystem_initialize( void )
{
40004578: 9d e3 bf a0 save %sp, -96, %sp
int rv = 0;
const rtems_filesystem_mount_configuration *root_config =
&rtems_filesystem_root_configuration;
rv = mount(
4000457c: 05 10 00 3f sethi %hi(0x4000fc00), %g2
40004580: 82 10 a3 64 or %g2, 0x364, %g1 ! 4000ff64 <rtems_filesystem_root_configuration>
40004584: d0 00 a3 64 ld [ %g2 + 0x364 ], %o0
40004588: d8 00 60 10 ld [ %g1 + 0x10 ], %o4
4000458c: d6 00 60 0c ld [ %g1 + 0xc ], %o3
40004590: d4 00 60 08 ld [ %g1 + 8 ], %o2
40004594: 40 00 01 a4 call 40004c24 <mount>
40004598: d2 00 60 04 ld [ %g1 + 4 ], %o1
root_config->target,
root_config->filesystemtype,
root_config->options,
root_config->data
);
if ( rv != 0 )
4000459c: 80 a2 20 00 cmp %o0, 0
400045a0: 12 80 00 0a bne 400045c8 <rtems_filesystem_initialize+0x50>
<== NEVER TAKEN
400045a4: 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 );
400045a8: 11 10 00 40 sethi %hi(0x40010000), %o0
400045ac: 40 00 01 56 call 40004b04 <mkdir>
400045b0: 90 12 23 60 or %o0, 0x360, %o0 ! 40010360 <IMFS_node_control_sym_link+0x14>
if ( rv != 0 )
400045b4: 80 a2 20 00 cmp %o0, 0
400045b8: 12 80 00 07 bne 400045d4 <rtems_filesystem_initialize+0x5c>
<== NEVER TAKEN
400045bc: 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.
*/
}
400045c0: 81 c7 e0 08 ret
400045c4: 81 e8 00 00 restore
rtems_fatal_error_occurred( 0xABCD0002 );
400045c8: 11 2a f3 40 sethi %hi(0xabcd0000), %o0
<== NOT EXECUTED
400045cc: 40 00 08 e2 call 40006954 <rtems_fatal_error_occurred>
<== NOT EXECUTED
400045d0: 90 12 20 02 or %o0, 2, %o0 ! abcd0002 <RAM_END+0x6b8d0002>
<== NOT EXECUTED
rtems_fatal_error_occurred( 0xABCD0003 );
400045d4: 40 00 08 e0 call 40006954 <rtems_fatal_error_occurred>
<== NOT EXECUTED
400045d8: 90 12 20 03 or %o0, 3, %o0
<== NOT EXECUTED
400045dc: 01 00 00 00 nop
<== NOT EXECUTED
4000d55c <rtems_filesystem_iterate>:
{
4000d55c: 9d e3 bf a0 save %sp, -96, %sp
while ( table_entry->type && !stop ) {
4000d560: 3b 10 00 3f sethi %hi(0x4000fc00), %i5
4000d564: c2 07 63 e0 ld [ %i5 + 0x3e0 ], %g1 ! 4000ffe0 <rtems_filesystem_table>
4000d568: 80 a0 60 00 cmp %g1, 0
4000d56c: 12 80 00 06 bne 4000d584 <rtems_filesystem_iterate+0x28>
<== ALWAYS TAKEN
4000d570: ba 17 63 e0 or %i5, 0x3e0, %i5
4000d574: 30 80 00 0f b,a 4000d5b0 <rtems_filesystem_iterate+0x54>
<== NOT EXECUTED
4000d578: 80 a2 20 00 cmp %o0, 0
4000d57c: 32 80 00 22 bne,a 4000d604 <rtems_filesystem_iterate+0xa8>
<== ALWAYS TAKEN
4000d580: b8 0f 20 ff and %i4, 0xff, %i4
stop = (*routine)( table_entry, routine_arg );
4000d584: 90 10 00 1d mov %i5, %o0
4000d588: 9f c6 00 00 call %i0
4000d58c: 92 10 00 19 mov %i1, %o1
++table_entry;
4000d590: ba 07 60 08 add %i5, 8, %i5
while ( table_entry->type && !stop ) {
4000d594: c2 07 40 00 ld [ %i5 ], %g1
4000d598: 80 a0 60 00 cmp %g1, 0
4000d59c: 12 bf ff f7 bne 4000d578 <rtems_filesystem_iterate+0x1c>
4000d5a0: b8 10 00 08 mov %o0, %i4
if ( !stop ) {
4000d5a4: b8 8a 20 ff andcc %o0, 0xff, %i4
4000d5a8: 12 80 00 17 bne 4000d604 <rtems_filesystem_iterate+0xa8>
<== ALWAYS TAKEN
4000d5ac: 01 00 00 00 nop
rtems_libio_lock();
4000d5b0: 7f ff dc a6 call 40004848 <rtems_libio_lock>
<== NOT EXECUTED
4000d5b4: 37 10 00 48 sethi %hi(0x40012000), %i3
<== NOT EXECUTED
return _Chain_Immutable_head( the_chain )->next;
4000d5b8: fa 06 e0 60 ld [ %i3 + 0x60 ], %i5 ! 40012060 <filesystem_chain>
<== NOT EXECUTED
4000d5bc: b6 16 e0 60 or %i3, 0x60, %i3
<== NOT EXECUTED
for (
4000d5c0: b6 06 e0 04 add %i3, 4, %i3
<== NOT EXECUTED
4000d5c4: 80 a7 40 1b cmp %i5, %i3
<== NOT EXECUTED
4000d5c8: 12 80 00 06 bne 4000d5e0 <rtems_filesystem_iterate+0x84>
<== NOT EXECUTED
4000d5cc: b8 10 20 00 clr %i4
<== NOT EXECUTED
4000d5d0: 30 80 00 0b b,a 4000d5fc <rtems_filesystem_iterate+0xa0>
<== NOT EXECUTED
!rtems_chain_is_tail( chain, node ) && !stop;
4000d5d4: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
4000d5d8: 12 80 00 09 bne 4000d5fc <rtems_filesystem_iterate+0xa0>
<== NOT EXECUTED
4000d5dc: 01 00 00 00 nop
<== NOT EXECUTED
stop = (*routine)( &fsn->entry, routine_arg );
4000d5e0: 90 07 60 08 add %i5, 8, %o0
<== NOT EXECUTED
4000d5e4: 9f c6 00 00 call %i0
<== NOT EXECUTED
4000d5e8: 92 10 00 19 mov %i1, %o1
<== NOT EXECUTED
4000d5ec: fa 07 40 00 ld [ %i5 ], %i5
<== NOT EXECUTED
for (
4000d5f0: 80 a7 40 1b cmp %i5, %i3
<== NOT EXECUTED
4000d5f4: 12 bf ff f8 bne 4000d5d4 <rtems_filesystem_iterate+0x78>
<== NOT EXECUTED
4000d5f8: b8 10 00 08 mov %o0, %i4
<== NOT EXECUTED
rtems_libio_unlock();
4000d5fc: 7f ff dc 98 call 4000485c <rtems_libio_unlock>
<== NOT EXECUTED
4000d600: b8 0f 20 ff and %i4, 0xff, %i4
<== NOT EXECUTED
}
4000d604: 81 c7 e0 08 ret
4000d608: 91 e8 00 1c restore %g0, %i4, %o0
4000d2a8 <rtems_filesystem_location_clone>:
void rtems_filesystem_location_clone(
rtems_filesystem_location_info_t *clone,
const rtems_filesystem_location_info_t *master
)
{
4000d2a8: 9d e3 bf a0 save %sp, -96, %sp
int rv = 0;
clone = rtems_filesystem_location_copy( clone, master );
4000d2ac: 92 10 00 19 mov %i1, %o1
4000d2b0: 7f ff e2 0f call 40005aec <rtems_filesystem_location_copy>
4000d2b4: 90 10 00 18 mov %i0, %o0
rv = (*clone->mt_entry->ops->clonenod_h)( clone );
4000d2b8: c2 02 20 14 ld [ %o0 + 0x14 ], %g1
4000d2bc: c2 00 60 0c ld [ %g1 + 0xc ], %g1
4000d2c0: c2 00 60 24 ld [ %g1 + 0x24 ], %g1
4000d2c4: 9f c0 40 00 call %g1
4000d2c8: ba 10 00 08 mov %o0, %i5
if ( rv != 0 ) {
4000d2cc: 80 a2 20 00 cmp %o0, 0
4000d2d0: 12 80 00 04 bne 4000d2e0 <rtems_filesystem_location_clone+0x38>
<== NEVER TAKEN
4000d2d4: 90 10 00 1d mov %i5, %o0
rtems_filesystem_location_remove_from_mt_entry( clone );
rtems_filesystem_location_initialize_to_null( clone );
}
}
4000d2d8: 81 c7 e0 08 ret
4000d2dc: 81 e8 00 00 restore
return rtems_filesystem_location_copy(
4000d2e0: 33 10 00 47 sethi %hi(0x40011c00), %i1
<== NOT EXECUTED
rtems_filesystem_location_remove_from_mt_entry( clone );
4000d2e4: 7f ff e2 d6 call 40005e3c <rtems_filesystem_location_remove_from_mt_entry>
<== NOT EXECUTED
4000d2e8: b0 10 00 1d mov %i5, %i0
<== NOT EXECUTED
4000d2ec: 7f ff e2 00 call 40005aec <rtems_filesystem_location_copy>
<== NOT EXECUTED
4000d2f0: 93 ee 62 70 restore %i1, 0x270, %o1
<== NOT EXECUTED
40005aec <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;
40005aec: da 02 60 08 ld [ %o1 + 8 ], %o5
<== NOT EXECUTED
dst->node_access_2 = src->node_access_2;
40005af0: c8 02 60 0c ld [ %o1 + 0xc ], %g4
<== NOT EXECUTED
dst->handlers = src->handlers;
40005af4: c6 02 60 10 ld [ %o1 + 0x10 ], %g3
<== NOT EXECUTED
dst->mt_entry = src->mt_entry;
40005af8: c2 02 60 14 ld [ %o1 + 0x14 ], %g1
<== NOT EXECUTED
40005afc: c2 22 20 14 st %g1, [ %o0 + 0x14 ]
<== NOT EXECUTED
dst->node_access = src->node_access;
40005b00: da 22 20 08 st %o5, [ %o0 + 8 ]
<== NOT EXECUTED
dst->node_access_2 = src->node_access_2;
40005b04: c8 22 20 0c st %g4, [ %o0 + 0xc ]
<== NOT EXECUTED
dst->handlers = src->handlers;
40005b08: c6 22 20 10 st %g3, [ %o0 + 0x10 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40005b0c: 91 d0 20 09 ta 9
<== NOT EXECUTED
&loc->mt_entry->location_chain,
40005b10: c6 02 20 14 ld [ %o0 + 0x14 ], %g3
<== NOT EXECUTED
old_last = tail->previous;
40005b14: c8 00 e0 1c ld [ %g3 + 0x1c ], %g4
<== NOT EXECUTED
return &the_chain->Tail.Node;
40005b18: 9a 00 e0 18 add %g3, 0x18, %o5
<== NOT EXECUTED
the_node->next = tail;
40005b1c: da 22 00 00 st %o5, [ %o0 ]
<== NOT EXECUTED
tail->previous = the_node;
40005b20: d0 20 e0 1c st %o0, [ %g3 + 0x1c ]
<== NOT EXECUTED
old_last->next = the_node;
40005b24: d0 21 00 00 st %o0, [ %g4 ]
<== NOT EXECUTED
the_node->previous = old_last;
40005b28: c8 22 20 04 st %g4, [ %o0 + 4 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40005b2c: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40005b30: 01 00 00 00 nop
rtems_chain_initialize_node(&dst->mt_entry_node);
rtems_filesystem_location_add_to_mt_entry(dst);
return dst;
}
40005b34: 81 c3 e0 08 retl
40005b38: 01 00 00 00 nop
40005ec0 <rtems_filesystem_location_copy_and_detach>:
{
40005ec0: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
dst->node_access = src->node_access;
40005ec4: c8 06 60 08 ld [ %i1 + 8 ], %g4
<== NOT EXECUTED
dst->node_access_2 = src->node_access_2;
40005ec8: c6 06 60 0c ld [ %i1 + 0xc ], %g3
<== NOT EXECUTED
dst->handlers = src->handlers;
40005ecc: c4 06 60 10 ld [ %i1 + 0x10 ], %g2
<== NOT EXECUTED
dst->mt_entry = src->mt_entry;
40005ed0: c2 06 60 14 ld [ %i1 + 0x14 ], %g1
<== NOT EXECUTED
40005ed4: c2 26 20 14 st %g1, [ %i0 + 0x14 ]
<== NOT EXECUTED
dst->node_access = src->node_access;
40005ed8: c8 26 20 08 st %g4, [ %i0 + 8 ]
<== NOT EXECUTED
dst->node_access_2 = src->node_access_2;
40005edc: c6 26 20 0c st %g3, [ %i0 + 0xc ]
<== NOT EXECUTED
dst->handlers = src->handlers;
40005ee0: c4 26 20 10 st %g2, [ %i0 + 0x10 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40005ee4: 91 d0 20 09 ta 9
<== NOT EXECUTED
&loc->mt_entry->location_chain,
40005ee8: c4 06 20 14 ld [ %i0 + 0x14 ], %g2
<== NOT EXECUTED
old_last = tail->previous;
40005eec: c6 00 a0 1c ld [ %g2 + 0x1c ], %g3
<== NOT EXECUTED
return &the_chain->Tail.Node;
40005ef0: 88 00 a0 18 add %g2, 0x18, %g4
<== NOT EXECUTED
the_node->next = tail;
40005ef4: c8 26 00 00 st %g4, [ %i0 ]
<== NOT EXECUTED
tail->previous = the_node;
40005ef8: f0 20 a0 1c st %i0, [ %g2 + 0x1c ]
<== NOT EXECUTED
old_last->next = the_node;
40005efc: f0 20 c0 00 st %i0, [ %g3 ]
<== NOT EXECUTED
the_node->previous = old_last;
40005f00: c6 26 20 04 st %g3, [ %i0 + 4 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40005f04: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40005f08: 01 00 00 00 nop
rtems_filesystem_location_remove_from_mt_entry(detach);
40005f0c: 7f ff ff cc call 40005e3c <rtems_filesystem_location_remove_from_mt_entry>
40005f10: 90 10 00 19 mov %i1, %o0
dst->node_access = src->node_access;
40005f14: 03 10 00 47 sethi %hi(0x40011c00), %g1
<== NOT EXECUTED
40005f18: 82 10 62 70 or %g1, 0x270, %g1 ! 40011e70 <rtems_filesystem_global_location_null>
<== NOT EXECUTED
40005f1c: c4 00 60 08 ld [ %g1 + 8 ], %g2
<== NOT EXECUTED
40005f20: c4 26 60 08 st %g2, [ %i1 + 8 ]
<== NOT EXECUTED
dst->node_access_2 = src->node_access_2;
40005f24: c4 00 60 0c ld [ %g1 + 0xc ], %g2
<== NOT EXECUTED
40005f28: c4 26 60 0c st %g2, [ %i1 + 0xc ]
<== NOT EXECUTED
dst->handlers = src->handlers;
40005f2c: c4 00 60 10 ld [ %g1 + 0x10 ], %g2
<== NOT EXECUTED
dst->mt_entry = src->mt_entry;
40005f30: c2 00 60 14 ld [ %g1 + 0x14 ], %g1
<== NOT EXECUTED
40005f34: c2 26 60 14 st %g1, [ %i1 + 0x14 ]
<== NOT EXECUTED
dst->handlers = src->handlers;
40005f38: c4 26 60 10 st %g2, [ %i1 + 0x10 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40005f3c: 91 d0 20 09 ta 9
<== NOT EXECUTED
40005f40: c4 06 60 14 ld [ %i1 + 0x14 ], %g2
<== NOT EXECUTED
old_last = tail->previous;
40005f44: c6 00 a0 1c ld [ %g2 + 0x1c ], %g3
<== NOT EXECUTED
return &the_chain->Tail.Node;
40005f48: 88 00 a0 18 add %g2, 0x18, %g4
<== NOT EXECUTED
the_node->next = tail;
40005f4c: c8 26 40 00 st %g4, [ %i1 ]
<== NOT EXECUTED
tail->previous = the_node;
40005f50: f2 20 a0 1c st %i1, [ %g2 + 0x1c ]
<== NOT EXECUTED
old_last->next = the_node;
40005f54: f2 20 c0 00 st %i1, [ %g3 ]
<== NOT EXECUTED
the_node->previous = old_last;
40005f58: c6 26 60 04 st %g3, [ %i1 + 4 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40005f5c: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40005f60: 01 00 00 00 nop
}
40005f64: 81 c7 e0 08 ret
40005f68: 81 e8 00 00 restore
40005b3c <rtems_filesystem_location_detach>:
void rtems_filesystem_location_detach(
rtems_filesystem_location_info_t *detach
)
{
40005b3c: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
rtems_filesystem_location_free(detach);
40005b40: 40 00 1d ed call 4000d2f4 <rtems_filesystem_location_free>
<== NOT EXECUTED
40005b44: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
dst->node_access = src->node_access;
40005b48: 03 10 00 47 sethi %hi(0x40011c00), %g1
<== NOT EXECUTED
40005b4c: 82 10 62 70 or %g1, 0x270, %g1 ! 40011e70 <rtems_filesystem_global_location_null>
<== NOT EXECUTED
40005b50: c4 00 60 08 ld [ %g1 + 8 ], %g2
<== NOT EXECUTED
40005b54: c4 26 20 08 st %g2, [ %i0 + 8 ]
<== NOT EXECUTED
dst->node_access_2 = src->node_access_2;
40005b58: c4 00 60 0c ld [ %g1 + 0xc ], %g2
<== NOT EXECUTED
40005b5c: c4 26 20 0c st %g2, [ %i0 + 0xc ]
<== NOT EXECUTED
dst->handlers = src->handlers;
40005b60: c4 00 60 10 ld [ %g1 + 0x10 ], %g2
<== NOT EXECUTED
dst->mt_entry = src->mt_entry;
40005b64: c2 00 60 14 ld [ %g1 + 0x14 ], %g1
<== NOT EXECUTED
40005b68: c2 26 20 14 st %g1, [ %i0 + 0x14 ]
<== NOT EXECUTED
dst->handlers = src->handlers;
40005b6c: c4 26 20 10 st %g2, [ %i0 + 0x10 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40005b70: 91 d0 20 09 ta 9
<== NOT EXECUTED
40005b74: c4 06 20 14 ld [ %i0 + 0x14 ], %g2
<== NOT EXECUTED
old_last = tail->previous;
40005b78: c6 00 a0 1c ld [ %g2 + 0x1c ], %g3
<== NOT EXECUTED
return &the_chain->Tail.Node;
40005b7c: 88 00 a0 18 add %g2, 0x18, %g4
<== NOT EXECUTED
the_node->next = tail;
40005b80: c8 26 00 00 st %g4, [ %i0 ]
<== NOT EXECUTED
tail->previous = the_node;
40005b84: f0 20 a0 1c st %i0, [ %g2 + 0x1c ]
<== NOT EXECUTED
old_last->next = the_node;
40005b88: f0 20 c0 00 st %i0, [ %g3 ]
<== NOT EXECUTED
the_node->previous = old_last;
40005b8c: c6 26 20 04 st %g3, [ %i0 + 4 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40005b90: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40005b94: 01 00 00 00 nop
<== NOT EXECUTED
rtems_filesystem_location_initialize_to_null(detach);
}
40005b98: 81 c7 e0 08 ret
<== NOT EXECUTED
40005b9c: 81 e8 00 00 restore
<== NOT EXECUTED
40043504 <rtems_filesystem_location_exists_in_same_instance_as>:
int rtems_filesystem_location_exists_in_same_instance_as(
const rtems_filesystem_location_info_t *a,
const rtems_filesystem_location_info_t *b
)
{
40043504: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
int rv = -1;
if (
40043508: c4 06 20 10 ld [ %i0 + 0x10 ], %g2
<== NOT EXECUTED
4004350c: 03 10 01 f4 sethi %hi(0x4007d000), %g1
<== NOT EXECUTED
40043510: 82 10 62 58 or %g1, 0x258, %g1 ! 4007d258 <rtems_filesystem_null_handlers>
<== NOT EXECUTED
40043514: 80 a0 80 01 cmp %g2, %g1
<== NOT EXECUTED
40043518: 02 80 00 11 be 4004355c <rtems_filesystem_location_exists_in_same_instance_as+0x58>
<== NOT EXECUTED
4004351c: 01 00 00 00 nop
<== NOT EXECUTED
!rtems_filesystem_location_is_null( a )
&& !rtems_filesystem_location_is_null( b )
40043520: c4 06 60 10 ld [ %i1 + 0x10 ], %g2
<== NOT EXECUTED
40043524: 80 a0 80 01 cmp %g2, %g1
<== NOT EXECUTED
40043528: 02 80 00 0d be 4004355c <rtems_filesystem_location_exists_in_same_instance_as+0x58>
<== NOT EXECUTED
4004352c: 01 00 00 00 nop
<== NOT EXECUTED
) {
if ( a->mt_entry == b->mt_entry ) {
40043530: c4 06 20 14 ld [ %i0 + 0x14 ], %g2
<== NOT EXECUTED
40043534: c2 06 60 14 ld [ %i1 + 0x14 ], %g1
<== NOT EXECUTED
40043538: 80 a0 80 01 cmp %g2, %g1
<== NOT EXECUTED
4004353c: 02 80 00 06 be 40043554 <rtems_filesystem_location_exists_in_same_instance_as+0x50>
<== NOT EXECUTED
40043540: b0 10 20 00 clr %i0
<== NOT EXECUTED
rv = 0;
} else {
errno = EXDEV;
40043544: 40 00 64 f4 call 4005c914 <__errno>
<== NOT EXECUTED
40043548: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
4004354c: 82 10 20 12 mov 0x12, %g1
<== NOT EXECUTED
40043550: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
40043554: 81 c7 e0 08 ret
<== NOT EXECUTED
40043558: 81 e8 00 00 restore
<== NOT EXECUTED
}
}
return rv;
}
4004355c: 81 c7 e0 08 ret
<== NOT EXECUTED
40043560: 91 e8 3f ff restore %g0, -1, %o0
<== NOT EXECUTED
40005e3c <rtems_filesystem_location_remove_from_mt_entry>:
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40005e3c: 91 d0 20 09 ta 9
<== NOT EXECUTED
previous = the_node->previous;
40005e40: c6 02 20 04 ld [ %o0 + 4 ], %g3
next = the_node->next;
40005e44: c8 02 00 00 ld [ %o0 ], %g4
next->previous = previous;
40005e48: c6 21 20 04 st %g3, [ %g4 + 4 ]
do_unmount = rtems_filesystem_is_ready_for_unmount(loc->mt_entry);
40005e4c: c4 02 20 14 ld [ %o0 + 0x14 ], %g2
previous->next = next;
40005e50: c8 20 c0 00 st %g4, [ %g3 ]
40005e54: c6 08 a0 28 ldub [ %g2 + 0x28 ], %g3
40005e58: 80 a0 e0 00 cmp %g3, 0
40005e5c: 12 80 00 07 bne 40005e78 <rtems_filesystem_location_remove_from_mt_entry+0x3c>
40005e60: 01 00 00 00 nop
&& rtems_chain_has_only_one_node( &mt_entry->location_chain )
40005e64: c8 00 a0 14 ld [ %g2 + 0x14 ], %g4
40005e68: c6 00 a0 1c ld [ %g2 + 0x1c ], %g3
40005e6c: 80 a1 00 03 cmp %g4, %g3
40005e70: 22 80 00 06 be,a 40005e88 <rtems_filesystem_location_remove_from_mt_entry+0x4c>
40005e74: c6 00 a0 24 ld [ %g2 + 0x24 ], %g3
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40005e78: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40005e7c: 01 00 00 00 nop
}
40005e80: 81 c3 e0 08 retl
40005e84: 01 00 00 00 nop
&& mt_entry->mt_fs_root->reference_count == 1;
40005e88: c6 00 e0 18 ld [ %g3 + 0x18 ], %g3
40005e8c: 80 a0 e0 01 cmp %g3, 1
40005e90: 12 bf ff fa bne 40005e78 <rtems_filesystem_location_remove_from_mt_entry+0x3c>
<== ALWAYS TAKEN
40005e94: 86 00 a0 14 add %g2, 0x14, %g3
return &the_chain->Tail.Node;
40005e98: 88 00 a0 18 add %g2, 0x18, %g4
<== NOT EXECUTED
head->previous = NULL;
40005e9c: c0 20 a0 18 clr [ %g2 + 0x18 ]
<== NOT EXECUTED
head->next = tail;
40005ea0: c8 20 a0 14 st %g4, [ %g2 + 0x14 ]
<== NOT EXECUTED
tail->previous = head;
40005ea4: c6 20 a0 1c st %g3, [ %g2 + 0x1c ]
<== NOT EXECUTED
40005ea8: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40005eac: 01 00 00 00 nop
<== NOT EXECUTED
rtems_filesystem_do_unmount(loc->mt_entry);
40005eb0: d0 02 20 14 ld [ %o0 + 0x14 ], %o0
<== NOT EXECUTED
40005eb4: 82 13 c0 00 mov %o7, %g1
<== NOT EXECUTED
40005eb8: 7f ff ff 3a call 40005ba0 <rtems_filesystem_do_unmount>
<== NOT EXECUTED
40005ebc: 9e 10 40 00 mov %g1, %o7
<== NOT EXECUTED
40005f6c <rtems_filesystem_location_transform_to_global>:
{
40005f6c: 9d e3 bf 98 save %sp, -104, %sp
<== NOT EXECUTED
rtems_filesystem_global_location_t *global_loc = malloc(sizeof(*global_loc));
40005f70: 7f ff fa d1 call 40004ab4 <malloc>
<== NOT EXECUTED
40005f74: 90 10 20 24 mov 0x24, %o0
<== NOT EXECUTED
if (global_loc != NULL) {
40005f78: ba 92 20 00 orcc %o0, 0, %i5
<== NOT EXECUTED
40005f7c: 02 80 00 1c be 40005fec <rtems_filesystem_location_transform_to_global+0x80>
<== NOT EXECUTED
40005f80: b8 10 20 01 mov 1, %i4
<== NOT EXECUTED
dst->node_access = src->node_access;
40005f84: c8 06 20 08 ld [ %i0 + 8 ], %g4
<== NOT EXECUTED
dst->node_access_2 = src->node_access_2;
40005f88: c6 06 20 0c ld [ %i0 + 0xc ], %g3
<== NOT EXECUTED
dst->handlers = src->handlers;
40005f8c: c4 06 20 10 ld [ %i0 + 0x10 ], %g2
<== NOT EXECUTED
dst->mt_entry = src->mt_entry;
40005f90: c2 06 20 14 ld [ %i0 + 0x14 ], %g1
<== NOT EXECUTED
global_loc->deferred_released_next = NULL;
40005f94: c0 27 60 1c clr [ %i5 + 0x1c ]
<== NOT EXECUTED
global_loc->reference_count = 1;
40005f98: f8 27 60 18 st %i4, [ %i5 + 0x18 ]
<== NOT EXECUTED
global_loc->deferred_released_count = 0;
40005f9c: c0 27 60 20 clr [ %i5 + 0x20 ]
<== NOT EXECUTED
dst->node_access = src->node_access;
40005fa0: c8 27 60 08 st %g4, [ %i5 + 8 ]
<== NOT EXECUTED
dst->node_access_2 = src->node_access_2;
40005fa4: c6 27 60 0c st %g3, [ %i5 + 0xc ]
<== NOT EXECUTED
dst->handlers = src->handlers;
40005fa8: c4 27 60 10 st %g2, [ %i5 + 0x10 ]
<== NOT EXECUTED
dst->mt_entry = src->mt_entry;
40005fac: c2 27 60 14 st %g1, [ %i5 + 0x14 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
40005fb0: 91 d0 20 09 ta 9
<== NOT EXECUTED
40005fb4: c4 07 60 14 ld [ %i5 + 0x14 ], %g2
<== NOT EXECUTED
old_last = tail->previous;
40005fb8: c6 00 a0 1c ld [ %g2 + 0x1c ], %g3
<== NOT EXECUTED
return &the_chain->Tail.Node;
40005fbc: 88 00 a0 18 add %g2, 0x18, %g4
<== NOT EXECUTED
the_node->next = tail;
40005fc0: c8 27 40 00 st %g4, [ %i5 ]
<== NOT EXECUTED
tail->previous = the_node;
40005fc4: fa 20 a0 1c st %i5, [ %g2 + 0x1c ]
<== NOT EXECUTED
old_last->next = the_node;
40005fc8: fa 20 c0 00 st %i5, [ %g3 ]
<== NOT EXECUTED
the_node->previous = old_last;
40005fcc: c6 27 60 04 st %g3, [ %i5 + 4 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
40005fd0: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
40005fd4: 01 00 00 00 nop
<== NOT EXECUTED
rtems_filesystem_location_remove_from_mt_entry(loc);
40005fd8: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
40005fdc: 7f ff ff 98 call 40005e3c <rtems_filesystem_location_remove_from_mt_entry>
<== NOT EXECUTED
40005fe0: b0 10 00 1d mov %i5, %i0
<== NOT EXECUTED
}
40005fe4: 81 c7 e0 08 ret
<== NOT EXECUTED
40005fe8: 81 e8 00 00 restore
<== NOT EXECUTED
rtems_filesystem_location_free(loc);
40005fec: 40 00 1c c2 call 4000d2f4 <rtems_filesystem_location_free>
<== NOT EXECUTED
40005ff0: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
return rtems_filesystem_global_location_obtain( &global_loc );
40005ff4: 90 07 bf fc add %fp, -4, %o0
<== NOT EXECUTED
40005ff8: 7f ff ff 33 call 40005cc4 <rtems_filesystem_global_location_obtain>
<== NOT EXECUTED
40005ffc: c0 27 bf fc clr [ %fp + -4 ]
<== NOT EXECUTED
errno = ENOMEM;
40006000: 40 00 21 d6 call 4000e758 <__errno>
<== NOT EXECUTED
40006004: ba 10 00 08 mov %o0, %i5
<== NOT EXECUTED
40006008: 82 10 20 0c mov 0xc, %g1
<== NOT EXECUTED
4000600c: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
}
40006010: 81 c7 e0 08 ret
<== NOT EXECUTED
40006014: 91 e8 00 1d restore %g0, %i5, %o0
<== NOT EXECUTED
40004b20 <rtems_filesystem_mknod>:
const char *name,
size_t namelen,
mode_t mode,
dev_t dev
)
{
40004b20: 9d e3 bf a0 save %sp, -96, %sp
int rv = 0;
mode &= ~rtems_filesystem_umask;
40004b24: 40 00 01 e3 call 400052b0 <rtems_current_user_env_get>
40004b28: 01 00 00 00 nop
40004b2c: d6 02 20 08 ld [ %o0 + 8 ], %o3
40004b30: 96 2e c0 0b andn %i3, %o3, %o3
switch (mode & S_IFMT) {
40004b34: 03 00 00 3c sethi %hi(0xf000), %g1
40004b38: 05 00 00 10 sethi %hi(0x4000), %g2
40004b3c: 82 0a c0 01 and %o3, %g1, %g1
40004b40: 80 a0 40 02 cmp %g1, %g2
40004b44: 22 80 00 0c be,a 40004b74 <rtems_filesystem_mknod+0x54>
<== ALWAYS TAKEN
40004b48: c2 06 20 14 ld [ %i0 + 0x14 ], %g1
40004b4c: 08 80 00 14 bleu 40004b9c <rtems_filesystem_mknod+0x7c>
<== NOT EXECUTED
40004b50: 05 00 00 04 sethi %hi(0x1000), %g2
<== NOT EXECUTED
40004b54: 05 00 00 18 sethi %hi(0x6000), %g2
<== NOT EXECUTED
40004b58: 80 a0 40 02 cmp %g1, %g2
<== NOT EXECUTED
40004b5c: 02 80 00 05 be 40004b70 <rtems_filesystem_mknod+0x50>
<== NOT EXECUTED
40004b60: 05 00 00 20 sethi %hi(0x8000), %g2
<== NOT EXECUTED
40004b64: 80 a0 40 02 cmp %g1, %g2
<== NOT EXECUTED
40004b68: 12 80 00 13 bne 40004bb4 <rtems_filesystem_mknod+0x94>
<== NOT EXECUTED
40004b6c: 01 00 00 00 nop
<== NOT EXECUTED
rv = -1;
break;
}
if ( rv == 0 ) {
const rtems_filesystem_operations_table *ops = parentloc->mt_entry->ops;
40004b70: c2 06 20 14 ld [ %i0 + 0x14 ], %g1
<== NOT EXECUTED
rv = (*ops->mknod_h)( parentloc, name, namelen, mode, dev );
40004b74: c2 00 60 0c ld [ %g1 + 0xc ], %g1
40004b78: c2 00 60 14 ld [ %g1 + 0x14 ], %g1
40004b7c: 98 10 00 1c mov %i4, %o4
40004b80: 9a 10 00 1d mov %i5, %o5
40004b84: 94 10 00 1a mov %i2, %o2
40004b88: 92 10 00 19 mov %i1, %o1
40004b8c: 9f c0 40 00 call %g1
40004b90: 90 10 00 18 mov %i0, %o0
40004b94: 81 c7 e0 08 ret
40004b98: 91 e8 00 08 restore %g0, %o0, %o0
switch (mode & S_IFMT) {
40004b9c: 80 a0 40 02 cmp %g1, %g2
<== NOT EXECUTED
40004ba0: 02 bf ff f4 be 40004b70 <rtems_filesystem_mknod+0x50>
<== NOT EXECUTED
40004ba4: 05 00 00 08 sethi %hi(0x2000), %g2
<== NOT EXECUTED
40004ba8: 80 a0 40 02 cmp %g1, %g2
<== NOT EXECUTED
40004bac: 22 bf ff f2 be,a 40004b74 <rtems_filesystem_mknod+0x54>
<== NOT EXECUTED
40004bb0: c2 06 20 14 ld [ %i0 + 0x14 ], %g1
<== NOT EXECUTED
errno = EINVAL;
40004bb4: 40 00 26 e9 call 4000e758 <__errno>
<== NOT EXECUTED
40004bb8: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
40004bbc: 82 10 20 16 mov 0x16, %g1
<== NOT EXECUTED
40004bc0: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
}
return rv;
}
40004bc4: 81 c7 e0 08 ret
<== NOT EXECUTED
40004bc8: 81 e8 00 00 restore
<== NOT EXECUTED
40043564 <rtems_filesystem_mount_iterate>:
bool rtems_filesystem_mount_iterate(
rtems_filesystem_mt_entry_visitor visitor,
void *visitor_arg
)
{
40043564: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
rtems_libio_lock();
40043568: 7f ff 21 21 call 4000b9ec <rtems_libio_lock>
<== NOT EXECUTED
4004356c: 39 10 02 2e sethi %hi(0x4008b800), %i4
<== NOT EXECUTED
40043570: fa 07 22 5c ld [ %i4 + 0x25c ], %i5 ! 4008ba5c <rtems_filesystem_mount_table>
<== NOT EXECUTED
40043574: b8 17 22 5c or %i4, 0x25c, %i4
<== NOT EXECUTED
rtems_chain_control *chain = &rtems_filesystem_mount_table;
rtems_chain_node *node = NULL;
bool stop = false;
rtems_filesystem_mt_lock();
for (
40043578: b8 07 20 04 add %i4, 4, %i4
<== NOT EXECUTED
4004357c: 80 a7 40 1c cmp %i5, %i4
<== NOT EXECUTED
40043580: 12 80 00 07 bne 4004359c <rtems_filesystem_mount_iterate+0x38>
<== NOT EXECUTED
40043584: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
bool stop = false;
40043588: 10 80 00 0b b 400435b4 <rtems_filesystem_mount_iterate+0x50>
<== NOT EXECUTED
4004358c: b6 10 20 00 clr %i3
<== NOT EXECUTED
node = rtems_chain_first( chain );
!rtems_chain_is_tail( chain, node ) && !stop;
40043590: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
40043594: 12 80 00 08 bne 400435b4 <rtems_filesystem_mount_iterate+0x50>
<== NOT EXECUTED
40043598: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
node = rtems_chain_next( node )
) {
const rtems_filesystem_mount_table_entry_t *mt_entry =
(rtems_filesystem_mount_table_entry_t *) node;
stop = (*visitor)( mt_entry, visitor_arg );
4004359c: 9f c6 00 00 call %i0
<== NOT EXECUTED
400435a0: 92 10 00 19 mov %i1, %o1
<== NOT EXECUTED
400435a4: fa 07 40 00 ld [ %i5 ], %i5
<== NOT EXECUTED
for (
400435a8: 80 a7 40 1c cmp %i5, %i4
<== NOT EXECUTED
400435ac: 12 bf ff f9 bne 40043590 <rtems_filesystem_mount_iterate+0x2c>
<== NOT EXECUTED
400435b0: b6 10 00 08 mov %o0, %i3
<== NOT EXECUTED
rtems_libio_unlock();
400435b4: 7f ff 21 13 call 4000ba00 <rtems_libio_unlock>
<== NOT EXECUTED
400435b8: b0 0e e0 ff and %i3, 0xff, %i0
<== NOT EXECUTED
}
rtems_filesystem_mt_unlock();
return stop;
}
400435bc: 81 c7 e0 08 ret
<== NOT EXECUTED
400435c0: 81 e8 00 00 restore
<== NOT EXECUTED
40010458 <rtems_filesystem_null_handlers>:
40010458: 40 00 61 78 40 00 cc e8 40 00 cf 3c 40 00 cf d4 @.ax@...@..<@...
40010468: 40 00 cd 70 40 00 ce f4 40 00 61 80 40 00 cd 54 @..p@...@.a.@..T
40010478: 40 00 cd 14 40 00 cd 14 40 00 cd 04 40 00 cf 34 @...@...@...@..4
40010488: 40 00 cd 8c 40 00 cf 58 40 00 cf f0 40 00 cf 10 @...@..X@...@...
40010498: 3f 00 00 00 00 00 00 00 52 54 45 4d 53 5f 53 55 ?.......RTEMS_SU
400104a8: 43 43 45 53 53 46 55 4c 00 00 00 00 00 00 00 00 CCESSFUL........
400104b8: 52 54 45 4d 53 5f 54 41 53 4b 5f 45 58 49 54 54 RTEMS_TASK_EXITT
400104c8: 45 44 00 00 00 00 00 00 52 54 45 4d 53 5f 4d 50 ED......RTEMS_MP
400104d8: 5f 4e 4f 54 5f 43 4f 4e 46 49 47 55 52 45 44 00 _NOT_CONFIGURED.
400104e8: 52 54 45 4d 53 5f 49 4e 56 41 4c 49 44 5f 4e 41 RTEMS_INVALID_NA
400104f8: 4d 45 00 00 00 00 00 00 52 54 45 4d 53 5f 49 4e ME......RTEMS_IN
40010508: 56 41 4c 49 44 5f 49 44 00 00 00 00 00 00 00 00 VALID_ID........
40010518: 52 54 45 4d 53 5f 54 4f 4f 5f 4d 41 4e 59 00 00 RTEMS_TOO_MANY..
40010528: 52 54 45 4d 53 5f 54 49 4d 45 4f 55 54 00 00 00 RTEMS_TIMEOUT...
40010538: 52 54 45 4d 53 5f 4f 42 4a 45 43 54 5f 57 41 53 RTEMS_OBJECT_WAS
40010548: 5f 44 45 4c 45 54 45 44 00 00 00 00 00 00 00 00 _DELETED........
40010558: 52 54 45 4d 53 5f 49 4e 56 41 4c 49 44 5f 53 49 RTEMS_INVALID_SI
40010568: 5a 45 00 00 00 00 00 00 52 54 45 4d 53 5f 49 4e ZE......RTEMS_IN
40010578: 56 41 4c 49 44 5f 41 44 44 52 45 53 53 00 00 00 VALID_ADDRESS...
40010588: 52 54 45 4d 53 5f 49 4e 56 41 4c 49 44 5f 4e 55 RTEMS_INVALID_NU
40010598: 4d 42 45 52 00 00 00 00 52 54 45 4d 53 5f 4e 4f MBER....RTEMS_NO
400105a8: 54 5f 44 45 46 49 4e 45 44 00 00 00 00 00 00 00 T_DEFINED.......
400105b8: 52 54 45 4d 53 5f 52 45 53 4f 55 52 43 45 5f 49 RTEMS_RESOURCE_I
400105c8: 4e 5f 55 53 45 00 00 00 52 54 45 4d 53 5f 55 4e N_USE...RTEMS_UN
400105d8: 53 41 54 49 53 46 49 45 44 00 00 00 00 00 00 00 SATISFIED.......
400105e8: 52 54 45 4d 53 5f 49 4e 43 4f 52 52 45 43 54 5f RTEMS_INCORRECT_
400105f8: 53 54 41 54 45 00 00 00 52 54 45 4d 53 5f 41 4c STATE...RTEMS_AL
40010608: 52 45 41 44 59 5f 53 55 53 50 45 4e 44 45 44 00 READY_SUSPENDED.
40010618: 52 54 45 4d 53 5f 49 4c 4c 45 47 41 4c 5f 4f 4e RTEMS_ILLEGAL_ON
40010628: 5f 53 45 4c 46 00 00 00 52 54 45 4d 53 5f 49 4c _SELF...RTEMS_IL
40010638: 4c 45 47 41 4c 5f 4f 4e 5f 52 45 4d 4f 54 45 5f LEGAL_ON_REMOTE_
40010648: 4f 42 4a 45 43 54 00 00 52 54 45 4d 53 5f 43 41 OBJECT..RTEMS_CA
40010658: 4c 4c 45 44 5f 46 52 4f 4d 5f 49 53 52 00 00 00 LLED_FROM_ISR...
40010668: 52 54 45 4d 53 5f 49 4e 56 41 4c 49 44 5f 50 52 RTEMS_INVALID_PR
40010678: 49 4f 52 49 54 59 00 00 52 54 45 4d 53 5f 49 4e IORITY..RTEMS_IN
40010688: 56 41 4c 49 44 5f 43 4c 4f 43 4b 00 00 00 00 00 VALID_CLOCK.....
40010698: 52 54 45 4d 53 5f 49 4e 56 41 4c 49 44 5f 4e 4f RTEMS_INVALID_NO
400106a8: 44 45 00 00 00 00 00 00 52 54 45 4d 53 5f 4e 4f DE......RTEMS_NO
400106b8: 54 5f 43 4f 4e 46 49 47 55 52 45 44 00 00 00 00 T_CONFIGURED....
400106c8: 52 54 45 4d 53 5f 4e 4f 54 5f 4f 57 4e 45 52 5f RTEMS_NOT_OWNER_
400106d8: 4f 46 5f 52 45 53 4f 55 52 43 45 00 00 00 00 00 OF_RESOURCE.....
400106e8: 52 54 45 4d 53 5f 4e 4f 54 5f 49 4d 50 4c 45 4d RTEMS_NOT_IMPLEM
400106f8: 45 4e 54 45 44 00 00 00 52 54 45 4d 53 5f 49 4e ENTED...RTEMS_IN
40010708: 54 45 52 4e 41 4c 5f 45 52 52 4f 52 00 00 00 00 TERNAL_ERROR....
40010718: 52 54 45 4d 53 5f 4e 4f 5f 4d 45 4d 4f 52 59 00 RTEMS_NO_MEMORY.
40010728: 52 54 45 4d 53 5f 49 4f 5f 45 52 52 4f 52 00 00 RTEMS_IO_ERROR..
40010738: 52 54 45 4d 53 5f 50 52 4f 58 59 5f 42 4c 4f 43 RTEMS_PROXY_BLOC
40010748: 4b 49 4e 47 00 00 00 00 KING....
40004910 <rtems_heap_allocate_aligned_with_boundary>:
void *rtems_heap_allocate_aligned_with_boundary(
size_t size,
uintptr_t alignment,
uintptr_t boundary
)
{
40004910: 9d e3 bf a0 save %sp, -96, %sp
40004914: 03 10 00 4d sethi %hi(0x40013400), %g1
40004918: c2 00 61 6c ld [ %g1 + 0x16c ], %g1 ! 4001356c <_System_state_Current>
Heap_Control *heap = RTEMS_Malloc_Heap;
4000491c: 05 10 00 47 sethi %hi(0x40011c00), %g2
if ( _System_state_Is_up( state ) ) {
40004920: 80 a0 60 02 cmp %g1, 2
40004924: 02 80 00 21 be 400049a8 <rtems_heap_allocate_aligned_with_boundary+0x98>
40004928: f8 00 a1 e4 ld [ %g2 + 0x1e4 ], %i4
} else if ( _System_state_Is_before_multitasking( state ) ) {
4000492c: 80 a0 60 01 cmp %g1, 1
40004930: 02 80 00 22 be 400049b8 <rtems_heap_allocate_aligned_with_boundary+0xa8>
40004934: 96 10 00 1a mov %i2, %o3
boundary
);
_RTEMS_Unlock_allocator();
break;
case MALLOC_SYSTEM_STATE_NO_PROTECTION:
p = _Heap_Allocate_aligned_with_boundary(
40004938: 94 10 00 19 mov %i1, %o2
4000493c: 92 10 00 18 mov %i0, %o1
40004940: 40 00 08 c4 call 40006c50 <_Heap_Allocate_aligned_with_boundary>
40004944: 90 10 00 1c mov %i4, %o0
40004948: 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 ) {
4000494c: 80 a7 60 00 cmp %i5, 0
40004950: 12 80 00 0b bne 4000497c <rtems_heap_allocate_aligned_with_boundary+0x6c>
<== ALWAYS TAKEN
40004954: 80 a6 60 00 cmp %i1, 0
40004958: 12 80 00 09 bne 4000497c <rtems_heap_allocate_aligned_with_boundary+0x6c>
<== NOT EXECUTED
4000495c: 80 a6 a0 00 cmp %i2, 0
<== NOT EXECUTED
40004960: 12 80 00 23 bne 400049ec <rtems_heap_allocate_aligned_with_boundary+0xdc>
<== NOT EXECUTED
40004964: 03 10 00 3f sethi %hi(0x4000fc00), %g1
<== NOT EXECUTED
p = (*rtems_malloc_extend_handler)( heap, size );
40004968: c2 00 63 08 ld [ %g1 + 0x308 ], %g1 ! 4000ff08 <rtems_malloc_extend_handler>
<== NOT EXECUTED
4000496c: 92 10 00 18 mov %i0, %o1
<== NOT EXECUTED
40004970: 9f c0 40 00 call %g1
<== NOT EXECUTED
40004974: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
40004978: ba 10 00 08 mov %o0, %i5
<== NOT EXECUTED
}
/*
* If the user wants us to dirty the allocated memory, then do it.
*/
if ( p != NULL && rtems_malloc_dirty_helper != NULL )
4000497c: 80 a7 60 00 cmp %i5, 0
40004980: 02 80 00 1b be 400049ec <rtems_heap_allocate_aligned_with_boundary+0xdc>
<== NEVER TAKEN
40004984: 03 10 00 48 sethi %hi(0x40012000), %g1
40004988: c2 00 62 40 ld [ %g1 + 0x240 ], %g1 ! 40012240 <rtems_malloc_dirty_helper>
4000498c: 80 a0 60 00 cmp %g1, 0
40004990: 02 80 00 04 be 400049a0 <rtems_heap_allocate_aligned_with_boundary+0x90>
<== ALWAYS TAKEN
40004994: 92 10 00 18 mov %i0, %o1
(*rtems_malloc_dirty_helper)( p, size );
40004998: 9f c0 40 00 call %g1
<== NOT EXECUTED
4000499c: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
return p;
}
400049a0: 81 c7 e0 08 ret
400049a4: 91 e8 00 1d restore %g0, %i5, %o0
400049a8: c2 01 a0 18 ld [ %g6 + 0x18 ], %g1
if ( _Thread_Dispatch_is_enabled() ) {
400049ac: 80 a0 60 00 cmp %g1, 0
400049b0: 32 80 00 10 bne,a 400049f0 <rtems_heap_allocate_aligned_with_boundary+0xe0>
<== NEVER TAKEN
400049b4: ba 10 20 00 clr %i5
<== NOT EXECUTED
_RTEMS_Lock_allocator();
400049b8: 40 00 08 30 call 40006a78 <_RTEMS_Lock_allocator>
400049bc: 01 00 00 00 nop
_Malloc_Process_deferred_frees();
400049c0: 7f ff ff bb call 400048ac <_Malloc_Process_deferred_frees>
400049c4: 01 00 00 00 nop
p = _Heap_Allocate_aligned_with_boundary(
400049c8: 96 10 00 1a mov %i2, %o3
400049cc: 94 10 00 19 mov %i1, %o2
400049d0: 92 10 00 18 mov %i0, %o1
400049d4: 40 00 08 9f call 40006c50 <_Heap_Allocate_aligned_with_boundary>
400049d8: 90 10 00 1c mov %i4, %o0
_RTEMS_Unlock_allocator();
400049dc: 40 00 08 2c call 40006a8c <_RTEMS_Unlock_allocator>
400049e0: ba 10 00 08 mov %o0, %i5
break;
400049e4: 10 bf ff db b 40004950 <rtems_heap_allocate_aligned_with_boundary+0x40>
400049e8: 80 a7 60 00 cmp %i5, 0
return NULL;
400049ec: ba 10 20 00 clr %i5
<== NOT EXECUTED
}
400049f0: 81 c7 e0 08 ret
<== NOT EXECUTED
400049f4: 91 e8 00 1d restore %g0, %i5, %o0
<== NOT EXECUTED
40005304 <rtems_heap_null_extend>:
Heap_Control *heap RTEMS_UNUSED,
size_t alloc_size RTEMS_UNUSED
)
{
return NULL;
}
40005304: 81 c3 e0 08 retl
<== NOT EXECUTED
40005308: 90 10 20 00 clr %o0 ! 0 <PROM_START>
<== NOT EXECUTED
4000d494 <rtems_libio_allocate>:
return fcntl_flags;
}
rtems_libio_t *rtems_libio_allocate( void )
{
4000d494: 9d e3 bf a0 save %sp, -96, %sp
rtems_libio_t *iop;
rtems_libio_lock();
4000d498: 7f ff dc ec call 40004848 <rtems_libio_lock>
4000d49c: 01 00 00 00 nop
iop = rtems_libio_iop_free_head;
4000d4a0: 03 10 00 4d sethi %hi(0x40013400), %g1
4000d4a4: f0 00 60 c8 ld [ %g1 + 0xc8 ], %i0 ! 400134c8 <rtems_libio_iop_free_head>
if ( iop != NULL ) {
4000d4a8: 80 a6 20 00 cmp %i0, 0
4000d4ac: 02 80 00 06 be 4000d4c4 <rtems_libio_allocate+0x30>
<== NEVER TAKEN
4000d4b0: 86 10 60 c8 or %g1, 0xc8, %g3
void *next;
next = iop->data1;
4000d4b4: c4 06 20 28 ld [ %i0 + 0x28 ], %g2
rtems_libio_iop_free_head = next;
if ( next == NULL ) {
4000d4b8: 80 a0 a0 00 cmp %g2, 0
4000d4bc: 02 80 00 06 be 4000d4d4 <rtems_libio_allocate+0x40>
4000d4c0: c4 20 60 c8 st %g2, [ %g1 + 0xc8 ]
rtems_libio_iop_free_tail = &rtems_libio_iop_free_head;
}
}
rtems_libio_unlock();
4000d4c4: 7f ff dc e6 call 4000485c <rtems_libio_unlock>
4000d4c8: 01 00 00 00 nop
return iop;
}
4000d4cc: 81 c7 e0 08 ret
4000d4d0: 81 e8 00 00 restore
rtems_libio_iop_free_tail = &rtems_libio_iop_free_head;
4000d4d4: 03 10 00 47 sethi %hi(0x40011c00), %g1
rtems_libio_unlock();
4000d4d8: 7f ff dc e1 call 4000485c <rtems_libio_unlock>
4000d4dc: c6 20 61 f0 st %g3, [ %g1 + 0x1f0 ] ! 40011df0 <rtems_libio_iop_free_tail>
}
4000d4e0: 81 c7 e0 08 ret
4000d4e4: 81 e8 00 00 restore
400052dc <rtems_libio_free_user_env>:
if (!uses_global_env) {
400052dc: 03 10 00 47 sethi %hi(0x40011c00), %g1
<== NOT EXECUTED
400052e0: 82 10 62 28 or %g1, 0x228, %g1 ! 40011e28 <rtems_global_user_env>
<== NOT EXECUTED
400052e4: 80 a0 40 08 cmp %g1, %o0
<== NOT EXECUTED
400052e8: 02 80 00 05 be 400052fc <rtems_libio_free_user_env+0x20>
<== NOT EXECUTED
400052ec: 01 00 00 00 nop
<== NOT EXECUTED
400052f0: 82 13 c0 00 mov %o7, %g1
<== NOT EXECUTED
400052f4: 7f ff ff e6 call 4000528c <rtems_libio_free_user_env.part.1>
<== NOT EXECUTED
400052f8: 9e 10 40 00 mov %g1, %o7
<== NOT EXECUTED
}
}
400052fc: 81 c3 e0 08 retl
<== NOT EXECUTED
40005300: 01 00 00 00 nop
<== NOT EXECUTED
40004fcc <rtems_libio_post_driver>:
/*
* This is a replaceable stub which opens the console, if present.
*/
void rtems_libio_post_driver(void)
{
40004fcc: 9d e3 bf a0 save %sp, -96, %sp
/*
* Attempt to open /dev/console.
*/
if ( open( CONSOLE_DEVICE_NAME, O_RDONLY, 0 ) != STDIN_FILENO ) {
40004fd0: 94 10 20 00 clr %o2
40004fd4: 92 10 20 00 clr %o1
40004fd8: 3b 10 00 40 sethi %hi(0x40010000), %i5
40004fdc: 40 00 00 1a call 40005044 <open>
40004fe0: 90 17 63 68 or %i5, 0x368, %o0 ! 40010368 <IMFS_node_control_sym_link+0x1c>
40004fe4: 80 a2 20 00 cmp %o0, 0
40004fe8: 02 80 00 04 be 40004ff8 <rtems_libio_post_driver+0x2c>
<== ALWAYS TAKEN
40004fec: 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);
}
40004ff0: 81 c7 e0 08 ret
<== NOT EXECUTED
40004ff4: 81 e8 00 00 restore
<== NOT EXECUTED
if ( open( CONSOLE_DEVICE_NAME, O_WRONLY, 0 ) != STDOUT_FILENO ) {
40004ff8: 92 10 20 01 mov 1, %o1
40004ffc: 40 00 00 12 call 40005044 <open>
40005000: 90 17 63 68 or %i5, 0x368, %o0
40005004: 80 a2 20 01 cmp %o0, 1
40005008: 12 80 00 0a bne 40005030 <rtems_libio_post_driver+0x64>
<== NEVER TAKEN
4000500c: 94 10 20 00 clr %o2
if ( open( CONSOLE_DEVICE_NAME, O_WRONLY, 0 ) != STDERR_FILENO ) {
40005010: 92 10 20 01 mov 1, %o1
40005014: 40 00 00 0c call 40005044 <open>
40005018: 90 17 63 68 or %i5, 0x368, %o0
4000501c: 80 a2 20 02 cmp %o0, 2
40005020: 12 80 00 06 bne 40005038 <rtems_libio_post_driver+0x6c>
<== NEVER TAKEN
40005024: 31 10 00 35 sethi %hi(0x4000d400), %i0
<== NOT EXECUTED
atexit(rtems_libio_exit);
40005028: 40 00 25 c5 call 4000e73c <atexit>
<== NOT EXECUTED
4000502c: 91 ee 20 40 restore %i0, 0x40, %o0
_Internal_error( INTERNAL_ERROR_LIBIO_STDOUT_FD_OPEN_FAILED );
40005030: 40 00 08 af call 400072ec <_Internal_error>
<== NOT EXECUTED
40005034: 90 10 20 24 mov 0x24, %o0
<== NOT EXECUTED
_Internal_error( INTERNAL_ERROR_LIBIO_STDERR_FD_OPEN_FAILED );
40005038: 40 00 08 ad call 400072ec <_Internal_error>
<== NOT EXECUTED
4000503c: 90 10 20 25 mov 0x25, %o0
<== NOT EXECUTED
40005040: 01 00 00 00 nop
<== NOT EXECUTED
4000c6a0 <rtems_libio_set_private_env>:
rtems_status_code rtems_libio_set_private_env(void)
{
4000c6a0: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
void *ptr = pthread_getspecific(rtems_current_user_env_key);
4000c6a4: 39 10 02 43 sethi %hi(0x40090c00), %i4
<== NOT EXECUTED
4000c6a8: 40 00 31 ca call 40018dd0 <pthread_getspecific>
<== NOT EXECUTED
4000c6ac: d0 07 21 94 ld [ %i4 + 0x194 ], %o0 ! 40090d94 <rtems_current_user_env_key>
<== NOT EXECUTED
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) {
4000c6b0: 3b 10 02 2e sethi %hi(0x4008b800), %i5
<== NOT EXECUTED
4000c6b4: ba 17 62 78 or %i5, 0x278, %i5 ! 4008ba78 <rtems_global_user_env>
<== NOT EXECUTED
4000c6b8: 80 a2 00 1d cmp %o0, %i5
<== NOT EXECUTED
4000c6bc: 02 80 00 04 be 4000c6cc <rtems_libio_set_private_env+0x2c>
<== NOT EXECUTED
4000c6c0: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
4000c6c4: 12 80 00 30 bne 4000c784 <rtems_libio_set_private_env+0xe4>
<== NOT EXECUTED
4000c6c8: b0 10 20 00 clr %i0
<== NOT EXECUTED
Thread_Life_state life_state =
4000c6cc: 40 00 4d 1a call 4001fb34 <_Thread_Set_life_protection>
<== NOT EXECUTED
4000c6d0: 90 10 20 01 mov 1, %o0
<== NOT EXECUTED
_Thread_Set_life_protection(THREAD_LIFE_PROTECTED);
rtems_user_env_t *new_env = calloc(1, sizeof(*new_env));
4000c6d4: 92 10 20 48 mov 0x48, %o1
<== NOT EXECUTED
Thread_Life_state life_state =
4000c6d8: b4 10 00 08 mov %o0, %i2
<== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL) {
rtems_libio_free_user_env(new_env);
}
} else {
sc = RTEMS_NO_MEMORY;
4000c6dc: b0 10 20 1a mov 0x1a, %i0
<== NOT EXECUTED
rtems_user_env_t *new_env = calloc(1, sizeof(*new_env));
4000c6e0: 7f ff f7 48 call 4000a400 <calloc>
<== NOT EXECUTED
4000c6e4: 90 10 20 01 mov 1, %o0
<== NOT EXECUTED
if (new_env != NULL) {
4000c6e8: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
4000c6ec: 02 80 00 24 be 4000c77c <rtems_libio_set_private_env+0xdc>
<== NOT EXECUTED
4000c6f0: b6 10 00 08 mov %o0, %i3
<== NOT EXECUTED
*new_env = *old_env;
4000c6f4: 94 10 20 48 mov 0x48, %o2
<== NOT EXECUTED
4000c6f8: 40 01 52 36 call 40060fd0 <memcpy>
<== NOT EXECUTED
4000c6fc: 92 10 00 1d mov %i5, %o1
<== NOT EXECUTED
rtems_filesystem_global_location_obtain(&old_env->root_directory);
4000c700: 40 00 03 ea call 4000d6a8 <rtems_filesystem_global_location_obtain>
<== NOT EXECUTED
4000c704: 90 07 60 04 add %i5, 4, %o0
<== NOT EXECUTED
new_env->root_directory =
4000c708: d0 26 e0 04 st %o0, [ %i3 + 4 ]
<== NOT EXECUTED
rtems_filesystem_global_location_obtain(&old_env->current_directory);
4000c70c: 40 00 03 e7 call 4000d6a8 <rtems_filesystem_global_location_obtain>
<== NOT EXECUTED
4000c710: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
if (
4000c714: c2 06 e0 04 ld [ %i3 + 4 ], %g1
<== NOT EXECUTED
new_env->current_directory =
4000c718: d0 26 c0 00 st %o0, [ %i3 ]
<== NOT EXECUTED
if (
4000c71c: c4 00 60 10 ld [ %g1 + 0x10 ], %g2
<== NOT EXECUTED
4000c720: 03 10 01 f4 sethi %hi(0x4007d000), %g1
<== NOT EXECUTED
4000c724: 82 10 62 58 or %g1, 0x258, %g1 ! 4007d258 <rtems_filesystem_null_handlers>
<== NOT EXECUTED
4000c728: 80 a0 80 01 cmp %g2, %g1
<== NOT EXECUTED
4000c72c: 22 80 00 0f be,a 4000c768 <rtems_libio_set_private_env+0xc8>
<== NOT EXECUTED
4000c730: b0 10 20 0d mov 0xd, %i0
<== NOT EXECUTED
&& !rtems_filesystem_global_location_is_null(new_env->current_directory)
4000c734: c4 02 20 10 ld [ %o0 + 0x10 ], %g2
<== NOT EXECUTED
4000c738: 80 a0 80 01 cmp %g2, %g1
<== NOT EXECUTED
4000c73c: 02 80 00 0a be 4000c764 <rtems_libio_set_private_env+0xc4>
<== NOT EXECUTED
4000c740: d0 07 21 94 ld [ %i4 + 0x194 ], %o0
<== NOT EXECUTED
int eno = pthread_setspecific(
4000c744: 92 10 00 1b mov %i3, %o1
<== NOT EXECUTED
4000c748: 40 00 32 1d call 40018fbc <pthread_setspecific>
<== NOT EXECUTED
4000c74c: b0 10 20 00 clr %i0
<== NOT EXECUTED
if (eno == 0) {
4000c750: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
4000c754: 02 80 00 0a be 4000c77c <rtems_libio_set_private_env+0xdc>
<== NOT EXECUTED
4000c758: 01 00 00 00 nop
<== NOT EXECUTED
4000c75c: 10 80 00 03 b 4000c768 <rtems_libio_set_private_env+0xc8>
<== NOT EXECUTED
4000c760: b0 10 20 05 mov 5, %i0 ! 5 <_TLS_Alignment+0x4>
<== NOT EXECUTED
sc = RTEMS_UNSATISFIED;
4000c764: b0 10 20 0d mov 0xd, %i0
<== NOT EXECUTED
if (!uses_global_env) {
4000c768: 80 a6 c0 1d cmp %i3, %i5
<== NOT EXECUTED
4000c76c: 02 80 00 04 be 4000c77c <rtems_libio_set_private_env+0xdc>
<== NOT EXECUTED
4000c770: 01 00 00 00 nop
<== NOT EXECUTED
4000c774: 7f ff ff ad call 4000c628 <rtems_libio_free_user_env.part.1>
<== NOT EXECUTED
4000c778: 90 10 00 1b mov %i3, %o0
<== NOT EXECUTED
}
_Thread_Set_life_protection(life_state);
4000c77c: 40 00 4c ee call 4001fb34 <_Thread_Set_life_protection>
<== NOT EXECUTED
4000c780: 90 10 00 1a mov %i2, %o0
<== NOT EXECUTED
}
return sc;
}
4000c784: 81 c7 e0 08 ret
<== NOT EXECUTED
4000c788: 81 e8 00 00 restore
<== NOT EXECUTED
4000ba48 <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 ) {
4000ba48: 84 0a 20 06 and %o0, 6, %g2
<== NOT EXECUTED
4000ba4c: 80 a0 a0 06 cmp %g2, 6
<== NOT EXECUTED
4000ba50: 02 80 00 05 be 4000ba64 <rtems_libio_to_fcntl_flags+0x1c>
<== NOT EXECUTED
4000ba54: 82 10 20 02 mov 2, %g1
<== NOT EXECUTED
fcntl_flags |= O_RDWR;
} else if ( (flags & LIBIO_FLAGS_READ) == LIBIO_FLAGS_READ) {
4000ba58: 80 8a 20 02 btst 2, %o0
<== NOT EXECUTED
4000ba5c: 02 80 00 0b be 4000ba88 <rtems_libio_to_fcntl_flags+0x40>
<== NOT EXECUTED
4000ba60: 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 ) {
4000ba64: 80 8a 20 01 btst 1, %o0
<== NOT EXECUTED
4000ba68: 02 80 00 04 be 4000ba78 <rtems_libio_to_fcntl_flags+0x30>
<== NOT EXECUTED
4000ba6c: 80 8a 22 00 btst 0x200, %o0
<== NOT EXECUTED
fcntl_flags |= O_NONBLOCK;
4000ba70: 05 00 00 10 sethi %hi(0x4000), %g2
<== NOT EXECUTED
4000ba74: 82 10 40 02 or %g1, %g2, %g1
<== NOT EXECUTED
}
if ( (flags & LIBIO_FLAGS_APPEND) == LIBIO_FLAGS_APPEND ) {
4000ba78: 32 80 00 02 bne,a 4000ba80 <rtems_libio_to_fcntl_flags+0x38>
<== NOT EXECUTED
4000ba7c: 82 10 60 08 or %g1, 8, %g1
<== NOT EXECUTED
fcntl_flags |= O_APPEND;
}
return fcntl_flags;
}
4000ba80: 81 c3 e0 08 retl
<== NOT EXECUTED
4000ba84: 90 10 00 01 mov %g1, %o0
<== NOT EXECUTED
} else if ( (flags & LIBIO_FLAGS_WRITE) == LIBIO_FLAGS_WRITE) {
4000ba88: 83 32 20 02 srl %o0, 2, %g1
<== NOT EXECUTED
4000ba8c: 10 bf ff f6 b 4000ba64 <rtems_libio_to_fcntl_flags+0x1c>
<== NOT EXECUTED
4000ba90: 82 08 60 01 and %g1, 1, %g1
<== NOT EXECUTED
4000c9b0 <rtems_mkdir>:
return (retval);
}
int
rtems_mkdir(const char *path, mode_t mode)
{
4000c9b0: 9d e3 bf 40 save %sp, -192, %sp
<== NOT EXECUTED
int success = 0;
char *dup_path = strdup(path);
4000c9b4: 40 01 5d 52 call 40063efc <strdup>
<== NOT EXECUTED
4000c9b8: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
if (dup_path != NULL) {
4000c9bc: b8 92 20 00 orcc %o0, 0, %i4
<== NOT EXECUTED
4000c9c0: 02 80 00 6e be 4000cb78 <rtems_mkdir+0x1c8>
<== NOT EXECUTED
4000c9c4: 01 00 00 00 nop
<== NOT EXECUTED
if (p[0] == '/') /* Skip leading '/'. */
4000c9c8: c2 0f 00 00 ldub [ %i4 ], %g1
<== NOT EXECUTED
4000c9cc: 83 28 60 18 sll %g1, 0x18, %g1
<== NOT EXECUTED
4000c9d0: 85 38 60 18 sra %g1, 0x18, %g2
<== NOT EXECUTED
4000c9d4: 80 a0 a0 2f cmp %g2, 0x2f
<== NOT EXECUTED
4000c9d8: 12 80 00 05 bne 4000c9ec <rtems_mkdir+0x3c>
<== NOT EXECUTED
4000c9dc: ba 10 00 1c mov %i4, %i5
<== NOT EXECUTED
4000c9e0: c2 0f 20 01 ldub [ %i4 + 1 ], %g1
<== NOT EXECUTED
++p;
4000c9e4: ba 07 20 01 add %i4, 1, %i5
<== NOT EXECUTED
4000c9e8: 83 28 60 18 sll %g1, 0x18, %g1
<== NOT EXECUTED
if (p[0] == '\0')
4000c9ec: 83 38 60 18 sra %g1, 0x18, %g1
<== NOT EXECUTED
4000c9f0: ba 07 60 01 inc %i5
<== NOT EXECUTED
*p = '/';
4000c9f4: b6 10 20 00 clr %i3
<== NOT EXECUTED
4000c9f8: 84 10 20 01 mov 1, %g2
<== NOT EXECUTED
4000c9fc: b0 10 20 2f mov 0x2f, %i0
<== NOT EXECUTED
} else if (!S_ISDIR(sb.st_mode)) {
4000ca00: 23 00 00 3c sethi %hi(0xf000), %l1
<== NOT EXECUTED
if (p[0] == '\0')
4000ca04: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
4000ca08: 02 80 00 18 be 4000ca68 <rtems_mkdir+0xb8>
<== NOT EXECUTED
4000ca0c: 21 00 00 10 sethi %hi(0x4000), %l0
<== NOT EXECUTED
else if (p[0] != '/')
4000ca10: 80 a0 60 2f cmp %g1, 0x2f
<== NOT EXECUTED
4000ca14: 12 80 00 0f bne 4000ca50 <rtems_mkdir+0xa0>
<== NOT EXECUTED
4000ca18: 80 a0 a0 00 cmp %g2, 0
<== NOT EXECUTED
*p = '\0';
4000ca1c: c0 2f 7f ff clrb [ %i5 + -1 ]
<== NOT EXECUTED
if (first) {
4000ca20: 12 80 00 5c bne 4000cb90 <rtems_mkdir+0x1e0>
<== NOT EXECUTED
4000ca24: f4 0f 40 00 ldub [ %i5 ], %i2
<== NOT EXECUTED
if (last)
4000ca28: 80 8e a0 ff btst 0xff, %i2
<== NOT EXECUTED
4000ca2c: 02 80 00 17 be 4000ca88 <rtems_mkdir+0xd8>
<== NOT EXECUTED
4000ca30: 92 10 21 ff mov 0x1ff, %o1
<== NOT EXECUTED
if (mkdir(path, last ? omode : S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
4000ca34: 7f ff fc ea call 4000bddc <mkdir>
<== NOT EXECUTED
4000ca38: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
4000ca3c: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
4000ca40: 06 80 00 1f bl 4000cabc <rtems_mkdir+0x10c>
<== NOT EXECUTED
4000ca44: b4 10 20 00 clr %i2
<== NOT EXECUTED
*p = '/';
4000ca48: f0 2f 7f ff stb %i0, [ %i5 + -1 ]
<== NOT EXECUTED
4000ca4c: 84 10 20 00 clr %g2
<== NOT EXECUTED
4000ca50: c2 0f 40 00 ldub [ %i5 ], %g1
<== NOT EXECUTED
4000ca54: 83 28 60 18 sll %g1, 0x18, %g1
<== NOT EXECUTED
if (p[0] == '\0')
4000ca58: 83 38 60 18 sra %g1, 0x18, %g1
<== NOT EXECUTED
4000ca5c: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
4000ca60: 12 bf ff ec bne 4000ca10 <rtems_mkdir+0x60>
<== NOT EXECUTED
4000ca64: ba 07 60 01 inc %i5
<== NOT EXECUTED
if (first) {
4000ca68: 80 a0 a0 00 cmp %g2, 0
<== NOT EXECUTED
4000ca6c: 02 80 00 07 be 4000ca88 <rtems_mkdir+0xd8>
<== NOT EXECUTED
4000ca70: 01 00 00 00 nop
<== NOT EXECUTED
oumask = umask(0);
4000ca74: 40 00 0e 66 call 4001040c <umask>
<== NOT EXECUTED
4000ca78: 90 10 20 00 clr %o0 ! 0 <PROM_START>
<== NOT EXECUTED
4000ca7c: b6 10 00 08 mov %o0, %i3
<== NOT EXECUTED
(void)umask(numask);
4000ca80: 40 00 0e 63 call 4001040c <umask>
<== NOT EXECUTED
4000ca84: 90 0a 3f 3f and %o0, -193, %o0
<== NOT EXECUTED
(void)umask(oumask);
4000ca88: 40 00 0e 61 call 4001040c <umask>
<== NOT EXECUTED
4000ca8c: 90 10 00 1b mov %i3, %o0
<== NOT EXECUTED
if (mkdir(path, last ? omode : S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
4000ca90: 92 10 00 19 mov %i1, %o1
<== NOT EXECUTED
4000ca94: 7f ff fc d2 call 4000bddc <mkdir>
<== NOT EXECUTED
4000ca98: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
4000ca9c: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
4000caa0: 06 80 00 07 bl 4000cabc <rtems_mkdir+0x10c>
<== NOT EXECUTED
4000caa4: b4 10 20 01 mov 1, %i2
<== NOT EXECUTED
(void)umask(oumask);
4000caa8: b0 10 20 00 clr %i0
<== NOT EXECUTED
success = build(dup_path, mode);
free(dup_path);
4000caac: 7f ff fa f5 call 4000b680 <free>
<== NOT EXECUTED
4000cab0: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
4000cab4: 81 c7 e0 08 ret
<== NOT EXECUTED
4000cab8: 81 e8 00 00 restore
<== NOT EXECUTED
if (errno == EEXIST || errno == EISDIR) {
4000cabc: 40 01 3f 96 call 4005c914 <__errno>
<== NOT EXECUTED
4000cac0: 01 00 00 00 nop
<== NOT EXECUTED
4000cac4: c2 02 00 00 ld [ %o0 ], %g1
<== NOT EXECUTED
4000cac8: 80 a0 60 11 cmp %g1, 0x11
<== NOT EXECUTED
4000cacc: 02 80 00 08 be 4000caec <rtems_mkdir+0x13c>
<== NOT EXECUTED
4000cad0: 92 07 bf a0 add %fp, -96, %o1
<== NOT EXECUTED
4000cad4: 40 01 3f 90 call 4005c914 <__errno>
<== NOT EXECUTED
4000cad8: 01 00 00 00 nop
<== NOT EXECUTED
4000cadc: c2 02 00 00 ld [ %o0 ], %g1
<== NOT EXECUTED
4000cae0: 80 a0 60 15 cmp %g1, 0x15
<== NOT EXECUTED
4000cae4: 12 80 00 0f bne 4000cb20 <rtems_mkdir+0x170>
<== NOT EXECUTED
4000cae8: 92 07 bf a0 add %fp, -96, %o1
<== NOT EXECUTED
if (stat(path, &sb) < 0) {
4000caec: 40 00 00 36 call 4000cbc4 <stat>
<== NOT EXECUTED
4000caf0: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
4000caf4: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
4000caf8: 06 80 00 0a bl 4000cb20 <rtems_mkdir+0x170>
<== NOT EXECUTED
4000cafc: c2 07 bf ac ld [ %fp + -84 ], %g1
<== NOT EXECUTED
} else if (!S_ISDIR(sb.st_mode)) {
4000cb00: 82 08 40 11 and %g1, %l1, %g1
<== NOT EXECUTED
4000cb04: 80 a0 40 10 cmp %g1, %l0
<== NOT EXECUTED
4000cb08: 12 80 00 10 bne 4000cb48 <rtems_mkdir+0x198>
<== NOT EXECUTED
4000cb0c: 80 a6 a0 00 cmp %i2, 0
<== NOT EXECUTED
if (last)
4000cb10: 32 bf ff e7 bne,a 4000caac <rtems_mkdir+0xfc>
<== NOT EXECUTED
4000cb14: b0 10 20 00 clr %i0
<== NOT EXECUTED
*p = '/';
4000cb18: 10 bf ff cd b 4000ca4c <rtems_mkdir+0x9c>
<== NOT EXECUTED
4000cb1c: f0 2f 7f ff stb %i0, [ %i5 + -1 ]
<== NOT EXECUTED
if (!first && !last)
4000cb20: 80 a6 a0 00 cmp %i2, 0
<== NOT EXECUTED
4000cb24: 32 80 00 17 bne,a 4000cb80 <rtems_mkdir+0x1d0>
<== NOT EXECUTED
4000cb28: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
(void)umask(oumask);
4000cb2c: 40 00 0e 38 call 4001040c <umask>
<== NOT EXECUTED
4000cb30: 90 10 00 1b mov %i3, %o0
<== NOT EXECUTED
4000cb34: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
free(dup_path);
4000cb38: 7f ff fa d2 call 4000b680 <free>
<== NOT EXECUTED
4000cb3c: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
4000cb40: 81 c7 e0 08 ret
<== NOT EXECUTED
4000cb44: 81 e8 00 00 restore
<== NOT EXECUTED
if (last)
4000cb48: 02 80 00 07 be 4000cb64 <rtems_mkdir+0x1b4>
<== NOT EXECUTED
4000cb4c: 01 00 00 00 nop
<== NOT EXECUTED
errno = EEXIST;
4000cb50: 40 01 3f 71 call 4005c914 <__errno>
<== NOT EXECUTED
4000cb54: b0 10 3f ff mov -1, %i0 ! ffffffff <RAM_END+0xbfbfffff>
<== NOT EXECUTED
4000cb58: 82 10 20 11 mov 0x11, %g1
<== NOT EXECUTED
4000cb5c: 10 bf ff d4 b 4000caac <rtems_mkdir+0xfc>
<== NOT EXECUTED
4000cb60: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
errno = ENOTDIR;
4000cb64: 40 01 3f 6c call 4005c914 <__errno>
<== NOT EXECUTED
4000cb68: 01 00 00 00 nop
<== NOT EXECUTED
4000cb6c: 82 10 20 14 mov 0x14, %g1 ! 14 <_TLS_Alignment+0x13>
<== NOT EXECUTED
4000cb70: 10 bf ff ef b 4000cb2c <rtems_mkdir+0x17c>
<== NOT EXECUTED
4000cb74: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
}
return success != 0 ? 0 : -1;
4000cb78: 81 c7 e0 08 ret
<== NOT EXECUTED
4000cb7c: 91 e8 3f ff restore %g0, -1, %o0
<== NOT EXECUTED
free(dup_path);
4000cb80: 7f ff fa c0 call 4000b680 <free>
<== NOT EXECUTED
4000cb84: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
}
4000cb88: 81 c7 e0 08 ret
<== NOT EXECUTED
4000cb8c: 81 e8 00 00 restore
<== NOT EXECUTED
oumask = umask(0);
4000cb90: 40 00 0e 1f call 4001040c <umask>
<== NOT EXECUTED
4000cb94: 90 10 20 00 clr %o0
<== NOT EXECUTED
4000cb98: b6 10 00 08 mov %o0, %i3
<== NOT EXECUTED
(void)umask(numask);
4000cb9c: 40 00 0e 1c call 4001040c <umask>
<== NOT EXECUTED
4000cba0: 90 0a 3f 3f and %o0, -193, %o0
<== NOT EXECUTED
if (last)
4000cba4: 10 bf ff a2 b 4000ca2c <rtems_mkdir+0x7c>
<== NOT EXECUTED
4000cba8: 80 8e a0 ff btst 0xff, %i2
<== NOT EXECUTED
40042568 <rtems_print_printer_fprintf>:
}
void rtems_print_printer_fprintf(rtems_printer *printer, FILE *file)
{
printer->context = file;
printer->printer = rtems_fprintf_plugin;
40042568: 03 10 01 09 sethi %hi(0x40042400), %g1
<== NOT EXECUTED
printer->context = file;
4004256c: d2 22 00 00 st %o1, [ %o0 ]
<== NOT EXECUTED
printer->printer = rtems_fprintf_plugin;
40042570: 82 10 61 5c or %g1, 0x15c, %g1
<== NOT EXECUTED
}
40042574: 81 c3 e0 08 retl
<== NOT EXECUTED
40042578: c2 22 20 04 st %g1, [ %o0 + 4 ]
<== NOT EXECUTED
40042548 <rtems_print_printer_printf>:
}
void rtems_print_printer_printf(rtems_printer *printer)
{
printer->context = NULL;
printer->printer = rtems_printf_plugin;
40042548: 03 10 01 09 sethi %hi(0x40042400), %g1
<== NOT EXECUTED
printer->context = NULL;
4004254c: c0 22 00 00 clr [ %o0 ]
<== NOT EXECUTED
printer->printer = rtems_printf_plugin;
40042550: 82 10 61 34 or %g1, 0x134, %g1
<== NOT EXECUTED
}
40042554: 81 c3 e0 08 retl
<== NOT EXECUTED
40042558: c2 22 20 04 st %g1, [ %o0 + 4 ]
<== NOT EXECUTED
4000d69c <rtems_printf>:
int rtems_printf(
const rtems_printer *printer,
const char *format,
...
)
{
4000d69c: 9d e3 bf 98 save %sp, -104, %sp
int len = 0;
if ( rtems_print_printer_valid( printer ) ) {
va_list ap;
va_start( ap, format );
4000d6a0: f4 27 a0 4c st %i2, [ %fp + 0x4c ]
{
4000d6a4: 82 10 00 18 mov %i0, %g1
va_start( ap, format );
4000d6a8: f6 27 a0 50 st %i3, [ %fp + 0x50 ]
int len = 0;
4000d6ac: b0 10 20 00 clr %i0
va_start( ap, format );
4000d6b0: f8 27 a0 54 st %i4, [ %fp + 0x54 ]
4000d6b4: 80 a0 60 00 cmp %g1, 0
4000d6b8: 02 80 00 0b be 4000d6e4 <rtems_printf+0x48>
<== NEVER TAKEN
4000d6bc: fa 27 a0 58 st %i5, [ %fp + 0x58 ]
4000d6c0: c4 00 60 04 ld [ %g1 + 4 ], %g2
4000d6c4: 80 a0 a0 00 cmp %g2, 0
4000d6c8: 02 80 00 07 be 4000d6e4 <rtems_printf+0x48>
<== NEVER TAKEN
4000d6cc: 94 07 a0 4c add %fp, 0x4c, %o2
len = printer->printer( printer->context, format, ap );
4000d6d0: d0 00 40 00 ld [ %g1 ], %o0
4000d6d4: 92 10 00 19 mov %i1, %o1
4000d6d8: 9f c0 80 00 call %g2
4000d6dc: d4 27 bf fc st %o2, [ %fp + -4 ]
4000d6e0: b0 10 00 08 mov %o0, %i0
va_end( ap );
}
return len;
}
4000d6e4: 81 c7 e0 08 ret
4000d6e8: 81 e8 00 00 restore
4002e8c0 <rtems_termios_baud_table>:
4002e8c0: 40 02 e7 f8 00 00 00 00 00 00 00 00 40 02 e8 00 @...........@...
4002e8d0: 00 00 00 32 00 00 00 32 40 02 e8 08 00 00 00 4b ...2...2@......K
4002e8e0: 00 00 00 4b 40 02 e8 10 00 00 00 6e 00 00 00 6e ...K@......n...n
4002e8f0: 40 02 e8 18 00 00 00 86 00 00 00 86 40 02 e8 20 @...........@..
4002e900: 00 00 00 96 00 00 00 96 40 02 e8 28 00 00 00 c8 ........@..(....
4002e910: 00 00 00 c8 40 02 e8 30 00 00 01 2c 00 00 01 2c ....@..0...,...,
4002e920: 40 02 e8 38 00 00 02 58 00 00 02 58 40 02 e8 40 @..8...X...X@..@
4002e930: 00 00 04 b0 00 00 04 b0 40 02 e8 48 00 00 07 08 ........@..H....
4002e940: 00 00 07 08 40 02 e8 50 00 00 09 60 00 00 09 60 ....@..P...`...`
4002e950: 40 02 e8 58 00 00 12 c0 00 00 12 c0 40 02 e8 60 @..X........@..`
4002e960: 00 00 25 80 00 00 25 80 40 02 e8 68 00 00 4b 00 ..%...%.@..h..K.
4002e970: 00 00 4b 00 40 02 e8 70 00 00 96 00 00 00 96 00 ..K.@..p........
4002e980: 40 02 e8 78 00 00 1c 20 00 00 1c 20 40 02 e8 80 @..x... ... @...
4002e990: 00 00 38 40 00 00 38 40 40 02 e8 88 00 00 70 80 ..8@..8@@.....p.
4002e9a0: 00 00 70 80 40 02 e8 90 00 00 e1 00 00 00 e1 00 ..p.@...........
4002e9b0: 40 02 e8 98 00 01 2c 00 00 01 2c 00 40 02 e8 a0 @.....,...,.@...
4002e9c0: 00 01 c2 00 00 01 c2 00 40 02 e8 a8 00 03 84 00 ........@.......
4002e9d0: 00 03 84 00 40 02 e8 b0 00 07 08 00 00 07 08 00 ....@...........
4002e9e0: 40 02 e8 b8 00 0e 10 00 00 0e 10 00 00 00 00 00 @...............
...
4002e9f8: 74 65 72 6d 69 6f 73 20 69 6e 70 75 74 00 00 00 termios input...
4002ea08: 74 65 72 6d 69 6f 73 20 6f 75 74 70 75 74 00 00 termios output..
4002ea18: 74 65 72 6d 69 6f 73 20 72 61 77 20 6f 75 74 70 termios raw outp
4002ea28: 75 74 00 00 00 00 00 00 74 65 72 6d 69 6f 73 20 ut......termios
4002ea38: 64 65 76 69 63 65 00 00 74 65 72 6d 69 6f 73 20 device..termios
4002ea48: 72 61 77 20 69 6e 70 75 74 00 00 00 00 00 00 00 raw input.......
4002ea58: 08 00 00 00 00 00 00 00 08 20 08 00 ......... ..
4001cb58 <rtems_termios_baud_to_index>:
rtems_termios_baud_t termios_baud
)
{
int baud_index;
switch (termios_baud) {
4001cb58: 05 00 00 04 sethi %hi(0x1000), %g2
<== NOT EXECUTED
4001cb5c: 84 10 a2 c0 or %g2, 0x2c0, %g2 ! 12c0 <_Configuration_Interrupt_stack_size+0x2c0>
<== NOT EXECUTED
4001cb60: 80 a2 00 02 cmp %o0, %g2
<== NOT EXECUTED
4001cb64: 02 80 00 7d be 4001cd58 <rtems_termios_baud_to_index+0x200>
<== NOT EXECUTED
4001cb68: 82 10 00 08 mov %o0, %g1
<== NOT EXECUTED
4001cb6c: 18 80 00 14 bgu 4001cbbc <rtems_termios_baud_to_index+0x64>
<== NOT EXECUTED
4001cb70: 80 a2 20 96 cmp %o0, 0x96
<== NOT EXECUTED
4001cb74: 02 80 00 7b be 4001cd60 <rtems_termios_baud_to_index+0x208>
<== NOT EXECUTED
4001cb78: 01 00 00 00 nop
<== NOT EXECUTED
4001cb7c: 08 80 00 2a bleu 4001cc24 <rtems_termios_baud_to_index+0xcc>
<== NOT EXECUTED
4001cb80: 80 a2 22 58 cmp %o0, 0x258
<== NOT EXECUTED
4001cb84: 02 80 00 73 be 4001cd50 <rtems_termios_baud_to_index+0x1f8>
<== NOT EXECUTED
4001cb88: 01 00 00 00 nop
<== NOT EXECUTED
4001cb8c: 08 80 00 46 bleu 4001cca4 <rtems_termios_baud_to_index+0x14c>
<== NOT EXECUTED
4001cb90: 80 a0 67 08 cmp %g1, 0x708
<== NOT EXECUTED
4001cb94: 02 80 00 22 be 4001cc1c <rtems_termios_baud_to_index+0xc4>
<== NOT EXECUTED
4001cb98: 90 10 20 0a mov 0xa, %o0
<== NOT EXECUTED
4001cb9c: 80 a0 69 60 cmp %g1, 0x960
<== NOT EXECUTED
4001cba0: 02 80 00 1f be 4001cc1c <rtems_termios_baud_to_index+0xc4>
<== NOT EXECUTED
4001cba4: 90 10 20 0b mov 0xb, %o0
<== NOT EXECUTED
4001cba8: 80 a0 64 b0 cmp %g1, 0x4b0
<== NOT EXECUTED
4001cbac: 02 80 00 1c be 4001cc1c <rtems_termios_baud_to_index+0xc4>
<== NOT EXECUTED
4001cbb0: 90 10 20 09 mov 9, %o0
<== NOT EXECUTED
case B921600: baud_index = 24; break;
default: baud_index = -1; break;
}
return baud_index;
}
4001cbb4: 81 c3 e0 08 retl
<== NOT EXECUTED
4001cbb8: 90 10 3f ff mov -1, %o0
<== NOT EXECUTED
switch (termios_baud) {
4001cbbc: 05 00 00 25 sethi %hi(0x9400), %g2
<== NOT EXECUTED
4001cbc0: 84 10 a2 00 or %g2, 0x200, %g2 ! 9600 <_Configuration_Interrupt_stack_size+0x8600>
<== NOT EXECUTED
4001cbc4: 80 a2 00 02 cmp %o0, %g2
<== NOT EXECUTED
4001cbc8: 02 80 00 60 be 4001cd48 <rtems_termios_baud_to_index+0x1f0>
<== NOT EXECUTED
4001cbcc: 01 00 00 00 nop
<== NOT EXECUTED
4001cbd0: 08 80 00 22 bleu 4001cc58 <rtems_termios_baud_to_index+0x100>
<== NOT EXECUTED
4001cbd4: 05 00 00 70 sethi %hi(0x1c000), %g2
<== NOT EXECUTED
4001cbd8: 84 10 a2 00 or %g2, 0x200, %g2 ! 1c200 <_Configuration_Interrupt_stack_size+0x1b200>
<== NOT EXECUTED
4001cbdc: 80 a2 00 02 cmp %o0, %g2
<== NOT EXECUTED
4001cbe0: 02 80 00 62 be 4001cd68 <rtems_termios_baud_to_index+0x210>
<== NOT EXECUTED
4001cbe4: 01 00 00 00 nop
<== NOT EXECUTED
4001cbe8: 08 80 00 37 bleu 4001ccc4 <rtems_termios_baud_to_index+0x16c>
<== NOT EXECUTED
4001cbec: 05 00 01 c2 sethi %hi(0x70800), %g2
<== NOT EXECUTED
4001cbf0: 80 a0 40 02 cmp %g1, %g2
<== NOT EXECUTED
4001cbf4: 02 80 00 0a be 4001cc1c <rtems_termios_baud_to_index+0xc4>
<== NOT EXECUTED
4001cbf8: 90 10 20 17 mov 0x17, %o0
<== NOT EXECUTED
4001cbfc: 05 00 03 84 sethi %hi(0xe1000), %g2
<== NOT EXECUTED
4001cc00: 80 a0 40 02 cmp %g1, %g2
<== NOT EXECUTED
4001cc04: 02 80 00 06 be 4001cc1c <rtems_termios_baud_to_index+0xc4>
<== NOT EXECUTED
4001cc08: 90 10 20 18 mov 0x18, %o0
<== NOT EXECUTED
4001cc0c: 05 00 00 e1 sethi %hi(0x38400), %g2
<== NOT EXECUTED
4001cc10: 80 a0 40 02 cmp %g1, %g2
<== NOT EXECUTED
4001cc14: 12 bf ff e8 bne 4001cbb4 <rtems_termios_baud_to_index+0x5c>
<== NOT EXECUTED
4001cc18: 90 10 20 16 mov 0x16, %o0
<== NOT EXECUTED
4001cc1c: 81 c3 e0 08 retl
<== NOT EXECUTED
4001cc20: 01 00 00 00 nop
<== NOT EXECUTED
4001cc24: 80 a2 20 4b cmp %o0, 0x4b
<== NOT EXECUTED
4001cc28: 02 80 00 46 be 4001cd40 <rtems_termios_baud_to_index+0x1e8>
<== NOT EXECUTED
4001cc2c: 01 00 00 00 nop
<== NOT EXECUTED
4001cc30: 18 80 00 3b bgu 4001cd1c <rtems_termios_baud_to_index+0x1c4>
<== NOT EXECUTED
4001cc34: 80 a0 60 6e cmp %g1, 0x6e
<== NOT EXECUTED
4001cc38: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
4001cc3c: 02 bf ff f8 be 4001cc1c <rtems_termios_baud_to_index+0xc4>
<== NOT EXECUTED
4001cc40: 90 10 20 00 clr %o0
<== NOT EXECUTED
4001cc44: 80 a0 60 32 cmp %g1, 0x32
<== NOT EXECUTED
4001cc48: 12 bf ff db bne 4001cbb4 <rtems_termios_baud_to_index+0x5c>
<== NOT EXECUTED
4001cc4c: 90 10 20 01 mov 1, %o0
<== NOT EXECUTED
}
4001cc50: 81 c3 e0 08 retl
<== NOT EXECUTED
4001cc54: 01 00 00 00 nop
<== NOT EXECUTED
switch (termios_baud) {
4001cc58: 05 00 00 0e sethi %hi(0x3800), %g2
<== NOT EXECUTED
4001cc5c: 84 10 a0 40 or %g2, 0x40, %g2 ! 3840 <_Configuration_Interrupt_stack_size+0x2840>
<== NOT EXECUTED
4001cc60: 80 a2 00 02 cmp %o0, %g2
<== NOT EXECUTED
4001cc64: 02 80 00 35 be 4001cd38 <rtems_termios_baud_to_index+0x1e0>
<== NOT EXECUTED
4001cc68: 01 00 00 00 nop
<== NOT EXECUTED
4001cc6c: 18 80 00 21 bgu 4001ccf0 <rtems_termios_baud_to_index+0x198>
<== NOT EXECUTED
4001cc70: 05 00 00 12 sethi %hi(0x4800), %g2
<== NOT EXECUTED
4001cc74: 05 00 00 07 sethi %hi(0x1c00), %g2
<== NOT EXECUTED
4001cc78: 84 10 a0 20 or %g2, 0x20, %g2 ! 1c20 <_Configuration_Interrupt_stack_size+0xc20>
<== NOT EXECUTED
4001cc7c: 80 a0 40 02 cmp %g1, %g2
<== NOT EXECUTED
4001cc80: 02 bf ff e7 be 4001cc1c <rtems_termios_baud_to_index+0xc4>
<== NOT EXECUTED
4001cc84: 90 10 20 10 mov 0x10, %o0
<== NOT EXECUTED
4001cc88: 05 00 00 09 sethi %hi(0x2400), %g2
<== NOT EXECUTED
4001cc8c: 84 10 a1 80 or %g2, 0x180, %g2 ! 2580 <_Configuration_Interrupt_stack_size+0x1580>
<== NOT EXECUTED
4001cc90: 80 a0 40 02 cmp %g1, %g2
<== NOT EXECUTED
4001cc94: 12 bf ff c8 bne 4001cbb4 <rtems_termios_baud_to_index+0x5c>
<== NOT EXECUTED
4001cc98: 90 10 20 0d mov 0xd, %o0
<== NOT EXECUTED
}
4001cc9c: 81 c3 e0 08 retl
<== NOT EXECUTED
4001cca0: 01 00 00 00 nop
<== NOT EXECUTED
switch (termios_baud) {
4001cca4: 80 a0 60 c8 cmp %g1, 0xc8
<== NOT EXECUTED
4001cca8: 02 bf ff dd be 4001cc1c <rtems_termios_baud_to_index+0xc4>
<== NOT EXECUTED
4001ccac: 90 10 20 06 mov 6, %o0
<== NOT EXECUTED
4001ccb0: 80 a0 61 2c cmp %g1, 0x12c
<== NOT EXECUTED
4001ccb4: 12 bf ff c0 bne 4001cbb4 <rtems_termios_baud_to_index+0x5c>
<== NOT EXECUTED
4001ccb8: 90 10 20 07 mov 7, %o0
<== NOT EXECUTED
}
4001ccbc: 81 c3 e0 08 retl
<== NOT EXECUTED
4001ccc0: 01 00 00 00 nop
<== NOT EXECUTED
switch (termios_baud) {
4001ccc4: 05 00 00 38 sethi %hi(0xe000), %g2
<== NOT EXECUTED
4001ccc8: 84 10 a1 00 or %g2, 0x100, %g2 ! e100 <_Configuration_Interrupt_stack_size+0xd100>
<== NOT EXECUTED
4001cccc: 80 a0 40 02 cmp %g1, %g2
<== NOT EXECUTED
4001ccd0: 02 bf ff d3 be 4001cc1c <rtems_termios_baud_to_index+0xc4>
<== NOT EXECUTED
4001ccd4: 90 10 20 13 mov 0x13, %o0
<== NOT EXECUTED
4001ccd8: 05 00 00 4b sethi %hi(0x12c00), %g2
<== NOT EXECUTED
4001ccdc: 80 a0 40 02 cmp %g1, %g2
<== NOT EXECUTED
4001cce0: 12 bf ff b5 bne 4001cbb4 <rtems_termios_baud_to_index+0x5c>
<== NOT EXECUTED
4001cce4: 90 10 20 14 mov 0x14, %o0
<== NOT EXECUTED
}
4001cce8: 81 c3 e0 08 retl
<== NOT EXECUTED
4001ccec: 01 00 00 00 nop
<== NOT EXECUTED
switch (termios_baud) {
4001ccf0: 84 10 a3 00 or %g2, 0x300, %g2
<== NOT EXECUTED
4001ccf4: 80 a0 40 02 cmp %g1, %g2
<== NOT EXECUTED
4001ccf8: 02 bf ff c9 be 4001cc1c <rtems_termios_baud_to_index+0xc4>
<== NOT EXECUTED
4001ccfc: 90 10 20 0e mov 0xe, %o0
<== NOT EXECUTED
4001cd00: 05 00 00 1c sethi %hi(0x7000), %g2
<== NOT EXECUTED
4001cd04: 84 10 a0 80 or %g2, 0x80, %g2 ! 7080 <_Configuration_Interrupt_stack_size+0x6080>
<== NOT EXECUTED
4001cd08: 80 a0 40 02 cmp %g1, %g2
<== NOT EXECUTED
4001cd0c: 12 bf ff aa bne 4001cbb4 <rtems_termios_baud_to_index+0x5c>
<== NOT EXECUTED
4001cd10: 90 10 20 12 mov 0x12, %o0
<== NOT EXECUTED
}
4001cd14: 81 c3 e0 08 retl
<== NOT EXECUTED
4001cd18: 01 00 00 00 nop
<== NOT EXECUTED
switch (termios_baud) {
4001cd1c: 02 bf ff c0 be 4001cc1c <rtems_termios_baud_to_index+0xc4>
<== NOT EXECUTED
4001cd20: 90 10 20 03 mov 3, %o0 ! 3 <_TLS_Alignment+0x2>
<== NOT EXECUTED
4001cd24: 80 a0 60 86 cmp %g1, 0x86
<== NOT EXECUTED
4001cd28: 12 bf ff a3 bne 4001cbb4 <rtems_termios_baud_to_index+0x5c>
<== NOT EXECUTED
4001cd2c: 90 10 20 04 mov 4, %o0
<== NOT EXECUTED
}
4001cd30: 81 c3 e0 08 retl
<== NOT EXECUTED
4001cd34: 01 00 00 00 nop
<== NOT EXECUTED
case B14400: baud_index = 17; break;
4001cd38: 81 c3 e0 08 retl
<== NOT EXECUTED
4001cd3c: 90 10 20 11 mov 0x11, %o0 ! 11 <_TLS_Alignment+0x10>
<== NOT EXECUTED
case B75: baud_index = 2; break;
4001cd40: 81 c3 e0 08 retl
<== NOT EXECUTED
4001cd44: 90 10 20 02 mov 2, %o0
<== NOT EXECUTED
case B38400: baud_index = 15; break;
4001cd48: 81 c3 e0 08 retl
<== NOT EXECUTED
4001cd4c: 90 10 20 0f mov 0xf, %o0
<== NOT EXECUTED
case B600: baud_index = 8; break;
4001cd50: 81 c3 e0 08 retl
<== NOT EXECUTED
4001cd54: 90 10 20 08 mov 8, %o0
<== NOT EXECUTED
case B4800: baud_index = 12; break;
4001cd58: 81 c3 e0 08 retl
<== NOT EXECUTED
4001cd5c: 90 10 20 0c mov 0xc, %o0
<== NOT EXECUTED
case B150: baud_index = 5; break;
4001cd60: 81 c3 e0 08 retl
<== NOT EXECUTED
4001cd64: 90 10 20 05 mov 5, %o0
<== NOT EXECUTED
case B115200: baud_index = 21; break;
4001cd68: 81 c3 e0 08 retl
<== NOT EXECUTED
4001cd6c: 90 10 20 15 mov 0x15, %o0
<== NOT EXECUTED
4000cbcc <rtems_termios_device_install>:
{
4000cbcc: 9d e3 bf a0 save %sp, -96, %sp
new_device_node = calloc (1, sizeof(*new_device_node));
4000cbd0: 92 10 20 20 mov 0x20, %o1
4000cbd4: 7f ff f1 85 call 400091e8 <calloc>
4000cbd8: 90 10 20 01 mov 1, %o0
return RTEMS_NO_MEMORY;
4000cbdc: 82 10 20 1a mov 0x1a, %g1
if (new_device_node == NULL) {
4000cbe0: 80 a2 20 00 cmp %o0, 0
4000cbe4: 02 80 00 10 be 4000cc24 <rtems_termios_device_install+0x58>
<== NEVER TAKEN
4000cbe8: ba 10 00 08 mov %o0, %i5
new_device_node->handler = handler;
4000cbec: f2 22 20 10 st %i1, [ %o0 + 0x10 ]
rv = IMFS_make_generic_node(
4000cbf0: 96 10 00 08 mov %o0, %o3
new_device_node->flow = flow;
4000cbf4: f4 22 20 14 st %i2, [ %o0 + 0x14 ]
rv = IMFS_make_generic_node(
4000cbf8: 15 10 00 ba sethi %hi(0x4002e800), %o2
new_device_node->context = context;
4000cbfc: f6 22 20 18 st %i3, [ %o0 + 0x18 ]
rv = IMFS_make_generic_node(
4000cc00: 94 12 a2 a4 or %o2, 0x2a4, %o2
new_device_node->tty = NULL;
4000cc04: c0 22 20 1c clr [ %o0 + 0x1c ]
rv = IMFS_make_generic_node(
4000cc08: 13 00 00 08 sethi %hi(0x2000), %o1
4000cc0c: 90 10 00 18 mov %i0, %o0
4000cc10: 40 00 31 fc call 40019400 <IMFS_make_generic_node>
4000cc14: 92 12 61 ff or %o1, 0x1ff, %o1
if (rv != 0) {
4000cc18: 80 a2 20 00 cmp %o0, 0
4000cc1c: 12 80 00 04 bne 4000cc2c <rtems_termios_device_install+0x60>
<== NEVER TAKEN
4000cc20: 82 10 20 00 clr %g1
}
4000cc24: 81 c7 e0 08 ret
4000cc28: 91 e8 00 01 restore %g0, %g1, %o0
free (new_device_node);
4000cc2c: 7f ff f1 94 call 4000927c <free>
<== NOT EXECUTED
4000cc30: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
return RTEMS_UNSATISFIED;
4000cc34: 82 10 20 0d mov 0xd, %g1
<== NOT EXECUTED
}
4000cc38: 81 c7 e0 08 ret
<== NOT EXECUTED
4000cc3c: 91 e8 00 01 restore %g0, %g1, %o0
<== NOT EXECUTED
4000b014 <rtems_termios_device_lock_acquire_default>:
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4000b014: 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);
4000b018: c2 22 40 00 st %g1, [ %o1 ]
}
4000b01c: 81 c3 e0 08 retl
4000b020: 01 00 00 00 nop
4000b024 <rtems_termios_device_lock_release_default>:
register uint32_t _psr __asm__("g1") = psr; /* input to trap handler */
4000b024: c2 02 40 00 ld [ %o1 ], %g1
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4000b028: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4000b02c: 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);
}
4000b030: 81 c3 e0 08 retl
4000b034: 01 00 00 00 nop
4000d264 <rtems_termios_enqueue_raw_characters>:
{
4000d264: 9d e3 bf 98 save %sp, -104, %sp
<== NOT EXECUTED
if (rtems_termios_linesw[tty->t_line].l_rint != NULL) {
4000d268: c2 06 21 5c ld [ %i0 + 0x15c ], %g1
<== NOT EXECUTED
4000d26c: 83 28 60 05 sll %g1, 5, %g1
<== NOT EXECUTED
4000d270: 39 10 00 d0 sethi %hi(0x40034000), %i4
<== NOT EXECUTED
4000d274: b8 17 21 d0 or %i4, 0x1d0, %i4 ! 400341d0 <rtems_termios_linesw>
<== NOT EXECUTED
4000d278: 82 07 00 01 add %i4, %g1, %g1
<== NOT EXECUTED
4000d27c: c2 00 60 10 ld [ %g1 + 0x10 ], %g1
<== NOT EXECUTED
4000d280: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
4000d284: 02 80 00 25 be 4000d318 <rtems_termios_enqueue_raw_characters+0xb4>
<== NOT EXECUTED
4000d288: ba 10 00 18 mov %i0, %i5
<== NOT EXECUTED
while (len--) {
4000d28c: 80 a6 a0 00 cmp %i2, 0
<== NOT EXECUTED
4000d290: 22 80 00 0f be,a 4000d2cc <rtems_termios_enqueue_raw_characters+0x68>
<== NOT EXECUTED
4000d294: c2 07 61 6c ld [ %i5 + 0x16c ], %g1
<== NOT EXECUTED
4000d298: 10 80 00 05 b 4000d2ac <rtems_termios_enqueue_raw_characters+0x48>
<== NOT EXECUTED
4000d29c: b4 06 40 1a add %i1, %i2, %i2
<== NOT EXECUTED
4000d2a0: 83 28 60 05 sll %g1, 5, %g1
<== NOT EXECUTED
4000d2a4: 82 07 00 01 add %i4, %g1, %g1
<== NOT EXECUTED
4000d2a8: c2 00 60 10 ld [ %g1 + 0x10 ], %g1
<== NOT EXECUTED
c = *buf++;
4000d2ac: b2 06 60 01 inc %i1
<== NOT EXECUTED
rtems_termios_linesw[tty->t_line].l_rint(c,tty);
4000d2b0: d0 4e 7f ff ldsb [ %i1 + -1 ], %o0
<== NOT EXECUTED
4000d2b4: 9f c0 40 00 call %g1
<== NOT EXECUTED
4000d2b8: 92 10 00 1d mov %i5, %o1
<== NOT EXECUTED
while (len--) {
4000d2bc: 80 a6 40 1a cmp %i1, %i2
<== NOT EXECUTED
4000d2c0: 32 bf ff f8 bne,a 4000d2a0 <rtems_termios_enqueue_raw_characters+0x3c>
<== NOT EXECUTED
4000d2c4: c2 07 61 5c ld [ %i5 + 0x15c ], %g1
<== NOT EXECUTED
if (tty->tty_rcv.sw_pfn != NULL && !tty->tty_rcvwakeup) {
4000d2c8: c2 07 61 6c ld [ %i5 + 0x16c ], %g1
<== NOT EXECUTED
4000d2cc: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
4000d2d0: 02 80 00 0a be 4000d2f8 <rtems_termios_enqueue_raw_characters+0x94>
<== NOT EXECUTED
4000d2d4: b0 10 20 00 clr %i0
<== NOT EXECUTED
4000d2d8: c4 0f 61 74 ldub [ %i5 + 0x174 ], %g2
<== NOT EXECUTED
4000d2dc: 80 a0 a0 00 cmp %g2, 0
<== NOT EXECUTED
4000d2e0: 12 80 00 06 bne 4000d2f8 <rtems_termios_enqueue_raw_characters+0x94>
<== NOT EXECUTED
4000d2e4: 84 10 20 01 mov 1, %g2
<== NOT EXECUTED
tty->tty_rcvwakeup = true;
4000d2e8: c4 2f 61 74 stb %g2, [ %i5 + 0x174 ]
<== NOT EXECUTED
(*tty->tty_rcv.sw_pfn)(&tty->termios, tty->tty_rcv.sw_arg);
4000d2ec: 90 07 60 50 add %i5, 0x50, %o0
<== NOT EXECUTED
4000d2f0: 9f c0 40 00 call %g1
<== NOT EXECUTED
4000d2f4: d2 07 61 70 ld [ %i5 + 0x170 ], %o1
<== NOT EXECUTED
4000d2f8: 81 c7 e0 08 ret
<== NOT EXECUTED
4000d2fc: 81 e8 00 00 restore
<== NOT EXECUTED
tty->rawInBufDropped += dropped;
4000d300: 82 00 40 18 add %g1, %i0, %g1
<== NOT EXECUTED
4000d304: c2 27 60 b4 st %g1, [ %i5 + 0xb4 ]
<== NOT EXECUTED
_Semaphore_Post_binary( &binary_semaphore->Semaphore );
4000d308: 40 00 17 03 call 40012f14 <_Semaphore_Post_binary>
<== NOT EXECUTED
4000d30c: 90 07 60 90 add %i5, 0x90, %o0
<== NOT EXECUTED
}
4000d310: 81 c7 e0 08 ret
<== NOT EXECUTED
4000d314: 81 e8 00 00 restore
<== NOT EXECUTED
rtems_termios_device_context *ctx = tty->device_context;
4000d318: f8 06 21 7c ld [ %i0 + 0x17c ], %i4
<== NOT EXECUTED
4000d31c: b4 06 40 1a add %i1, %i2, %i2
<== NOT EXECUTED
bool flow_rcv = false; /* true, if flow control char received */
4000d320: a6 10 20 00 clr %l3
<== NOT EXECUTED
int dropped = 0;
4000d324: b0 10 20 00 clr %i0
<== NOT EXECUTED
4000d328: a2 10 20 01 mov 1, %l1
<== NOT EXECUTED
(*tty->tty_rcv.sw_pfn)(&tty->termios, tty->tty_rcv.sw_arg);
4000d32c: a0 07 60 50 add %i5, 0x50, %l0
<== NOT EXECUTED
(void *)&(tty->termios.c_cc[VSTOP]), 1);
4000d330: a4 07 60 6d add %i5, 0x6d, %l2
<== NOT EXECUTED
while (len--) {
4000d334: 80 a6 40 1a cmp %i1, %i2
<== NOT EXECUTED
4000d338: 22 bf ff f2 be,a 4000d300 <rtems_termios_enqueue_raw_characters+0x9c>
<== NOT EXECUTED
4000d33c: c2 07 60 b4 ld [ %i5 + 0xb4 ], %g1
<== NOT EXECUTED
if (tty->flow_ctrl & FL_MDXON) {
4000d340: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
c = *buf++;
4000d344: b2 06 60 01 inc %i1
<== NOT EXECUTED
if (tty->flow_ctrl & FL_MDXON) {
4000d348: 80 88 62 00 btst 0x200, %g1
<== NOT EXECUTED
4000d34c: 02 80 00 0b be 4000d378 <rtems_termios_enqueue_raw_characters+0x114>
<== NOT EXECUTED
4000d350: d0 0e 7f ff ldub [ %i1 + -1 ], %o0
<== NOT EXECUTED
if (c == tty->termios.c_cc[VSTOP]) {
4000d354: c4 0f 60 6d ldub [ %i5 + 0x6d ], %g2
<== NOT EXECUTED
4000d358: 83 2a 20 18 sll %o0, 0x18, %g1
<== NOT EXECUTED
4000d35c: 83 38 60 18 sra %g1, 0x18, %g1
<== NOT EXECUTED
4000d360: 80 a0 40 02 cmp %g1, %g2
<== NOT EXECUTED
4000d364: 02 80 00 60 be 4000d4e4 <rtems_termios_enqueue_raw_characters+0x280>
<== NOT EXECUTED
4000d368: c6 0f 60 6c ldub [ %i5 + 0x6c ], %g3
<== NOT EXECUTED
else if (c == tty->termios.c_cc[VSTART]) {
4000d36c: 80 a0 40 03 cmp %g1, %g3
<== NOT EXECUTED
4000d370: 02 80 00 a6 be 4000d608 <rtems_termios_enqueue_raw_characters+0x3a4>
<== NOT EXECUTED
4000d374: 01 00 00 00 nop
<== NOT EXECUTED
if (flow_rcv) {
4000d378: 80 8c e0 ff btst 0xff, %l3
<== NOT EXECUTED
4000d37c: 32 80 00 61 bne,a 4000d500 <rtems_termios_enqueue_raw_characters+0x29c>
<== NOT EXECUTED
4000d380: a6 10 20 01 mov 1, %l3
<== NOT EXECUTED
if (c == '\r' && (tty->termios.c_iflag & IGNCR) != 0) {
4000d384: 82 0a 20 ff and %o0, 0xff, %g1
<== NOT EXECUTED
4000d388: 80 a0 60 0d cmp %g1, 0xd
<== NOT EXECUTED
4000d38c: 12 80 00 06 bne 4000d3a4 <rtems_termios_enqueue_raw_characters+0x140>
<== NOT EXECUTED
4000d390: 01 00 00 00 nop
<== NOT EXECUTED
4000d394: c2 07 60 50 ld [ %i5 + 0x50 ], %g1
<== NOT EXECUTED
4000d398: 80 88 60 80 btst 0x80, %g1
<== NOT EXECUTED
4000d39c: 12 bf ff e7 bne 4000d338 <rtems_termios_enqueue_raw_characters+0xd4>
<== NOT EXECUTED
4000d3a0: 80 a6 40 1a cmp %i1, %i2
<== NOT EXECUTED
c = iprocEarly (c, tty);
4000d3a4: 7f ff fb 4d call 4000c0d8 <iprocEarly>
<== NOT EXECUTED
4000d3a8: 92 10 00 1d mov %i5, %o1
<== NOT EXECUTED
( *context->lock_acquire )( context, lock_context );
4000d3ac: c2 07 20 14 ld [ %i4 + 0x14 ], %g1
<== NOT EXECUTED
4000d3b0: a8 10 00 08 mov %o0, %l4
<== NOT EXECUTED
4000d3b4: 92 07 bf fc add %fp, -4, %o1
<== NOT EXECUTED
4000d3b8: 9f c0 40 00 call %g1
<== NOT EXECUTED
4000d3bc: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
head = tty->rawInBuf.Head;
4000d3c0: ea 07 60 84 ld [ %i5 + 0x84 ], %l5
<== NOT EXECUTED
oldTail = tty->rawInBuf.Tail;
4000d3c4: f6 07 60 88 ld [ %i5 + 0x88 ], %i3
<== NOT EXECUTED
newTail = (oldTail + 1) % tty->rawInBuf.Size;
4000d3c8: c4 07 60 8c ld [ %i5 + 0x8c ], %g2
<== NOT EXECUTED
if ((tty->flow_ctrl & FL_IREQXOF) != 0 && (((newTail - head) %
4000d3cc: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
newTail = (oldTail + 1) % tty->rawInBuf.Size;
4000d3d0: b6 06 e0 01 inc %i3
<== NOT EXECUTED
if ((tty->flow_ctrl & FL_IREQXOF) != 0 && (((newTail - head) %
4000d3d4: 80 88 60 01 btst 1, %g1
<== NOT EXECUTED
newTail = (oldTail + 1) % tty->rawInBuf.Size;
4000d3d8: 81 80 20 00 wr %g0, %y
<== NOT EXECUTED
4000d3dc: 01 00 00 00 nop
<== NOT EXECUTED
4000d3e0: 01 00 00 00 nop
<== NOT EXECUTED
4000d3e4: 01 00 00 00 nop
<== NOT EXECUTED
4000d3e8: 82 76 c0 02 udiv %i3, %g2, %g1
<== NOT EXECUTED
4000d3ec: 82 58 40 02 smul %g1, %g2, %g1
<== NOT EXECUTED
if ((tty->flow_ctrl & FL_IREQXOF) != 0 && (((newTail - head) %
4000d3f0: 02 80 00 0f be 4000d42c <rtems_termios_enqueue_raw_characters+0x1c8>
<== NOT EXECUTED
4000d3f4: b6 26 c0 01 sub %i3, %g1, %i3
<== NOT EXECUTED
tty->rawInBuf.Size) > tty->highwater)) {
4000d3f8: c6 07 60 8c ld [ %i5 + 0x8c ], %g3
<== NOT EXECUTED
if ((tty->flow_ctrl & FL_IREQXOF) != 0 && (((newTail - head) %
4000d3fc: c8 07 61 50 ld [ %i5 + 0x150 ], %g4
<== NOT EXECUTED
4000d400: 82 26 c0 15 sub %i3, %l5, %g1
<== NOT EXECUTED
4000d404: 81 80 20 00 wr %g0, %y
<== NOT EXECUTED
4000d408: 01 00 00 00 nop
<== NOT EXECUTED
4000d40c: 01 00 00 00 nop
<== NOT EXECUTED
4000d410: 01 00 00 00 nop
<== NOT EXECUTED
4000d414: 84 70 40 03 udiv %g1, %g3, %g2
<== NOT EXECUTED
4000d418: 84 58 80 03 smul %g2, %g3, %g2
<== NOT EXECUTED
4000d41c: 82 20 40 02 sub %g1, %g2, %g1
<== NOT EXECUTED
4000d420: 80 a0 40 04 cmp %g1, %g4
<== NOT EXECUTED
4000d424: 18 80 00 57 bgu 4000d580 <rtems_termios_enqueue_raw_characters+0x31c>
<== NOT EXECUTED
4000d428: 01 00 00 00 nop
<== NOT EXECUTED
if (newTail != head) {
4000d42c: 80 a5 40 1b cmp %l5, %i3
<== NOT EXECUTED
4000d430: 22 80 00 20 be,a 4000d4b0 <rtems_termios_enqueue_raw_characters+0x24c>
<== NOT EXECUTED
4000d434: c2 07 61 6c ld [ %i5 + 0x16c ], %g1
<== NOT EXECUTED
tty->rawInBuf.theBuf[newTail] = c;
4000d438: c2 07 60 80 ld [ %i5 + 0x80 ], %g1
<== NOT EXECUTED
4000d43c: e8 28 40 1b stb %l4, [ %g1 + %i3 ]
<== NOT EXECUTED
tty->rawInBuf.Tail = newTail;
4000d440: f6 27 60 88 st %i3, [ %i5 + 0x88 ]
<== NOT EXECUTED
if (tty->tty_rcv.sw_pfn != NULL && !tty->tty_rcvwakeup) {
4000d444: c2 07 61 6c ld [ %i5 + 0x16c ], %g1
<== NOT EXECUTED
4000d448: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
4000d44c: 22 80 00 74 be,a 4000d61c <rtems_termios_enqueue_raw_characters+0x3b8>
<== NOT EXECUTED
4000d450: c2 07 20 18 ld [ %i4 + 0x18 ], %g1
<== NOT EXECUTED
4000d454: c2 0f 61 74 ldub [ %i5 + 0x174 ], %g1
<== NOT EXECUTED
4000d458: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
4000d45c: 12 80 00 1d bne 4000d4d0 <rtems_termios_enqueue_raw_characters+0x26c>
<== NOT EXECUTED
4000d460: c4 07 20 18 ld [ %i4 + 0x18 ], %g2
<== NOT EXECUTED
if ((tty->termios.c_lflag & ICANON) != 0) {
4000d464: c2 07 60 5c ld [ %i5 + 0x5c ], %g1
<== NOT EXECUTED
4000d468: 80 88 61 00 btst 0x100, %g1
<== NOT EXECUTED
4000d46c: 02 80 00 71 be 4000d630 <rtems_termios_enqueue_raw_characters+0x3cc>
<== NOT EXECUTED
4000d470: 80 a5 20 0a cmp %l4, 0xa
<== NOT EXECUTED
c == tty->termios.c_cc[VEOL] || c == tty->termios.c_cc[VEOL2];
4000d474: 22 80 00 5c be,a 4000d5e4 <rtems_termios_enqueue_raw_characters+0x380>
<== NOT EXECUTED
4000d478: e2 2f 61 74 stb %l1, [ %i5 + 0x174 ]
<== NOT EXECUTED
return c == '\n' || c == tty->termios.c_cc[VEOF] ||
4000d47c: c2 0f 60 60 ldub [ %i5 + 0x60 ], %g1
<== NOT EXECUTED
4000d480: 80 a5 00 01 cmp %l4, %g1
<== NOT EXECUTED
4000d484: 22 80 00 58 be,a 4000d5e4 <rtems_termios_enqueue_raw_characters+0x380>
<== NOT EXECUTED
4000d488: e2 2f 61 74 stb %l1, [ %i5 + 0x174 ]
<== NOT EXECUTED
4000d48c: c2 0f 60 61 ldub [ %i5 + 0x61 ], %g1
<== NOT EXECUTED
4000d490: 80 a5 00 01 cmp %l4, %g1
<== NOT EXECUTED
4000d494: 22 80 00 54 be,a 4000d5e4 <rtems_termios_enqueue_raw_characters+0x380>
<== NOT EXECUTED
4000d498: e2 2f 61 74 stb %l1, [ %i5 + 0x174 ]
<== NOT EXECUTED
c == tty->termios.c_cc[VEOL] || c == tty->termios.c_cc[VEOL2];
4000d49c: c2 0f 60 62 ldub [ %i5 + 0x62 ], %g1
<== NOT EXECUTED
4000d4a0: a8 18 40 14 xor %g1, %l4, %l4
<== NOT EXECUTED
4000d4a4: 80 a0 00 14 cmp %g0, %l4
<== NOT EXECUTED
4000d4a8: 10 80 00 6e b 4000d660 <rtems_termios_enqueue_raw_characters+0x3fc>
<== NOT EXECUTED
4000d4ac: 82 60 3f ff subx %g0, -1, %g1
<== NOT EXECUTED
++dropped;
4000d4b0: b0 06 20 01 inc %i0
<== NOT EXECUTED
if (tty->tty_rcv.sw_pfn != NULL && !tty->tty_rcvwakeup) {
4000d4b4: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
4000d4b8: 02 80 00 06 be 4000d4d0 <rtems_termios_enqueue_raw_characters+0x26c>
<== NOT EXECUTED
4000d4bc: c4 07 20 18 ld [ %i4 + 0x18 ], %g2
<== NOT EXECUTED
4000d4c0: c2 0f 61 74 ldub [ %i5 + 0x174 ], %g1
<== NOT EXECUTED
4000d4c4: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
4000d4c8: 22 80 00 47 be,a 4000d5e4 <rtems_termios_enqueue_raw_characters+0x380>
<== NOT EXECUTED
4000d4cc: e2 2f 61 74 stb %l1, [ %i5 + 0x174 ]
<== NOT EXECUTED
( *context->lock_release )( context, lock_context );
4000d4d0: 92 07 bf fc add %fp, -4, %o1
<== NOT EXECUTED
4000d4d4: 9f c0 80 00 call %g2
<== NOT EXECUTED
4000d4d8: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
while (len--) {
4000d4dc: 10 bf ff 97 b 4000d338 <rtems_termios_enqueue_raw_characters+0xd4>
<== NOT EXECUTED
4000d4e0: 80 a6 40 1a cmp %i1, %i2
<== NOT EXECUTED
if (c == tty->termios.c_cc[VSTART]) {
4000d4e4: 80 a0 40 03 cmp %g1, %g3
<== NOT EXECUTED
tty->flow_ctrl = tty->flow_ctrl ^ FL_ORCVXOF;
4000d4e8: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
if (c == tty->termios.c_cc[VSTART]) {
4000d4ec: 32 80 00 22 bne,a 4000d574 <rtems_termios_enqueue_raw_characters+0x310>
<== NOT EXECUTED
4000d4f0: 82 10 60 10 or %g1, 0x10, %g1
<== NOT EXECUTED
tty->flow_ctrl = tty->flow_ctrl ^ FL_ORCVXOF;
4000d4f4: 82 18 60 10 xor %g1, 0x10, %g1
<== NOT EXECUTED
4000d4f8: c2 27 61 48 st %g1, [ %i5 + 0x148 ]
<== NOT EXECUTED
4000d4fc: a6 10 20 01 mov 1, %l3
<== NOT EXECUTED
if ((tty->flow_ctrl & (FL_ORCVXOF | FL_OSTOP)) == FL_OSTOP) {
4000d500: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
4000d504: 82 08 60 30 and %g1, 0x30, %g1
<== NOT EXECUTED
4000d508: 80 a0 60 20 cmp %g1, 0x20
<== NOT EXECUTED
4000d50c: 12 bf ff 8a bne 4000d334 <rtems_termios_enqueue_raw_characters+0xd0>
<== NOT EXECUTED
4000d510: 92 07 bf fc add %fp, -4, %o1
<== NOT EXECUTED
( *context->lock_acquire )( context, lock_context );
4000d514: c2 07 20 14 ld [ %i4 + 0x14 ], %g1
<== NOT EXECUTED
4000d518: 9f c0 40 00 call %g1
<== NOT EXECUTED
4000d51c: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
tty->flow_ctrl &= ~FL_OSTOP;
4000d520: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
4000d524: 82 08 7f df and %g1, -33, %g1
<== NOT EXECUTED
4000d528: c2 27 61 48 st %g1, [ %i5 + 0x148 ]
<== NOT EXECUTED
if (tty->rawOutBufState != rob_idle) {
4000d52c: c2 07 60 e4 ld [ %i5 + 0xe4 ], %g1
<== NOT EXECUTED
4000d530: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
4000d534: 22 80 00 0a be,a 4000d55c <rtems_termios_enqueue_raw_characters+0x2f8>
<== NOT EXECUTED
4000d538: c2 07 20 18 ld [ %i4 + 0x18 ], %g1
<== NOT EXECUTED
ctx, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail], 1);
4000d53c: c4 07 60 c0 ld [ %i5 + 0xc0 ], %g2
<== NOT EXECUTED
4000d540: d2 07 60 b8 ld [ %i5 + 0xb8 ], %o1
<== NOT EXECUTED
(*tty->handler.write)(
4000d544: c2 07 61 30 ld [ %i5 + 0x130 ], %g1
<== NOT EXECUTED
4000d548: 94 10 20 01 mov 1, %o2
<== NOT EXECUTED
4000d54c: 92 02 40 02 add %o1, %g2, %o1
<== NOT EXECUTED
4000d550: 9f c0 40 00 call %g1
<== NOT EXECUTED
4000d554: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
( *context->lock_release )( context, lock_context );
4000d558: c2 07 20 18 ld [ %i4 + 0x18 ], %g1
<== NOT EXECUTED
4000d55c: 92 07 bf fc add %fp, -4, %o1
<== NOT EXECUTED
4000d560: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
4000d564: 9f c0 40 00 call %g1
<== NOT EXECUTED
4000d568: a6 10 20 01 mov 1, %l3
<== NOT EXECUTED
while (len--) {
4000d56c: 10 bf ff 73 b 4000d338 <rtems_termios_enqueue_raw_characters+0xd4>
<== NOT EXECUTED
4000d570: 80 a6 40 1a cmp %i1, %i2
<== NOT EXECUTED
tty->flow_ctrl |= FL_ORCVXOF;
4000d574: c2 27 61 48 st %g1, [ %i5 + 0x148 ]
<== NOT EXECUTED
4000d578: 10 bf ff e2 b 4000d500 <rtems_termios_enqueue_raw_characters+0x29c>
<== NOT EXECUTED
4000d57c: a6 10 20 01 mov 1, %l3
<== NOT EXECUTED
tty->flow_ctrl |= FL_IREQXOF;
4000d580: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
4000d584: 82 10 60 01 or %g1, 1, %g1
<== NOT EXECUTED
4000d588: c2 27 61 48 st %g1, [ %i5 + 0x148 ]
<== NOT EXECUTED
if ((tty->flow_ctrl & (FL_MDXOF | FL_ISNTXOF))
4000d58c: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
4000d590: 82 08 64 02 and %g1, 0x402, %g1
<== NOT EXECUTED
4000d594: 80 a0 64 00 cmp %g1, 0x400
<== NOT EXECUTED
if ((tty->flow_ctrl & FL_OSTOP) ||
4000d598: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
if ((tty->flow_ctrl & (FL_MDXOF | FL_ISNTXOF))
4000d59c: 02 80 00 39 be 4000d680 <rtems_termios_enqueue_raw_characters+0x41c>
<== NOT EXECUTED
4000d5a0: 80 88 60 20 btst 0x20, %g1
<== NOT EXECUTED
} else if ((tty->flow_ctrl & (FL_MDRTS | FL_IRTSOFF)) == (FL_MDRTS) ) {
4000d5a4: 82 08 61 04 and %g1, 0x104, %g1
<== NOT EXECUTED
4000d5a8: 80 a0 61 00 cmp %g1, 0x100
<== NOT EXECUTED
4000d5ac: 12 bf ff a1 bne 4000d430 <rtems_termios_enqueue_raw_characters+0x1cc>
<== NOT EXECUTED
4000d5b0: 80 a5 40 1b cmp %l5, %i3
<== NOT EXECUTED
tty->flow_ctrl |= FL_IRTSOFF;
4000d5b4: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
4000d5b8: 82 10 60 04 or %g1, 4, %g1
<== NOT EXECUTED
4000d5bc: c2 27 61 48 st %g1, [ %i5 + 0x148 ]
<== NOT EXECUTED
if (tty->flow.stop_remote_tx != NULL) {
4000d5c0: c2 07 61 40 ld [ %i5 + 0x140 ], %g1
<== NOT EXECUTED
4000d5c4: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
4000d5c8: 22 bf ff 9a be,a 4000d430 <rtems_termios_enqueue_raw_characters+0x1cc>
<== NOT EXECUTED
4000d5cc: 80 a5 40 1b cmp %l5, %i3
<== NOT EXECUTED
tty->flow.stop_remote_tx(ctx);
4000d5d0: 9f c0 40 00 call %g1
<== NOT EXECUTED
4000d5d4: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
if (newTail != head) {
4000d5d8: 10 bf ff 96 b 4000d430 <rtems_termios_enqueue_raw_characters+0x1cc>
<== NOT EXECUTED
4000d5dc: 80 a5 40 1b cmp %l5, %i3
<== NOT EXECUTED
tty->tty_rcvwakeup = true;
4000d5e0: e2 2f 61 74 stb %l1, [ %i5 + 0x174 ]
<== NOT EXECUTED
4000d5e4: 92 07 bf fc add %fp, -4, %o1
<== NOT EXECUTED
4000d5e8: 9f c0 80 00 call %g2
<== NOT EXECUTED
4000d5ec: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
(*tty->tty_rcv.sw_pfn)(&tty->termios, tty->tty_rcv.sw_arg);
4000d5f0: c2 07 61 6c ld [ %i5 + 0x16c ], %g1
<== NOT EXECUTED
4000d5f4: d2 07 61 70 ld [ %i5 + 0x170 ], %o1
<== NOT EXECUTED
4000d5f8: 9f c0 40 00 call %g1
<== NOT EXECUTED
4000d5fc: 90 10 00 10 mov %l0, %o0
<== NOT EXECUTED
while (len--) {
4000d600: 10 bf ff 4e b 4000d338 <rtems_termios_enqueue_raw_characters+0xd4>
<== NOT EXECUTED
4000d604: 80 a6 40 1a cmp %i1, %i2
<== NOT EXECUTED
tty->flow_ctrl &= ~FL_ORCVXOF;
4000d608: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
4000d60c: 82 08 7f ef and %g1, -17, %g1
<== NOT EXECUTED
4000d610: c2 27 61 48 st %g1, [ %i5 + 0x148 ]
<== NOT EXECUTED
4000d614: 10 bf ff bb b 4000d500 <rtems_termios_enqueue_raw_characters+0x29c>
<== NOT EXECUTED
4000d618: a6 10 20 01 mov 1, %l3
<== NOT EXECUTED
4000d61c: 92 07 bf fc add %fp, -4, %o1
<== NOT EXECUTED
4000d620: 9f c0 40 00 call %g1
<== NOT EXECUTED
4000d624: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
while (len--) {
4000d628: 10 bf ff 44 b 4000d338 <rtems_termios_enqueue_raw_characters+0xd4>
<== NOT EXECUTED
4000d62c: 80 a6 40 1a cmp %i1, %i2
<== NOT EXECUTED
unsigned int rawContentSize = (newTail - head) % tty->rawInBuf.Size;
4000d630: c6 07 60 8c ld [ %i5 + 0x8c ], %g3
<== NOT EXECUTED
4000d634: b6 26 c0 15 sub %i3, %l5, %i3
<== NOT EXECUTED
return rawContentSize >= tty->termios.c_cc[VMIN];
4000d638: c8 0f 60 70 ldub [ %i5 + 0x70 ], %g4
<== NOT EXECUTED
unsigned int rawContentSize = (newTail - head) % tty->rawInBuf.Size;
4000d63c: 81 80 20 00 wr %g0, %y
<== NOT EXECUTED
4000d640: 01 00 00 00 nop
<== NOT EXECUTED
4000d644: 01 00 00 00 nop
<== NOT EXECUTED
4000d648: 01 00 00 00 nop
<== NOT EXECUTED
4000d64c: 82 76 c0 03 udiv %i3, %g3, %g1
<== NOT EXECUTED
4000d650: 82 58 40 03 smul %g1, %g3, %g1
<== NOT EXECUTED
4000d654: b6 26 c0 01 sub %i3, %g1, %i3
<== NOT EXECUTED
return rawContentSize >= tty->termios.c_cc[VMIN];
4000d658: 80 a6 c0 04 cmp %i3, %g4
<== NOT EXECUTED
4000d65c: 82 60 3f ff subx %g0, -1, %g1
<== NOT EXECUTED
if (mustCallReceiveCallback (tty, c, newTail, head)) {
4000d660: 80 88 60 ff btst 0xff, %g1
<== NOT EXECUTED
4000d664: 12 bf ff df bne 4000d5e0 <rtems_termios_enqueue_raw_characters+0x37c>
<== NOT EXECUTED
4000d668: 92 07 bf fc add %fp, -4, %o1
<== NOT EXECUTED
4000d66c: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
4000d670: 9f c0 80 00 call %g2
<== NOT EXECUTED
4000d674: a6 10 00 01 mov %g1, %l3
<== NOT EXECUTED
while (len--) {
4000d678: 10 bf ff 30 b 4000d338 <rtems_termios_enqueue_raw_characters+0xd4>
<== NOT EXECUTED
4000d67c: 80 a6 40 1a cmp %i1, %i2
<== NOT EXECUTED
if ((tty->flow_ctrl & FL_OSTOP) ||
4000d680: 22 80 00 0c be,a 4000d6b0 <rtems_termios_enqueue_raw_characters+0x44c>
<== NOT EXECUTED
4000d684: c2 07 60 e4 ld [ %i5 + 0xe4 ], %g1
<== NOT EXECUTED
tty->flow_ctrl |= FL_ISNTXOF;
4000d688: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
4000d68c: 82 10 60 02 or %g1, 2, %g1
<== NOT EXECUTED
4000d690: c2 27 61 48 st %g1, [ %i5 + 0x148 ]
<== NOT EXECUTED
(*tty->handler.write)(ctx,
4000d694: 94 10 20 01 mov 1, %o2
<== NOT EXECUTED
4000d698: c2 07 61 30 ld [ %i5 + 0x130 ], %g1
<== NOT EXECUTED
4000d69c: 92 10 00 12 mov %l2, %o1
<== NOT EXECUTED
4000d6a0: 9f c0 40 00 call %g1
<== NOT EXECUTED
4000d6a4: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
if (newTail != head) {
4000d6a8: 10 bf ff 62 b 4000d430 <rtems_termios_enqueue_raw_characters+0x1cc>
<== NOT EXECUTED
4000d6ac: 80 a5 40 1b cmp %l5, %i3
<== NOT EXECUTED
if ((tty->flow_ctrl & FL_OSTOP) ||
4000d6b0: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
4000d6b4: 32 bf ff 5f bne,a 4000d430 <rtems_termios_enqueue_raw_characters+0x1cc>
<== NOT EXECUTED
4000d6b8: 80 a5 40 1b cmp %l5, %i3
<== NOT EXECUTED
4000d6bc: 30 bf ff f3 b,a 4000d688 <rtems_termios_enqueue_raw_characters+0x424>
<== NOT EXECUTED
4000cc40 <rtems_termios_ioctl>:
{
4000cc40: 9d e3 bf 98 save %sp, -104, %sp
struct rtems_termios_tty *tty = args->iop->data1;
4000cc44: c2 06 00 00 ld [ %i0 ], %g1
4000cc48: fa 00 60 28 ld [ %g1 + 0x28 ], %i5
args->ioctl_return = 0;
4000cc4c: c0 26 20 0c clr [ %i0 + 0xc ]
rtems_mutex_lock (&tty->osem);
4000cc50: b4 07 60 28 add %i5, 0x28, %i2
struct ttywakeup *wakeup = (struct ttywakeup *)args->buffer;
4000cc54: f2 06 20 08 ld [ %i0 + 8 ], %i1
_Mutex_Acquire( mutex );
4000cc58: 40 00 11 d0 call 40011398 <_Mutex_Acquire>
4000cc5c: 90 10 00 1a mov %i2, %o0
switch (args->command) {
4000cc60: f6 06 20 04 ld [ %i0 + 4 ], %i3
4000cc64: 03 20 01 1d sethi %hi(0x80047400), %g1
4000cc68: 84 10 60 10 or %g1, 0x10, %g2 ! 80047410 <RAM_END+0x3fc47410>
4000cc6c: 80 a6 c0 02 cmp %i3, %g2
4000cc70: 02 80 00 f0 be 4000d030 <rtems_termios_ioctl+0x3f0>
<== NEVER TAKEN
4000cc74: b8 10 00 18 mov %i0, %i4
4000cc78: 28 80 00 17 bleu,a 4000ccd4 <rtems_termios_ioctl+0x94>
4000cc7c: 03 10 01 19 sethi %hi(0x40046400), %g1
4000cc80: 05 20 02 1d sethi %hi(0x80087400), %g2
4000cc84: 86 10 a0 0c or %g2, 0xc, %g3 ! 8008740c <RAM_END+0x3fc8740c>
4000cc88: 80 a6 c0 03 cmp %i3, %g3
4000cc8c: 22 80 00 d4 be,a 4000cfdc <rtems_termios_ioctl+0x39c>
<== NEVER TAKEN
4000cc90: c2 06 40 00 ld [ %i1 ], %g1
<== NOT EXECUTED
4000cc94: 18 80 00 53 bgu 4000cde0 <rtems_termios_ioctl+0x1a0>
<== ALWAYS TAKEN
4000cc98: 82 10 60 1b or %g1, 0x1b, %g1
4000cc9c: 80 a6 c0 01 cmp %i3, %g1
<== NOT EXECUTED
4000cca0: 02 80 00 2b be 4000cd4c <rtems_termios_ioctl+0x10c>
<== NOT EXECUTED
4000cca4: 84 10 a0 0b or %g2, 0xb, %g2
<== NOT EXECUTED
4000cca8: 80 a6 c0 02 cmp %i3, %g2
<== NOT EXECUTED
4000ccac: 12 80 00 d4 bne 4000cffc <rtems_termios_ioctl+0x3bc>
<== NOT EXECUTED
4000ccb0: b0 10 20 00 clr %i0
<== NOT EXECUTED
tty->tty_snd = *wakeup;
4000ccb4: c2 06 40 00 ld [ %i1 ], %g1
<== NOT EXECUTED
4000ccb8: c2 27 61 64 st %g1, [ %i5 + 0x164 ]
<== NOT EXECUTED
4000ccbc: c2 06 60 04 ld [ %i1 + 4 ], %g1
<== NOT EXECUTED
4000ccc0: c2 27 61 68 st %g1, [ %i5 + 0x168 ]
<== NOT EXECUTED
_Mutex_Release( mutex );
4000ccc4: 40 00 11 d1 call 40011408 <_Mutex_Release>
<== NOT EXECUTED
4000ccc8: 90 10 00 1a mov %i2, %o0
<== NOT EXECUTED
}
4000cccc: 81 c7 e0 08 ret
<== NOT EXECUTED
4000ccd0: 81 e8 00 00 restore
<== NOT EXECUTED
switch (args->command) {
4000ccd4: 82 10 62 7f or %g1, 0x27f, %g1
4000ccd8: 80 a6 c0 01 cmp %i3, %g1
4000ccdc: 02 80 00 ae be 4000cf94 <rtems_termios_ioctl+0x354>
<== NEVER TAKEN
4000cce0: 01 00 00 00 nop
4000cce4: 08 80 00 33 bleu 4000cdb0 <rtems_termios_ioctl+0x170>
<== NEVER TAKEN
4000cce8: 03 10 01 1d sethi %hi(0x40047400), %g1
4000ccec: 82 10 60 1a or %g1, 0x1a, %g1 ! 4004741a <__end+0x1191a>
4000ccf0: 80 a6 c0 01 cmp %i3, %g1
4000ccf4: 02 80 00 0e be 4000cd2c <rtems_termios_ioctl+0xec>
<== NEVER TAKEN
4000ccf8: 03 10 0b 1d sethi %hi(0x402c7400), %g1
4000ccfc: 82 10 60 13 or %g1, 0x13, %g1 ! 402c7413 <__end+0x291913>
4000cd00: 80 a6 c0 01 cmp %i3, %g1
4000cd04: 12 80 00 be bne 4000cffc <rtems_termios_ioctl+0x3bc>
<== NEVER TAKEN
4000cd08: 94 10 20 2c mov 0x2c, %o2
*(struct termios *)args->buffer = tty->termios;
4000cd0c: d0 06 20 08 ld [ %i0 + 8 ], %o0
4000cd10: 40 00 44 d0 call 4001e050 <memcpy>
4000cd14: 92 07 60 50 add %i5, 0x50, %o1
sc = RTEMS_SUCCESSFUL;
4000cd18: b0 10 20 00 clr %i0
4000cd1c: 40 00 11 bb call 40011408 <_Mutex_Release>
4000cd20: 90 10 00 1a mov %i2, %o0
}
4000cd24: 81 c7 e0 08 ret
4000cd28: 81 e8 00 00 restore
*(int*)(args->buffer)=tty->t_line;
4000cd2c: c2 06 20 08 ld [ %i0 + 8 ], %g1
<== NOT EXECUTED
4000cd30: c4 07 61 5c ld [ %i5 + 0x15c ], %g2
<== NOT EXECUTED
4000cd34: c4 20 40 00 st %g2, [ %g1 ]
<== NOT EXECUTED
sc = RTEMS_SUCCESSFUL;
4000cd38: b0 10 20 00 clr %i0
<== NOT EXECUTED
4000cd3c: 40 00 11 b3 call 40011408 <_Mutex_Release>
<== NOT EXECUTED
4000cd40: 90 10 00 1a mov %i2, %o0
<== NOT EXECUTED
}
4000cd44: 81 c7 e0 08 ret
<== NOT EXECUTED
4000cd48: 81 e8 00 00 restore
<== NOT EXECUTED
if (rtems_termios_linesw[tty->t_line].l_close != NULL) {
4000cd4c: c2 07 61 5c ld [ %i5 + 0x15c ], %g1
<== NOT EXECUTED
4000cd50: 83 28 60 05 sll %g1, 5, %g1
<== NOT EXECUTED
4000cd54: 37 10 00 d0 sethi %hi(0x40034000), %i3
<== NOT EXECUTED
4000cd58: b6 16 e1 d0 or %i3, 0x1d0, %i3 ! 400341d0 <rtems_termios_linesw>
<== NOT EXECUTED
4000cd5c: 82 06 c0 01 add %i3, %g1, %g1
<== NOT EXECUTED
4000cd60: c2 00 60 04 ld [ %g1 + 4 ], %g1
<== NOT EXECUTED
4000cd64: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
4000cd68: 02 80 00 05 be 4000cd7c <rtems_termios_ioctl+0x13c>
<== NOT EXECUTED
4000cd6c: b0 10 20 00 clr %i0
<== NOT EXECUTED
sc = rtems_termios_linesw[tty->t_line].l_close(tty);
4000cd70: 9f c0 40 00 call %g1
<== NOT EXECUTED
4000cd74: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
4000cd78: b0 10 00 08 mov %o0, %i0
<== NOT EXECUTED
tty->t_line=*(int*)(args->buffer);
4000cd7c: c2 07 20 08 ld [ %i4 + 8 ], %g1
<== NOT EXECUTED
4000cd80: c2 00 40 00 ld [ %g1 ], %g1
<== NOT EXECUTED
4000cd84: c2 27 61 5c st %g1, [ %i5 + 0x15c ]
<== NOT EXECUTED
if (rtems_termios_linesw[tty->t_line].l_open != NULL) {
4000cd88: 83 28 60 05 sll %g1, 5, %g1
<== NOT EXECUTED
tty->t_sc = NULL; /* ensure that no more valid data */
4000cd8c: c0 27 61 60 clr [ %i5 + 0x160 ]
<== NOT EXECUTED
if (rtems_termios_linesw[tty->t_line].l_open != NULL) {
4000cd90: c2 06 c0 01 ld [ %i3 + %g1 ], %g1
<== NOT EXECUTED
4000cd94: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
4000cd98: 02 bf ff cb be 4000ccc4 <rtems_termios_ioctl+0x84>
<== NOT EXECUTED
4000cd9c: 01 00 00 00 nop
<== NOT EXECUTED
sc = rtems_termios_linesw[tty->t_line].l_open(tty);
4000cda0: 9f c0 40 00 call %g1
<== NOT EXECUTED
4000cda4: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
4000cda8: 10 bf ff c7 b 4000ccc4 <rtems_termios_ioctl+0x84>
<== NOT EXECUTED
4000cdac: b0 10 00 08 mov %o0, %i0
<== NOT EXECUTED
switch (args->command) {
4000cdb0: 03 08 00 1d sethi %hi(0x20007400), %g1
<== NOT EXECUTED
4000cdb4: 82 10 60 5e or %g1, 0x5e, %g1 ! 2000745e <RAM_SIZE+0x1fc0745e>
<== NOT EXECUTED
4000cdb8: 80 a6 c0 01 cmp %i3, %g1
<== NOT EXECUTED
4000cdbc: 32 80 00 91 bne,a 4000d000 <rtems_termios_ioctl+0x3c0>
<== NOT EXECUTED
4000cdc0: c2 07 61 5c ld [ %i5 + 0x15c ], %g1
<== NOT EXECUTED
drainOutput (tty);
4000cdc4: 7f ff f8 b0 call 4000b084 <drainOutput>
<== NOT EXECUTED
4000cdc8: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
sc = RTEMS_SUCCESSFUL;
4000cdcc: b0 10 20 00 clr %i0
<== NOT EXECUTED
4000cdd0: 40 00 11 8e call 40011408 <_Mutex_Release>
<== NOT EXECUTED
4000cdd4: 90 10 00 1a mov %i2, %o0
<== NOT EXECUTED
}
4000cdd8: 81 c7 e0 08 ret
<== NOT EXECUTED
4000cddc: 81 e8 00 00 restore
<== NOT EXECUTED
switch (args->command) {
4000cde0: 33 1f f4 e2 sethi %hi(0x7fd38800), %i1
4000cde4: 82 16 63 ec or %i1, 0x3ec, %g1 ! 7fd38bec <RAM_END+0x3f938bec>
4000cde8: 82 06 c0 01 add %i3, %g1, %g1
4000cdec: 80 a0 60 02 cmp %g1, 2
4000cdf0: 18 80 00 83 bgu 4000cffc <rtems_termios_ioctl+0x3bc>
<== NEVER TAKEN
4000cdf4: 94 10 20 2c mov 0x2c, %o2
tty->termios = *(struct termios *)args->buffer;
4000cdf8: d2 06 20 08 ld [ %i0 + 8 ], %o1
4000cdfc: b0 07 60 50 add %i5, 0x50, %i0
4000ce00: 40 00 44 94 call 4001e050 <memcpy>
4000ce04: 90 10 00 18 mov %i0, %o0
if (args->command == TIOCSETAW || args->command == TIOCSETAF) {
4000ce08: b2 16 63 eb or %i1, 0x3eb, %i1
4000ce0c: b6 06 c0 19 add %i3, %i1, %i3
4000ce10: 80 a6 e0 01 cmp %i3, 1
4000ce14: 08 80 00 df bleu 4000d190 <rtems_termios_ioctl+0x550>
<== NEVER TAKEN
4000ce18: 01 00 00 00 nop
if (( tty->flow_ctrl & FL_MDXON) &&
4000ce1c: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
4000ce20: 80 88 62 00 btst 0x200, %g1
4000ce24: 02 80 00 23 be 4000ceb0 <rtems_termios_ioctl+0x270>
<== ALWAYS TAKEN
4000ce28: f8 07 61 7c ld [ %i5 + 0x17c ], %i4
!(tty->termios.c_iflag & IXON)) {
4000ce2c: c2 07 60 50 ld [ %i5 + 0x50 ], %g1
<== NOT EXECUTED
if (( tty->flow_ctrl & FL_MDXON) &&
4000ce30: 80 88 62 00 btst 0x200, %g1
<== NOT EXECUTED
4000ce34: 12 80 00 1f bne 4000ceb0 <rtems_termios_ioctl+0x270>
<== NOT EXECUTED
4000ce38: 01 00 00 00 nop
<== NOT EXECUTED
tty->flow_ctrl &= ~(FL_MDXON | FL_ORCVXOF);
4000ce3c: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
4000ce40: 82 08 7d ef and %g1, -529, %g1
<== NOT EXECUTED
4000ce44: c2 27 61 48 st %g1, [ %i5 + 0x148 ]
<== NOT EXECUTED
if (tty->flow_ctrl & FL_OSTOP) {
4000ce48: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
4000ce4c: 80 88 60 20 btst 0x20, %g1
<== NOT EXECUTED
4000ce50: 02 80 00 18 be 4000ceb0 <rtems_termios_ioctl+0x270>
<== NOT EXECUTED
4000ce54: 01 00 00 00 nop
<== NOT EXECUTED
( *context->lock_acquire )( context, lock_context );
4000ce58: c2 07 20 14 ld [ %i4 + 0x14 ], %g1
<== NOT EXECUTED
4000ce5c: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
4000ce60: 9f c0 40 00 call %g1
<== NOT EXECUTED
4000ce64: 92 07 bf fc add %fp, -4, %o1
<== NOT EXECUTED
tty->flow_ctrl &= ~FL_OSTOP;
4000ce68: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
4000ce6c: 82 08 7f df and %g1, -33, %g1
<== NOT EXECUTED
4000ce70: c2 27 61 48 st %g1, [ %i5 + 0x148 ]
<== NOT EXECUTED
if (tty->rawOutBufState != rob_idle) {
4000ce74: c2 07 60 e4 ld [ %i5 + 0xe4 ], %g1
<== NOT EXECUTED
4000ce78: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
4000ce7c: 22 80 00 0a be,a 4000cea4 <rtems_termios_ioctl+0x264>
<== NOT EXECUTED
4000ce80: c2 07 20 18 ld [ %i4 + 0x18 ], %g1
<== NOT EXECUTED
ctx, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail],1);
4000ce84: c4 07 60 c0 ld [ %i5 + 0xc0 ], %g2
<== NOT EXECUTED
4000ce88: d2 07 60 b8 ld [ %i5 + 0xb8 ], %o1
<== NOT EXECUTED
(*tty->handler.write)(
4000ce8c: c2 07 61 30 ld [ %i5 + 0x130 ], %g1
<== NOT EXECUTED
4000ce90: 94 10 20 01 mov 1, %o2
<== NOT EXECUTED
4000ce94: 92 02 40 02 add %o1, %g2, %o1
<== NOT EXECUTED
4000ce98: 9f c0 40 00 call %g1
<== NOT EXECUTED
4000ce9c: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
( *context->lock_release )( context, lock_context );
4000cea0: c2 07 20 18 ld [ %i4 + 0x18 ], %g1
<== NOT EXECUTED
4000cea4: 92 07 bf fc add %fp, -4, %o1
<== NOT EXECUTED
4000cea8: 9f c0 40 00 call %g1
<== NOT EXECUTED
4000ceac: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
if (( tty->flow_ctrl & FL_MDXOF) && !(tty->termios.c_iflag & IXOFF)) {
4000ceb0: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
4000ceb4: 80 88 64 00 btst 0x400, %g1
4000ceb8: 02 80 00 06 be 4000ced0 <rtems_termios_ioctl+0x290>
<== ALWAYS TAKEN
4000cebc: 01 00 00 00 nop
4000cec0: c2 07 60 50 ld [ %i5 + 0x50 ], %g1
<== NOT EXECUTED
4000cec4: 80 88 64 00 btst 0x400, %g1
<== NOT EXECUTED
4000cec8: 02 80 00 ab be 4000d174 <rtems_termios_ioctl+0x534>
<== NOT EXECUTED
4000cecc: 01 00 00 00 nop
<== NOT EXECUTED
if (( tty->flow_ctrl & FL_MDRTS) && !(tty->termios.c_cflag & CRTSCTS)) {
4000ced0: c4 07 61 48 ld [ %i5 + 0x148 ], %g2
4000ced4: c2 07 60 58 ld [ %i5 + 0x58 ], %g1
4000ced8: 37 00 00 c0 sethi %hi(0x30000), %i3
4000cedc: 80 88 a1 00 btst 0x100, %g2
4000cee0: 02 80 00 9c be 4000d150 <rtems_termios_ioctl+0x510>
<== ALWAYS TAKEN
4000cee4: 82 08 40 1b and %g1, %i3, %g1
4000cee8: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
4000ceec: 02 80 00 87 be 4000d108 <rtems_termios_ioctl+0x4c8>
<== NOT EXECUTED
4000cef0: 01 00 00 00 nop
<== NOT EXECUTED
tty->flow_ctrl |= FL_MDRTS;
4000cef4: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
4000cef8: 82 10 61 00 or %g1, 0x100, %g1
<== NOT EXECUTED
4000cefc: c2 27 61 48 st %g1, [ %i5 + 0x148 ]
<== NOT EXECUTED
if (tty->termios.c_iflag & IXOFF) {
4000cf00: c2 07 60 50 ld [ %i5 + 0x50 ], %g1
<== NOT EXECUTED
4000cf04: 80 88 64 00 btst 0x400, %g1
4000cf08: 02 80 00 06 be 4000cf20 <rtems_termios_ioctl+0x2e0>
<== ALWAYS TAKEN
4000cf0c: 80 88 62 00 btst 0x200, %g1
tty->flow_ctrl |= FL_MDXOF;
4000cf10: c4 07 61 48 ld [ %i5 + 0x148 ], %g2
<== NOT EXECUTED
4000cf14: 84 10 a4 00 or %g2, 0x400, %g2
<== NOT EXECUTED
4000cf18: c4 27 61 48 st %g2, [ %i5 + 0x148 ]
<== NOT EXECUTED
if (tty->termios.c_iflag & IXON) {
4000cf1c: 80 88 62 00 btst 0x200, %g1
<== NOT EXECUTED
4000cf20: 22 80 00 06 be,a 4000cf38 <rtems_termios_ioctl+0x2f8>
4000cf24: c2 07 60 5c ld [ %i5 + 0x5c ], %g1
tty->flow_ctrl |= FL_MDXON;
4000cf28: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
4000cf2c: 82 10 62 00 or %g1, 0x200, %g1
4000cf30: c2 27 61 48 st %g1, [ %i5 + 0x148 ]
if (tty->termios.c_lflag & ICANON) {
4000cf34: c2 07 60 5c ld [ %i5 + 0x5c ], %g1
4000cf38: 80 88 61 00 btst 0x100, %g1
4000cf3c: 12 80 00 64 bne 4000d0cc <rtems_termios_ioctl+0x48c>
4000cf40: 82 10 20 01 mov 1, %g1
tty->vtimeTicks = tty->termios.c_cc[VTIME] *
4000cf44: c6 0f 60 71 ldub [ %i5 + 0x71 ], %g3
4000cf48: 03 10 00 b4 sethi %hi(0x4002d000), %g1
4000cf4c: c2 00 63 54 ld [ %g1 + 0x354 ], %g1 ! 4002d354 <_Watchdog_Ticks_per_second>
4000cf50: 82 58 c0 01 smul %g3, %g1, %g1
rtems_clock_get_ticks_per_second() / 10;
4000cf54: 05 33 33 33 sethi %hi(0xcccccc00), %g2
4000cf58: 84 10 a0 cd or %g2, 0xcd, %g2 ! cccccccd <RAM_END+0x8c8ccccd>
4000cf5c: 80 50 40 02 umul %g1, %g2, %g0
4000cf60: 83 40 00 00 rd %y, %g1
4000cf64: 83 30 60 03 srl %g1, 3, %g1
tty->vtimeTicks = tty->termios.c_cc[VTIME] *
4000cf68: c2 27 60 7c st %g1, [ %i5 + 0x7c ]
if (tty->termios.c_cc[VTIME]) {
4000cf6c: 80 a0 e0 00 cmp %g3, 0
4000cf70: 02 80 00 7c be 4000d160 <rtems_termios_ioctl+0x520>
<== NEVER TAKEN
4000cf74: c4 0f 60 70 ldub [ %i5 + 0x70 ], %g2
if (tty->termios.c_cc[VMIN])
4000cf78: 80 88 a0 ff btst 0xff, %g2
tty->rawInBufSemaphoreTimeout = tty->vtimeTicks;
4000cf7c: c2 27 60 ac st %g1, [ %i5 + 0xac ]
tty->rawInBufSemaphoreWait = true;
4000cf80: 84 10 20 01 mov 1, %g2
if (tty->termios.c_cc[VMIN])
4000cf84: 12 80 00 54 bne 4000d0d4 <rtems_termios_ioctl+0x494>
<== NEVER TAKEN
4000cf88: c4 2f 60 a8 stb %g2, [ %i5 + 0xa8 ]
tty->rawInBufSemaphoreFirstTimeout = tty->vtimeTicks;
4000cf8c: 10 80 00 53 b 4000d0d8 <rtems_termios_ioctl+0x498>
4000cf90: c2 27 60 b0 st %g1, [ %i5 + 0xb0 ]
int rawnc = tty->rawInBuf.Tail - tty->rawInBuf.Head;
4000cf94: c2 07 60 88 ld [ %i5 + 0x88 ], %g1
<== NOT EXECUTED
4000cf98: c4 07 60 84 ld [ %i5 + 0x84 ], %g2
<== NOT EXECUTED
if ( rawnc < 0 )
4000cf9c: 84 a0 40 02 subcc %g1, %g2, %g2
<== NOT EXECUTED
4000cfa0: 3c 80 00 05 bpos,a 4000cfb4 <rtems_termios_ioctl+0x374>
<== NOT EXECUTED
4000cfa4: c2 07 60 40 ld [ %i5 + 0x40 ], %g1
<== NOT EXECUTED
rawnc += tty->rawInBuf.Size;
4000cfa8: c2 07 60 8c ld [ %i5 + 0x8c ], %g1
<== NOT EXECUTED
4000cfac: 84 00 80 01 add %g2, %g1, %g2
<== NOT EXECUTED
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
4000cfb0: c2 07 60 40 ld [ %i5 + 0x40 ], %g1
<== NOT EXECUTED
4000cfb4: c8 07 60 44 ld [ %i5 + 0x44 ], %g4
<== NOT EXECUTED
4000cfb8: c6 07 20 08 ld [ %i4 + 8 ], %g3
<== NOT EXECUTED
4000cfbc: 82 20 40 04 sub %g1, %g4, %g1
<== NOT EXECUTED
4000cfc0: 82 00 40 02 add %g1, %g2, %g1
<== NOT EXECUTED
4000cfc4: c2 20 c0 00 st %g1, [ %g3 ]
<== NOT EXECUTED
sc = RTEMS_SUCCESSFUL;
4000cfc8: b0 10 20 00 clr %i0
<== NOT EXECUTED
4000cfcc: 40 00 11 0f call 40011408 <_Mutex_Release>
<== NOT EXECUTED
4000cfd0: 90 10 00 1a mov %i2, %o0
<== NOT EXECUTED
}
4000cfd4: 81 c7 e0 08 ret
<== NOT EXECUTED
4000cfd8: 81 e8 00 00 restore
<== NOT EXECUTED
tty->tty_rcv = *wakeup;
4000cfdc: c2 27 61 6c st %g1, [ %i5 + 0x16c ]
<== NOT EXECUTED
sc = RTEMS_SUCCESSFUL;
4000cfe0: b0 10 20 00 clr %i0
<== NOT EXECUTED
tty->tty_rcv = *wakeup;
4000cfe4: c2 06 60 04 ld [ %i1 + 4 ], %g1
<== NOT EXECUTED
4000cfe8: c2 27 61 70 st %g1, [ %i5 + 0x170 ]
<== NOT EXECUTED
4000cfec: 40 00 11 07 call 40011408 <_Mutex_Release>
<== NOT EXECUTED
4000cff0: 90 10 00 1a mov %i2, %o0
<== NOT EXECUTED
}
4000cff4: 81 c7 e0 08 ret
<== NOT EXECUTED
4000cff8: 81 e8 00 00 restore
<== NOT EXECUTED
if (rtems_termios_linesw[tty->t_line].l_ioctl != NULL) {
4000cffc: c2 07 61 5c ld [ %i5 + 0x15c ], %g1
<== NOT EXECUTED
4000d000: 85 28 60 05 sll %g1, 5, %g2
<== NOT EXECUTED
4000d004: 03 10 00 d0 sethi %hi(0x40034000), %g1
<== NOT EXECUTED
4000d008: 82 10 61 d0 or %g1, 0x1d0, %g1 ! 400341d0 <rtems_termios_linesw>
<== NOT EXECUTED
4000d00c: 82 00 40 02 add %g1, %g2, %g1
<== NOT EXECUTED
4000d010: c2 00 60 18 ld [ %g1 + 0x18 ], %g1
<== NOT EXECUTED
4000d014: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
4000d018: 02 80 00 77 be 4000d1f4 <rtems_termios_ioctl+0x5b4>
<== NOT EXECUTED
4000d01c: 92 10 00 1c mov %i4, %o1
<== NOT EXECUTED
sc = rtems_termios_linesw[tty->t_line].l_ioctl(tty,args);
4000d020: 9f c0 40 00 call %g1
<== NOT EXECUTED
4000d024: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
4000d028: 10 bf ff 27 b 4000ccc4 <rtems_termios_ioctl+0x84>
<== NOT EXECUTED
4000d02c: b0 10 00 08 mov %o0, %i0
<== NOT EXECUTED
flags = *((int *)args->buffer);
4000d030: c2 06 20 08 ld [ %i0 + 8 ], %g1
<== NOT EXECUTED
4000d034: c2 00 40 00 ld [ %g1 ], %g1
<== NOT EXECUTED
if (flags == 0) {
4000d038: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
4000d03c: 22 80 00 05 be,a 4000d050 <rtems_termios_ioctl+0x410>
<== NOT EXECUTED
4000d040: b6 10 20 01 mov 1, %i3
<== NOT EXECUTED
if (flags & FWRITE) {
4000d044: 80 88 60 02 btst 2, %g1
<== NOT EXECUTED
4000d048: 02 80 00 0e be 4000d080 <rtems_termios_ioctl+0x440>
<== NOT EXECUTED
4000d04c: b6 08 60 01 and %g1, 1, %i3
<== NOT EXECUTED
rtems_termios_device_context *ctx = tty->device_context;
4000d050: f8 07 61 7c ld [ %i5 + 0x17c ], %i4
<== NOT EXECUTED
( *context->lock_acquire )( context, lock_context );
4000d054: c2 07 20 14 ld [ %i4 + 0x14 ], %g1
<== NOT EXECUTED
4000d058: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
4000d05c: 9f c0 40 00 call %g1
<== NOT EXECUTED
4000d060: 92 07 bf fc add %fp, -4, %o1
<== NOT EXECUTED
tty->rawOutBuf.Tail = 0;
4000d064: c0 27 60 c0 clr [ %i5 + 0xc0 ]
<== NOT EXECUTED
( *context->lock_release )( context, lock_context );
4000d068: 92 07 bf fc add %fp, -4, %o1
<== NOT EXECUTED
tty->rawOutBuf.Head = 0;
4000d06c: c0 27 60 bc clr [ %i5 + 0xbc ]
<== NOT EXECUTED
tty->rawOutBufState = rob_idle;
4000d070: c0 27 60 e4 clr [ %i5 + 0xe4 ]
<== NOT EXECUTED
4000d074: c2 07 20 18 ld [ %i4 + 0x18 ], %g1
<== NOT EXECUTED
4000d078: 9f c0 40 00 call %g1
<== NOT EXECUTED
4000d07c: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
if (flags & FREAD) {
4000d080: 80 a6 e0 00 cmp %i3, 0
<== NOT EXECUTED
4000d084: 22 80 00 0e be,a 4000d0bc <rtems_termios_ioctl+0x47c>
<== NOT EXECUTED
4000d088: b0 10 20 00 clr %i0
<== NOT EXECUTED
rtems_termios_device_context *ctx = tty->device_context;
4000d08c: f8 07 61 7c ld [ %i5 + 0x17c ], %i4
<== NOT EXECUTED
( *context->lock_acquire )( context, lock_context );
4000d090: c2 07 20 14 ld [ %i4 + 0x14 ], %g1
<== NOT EXECUTED
4000d094: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
4000d098: 9f c0 40 00 call %g1
<== NOT EXECUTED
4000d09c: 92 07 bf fc add %fp, -4, %o1
<== NOT EXECUTED
tty->rawInBuf.Tail = 0;
4000d0a0: c0 27 60 88 clr [ %i5 + 0x88 ]
<== NOT EXECUTED
( *context->lock_release )( context, lock_context );
4000d0a4: 92 07 bf fc add %fp, -4, %o1
<== NOT EXECUTED
tty->rawInBuf.Head = 0;
4000d0a8: c0 27 60 84 clr [ %i5 + 0x84 ]
<== NOT EXECUTED
4000d0ac: c2 07 20 18 ld [ %i4 + 0x18 ], %g1
<== NOT EXECUTED
4000d0b0: 9f c0 40 00 call %g1
<== NOT EXECUTED
4000d0b4: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
sc = RTEMS_SUCCESSFUL;
4000d0b8: b0 10 20 00 clr %i0
<== NOT EXECUTED
4000d0bc: 40 00 10 d3 call 40011408 <_Mutex_Release>
4000d0c0: 90 10 00 1a mov %i2, %o0
}
4000d0c4: 81 c7 e0 08 ret
4000d0c8: 81 e8 00 00 restore
tty->rawInBufSemaphoreTimeout = 0;
4000d0cc: c0 27 60 ac clr [ %i5 + 0xac ]
tty->rawInBufSemaphoreWait = true;
4000d0d0: c2 2f 60 a8 stb %g1, [ %i5 + 0xa8 ]
tty->rawInBufSemaphoreFirstTimeout = 0;
4000d0d4: c0 27 60 b0 clr [ %i5 + 0xb0 ]
if (tty->handler.set_attributes) {
4000d0d8: c2 07 61 34 ld [ %i5 + 0x134 ], %g1
4000d0dc: 80 a0 60 00 cmp %g1, 0
4000d0e0: 02 bf ff f6 be 4000d0b8 <rtems_termios_ioctl+0x478>
<== NEVER TAKEN
4000d0e4: 92 10 00 18 mov %i0, %o1
sc = (*tty->handler.set_attributes)(tty->device_context, &tty->termios) ?
4000d0e8: d0 07 61 7c ld [ %i5 + 0x17c ], %o0
4000d0ec: 9f c0 40 00 call %g1
4000d0f0: b0 10 20 1b mov 0x1b, %i0
RTEMS_SUCCESSFUL : RTEMS_IO_ERROR;
4000d0f4: 80 a2 20 00 cmp %o0, 0
4000d0f8: 02 bf fe f3 be 4000ccc4 <rtems_termios_ioctl+0x84>
<== NEVER TAKEN
4000d0fc: 01 00 00 00 nop
sc = RTEMS_SUCCESSFUL;
4000d100: 10 bf ff ef b 4000d0bc <rtems_termios_ioctl+0x47c>
4000d104: b0 10 20 00 clr %i0 ! 0 <PROM_START>
tty->flow_ctrl &= ~(FL_MDRTS);
4000d108: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
4000d10c: 82 08 7e ff and %g1, -257, %g1
<== NOT EXECUTED
4000d110: c2 27 61 48 st %g1, [ %i5 + 0x148 ]
<== NOT EXECUTED
if ((tty->flow_ctrl & FL_IRTSOFF) &&
4000d114: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
4000d118: 80 88 60 04 btst 4, %g1
<== NOT EXECUTED
4000d11c: 02 80 00 31 be 4000d1e0 <rtems_termios_ioctl+0x5a0>
<== NOT EXECUTED
4000d120: 01 00 00 00 nop
<== NOT EXECUTED
(tty->flow.start_remote_tx != NULL)) {
4000d124: c2 07 61 44 ld [ %i5 + 0x144 ], %g1
<== NOT EXECUTED
if ((tty->flow_ctrl & FL_IRTSOFF) &&
4000d128: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
4000d12c: 02 80 00 2d be 4000d1e0 <rtems_termios_ioctl+0x5a0>
<== NOT EXECUTED
4000d130: 01 00 00 00 nop
<== NOT EXECUTED
tty->flow.start_remote_tx(ctx);
4000d134: 9f c0 40 00 call %g1
<== NOT EXECUTED
4000d138: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
tty->flow_ctrl &= ~(FL_IRTSOFF);
4000d13c: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
4000d140: 82 08 7f fb and %g1, -5, %g1
<== NOT EXECUTED
4000d144: c2 27 61 48 st %g1, [ %i5 + 0x148 ]
<== NOT EXECUTED
4000d148: c2 07 60 58 ld [ %i5 + 0x58 ], %g1
<== NOT EXECUTED
4000d14c: 82 08 40 1b and %g1, %i3, %g1
<== NOT EXECUTED
if (tty->termios.c_cflag & CRTSCTS) {
4000d150: 80 a0 60 00 cmp %g1, 0
4000d154: 22 bf ff 6c be,a 4000cf04 <rtems_termios_ioctl+0x2c4>
<== ALWAYS TAKEN
4000d158: c2 07 60 50 ld [ %i5 + 0x50 ], %g1
4000d15c: 30 bf ff 66 b,a 4000cef4 <rtems_termios_ioctl+0x2b4>
<== NOT EXECUTED
if (tty->termios.c_cc[VMIN]) {
4000d160: 80 88 a0 ff btst 0xff, %g2
<== NOT EXECUTED
4000d164: 12 bf ff da bne 4000d0cc <rtems_termios_ioctl+0x48c>
<== NOT EXECUTED
4000d168: 82 10 20 01 mov 1, %g1
<== NOT EXECUTED
tty->rawInBufSemaphoreWait = false;
4000d16c: 10 bf ff db b 4000d0d8 <rtems_termios_ioctl+0x498>
<== NOT EXECUTED
4000d170: c0 2f 60 a8 clrb [ %i5 + 0xa8 ]
<== NOT EXECUTED
tty->flow_ctrl &= ~(FL_MDXOF);
4000d174: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
4000d178: 82 08 7b ff and %g1, -1025, %g1
<== NOT EXECUTED
4000d17c: c2 27 61 48 st %g1, [ %i5 + 0x148 ]
<== NOT EXECUTED
tty->flow_ctrl &= ~(FL_ISNTXOF);
4000d180: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
4000d184: 82 08 7f fd and %g1, -3, %g1
<== NOT EXECUTED
4000d188: c2 27 61 48 st %g1, [ %i5 + 0x148 ]
<== NOT EXECUTED
4000d18c: 30 bf ff 51 b,a 4000ced0 <rtems_termios_ioctl+0x290>
<== NOT EXECUTED
drainOutput (tty);
4000d190: 7f ff f7 bd call 4000b084 <drainOutput>
<== NOT EXECUTED
4000d194: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
if (args->command == TIOCSETAF) {
4000d198: c4 07 20 04 ld [ %i4 + 4 ], %g2
<== NOT EXECUTED
4000d19c: 03 20 0b 1d sethi %hi(0x802c7400), %g1
<== NOT EXECUTED
4000d1a0: 82 10 60 16 or %g1, 0x16, %g1 ! 802c7416 <RAM_END+0x3fec7416>
<== NOT EXECUTED
4000d1a4: 80 a0 80 01 cmp %g2, %g1
<== NOT EXECUTED
4000d1a8: 12 bf ff 1d bne 4000ce1c <rtems_termios_ioctl+0x1dc>
<== NOT EXECUTED
4000d1ac: 01 00 00 00 nop
<== NOT EXECUTED
rtems_termios_device_context *ctx = tty->device_context;
4000d1b0: f8 07 61 7c ld [ %i5 + 0x17c ], %i4
<== NOT EXECUTED
( *context->lock_acquire )( context, lock_context );
4000d1b4: c2 07 20 14 ld [ %i4 + 0x14 ], %g1
<== NOT EXECUTED
4000d1b8: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
4000d1bc: 9f c0 40 00 call %g1
<== NOT EXECUTED
4000d1c0: 92 07 bf fc add %fp, -4, %o1
<== NOT EXECUTED
tty->rawInBuf.Tail = 0;
4000d1c4: c0 27 60 88 clr [ %i5 + 0x88 ]
<== NOT EXECUTED
( *context->lock_release )( context, lock_context );
4000d1c8: 92 07 bf fc add %fp, -4, %o1
<== NOT EXECUTED
tty->rawInBuf.Head = 0;
4000d1cc: c0 27 60 84 clr [ %i5 + 0x84 ]
<== NOT EXECUTED
4000d1d0: c2 07 20 18 ld [ %i4 + 0x18 ], %g1
<== NOT EXECUTED
4000d1d4: 9f c0 40 00 call %g1
<== NOT EXECUTED
4000d1d8: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
4000d1dc: 30 bf ff 10 b,a 4000ce1c <rtems_termios_ioctl+0x1dc>
<== NOT EXECUTED
tty->flow_ctrl &= ~(FL_IRTSOFF);
4000d1e0: c2 07 61 48 ld [ %i5 + 0x148 ], %g1
<== NOT EXECUTED
4000d1e4: 82 08 7f fb and %g1, -5, %g1
<== NOT EXECUTED
4000d1e8: c2 27 61 48 st %g1, [ %i5 + 0x148 ]
<== NOT EXECUTED
if (tty->termios.c_iflag & IXOFF) {
4000d1ec: 10 bf ff 46 b 4000cf04 <rtems_termios_ioctl+0x2c4>
<== NOT EXECUTED
4000d1f0: c2 07 60 50 ld [ %i5 + 0x50 ], %g1
<== NOT EXECUTED
} else if (tty->handler.ioctl) {
4000d1f4: c2 07 61 38 ld [ %i5 + 0x138 ], %g1
<== NOT EXECUTED
4000d1f8: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
4000d1fc: 02 80 00 08 be 4000d21c <rtems_termios_ioctl+0x5dc>
<== NOT EXECUTED
4000d200: 92 10 00 1b mov %i3, %o1
<== NOT EXECUTED
args->ioctl_return = (*tty->handler.ioctl) (tty->device_context,
4000d204: d4 07 20 08 ld [ %i4 + 8 ], %o2
<== NOT EXECUTED
4000d208: d0 07 61 7c ld [ %i5 + 0x17c ], %o0
<== NOT EXECUTED
4000d20c: 9f c0 40 00 call %g1
<== NOT EXECUTED
4000d210: b0 10 20 00 clr %i0
<== NOT EXECUTED
4000d214: 10 bf fe ac b 4000ccc4 <rtems_termios_ioctl+0x84>
<== NOT EXECUTED
4000d218: d0 27 20 0c st %o0, [ %i4 + 0xc ]
<== NOT EXECUTED
sc = RTEMS_INVALID_NUMBER;
4000d21c: 10 bf fe aa b 4000ccc4 <rtems_termios_ioctl+0x84>
<== NOT EXECUTED
4000d220: b0 10 20 0a mov 0xa, %i0
<== NOT EXECUTED
4000d744 <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 ) {
4000d744: 03 10 00 ba sethi %hi(0x4002e800), %g1
4000d748: c6 00 60 c0 ld [ %g1 + 0xc0 ], %g3 ! 4002e8c0 <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;
4000d74c: 05 00 01 c2 sethi %hi(0x70800), %g2
while ( current->name != NULL && current->local_value < baud ) {
4000d750: 80 a0 e0 00 cmp %g3, 0
4000d754: 02 80 00 12 be 4000d79c <rtems_termios_set_best_baud+0x58>
<== NEVER TAKEN
4000d758: 82 10 60 c0 or %g1, 0xc0, %g1
4000d75c: c8 00 60 04 ld [ %g1 + 4 ], %g4
4000d760: 80 a2 40 04 cmp %o1, %g4
4000d764: 38 80 00 0a bgu,a 4000d78c <rtems_termios_set_best_baud+0x48>
<== ALWAYS TAKEN
4000d768: c6 00 60 0c ld [ %g1 + 0xc ], %g3
4000d76c: 10 80 00 1b b 4000d7d8 <rtems_termios_set_best_baud+0x94>
<== NOT EXECUTED
4000d770: 86 10 00 04 mov %g4, %g3
<== NOT EXECUTED
4000d774: c6 00 a0 04 ld [ %g2 + 4 ], %g3
4000d778: 80 a0 c0 09 cmp %g3, %o1
4000d77c: 3a 80 00 0b bcc,a 4000d7a8 <rtems_termios_set_best_baud+0x64>
<== NEVER TAKEN
4000d780: c8 00 60 04 ld [ %g1 + 4 ], %g4
<== NOT EXECUTED
4000d784: 82 10 00 02 mov %g2, %g1
4000d788: c6 00 a0 0c ld [ %g2 + 0xc ], %g3
4000d78c: 80 a0 e0 00 cmp %g3, 0
4000d790: 12 bf ff f9 bne 4000d774 <rtems_termios_set_best_baud+0x30>
4000d794: 84 00 60 0c add %g1, 0xc, %g2
spd = B460800;
4000d798: 05 00 01 c2 sethi %hi(0x70800), %g2
}
term->c_ispeed = spd;
4000d79c: c4 22 20 24 st %g2, [ %o0 + 0x24 ]
term->c_ospeed = spd;
}
4000d7a0: 81 c3 e0 08 retl
4000d7a4: c4 22 20 28 st %g2, [ %o0 + 0x28 ]
uint32_t mid = (last->local_value + current->local_value) / UINT32_C( 2 );
4000d7a8: 86 00 c0 04 add %g3, %g4, %g3
<== NOT EXECUTED
4000d7ac: 87 30 e0 01 srl %g3, 1, %g3
<== NOT EXECUTED
spd = baud <= mid ? last->remote_value : current->remote_value;
4000d7b0: 80 a2 40 03 cmp %o1, %g3
<== NOT EXECUTED
4000d7b4: 28 80 00 06 bleu,a 4000d7cc <rtems_termios_set_best_baud+0x88>
<== NOT EXECUTED
4000d7b8: c4 00 60 08 ld [ %g1 + 8 ], %g2
<== NOT EXECUTED
4000d7bc: c4 00 a0 08 ld [ %g2 + 8 ], %g2
<== NOT EXECUTED
term->c_ispeed = spd;
4000d7c0: c4 22 20 24 st %g2, [ %o0 + 0x24 ]
<== NOT EXECUTED
}
4000d7c4: 81 c3 e0 08 retl
<== NOT EXECUTED
4000d7c8: c4 22 20 28 st %g2, [ %o0 + 0x28 ]
<== NOT EXECUTED
term->c_ispeed = spd;
4000d7cc: c4 22 20 24 st %g2, [ %o0 + 0x24 ]
<== NOT EXECUTED
}
4000d7d0: 81 c3 e0 08 retl
<== NOT EXECUTED
4000d7d4: c4 22 20 28 st %g2, [ %o0 + 0x28 ]
<== NOT EXECUTED
const rtems_assoc_t *current = &rtems_termios_baud_table[ 0 ];
4000d7d8: 10 bf ff f4 b 4000d7a8 <rtems_termios_set_best_baud+0x64>
<== NOT EXECUTED
4000d7dc: 84 10 00 01 mov %g1, %g2
<== NOT EXECUTED
40019720 <rtems_verror>:
int rtems_verror(
rtems_error_code_t error_flag,
const char *printf_format,
va_list arglist
)
{
40019720: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
int local_errno = 0;
int chars_written = 0;
rtems_status_code status;
if (error_flag & RTEMS_ERROR_PANIC) {
40019724: 03 08 00 00 sethi %hi(0x20000000), %g1
<== NOT EXECUTED
40019728: 80 8e 00 01 btst %i0, %g1
<== NOT EXECUTED
4001972c: 02 80 00 0e be 40019764 <rtems_verror+0x44>
<== NOT EXECUTED
40019730: ba 10 00 18 mov %i0, %i5
<== NOT EXECUTED
if (rtems_panic_in_progress++)
40019734: 05 10 00 d5 sethi %hi(0x40035400), %g2
<== NOT EXECUTED
40019738: c2 00 a1 68 ld [ %g2 + 0x168 ], %g1 ! 40035568 <rtems_panic_in_progress>
<== NOT EXECUTED
4001973c: 86 00 60 01 add %g1, 1, %g3
<== NOT EXECUTED
40019740: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
40019744: 02 80 00 08 be 40019764 <rtems_verror+0x44>
<== NOT EXECUTED
40019748: c6 20 a1 68 st %g3, [ %g2 + 0x168 ]
<== NOT EXECUTED
disable_level = cpu_self->thread_dispatch_disable_level;
4001974c: c2 01 a0 18 ld [ %g6 + 0x18 ], %g1
<== NOT EXECUTED
cpu_self->thread_dispatch_disable_level = disable_level + 1;
40019750: 82 00 60 01 inc %g1
<== NOT EXECUTED
40019754: 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)
40019758: 80 a0 e0 02 cmp %g3, 2
<== NOT EXECUTED
4001975c: 14 80 00 1d bg 400197d0 <rtems_verror+0xb0>
<== NOT EXECUTED
40019760: b0 10 20 00 clr %i0
<== NOT EXECUTED
return 0;
}
(void) fflush(stdout); /* in case stdout/stderr same */
40019764: 7f ff 9e fb call 40001350 <__getreent>
<== NOT EXECUTED
40019768: 39 1c 00 00 sethi %hi(0x70000000), %i4
<== NOT EXECUTED
4001976c: 40 00 0a a0 call 4001c1ec <fflush>
<== NOT EXECUTED
40019770: d0 02 20 08 ld [ %o0 + 8 ], %o0
<== NOT EXECUTED
status = error_flag & ~RTEMS_ERROR_MASK;
if (error_flag & RTEMS_ERROR_ERRNO) /* include errno? */
40019774: 03 10 00 00 sethi %hi(0x40000000), %g1
<== NOT EXECUTED
40019778: 80 8f 40 01 btst %i5, %g1
<== NOT EXECUTED
4001977c: 12 80 00 17 bne 400197d8 <rtems_verror+0xb8>
<== NOT EXECUTED
40019780: b8 2f 40 1c andn %i5, %i4, %i4
<== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
if (_System_state_Is_multiprocessing)
fprintf(stderr, "[%" PRIu32 "] ", _Configuration_MP_table->node);
#endif
chars_written += vfprintf(stderr, printf_format, arglist);
40019784: 7f ff 9e f3 call 40001350 <__getreent>
<== NOT EXECUTED
40019788: 01 00 00 00 nop
<== NOT EXECUTED
4001978c: d0 02 20 0c ld [ %o0 + 0xc ], %o0
<== NOT EXECUTED
40019790: 94 10 00 1a mov %i2, %o2
<== NOT EXECUTED
40019794: 40 00 30 25 call 40025828 <vfprintf>
<== NOT EXECUTED
40019798: 92 10 00 19 mov %i1, %o1
<== NOT EXECUTED
if (status)
4001979c: 80 a7 20 00 cmp %i4, 0
<== NOT EXECUTED
400197a0: 12 80 00 37 bne 4001987c <rtems_verror+0x15c>
<== NOT EXECUTED
400197a4: b0 10 00 08 mov %o0, %i0
<== NOT EXECUTED
chars_written += fprintf(stderr, " (errno: %s)", strerror(local_errno));
else
chars_written += fprintf(stderr, " (unknown errno=%d)", local_errno);
}
chars_written += fprintf(stderr, "\n");
400197a8: 7f ff 9e ea call 40001350 <__getreent>
<== NOT EXECUTED
400197ac: 01 00 00 00 nop
<== NOT EXECUTED
400197b0: 13 10 00 c0 sethi %hi(0x40030000), %o1
<== NOT EXECUTED
400197b4: d0 02 20 0c ld [ %o0 + 0xc ], %o0
<== NOT EXECUTED
400197b8: 40 00 0c 78 call 4001c998 <fprintf>
<== NOT EXECUTED
400197bc: 92 12 63 28 or %o1, 0x328, %o1
<== NOT EXECUTED
(void) fflush(stderr);
400197c0: 7f ff 9e e4 call 40001350 <__getreent>
<== NOT EXECUTED
400197c4: b0 02 00 18 add %o0, %i0, %i0
<== NOT EXECUTED
400197c8: 40 00 0a 89 call 4001c1ec <fflush>
<== NOT EXECUTED
400197cc: d0 02 20 0c ld [ %o0 + 0xc ], %o0
<== NOT EXECUTED
400197d0: 81 c7 e0 08 ret
<== NOT EXECUTED
400197d4: 81 e8 00 00 restore
<== NOT EXECUTED
local_errno = errno;
400197d8: 40 00 09 4a call 4001bd00 <__errno>
<== NOT EXECUTED
400197dc: 01 00 00 00 nop
<== NOT EXECUTED
chars_written += vfprintf(stderr, printf_format, arglist);
400197e0: 7f ff 9e dc call 40001350 <__getreent>
<== NOT EXECUTED
400197e4: fa 02 00 00 ld [ %o0 ], %i5
<== NOT EXECUTED
400197e8: d0 02 20 0c ld [ %o0 + 0xc ], %o0
<== NOT EXECUTED
400197ec: 94 10 00 1a mov %i2, %o2
<== NOT EXECUTED
400197f0: 40 00 30 0e call 40025828 <vfprintf>
<== NOT EXECUTED
400197f4: 92 10 00 19 mov %i1, %o1
<== NOT EXECUTED
if (status)
400197f8: 80 a7 20 00 cmp %i4, 0
<== NOT EXECUTED
400197fc: 12 80 00 21 bne 40019880 <rtems_verror+0x160>
<== NOT EXECUTED
40019800: b0 10 00 08 mov %o0, %i0
<== NOT EXECUTED
if (local_errno) {
40019804: 80 a7 60 00 cmp %i5, 0
<== NOT EXECUTED
40019808: 02 bf ff e8 be 400197a8 <rtems_verror+0x88>
<== NOT EXECUTED
4001980c: 01 00 00 00 nop
<== NOT EXECUTED
if ((local_errno > 0) && *strerror(local_errno))
40019810: 04 80 00 08 ble 40019830 <rtems_verror+0x110>
<== NOT EXECUTED
40019814: 01 00 00 00 nop
<== NOT EXECUTED
40019818: 40 00 19 3a call 4001fd00 <strerror>
<== NOT EXECUTED
4001981c: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
40019820: c2 4a 00 00 ldsb [ %o0 ], %g1
<== NOT EXECUTED
40019824: 80 a0 60 00 cmp %g1, 0
<== NOT EXECUTED
40019828: 12 80 00 22 bne 400198b0 <rtems_verror+0x190>
<== NOT EXECUTED
4001982c: 01 00 00 00 nop
<== NOT EXECUTED
chars_written += fprintf(stderr, " (unknown errno=%d)", local_errno);
40019830: 7f ff 9e c8 call 40001350 <__getreent>
<== NOT EXECUTED
40019834: 01 00 00 00 nop
<== NOT EXECUTED
40019838: 94 10 00 1d mov %i5, %o2
<== NOT EXECUTED
4001983c: d0 02 20 0c ld [ %o0 + 0xc ], %o0
<== NOT EXECUTED
40019840: 13 10 00 c1 sethi %hi(0x40030400), %o1
<== NOT EXECUTED
40019844: 40 00 0c 55 call 4001c998 <fprintf>
<== NOT EXECUTED
40019848: 92 12 61 b0 or %o1, 0x1b0, %o1 ! 400305b0 <state_pairs+0xd8>
<== NOT EXECUTED
chars_written += fprintf(stderr, "\n");
4001984c: 7f ff 9e c1 call 40001350 <__getreent>
<== NOT EXECUTED
40019850: b0 06 00 08 add %i0, %o0, %i0
<== NOT EXECUTED
40019854: 13 10 00 c0 sethi %hi(0x40030000), %o1
<== NOT EXECUTED
40019858: d0 02 20 0c ld [ %o0 + 0xc ], %o0
<== NOT EXECUTED
4001985c: 40 00 0c 4f call 4001c998 <fprintf>
<== NOT EXECUTED
40019860: 92 12 63 28 or %o1, 0x328, %o1
<== NOT EXECUTED
(void) fflush(stderr);
40019864: 7f ff 9e bb call 40001350 <__getreent>
<== NOT EXECUTED
40019868: b0 02 00 18 add %o0, %i0, %i0
<== NOT EXECUTED
4001986c: 40 00 0a 60 call 4001c1ec <fflush>
<== NOT EXECUTED
40019870: d0 02 20 0c ld [ %o0 + 0xc ], %o0
<== NOT EXECUTED
40019874: 81 c7 e0 08 ret
<== NOT EXECUTED
40019878: 81 e8 00 00 restore
<== NOT EXECUTED
int local_errno = 0;
4001987c: ba 10 20 00 clr %i5
<== NOT EXECUTED
fprintf(stderr, " (status: %s)", rtems_status_text(status));
40019880: 7f ff 9e b4 call 40001350 <__getreent>
<== NOT EXECUTED
40019884: 01 00 00 00 nop
<== NOT EXECUTED
40019888: f6 02 20 0c ld [ %o0 + 0xc ], %i3
<== NOT EXECUTED
4001988c: 7f ff d4 52 call 4000e9d4 <rtems_status_text>
<== NOT EXECUTED
40019890: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
40019894: 13 10 00 c1 sethi %hi(0x40030400), %o1
<== NOT EXECUTED
40019898: 94 10 00 08 mov %o0, %o2
<== NOT EXECUTED
4001989c: 92 12 61 90 or %o1, 0x190, %o1
<== NOT EXECUTED
400198a0: 40 00 0c 3e call 4001c998 <fprintf>
<== NOT EXECUTED
400198a4: 90 10 00 1b mov %i3, %o0
<== NOT EXECUTED
chars_written +=
400198a8: 10 bf ff d7 b 40019804 <rtems_verror+0xe4>
<== NOT EXECUTED
400198ac: b0 06 00 08 add %i0, %o0, %i0
<== NOT EXECUTED
chars_written += fprintf(stderr, " (errno: %s)", strerror(local_errno));
400198b0: 7f ff 9e a8 call 40001350 <__getreent>
<== NOT EXECUTED
400198b4: 01 00 00 00 nop
<== NOT EXECUTED
400198b8: f8 02 20 0c ld [ %o0 + 0xc ], %i4
<== NOT EXECUTED
400198bc: 40 00 19 11 call 4001fd00 <strerror>
<== NOT EXECUTED
400198c0: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
400198c4: 13 10 00 c1 sethi %hi(0x40030400), %o1
<== NOT EXECUTED
400198c8: 94 10 00 08 mov %o0, %o2
<== NOT EXECUTED
400198cc: 92 12 61 a0 or %o1, 0x1a0, %o1
<== NOT EXECUTED
400198d0: 40 00 0c 32 call 4001c998 <fprintf>
<== NOT EXECUTED
400198d4: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
400198d8: 10 bf ff b4 b 400197a8 <rtems_verror+0x88>
<== NOT EXECUTED
400198dc: b0 06 00 08 add %i0, %o0, %i0
<== NOT EXECUTED
4000d660 <rtems_vprintf>:
int rtems_vprintf(
const rtems_printer *printer,
const char *format,
va_list ap
)
{
4000d660: 9d e3 bf a0 save %sp, -96, %sp
4000d664: 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;
4000d668: 80 a0 60 00 cmp %g1, 0
4000d66c: 02 80 00 0a be 4000d694 <rtems_vprintf+0x34>
<== NEVER TAKEN
4000d670: b0 10 20 00 clr %i0
4000d674: c4 00 60 04 ld [ %g1 + 4 ], %g2
4000d678: 80 a0 a0 00 cmp %g2, 0
4000d67c: 02 80 00 06 be 4000d694 <rtems_vprintf+0x34>
<== NEVER TAKEN
4000d680: 94 10 00 1a mov %i2, %o2
int len = 0;
if ( rtems_print_printer_valid( printer ) ) {
len = printer->printer( printer->context, format, ap );
4000d684: d0 00 40 00 ld [ %g1 ], %o0
4000d688: 9f c0 80 00 call %g2
4000d68c: 92 10 00 19 mov %i1, %o1
4000d690: b0 10 00 08 mov %o0, %i0
}
return len;
}
4000d694: 81 c7 e0 08 ret
4000d698: 81 e8 00 00 restore
400432dc <setegid>:
* P1003.1b-1993, p. 84
*/
int setegid(
gid_t gid
)
{
400432dc: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
_POSIX_types_Egid = gid;
400432e0: 7f ff 24 db call 4000c64c <rtems_current_user_env_get>
<== NOT EXECUTED
400432e4: ba 10 00 18 mov %i0, %i5
<== NOT EXECUTED
400432e8: fa 32 20 12 sth %i5, [ %o0 + 0x12 ]
<== NOT EXECUTED
return 0;
}
400432ec: 81 c7 e0 08 ret
<== NOT EXECUTED
400432f0: 91 e8 20 00 restore %g0, 0, %o0
<== NOT EXECUTED
400432f4 <seteuid>:
#include <unistd.h>
#include <rtems/userenv.h>
int seteuid( uid_t euid )
{
400432f4: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
_POSIX_types_Euid = euid;
400432f8: 7f ff 24 d5 call 4000c64c <rtems_current_user_env_get>
<== NOT EXECUTED
400432fc: ba 10 00 18 mov %i0, %i5
<== NOT EXECUTED
40043300: fa 32 20 10 sth %i5, [ %o0 + 0x10 ]
<== NOT EXECUTED
return 0;
}
40043304: 81 c7 e0 08 ret
<== NOT EXECUTED
40043308: 91 e8 20 00 restore %g0, 0, %o0
<== NOT EXECUTED
4004330c <setgid>:
* 4.2.2 Set User and Group IDs, P1003.1b-1993, p. 84
*/
int setgid(
gid_t gid
)
{
4004330c: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
_POSIX_types_Gid = gid;
40043310: 7f ff 24 cf call 4000c64c <rtems_current_user_env_get>
<== NOT EXECUTED
40043314: ba 10 00 18 mov %i0, %i5
<== NOT EXECUTED
40043318: fa 32 20 0e sth %i5, [ %o0 + 0xe ]
<== NOT EXECUTED
return 0;
}
4004331c: 81 c7 e0 08 ret
<== NOT EXECUTED
40043320: 91 e8 20 00 restore %g0, 0, %o0
<== NOT EXECUTED
4005c4a4 <setgrent>:
void setgrent(void)
{
4005c4a4: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
grp_context *ctx = grp_get_context();
4005c4a8: 7f ff ff d8 call 4005c408 <grp_get_context>
<== NOT EXECUTED
4005c4ac: 01 00 00 00 nop
<== NOT EXECUTED
if (ctx == NULL) {
4005c4b0: ba 92 20 00 orcc %o0, 0, %i5
<== NOT EXECUTED
4005c4b4: 02 80 00 12 be 4005c4fc <setgrent+0x58>
<== NOT EXECUTED
4005c4b8: 92 10 21 14 mov 0x114, %o1
<== NOT EXECUTED
return;
}
}
_libcsupport_pwdgrp_init();
4005c4bc: 7f ff 98 b7 call 40042798 <_libcsupport_pwdgrp_init>
<== NOT EXECUTED
4005c4c0: 01 00 00 00 nop
<== NOT EXECUTED
if (ctx->fp != NULL)
4005c4c4: d0 07 40 00 ld [ %i5 ], %o0
<== NOT EXECUTED
4005c4c8: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
4005c4cc: 02 80 00 05 be 4005c4e0 <setgrent+0x3c>
<== NOT EXECUTED
4005c4d0: 13 10 02 27 sethi %hi(0x40089c00), %o1
<== NOT EXECUTED
fclose(ctx->fp);
4005c4d4: 40 00 01 88 call 4005caf4 <fclose>
<== NOT EXECUTED
4005c4d8: 01 00 00 00 nop
<== NOT EXECUTED
ctx->fp = fopen("/etc/group", "r");
4005c4dc: 13 10 02 27 sethi %hi(0x40089c00), %o1
<== NOT EXECUTED
4005c4e0: 11 10 01 f0 sethi %hi(0x4007c000), %o0
<== NOT EXECUTED
4005c4e4: 92 12 61 18 or %o1, 0x118, %o1
<== NOT EXECUTED
4005c4e8: 40 00 04 c9 call 4005d80c <fopen>
<== NOT EXECUTED
4005c4ec: 90 12 20 c8 or %o0, 0xc8, %o0
<== NOT EXECUTED
4005c4f0: d0 27 40 00 st %o0, [ %i5 ]
<== NOT EXECUTED
}
4005c4f4: 81 c7 e0 08 ret
<== NOT EXECUTED
4005c4f8: 81 e8 00 00 restore
<== NOT EXECUTED
ctx = calloc(1, sizeof(*ctx));
4005c4fc: 7f fe b7 c1 call 4000a400 <calloc>
<== NOT EXECUTED
4005c500: 90 10 20 01 mov 1, %o0
<== NOT EXECUTED
if (ctx == NULL)
4005c504: ba 92 20 00 orcc %o0, 0, %i5
<== NOT EXECUTED
4005c508: 02 bf ff fb be 4005c4f4 <setgrent+0x50>
<== NOT EXECUTED
4005c50c: b0 10 00 08 mov %o0, %i0
<== NOT EXECUTED
eno = pthread_setspecific(grp_key, ctx);
4005c510: 03 10 02 41 sethi %hi(0x40090400), %g1
<== NOT EXECUTED
4005c514: d0 00 60 6c ld [ %g1 + 0x6c ], %o0 ! 4009046c <grp_key>
<== NOT EXECUTED
4005c518: 7f fe f2 a9 call 40018fbc <pthread_setspecific>
<== NOT EXECUTED
4005c51c: 92 10 00 18 mov %i0, %o1
<== NOT EXECUTED
if (eno != 0) {
4005c520: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
4005c524: 02 bf ff e6 be 4005c4bc <setgrent+0x18>
<== NOT EXECUTED
4005c528: 01 00 00 00 nop
<== NOT EXECUTED
free(ctx);
4005c52c: 7f fe bc 55 call 4000b680 <free>
<== NOT EXECUTED
4005c530: 81 e8 00 00 restore
<== NOT EXECUTED
4000cbac <setuid>:
* 4.2.2 Set User and Group IDs, P1003.1b-1993, p. 84
*/
int setuid(
uid_t uid
)
{
4000cbac: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
_POSIX_types_Uid = uid;
4000cbb0: 7f ff fe a7 call 4000c64c <rtems_current_user_env_get>
<== NOT EXECUTED
4000cbb4: ba 10 00 18 mov %i0, %i5
<== NOT EXECUTED
4000cbb8: fa 32 20 0c sth %i5, [ %o0 + 0xc ]
<== NOT EXECUTED
return 0;
}
4000cbbc: 81 c7 e0 08 ret
<== NOT EXECUTED
4000cbc0: 91 e8 20 00 restore %g0, 0, %o0
<== NOT EXECUTED
4000cbc4 <stat>:
* POSIX 1003.1b 5.6.2 - Get File Status
*
* Reused from lstat().
*/
int _STAT_NAME( const char *path, struct stat *buf )
{
4000cbc4: 9d e3 bf 68 save %sp, -152, %sp
<== NOT EXECUTED
int rv = 0;
rtems_filesystem_eval_path_context_t ctx;
int eval_flags = _STAT_FOLLOW_LINKS;
const rtems_filesystem_location_info_t *currentloc =
4000cbc8: 94 10 20 18 mov 0x18, %o2
<== NOT EXECUTED
4000cbcc: 92 10 00 18 mov %i0, %o1
<== NOT EXECUTED
4000cbd0: 40 00 01 9c call 4000d240 <rtems_filesystem_eval_path_start>
<== NOT EXECUTED
4000cbd4: 90 07 bf c8 add %fp, -56, %o0
<== NOT EXECUTED
rtems_filesystem_eval_path_start( &ctx, path, eval_flags );
memset( buf, 0, sizeof( *buf ) );
4000cbd8: 94 10 20 60 mov 0x60, %o2
<== NOT EXECUTED
const rtems_filesystem_location_info_t *currentloc =
4000cbdc: ba 10 00 08 mov %o0, %i5
<== NOT EXECUTED
memset( buf, 0, sizeof( *buf ) );
4000cbe0: 92 10 20 00 clr %o1
<== NOT EXECUTED
4000cbe4: 40 01 51 85 call 400611f8 <memset>
<== NOT EXECUTED
4000cbe8: 90 10 00 19 mov %i1, %o0
<== NOT EXECUTED
rv = (*currentloc->handlers->fstat_h)( currentloc, buf );
4000cbec: c2 07 60 10 ld [ %i5 + 0x10 ], %g1
<== NOT EXECUTED
4000cbf0: c2 00 60 18 ld [ %g1 + 0x18 ], %g1
<== NOT EXECUTED
4000cbf4: 92 10 00 19 mov %i1, %o1
<== NOT EXECUTED
4000cbf8: 9f c0 40 00 call %g1
<== NOT EXECUTED
4000cbfc: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
4000cc00: b0 10 00 08 mov %o0, %i0
<== NOT EXECUTED
rtems_filesystem_eval_path_cleanup( &ctx );
4000cc04: 40 00 01 d9 call 4000d368 <rtems_filesystem_eval_path_cleanup>
<== NOT EXECUTED
4000cc08: 90 07 bf c8 add %fp, -56, %o0
<== NOT EXECUTED
return rv;
}
4000cc0c: 81 c7 e0 08 ret
<== NOT EXECUTED
4000cc10: 81 e8 00 00 restore
<== NOT EXECUTED
40043324 <statvfs>:
#include <string.h>
#include <rtems/libio_.h>
int statvfs( const char *__restrict path, struct statvfs *__restrict buf )
{
40043324: 9d e3 bf 68 save %sp, -152, %sp
<== NOT EXECUTED
int rv = 0;
rtems_filesystem_eval_path_context_t ctx;
int eval_flags = RTEMS_FS_FOLLOW_LINK;
const rtems_filesystem_location_info_t *currentloc =
40043328: 94 10 20 18 mov 0x18, %o2
<== NOT EXECUTED
4004332c: 92 10 00 18 mov %i0, %o1
<== NOT EXECUTED
40043330: 7f ff 27 c4 call 4000d240 <rtems_filesystem_eval_path_start>
<== NOT EXECUTED
40043334: 90 07 bf c8 add %fp, -56, %o0
<== NOT EXECUTED
rtems_filesystem_eval_path_start( &ctx, path, eval_flags );
memset( buf, 0, sizeof( *buf ) );
40043338: 94 10 20 38 mov 0x38, %o2
<== NOT EXECUTED
const rtems_filesystem_location_info_t *currentloc =
4004333c: ba 10 00 08 mov %o0, %i5
<== NOT EXECUTED
memset( buf, 0, sizeof( *buf ) );
40043340: 92 10 20 00 clr %o1
<== NOT EXECUTED
40043344: 40 00 77 ad call 400611f8 <memset>
<== NOT EXECUTED
40043348: 90 10 00 19 mov %i1, %o0
<== NOT EXECUTED
rv = (*currentloc->mt_entry->ops->statvfs_h)( currentloc, buf );
4004334c: c2 07 60 14 ld [ %i5 + 0x14 ], %g1
<== NOT EXECUTED
40043350: c2 00 60 0c ld [ %g1 + 0xc ], %g1
<== NOT EXECUTED
40043354: c2 00 60 48 ld [ %g1 + 0x48 ], %g1
<== NOT EXECUTED
40043358: 92 10 00 19 mov %i1, %o1
<== NOT EXECUTED
4004335c: 9f c0 40 00 call %g1
<== NOT EXECUTED
40043360: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
40043364: b0 10 00 08 mov %o0, %i0
<== NOT EXECUTED
rtems_filesystem_eval_path_cleanup( &ctx );
40043368: 7f ff 28 00 call 4000d368 <rtems_filesystem_eval_path_cleanup>
<== NOT EXECUTED
4004336c: 90 07 bf c8 add %fp, -56, %o0
<== NOT EXECUTED
return rv;
}
40043370: 81 c7 e0 08 ret
<== NOT EXECUTED
40043374: 81 e8 00 00 restore
<== NOT EXECUTED
400435c4 <symlink>:
#include <unistd.h>
#include <rtems/libio_.h>
int symlink( const char *path1, const char *path2 )
{
400435c4: 9d e3 bf 68 save %sp, -152, %sp
<== NOT EXECUTED
int rv = 0;
rtems_filesystem_eval_path_context_t ctx;
int eval_flags = RTEMS_FS_FOLLOW_HARD_LINK
| RTEMS_FS_MAKE
| RTEMS_FS_EXCLUSIVE;
const rtems_filesystem_location_info_t *currentloc =
400435c8: 94 10 20 68 mov 0x68, %o2
<== NOT EXECUTED
400435cc: 92 10 00 19 mov %i1, %o1
<== NOT EXECUTED
400435d0: 7f ff 27 1c call 4000d240 <rtems_filesystem_eval_path_start>
<== NOT EXECUTED
400435d4: 90 07 bf c8 add %fp, -56, %o0
<== NOT EXECUTED
rtems_filesystem_eval_path_start( &ctx, path2, eval_flags );
rv = (*currentloc->mt_entry->ops->symlink_h)(
400435d8: c2 02 20 14 ld [ %o0 + 0x14 ], %g1
<== NOT EXECUTED
400435dc: c2 00 60 0c ld [ %g1 + 0xc ], %g1
<== NOT EXECUTED
400435e0: d4 07 bf d4 ld [ %fp + -44 ], %o2
<== NOT EXECUTED
400435e4: d2 07 bf d0 ld [ %fp + -48 ], %o1
<== NOT EXECUTED
400435e8: c2 00 60 3c ld [ %g1 + 0x3c ], %g1
<== NOT EXECUTED
400435ec: 9f c0 40 00 call %g1
<== NOT EXECUTED
400435f0: 96 10 00 18 mov %i0, %o3
<== NOT EXECUTED
400435f4: b0 10 00 08 mov %o0, %i0
<== NOT EXECUTED
rtems_filesystem_eval_path_get_token( &ctx ),
rtems_filesystem_eval_path_get_tokenlen( &ctx ),
path1
);
rtems_filesystem_eval_path_cleanup( &ctx );
400435f8: 7f ff 27 5c call 4000d368 <rtems_filesystem_eval_path_cleanup>
<== NOT EXECUTED
400435fc: 90 07 bf c8 add %fp, -56, %o0
<== NOT EXECUTED
return rv;
}
40043600: 81 c7 e0 08 ret
<== NOT EXECUTED
40043604: 81 e8 00 00 restore
<== NOT EXECUTED
40043608 <tcdrain>:
*/
int tcdrain(
int fd
)
{
return ioctl( fd, TIOCDRAIN, 0 );
40043608: 13 08 00 1d sethi %hi(0x20007400), %o1
<== NOT EXECUTED
4004360c: 94 10 20 00 clr %o2
<== NOT EXECUTED
40043610: 92 12 60 5e or %o1, 0x5e, %o1
<== NOT EXECUTED
40043614: 82 13 c0 00 mov %o7, %g1
<== NOT EXECUTED
40043618: 7f ff 20 97 call 4000b874 <ioctl>
<== NOT EXECUTED
4004361c: 9e 10 40 00 mov %g1, %o7
<== NOT EXECUTED
4001ca98 <tcsendbreak>:
int tcsendbreak (
int fd RTEMS_UNUSED,
int duration RTEMS_UNUSED )
{
return 0;
}
4001ca98: 81 c3 e0 08 retl
<== NOT EXECUTED
4001ca9c: 90 10 20 00 clr %o0
<== NOT EXECUTED
4001a024 <tcsetattr>:
int tcsetattr(
int fd,
int opt,
const struct termios *tp
)
{
4001a024: 9d e3 bf 70 save %sp, -144, %sp
struct termios localterm;
if (opt & TCSASOFT) {
4001a028: 80 8e 60 10 btst 0x10, %i1
4001a02c: 22 80 00 0b be,a 4001a058 <tcsetattr+0x34>
<== ALWAYS TAKEN
4001a030: b2 0e 7f ef and %i1, -17, %i1
localterm = *tp;
4001a034: 92 10 00 1a mov %i2, %o1
<== NOT EXECUTED
4001a038: 94 10 20 2c mov 0x2c, %o2
<== NOT EXECUTED
4001a03c: 40 00 10 05 call 4001e050 <memcpy>
<== NOT EXECUTED
4001a040: 90 07 bf d4 add %fp, -44, %o0
<== NOT EXECUTED
localterm.c_cflag |= CIGNORE;
4001a044: c2 07 bf dc ld [ %fp + -36 ], %g1
<== NOT EXECUTED
4001a048: 82 10 60 01 or %g1, 1, %g1
<== NOT EXECUTED
4001a04c: c2 27 bf dc st %g1, [ %fp + -36 ]
<== NOT EXECUTED
tp = &localterm;
4001a050: b4 07 bf d4 add %fp, -44, %i2
<== NOT EXECUTED
}
switch (opt & ~TCSASOFT) {
4001a054: b2 0e 7f ef and %i1, -17, %i1
<== NOT EXECUTED
4001a058: 80 a6 60 01 cmp %i1, 1
4001a05c: 02 80 00 19 be 4001a0c0 <tcsetattr+0x9c>
<== NEVER TAKEN
4001a060: 80 a6 60 02 cmp %i1, 2
4001a064: 02 80 00 10 be 4001a0a4 <tcsetattr+0x80>
<== NEVER TAKEN
4001a068: 80 a6 60 00 cmp %i1, 0
4001a06c: 02 80 00 08 be 4001a08c <tcsetattr+0x68>
<== ALWAYS TAKEN
4001a070: 94 10 00 1a mov %i2, %o2
case TCSAFLUSH:
return ioctl( fd, TIOCSETAF, tp );
default:
rtems_set_errno_and_return_minus_one( EINVAL );
4001a074: 40 00 07 23 call 4001bd00 <__errno>
<== NOT EXECUTED
4001a078: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
4001a07c: 82 10 20 16 mov 0x16, %g1
<== NOT EXECUTED
4001a080: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
}
}
4001a084: 81 c7 e0 08 ret
<== NOT EXECUTED
4001a088: 81 e8 00 00 restore
<== NOT EXECUTED
return ioctl( fd, TIOCSETA, tp );
4001a08c: 90 10 00 18 mov %i0, %o0
4001a090: 13 20 0b 1d sethi %hi(0x802c7400), %o1
4001a094: 40 00 06 a0 call 4001bb14 <ioctl>
4001a098: 92 12 60 14 or %o1, 0x14, %o1 ! 802c7414 <RAM_END+0x3fec7414>
4001a09c: 81 c7 e0 08 ret
4001a0a0: 91 e8 00 08 restore %g0, %o0, %o0
return ioctl( fd, TIOCSETAF, tp );
4001a0a4: 94 10 00 1a mov %i2, %o2
<== NOT EXECUTED
4001a0a8: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
4001a0ac: 13 20 0b 1d sethi %hi(0x802c7400), %o1
<== NOT EXECUTED
4001a0b0: 40 00 06 99 call 4001bb14 <ioctl>
<== NOT EXECUTED
4001a0b4: 92 12 60 16 or %o1, 0x16, %o1 ! 802c7416 <RAM_END+0x3fec7416>
<== NOT EXECUTED
4001a0b8: 81 c7 e0 08 ret
<== NOT EXECUTED
4001a0bc: 91 e8 00 08 restore %g0, %o0, %o0
<== NOT EXECUTED
return ioctl( fd, TIOCSETAW, tp );
4001a0c0: 94 10 00 1a mov %i2, %o2
<== NOT EXECUTED
4001a0c4: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
4001a0c8: 13 20 0b 1d sethi %hi(0x802c7400), %o1
<== NOT EXECUTED
4001a0cc: 40 00 06 92 call 4001bb14 <ioctl>
<== NOT EXECUTED
4001a0d0: 92 12 60 15 or %o1, 0x15, %o1 ! 802c7415 <RAM_END+0x3fec7415>
<== NOT EXECUTED
4001a0d4: 81 c7 e0 08 ret
<== NOT EXECUTED
4001a0d8: 91 e8 00 08 restore %g0, %o0, %o0
<== NOT EXECUTED
4001040c <umask>:
/**
* POSIX 1003.1b 5.3.3 - Set File Creation Mask
*/
mode_t umask( mode_t cmask )
{
4001040c: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
mode_t old_mask;
rtems_libio_lock();
40010410: 7f ff ed 77 call 4000b9ec <rtems_libio_lock>
<== NOT EXECUTED
40010414: ba 10 00 18 mov %i0, %i5
<== NOT EXECUTED
old_mask = rtems_filesystem_umask;
40010418: 7f ff f0 8d call 4000c64c <rtems_current_user_env_get>
<== NOT EXECUTED
4001041c: ba 0f 61 ff and %i5, 0x1ff, %i5
<== NOT EXECUTED
rtems_filesystem_umask = cmask & (S_IRWXU | S_IRWXG | S_IRWXO);
40010420: 7f ff f0 8b call 4000c64c <rtems_current_user_env_get>
<== NOT EXECUTED
40010424: f0 02 20 08 ld [ %o0 + 8 ], %i0
<== NOT EXECUTED
rtems_libio_unlock();
40010428: 7f ff ed 76 call 4000ba00 <rtems_libio_unlock>
<== NOT EXECUTED
4001042c: fa 22 20 08 st %i5, [ %o0 + 8 ]
<== NOT EXECUTED
return old_mask;
}
40010430: 81 c7 e0 08 ret
<== NOT EXECUTED
40010434: 81 e8 00 00 restore
<== NOT EXECUTED
40010438 <unlink>:
/**
* POSIX 1003.1b - 5.5.1 - Remove an existing link
*/
int unlink( const char *path )
{
40010438: 9d e3 bf 50 save %sp, -176, %sp
<== NOT EXECUTED
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 =
4001043c: 98 10 20 1b mov 0x1b, %o4
<== NOT EXECUTED
40010440: 94 10 21 00 mov 0x100, %o2
<== NOT EXECUTED
40010444: 92 10 00 18 mov %i0, %o1
<== NOT EXECUTED
40010448: 96 07 bf b0 add %fp, -80, %o3
<== NOT EXECUTED
4001044c: 7f ff f3 89 call 4000d270 <rtems_filesystem_eval_path_start_with_parent>
<== NOT EXECUTED
40010450: 90 07 bf c8 add %fp, -56, %o0
<== NOT EXECUTED
const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
40010454: c2 02 20 14 ld [ %o0 + 0x14 ], %g1
<== NOT EXECUTED
return (*mt_entry->ops->are_nodes_equal_h)(
40010458: c4 00 60 0c ld [ %g1 + 0xc ], %g2
<== NOT EXECUTED
4001045c: c4 00 a0 10 ld [ %g2 + 0x10 ], %g2
<== NOT EXECUTED
40010460: d2 00 60 24 ld [ %g1 + 0x24 ], %o1
<== NOT EXECUTED
40010464: 9f c0 80 00 call %g2
<== NOT EXECUTED
40010468: ba 10 00 08 mov %o0, %i5
<== NOT EXECUTED
eval_flags,
&parentloc,
parent_eval_flags
);
if ( !rtems_filesystem_location_is_instance_root( currentloc ) ) {
4001046c: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
40010470: 12 80 00 0e bne 400104a8 <unlink+0x70>
<== NOT EXECUTED
40010474: 92 10 20 10 mov 0x10, %o1
<== NOT EXECUTED
const rtems_filesystem_operations_table *ops = currentloc->mt_entry->ops;
40010478: c2 07 60 14 ld [ %i5 + 0x14 ], %g1
<== NOT EXECUTED
rv = (*ops->rmnod_h)( &parentloc, currentloc );
4001047c: c2 00 60 0c ld [ %g1 + 0xc ], %g1
<== NOT EXECUTED
40010480: c2 00 60 18 ld [ %g1 + 0x18 ], %g1
<== NOT EXECUTED
40010484: 92 10 00 1d mov %i5, %o1
<== NOT EXECUTED
40010488: 9f c0 40 00 call %g1
<== NOT EXECUTED
4001048c: 90 07 bf b0 add %fp, -80, %o0
<== NOT EXECUTED
40010490: b0 10 00 08 mov %o0, %i0
<== NOT EXECUTED
} else {
rtems_filesystem_eval_path_error( &ctx, EBUSY );
rv = -1;
}
rtems_filesystem_eval_path_cleanup_with_parent( &ctx, &parentloc );
40010494: 92 07 bf b0 add %fp, -80, %o1
<== NOT EXECUTED
40010498: 7f ff f3 c3 call 4000d3a4 <rtems_filesystem_eval_path_cleanup_with_parent>
<== NOT EXECUTED
4001049c: 90 07 bf c8 add %fp, -56, %o0
<== NOT EXECUTED
return rv;
}
400104a0: 81 c7 e0 08 ret
<== NOT EXECUTED
400104a4: 81 e8 00 00 restore
<== NOT EXECUTED
rtems_filesystem_eval_path_error( &ctx, EBUSY );
400104a8: 90 07 bf c8 add %fp, -56, %o0
<== NOT EXECUTED
400104ac: 7f ff f2 aa call 4000cf54 <rtems_filesystem_eval_path_error>
<== NOT EXECUTED
400104b0: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
rtems_filesystem_eval_path_cleanup_with_parent( &ctx, &parentloc );
400104b4: 10 bf ff f9 b 40010498 <unlink+0x60>
<== NOT EXECUTED
400104b8: 92 07 bf b0 add %fp, -80, %o1
<== NOT EXECUTED
4004372c <unmount>:
* in some form is supported on most UNIX and POSIX systems. This
* routine is necessary to mount instantiations of a file system
* into the file system name space.
*/
int unmount( const char *path )
{
4004372c: 9d e3 bf 60 save %sp, -160, %sp
<== NOT EXECUTED
int rv = 0;
rtems_filesystem_eval_path_context_t ctx;
int eval_flags = RTEMS_FS_FOLLOW_LINK;
const rtems_filesystem_location_info_t *currentloc =
40043730: 94 10 20 18 mov 0x18, %o2
<== NOT EXECUTED
40043734: 92 10 00 18 mov %i0, %o1
<== NOT EXECUTED
40043738: 7f ff 26 c2 call 4000d240 <rtems_filesystem_eval_path_start>
<== NOT EXECUTED
4004373c: 90 07 bf c8 add %fp, -56, %o0
<== NOT EXECUTED
rtems_filesystem_eval_path_start( &ctx, path, eval_flags );
rtems_filesystem_mount_table_entry_t *mt_entry = currentloc->mt_entry;
40043740: fa 02 20 14 ld [ %o0 + 0x14 ], %i5
<== NOT EXECUTED
return (*mt_entry->ops->are_nodes_equal_h)(
40043744: c2 07 60 0c ld [ %i5 + 0xc ], %g1
<== NOT EXECUTED
40043748: c2 00 60 10 ld [ %g1 + 0x10 ], %g1
<== NOT EXECUTED
4004374c: 9f c0 40 00 call %g1
<== NOT EXECUTED
40043750: d2 07 60 24 ld [ %i5 + 0x24 ], %o1
<== NOT EXECUTED
if ( rtems_filesystem_location_is_instance_root( currentloc ) ) {
40043754: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
40043758: 02 80 00 34 be 40043828 <unmount+0xfc>
<== NOT EXECUTED
4004375c: 01 00 00 00 nop
<== NOT EXECUTED
&rtems_filesystem_root->location;
40043760: 7f ff 23 bb call 4000c64c <rtems_current_user_env_get>
<== NOT EXECUTED
40043764: 01 00 00 00 nop
<== NOT EXECUTED
&rtems_filesystem_current->location;
40043768: 7f ff 23 b9 call 4000c64c <rtems_current_user_env_get>
<== NOT EXECUTED
4004376c: f8 02 20 04 ld [ %o0 + 4 ], %i4
<== NOT EXECUTED
return mt_entry == root->mt_entry || mt_entry == current->mt_entry;
40043770: c2 07 20 14 ld [ %i4 + 0x14 ], %g1
<== NOT EXECUTED
40043774: 80 a7 40 01 cmp %i5, %g1
<== NOT EXECUTED
40043778: 02 80 00 14 be 400437c8 <unmount+0x9c>
<== NOT EXECUTED
4004377c: 01 00 00 00 nop
<== NOT EXECUTED
40043780: c2 02 00 00 ld [ %o0 ], %g1
<== NOT EXECUTED
40043784: c2 00 60 14 ld [ %g1 + 0x14 ], %g1
<== NOT EXECUTED
40043788: 80 a7 40 01 cmp %i5, %g1
<== NOT EXECUTED
4004378c: 02 80 00 0f be 400437c8 <unmount+0x9c>
<== NOT EXECUTED
40043790: 01 00 00 00 nop
<== NOT EXECUTED
if ( !contains_root_or_current_directory( mt_entry ) ) {
const rtems_filesystem_operations_table *mt_point_ops =
mt_entry->mt_point_node->location.mt_entry->ops;
40043794: c2 07 60 20 ld [ %i5 + 0x20 ], %g1
<== NOT EXECUTED
const rtems_filesystem_operations_table *mt_point_ops =
40043798: c2 00 60 14 ld [ %g1 + 0x14 ], %g1
<== NOT EXECUTED
rv = (*mt_point_ops->unmount_h)( mt_entry );
4004379c: c2 00 60 0c ld [ %g1 + 0xc ], %g1
<== NOT EXECUTED
400437a0: c2 00 60 30 ld [ %g1 + 0x30 ], %g1
<== NOT EXECUTED
400437a4: 9f c0 40 00 call %g1
<== NOT EXECUTED
400437a8: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
if ( rv == 0 ) {
400437ac: b0 92 20 00 orcc %o0, 0, %i0
<== NOT EXECUTED
400437b0: 02 80 00 0b be 400437dc <unmount+0xb0>
<== NOT EXECUTED
400437b4: 01 00 00 00 nop
<== NOT EXECUTED
} else {
errno = EACCES;
rv = -1;
}
rtems_filesystem_eval_path_cleanup( &ctx );
400437b8: 7f ff 26 ec call 4000d368 <rtems_filesystem_eval_path_cleanup>
<== NOT EXECUTED
400437bc: 90 07 bf c8 add %fp, -56, %o0
<== NOT EXECUTED
rtems_fatal_error_occurred( 0xdeadbeef );
}
}
return rv;
}
400437c0: 81 c7 e0 08 ret
<== NOT EXECUTED
400437c4: 81 e8 00 00 restore
<== NOT EXECUTED
errno = EBUSY;
400437c8: 40 00 64 53 call 4005c914 <__errno>
<== NOT EXECUTED
400437cc: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
400437d0: 82 10 20 10 mov 0x10, %g1
<== NOT EXECUTED
400437d4: 10 bf ff f9 b 400437b8 <unmount+0x8c>
<== NOT EXECUTED
400437d8: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
rtems_id self_task_id = rtems_task_self();
400437dc: 7f ff 58 7e call 400199d4 <rtems_task_self>
<== NOT EXECUTED
400437e0: 01 00 00 00 nop
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
400437e4: 91 d0 20 09 ta 9
<== NOT EXECUTED
mt_entry->unmount_task = self_task_id;
400437e8: d0 27 60 3c st %o0, [ %i5 + 0x3c ]
<== NOT EXECUTED
mt_entry->mounted = false;
400437ec: c0 2f 60 28 clrb [ %i5 + 0x28 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
400437f0: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
400437f4: 01 00 00 00 nop
<== NOT EXECUTED
rtems_filesystem_eval_path_cleanup( &ctx );
400437f8: 7f ff 26 dc call 4000d368 <rtems_filesystem_eval_path_cleanup>
<== NOT EXECUTED
400437fc: 90 07 bf c8 add %fp, -56, %o0
<== NOT EXECUTED
return rtems_event_system_receive(
40043800: 96 07 bf c4 add %fp, -60, %o3
<== NOT EXECUTED
40043804: 94 10 20 00 clr %o2
<== NOT EXECUTED
40043808: 92 10 20 00 clr %o1
<== NOT EXECUTED
4004380c: 7f ff 57 81 call 40019610 <rtems_event_system_receive>
<== NOT EXECUTED
40043810: 11 20 00 00 sethi %hi(0x80000000), %o0
<== NOT EXECUTED
if ( sc != RTEMS_SUCCESSFUL ) {
40043814: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
40043818: 02 bf ff ea be 400437c0 <unmount+0x94>
<== NOT EXECUTED
4004381c: 11 37 ab 6f sethi %hi(0xdeadbc00), %o0
<== NOT EXECUTED
rtems_fatal_error_occurred( 0xdeadbeef );
40043820: 7f ff 58 df call 40019b9c <rtems_fatal_error_occurred>
<== NOT EXECUTED
40043824: 90 12 22 ef or %o0, 0x2ef, %o0 ! deadbeef <RAM_END+0x9e6dbeef>
<== NOT EXECUTED
errno = EACCES;
40043828: 40 00 64 3b call 4005c914 <__errno>
<== NOT EXECUTED
4004382c: b0 10 3f ff mov -1, %i0
<== NOT EXECUTED
40043830: 82 10 20 0d mov 0xd, %g1
<== NOT EXECUTED
40043834: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
rtems_filesystem_eval_path_cleanup( &ctx );
40043838: 7f ff 26 cc call 4000d368 <rtems_filesystem_eval_path_cleanup>
<== NOT EXECUTED
4004383c: 90 07 bf c8 add %fp, -56, %o0
<== NOT EXECUTED
40043840: 81 c7 e0 08 ret
<== NOT EXECUTED
40043844: 81 e8 00 00 restore
<== NOT EXECUTED
4002c4d4 <write>:
ssize_t write(
int fd,
const void *buffer,
size_t count
)
{
4002c4d4: 9d e3 bf a0 save %sp, -96, %sp
rtems_libio_t *iop;
ssize_t n;
rtems_libio_check_buffer( buffer );
4002c4d8: 80 a6 60 00 cmp %i1, 0
4002c4dc: 02 80 00 32 be 4002c5a4 <write+0xd0>
<== NEVER TAKEN
4002c4e0: 80 a6 a0 00 cmp %i2, 0
rtems_libio_check_count( count );
4002c4e4: 02 80 00 22 be 4002c56c <write+0x98>
<== NEVER TAKEN
4002c4e8: 84 10 20 00 clr %g2
LIBIO_GET_IOP_WITH_ACCESS( fd, iop, LIBIO_FLAGS_WRITE, EBADF );
4002c4ec: 03 10 00 b5 sethi %hi(0x4002d400), %g1
4002c4f0: c2 00 60 e0 ld [ %g1 + 0xe0 ], %g1 ! 4002d4e0 <rtems_libio_number_iops>
4002c4f4: 80 a6 00 01 cmp %i0, %g1
4002c4f8: 1a 80 00 25 bcc 4002c58c <write+0xb8>
<== NEVER TAKEN
4002c4fc: bb 2e 20 01 sll %i0, 1, %i5
<== NOT EXECUTED
4002c500: ba 07 40 18 add %i5, %i0, %i5
<== NOT EXECUTED
4002c504: 31 10 00 d2 sethi %hi(0x40034800), %i0
<== NOT EXECUTED
4002c508: bb 2f 60 04 sll %i5, 4, %i5
<== NOT EXECUTED
4002c50c: b0 16 23 f0 or %i0, 0x3f0, %i0
<== NOT EXECUTED
4002c510: ba 07 40 18 add %i5, %i0, %i5
<== NOT EXECUTED
4002c514: 91 d0 20 09 ta 9
<== NOT EXECUTED
val = *obj;
4002c518: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
*obj = val + arg;
4002c51c: 86 20 b0 00 sub %g2, -4096, %g3
<== NOT EXECUTED
4002c520: c6 27 60 08 st %g3, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4002c524: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4002c528: 01 00 00 00 nop
4002c52c: 84 08 a1 04 and %g2, 0x104, %g2
4002c530: 80 a0 a1 04 cmp %g2, 0x104
4002c534: 12 80 00 10 bne 4002c574 <write+0xa0>
<== NEVER TAKEN
4002c538: 94 10 00 1a mov %i2, %o2
/*
* Now process the write() request.
*/
n = (*iop->pathinfo.handlers->write_h)( iop, buffer, count );
4002c53c: c2 07 60 1c ld [ %i5 + 0x1c ], %g1
4002c540: c2 00 60 0c ld [ %g1 + 0xc ], %g1
4002c544: 92 10 00 19 mov %i1, %o1
4002c548: 9f c0 40 00 call %g1
4002c54c: 90 10 00 1d mov %i5, %o0
4002c550: 84 10 00 08 mov %o0, %g2
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4002c554: 91 d0 20 09 ta 9
<== NOT EXECUTED
*obj = val - arg;
4002c558: c6 07 60 08 ld [ %i5 + 8 ], %g3
<== NOT EXECUTED
4002c55c: 86 00 f0 00 add %g3, -4096, %g3
<== NOT EXECUTED
4002c560: c6 27 60 08 st %g3, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4002c564: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4002c568: 01 00 00 00 nop
rtems_libio_iop_drop( iop );
return n;
}
4002c56c: 81 c7 e0 08 ret
4002c570: 91 e8 00 02 restore %g0, %g2, %o0
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4002c574: 91 d0 20 09 ta 9
<== NOT EXECUTED
4002c578: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
4002c57c: 84 00 b0 00 add %g2, -4096, %g2
<== NOT EXECUTED
4002c580: c4 27 60 08 st %g2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4002c584: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4002c588: 01 00 00 00 nop
<== NOT EXECUTED
LIBIO_GET_IOP_WITH_ACCESS( fd, iop, LIBIO_FLAGS_WRITE, EBADF );
4002c58c: 7f ff bd dd call 4001bd00 <__errno>
<== NOT EXECUTED
4002c590: 01 00 00 00 nop
<== NOT EXECUTED
4002c594: 82 10 20 09 mov 9, %g1 ! 9 <_TLS_Alignment+0x8>
<== NOT EXECUTED
4002c598: 84 10 3f ff mov -1, %g2
<== NOT EXECUTED
4002c59c: 10 bf ff f4 b 4002c56c <write+0x98>
<== NOT EXECUTED
4002c5a0: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
rtems_libio_check_buffer( buffer );
4002c5a4: 7f ff bd d7 call 4001bd00 <__errno>
<== NOT EXECUTED
4002c5a8: 01 00 00 00 nop
<== NOT EXECUTED
4002c5ac: 82 10 20 16 mov 0x16, %g1 ! 16 <_TLS_Alignment+0x15>
<== NOT EXECUTED
4002c5b0: 84 10 3f ff mov -1, %g2
<== NOT EXECUTED
4002c5b4: 10 bf ff ee b 4002c56c <write+0x98>
<== NOT EXECUTED
4002c5b8: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
4001f7c4 <writev>:
ssize_t writev(
int fd,
const struct iovec *iov,
int iovcnt
)
{
4001f7c4: 9d e3 bf a0 save %sp, -96, %sp
<== NOT EXECUTED
if ( iov == NULL )
4001f7c8: 80 a6 60 00 cmp %i1, 0
<== NOT EXECUTED
4001f7cc: 02 80 00 3f be 4001f8c8 <writev+0x104>
<== NOT EXECUTED
4001f7d0: 80 a6 a0 00 cmp %i2, 0
<== NOT EXECUTED
if ( iovcnt <= 0 )
4001f7d4: 04 80 00 3d ble 4001f8c8 <writev+0x104>
<== NOT EXECUTED
4001f7d8: 80 a6 a4 00 cmp %i2, 0x400
<== NOT EXECUTED
if ( iovcnt > IOV_MAX )
4001f7dc: 14 80 00 3b bg 4001f8c8 <writev+0x104>
<== NOT EXECUTED
4001f7e0: bb 2e a0 03 sll %i2, 3, %i5
<== NOT EXECUTED
if ( len > ( size_t ) ( SSIZE_MAX - total ) ) {
4001f7e4: 09 1f ff ff sethi %hi(0x7ffffc00), %g4
<== NOT EXECUTED
4001f7e8: 82 10 00 19 mov %i1, %g1
<== NOT EXECUTED
4001f7ec: ba 07 40 19 add %i5, %i1, %i5
<== NOT EXECUTED
total = 0;
4001f7f0: 96 10 20 00 clr %o3
<== NOT EXECUTED
if ( len > ( size_t ) ( SSIZE_MAX - total ) ) {
4001f7f4: 88 11 23 ff or %g4, 0x3ff, %g4
<== NOT EXECUTED
size_t len = iov[ v ].iov_len;
4001f7f8: c4 00 60 04 ld [ %g1 + 4 ], %g2
<== NOT EXECUTED
if ( len > ( size_t ) ( SSIZE_MAX - total ) ) {
4001f7fc: 86 21 00 0b sub %g4, %o3, %g3
<== NOT EXECUTED
4001f800: 80 a0 80 03 cmp %g2, %g3
<== NOT EXECUTED
4001f804: 18 80 00 31 bgu 4001f8c8 <writev+0x104>
<== NOT EXECUTED
4001f808: 01 00 00 00 nop
<== NOT EXECUTED
if ( iov[ v ].iov_base == NULL && len != 0 ) {
4001f80c: c6 00 40 00 ld [ %g1 ], %g3
<== NOT EXECUTED
4001f810: 80 a0 e0 00 cmp %g3, 0
<== NOT EXECUTED
4001f814: 12 80 00 05 bne 4001f828 <writev+0x64>
<== NOT EXECUTED
4001f818: 96 02 c0 02 add %o3, %g2, %o3
<== NOT EXECUTED
4001f81c: 80 a0 a0 00 cmp %g2, 0
<== NOT EXECUTED
4001f820: 12 80 00 2a bne 4001f8c8 <writev+0x104>
<== NOT EXECUTED
4001f824: 01 00 00 00 nop
<== NOT EXECUTED
4001f828: 82 00 60 08 add %g1, 8, %g1
<== NOT EXECUTED
for ( v = 0 ; v < iovcnt ; ++v ) {
4001f82c: 80 a7 40 01 cmp %i5, %g1
<== NOT EXECUTED
4001f830: 32 bf ff f3 bne,a 4001f7fc <writev+0x38>
<== NOT EXECUTED
4001f834: c4 00 60 04 ld [ %g1 + 4 ], %g2
<== NOT EXECUTED
LIBIO_GET_IOP_WITH_ACCESS( fd, iop, flags, EBADF );
4001f838: 03 10 01 8b sethi %hi(0x40062c00), %g1
<== NOT EXECUTED
4001f83c: c2 00 61 34 ld [ %g1 + 0x134 ], %g1 ! 40062d34 <rtems_libio_number_iops>
<== NOT EXECUTED
4001f840: 80 a6 00 01 cmp %i0, %g1
<== NOT EXECUTED
4001f844: 1a 80 00 2e bcc 4001f8fc <writev+0x138>
<== NOT EXECUTED
4001f848: bb 2e 20 01 sll %i0, 1, %i5
<== NOT EXECUTED
return &rtems_libio_iops[ fd ];
4001f84c: 03 10 01 d3 sethi %hi(0x40074c00), %g1
<== NOT EXECUTED
4001f850: ba 07 40 18 add %i5, %i0, %i5
<== NOT EXECUTED
4001f854: 82 10 61 40 or %g1, 0x140, %g1
<== NOT EXECUTED
4001f858: bb 2f 60 04 sll %i5, 4, %i5
<== NOT EXECUTED
4001f85c: ba 07 40 01 add %i5, %g1, %i5
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4001f860: 91 d0 20 09 ta 9
<== NOT EXECUTED
val = *obj;
4001f864: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
*obj = val + arg;
4001f868: 86 20 b0 00 sub %g2, -4096, %g3
<== NOT EXECUTED
4001f86c: c6 27 60 08 st %g3, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4001f870: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4001f874: 01 00 00 00 nop
<== NOT EXECUTED
LIBIO_GET_IOP_WITH_ACCESS( fd, iop, flags, EBADF );
4001f878: 84 08 a1 04 and %g2, 0x104, %g2
<== NOT EXECUTED
4001f87c: 80 a0 a1 04 cmp %g2, 0x104
<== NOT EXECUTED
4001f880: 12 80 00 19 bne 4001f8e4 <writev+0x120>
<== NOT EXECUTED
4001f884: 80 a2 e0 00 cmp %o3, 0
<== NOT EXECUTED
if ( total > 0 ) {
4001f888: 04 80 00 08 ble 4001f8a8 <writev+0xe4>
<== NOT EXECUTED
4001f88c: 94 10 00 1a mov %i2, %o2
<== NOT EXECUTED
return ( *iop->pathinfo.handlers->writev_h )( iop, iov, iovcnt, total );
4001f890: c2 07 60 1c ld [ %i5 + 0x1c ], %g1
<== NOT EXECUTED
4001f894: c2 00 60 38 ld [ %g1 + 0x38 ], %g1
<== NOT EXECUTED
4001f898: 92 10 00 19 mov %i1, %o1
<== NOT EXECUTED
4001f89c: 9f c0 40 00 call %g1
<== NOT EXECUTED
4001f8a0: 90 10 00 1d mov %i5, %o0
<== NOT EXECUTED
4001f8a4: 96 10 00 08 mov %o0, %o3
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4001f8a8: 91 d0 20 09 ta 9
<== NOT EXECUTED
*obj = val - arg;
4001f8ac: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
4001f8b0: 84 00 b0 00 add %g2, -4096, %g2
<== NOT EXECUTED
4001f8b4: c4 27 60 08 st %g2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4001f8b8: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4001f8bc: 01 00 00 00 nop
<== NOT EXECUTED
iov,
iovcnt,
LIBIO_FLAGS_WRITE,
writev_adapter
);
}
4001f8c0: 81 c7 e0 08 ret
<== NOT EXECUTED
4001f8c4: 91 e8 00 0b restore %g0, %o3, %o0
<== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
4001f8c8: 40 00 ba 56 call 4004e220 <__errno>
<== NOT EXECUTED
4001f8cc: 01 00 00 00 nop
<== NOT EXECUTED
4001f8d0: 82 10 20 16 mov 0x16, %g1 ! 16 <_TLS_Alignment+0x15>
<== NOT EXECUTED
4001f8d4: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED
4001f8d8: 96 10 3f ff mov -1, %o3
<== NOT EXECUTED
4001f8dc: 81 c7 e0 08 ret
<== NOT EXECUTED
4001f8e0: 91 e8 00 0b restore %g0, %o3, %o0
<== NOT EXECUTED
__asm__ volatile ( "ta %1\n\t" : "=r" (psr) : "i" (SPARC_SWTRAP_IRQDIS));
4001f8e4: 91 d0 20 09 ta 9
<== NOT EXECUTED
4001f8e8: c4 07 60 08 ld [ %i5 + 8 ], %g2
<== NOT EXECUTED
4001f8ec: 84 00 b0 00 add %g2, -4096, %g2
<== NOT EXECUTED
4001f8f0: c4 27 60 08 st %g2, [ %i5 + 8 ]
<== NOT EXECUTED
__asm__ volatile ( "ta %0\nnop\n" :: "i" (SPARC_SWTRAP_IRQEN), "r" (_psr));
4001f8f4: 91 d0 20 0a ta 0xa
<== NOT EXECUTED
4001f8f8: 01 00 00 00 nop
<== NOT EXECUTED
LIBIO_GET_IOP_WITH_ACCESS( fd, iop, flags, EBADF );
4001f8fc: 40 00 ba 49 call 4004e220 <__errno>
<== NOT EXECUTED
4001f900: 01 00 00 00 nop
<== NOT EXECUTED
4001f904: 82 10 20 09 mov 9, %g1 ! 9 <_TLS_Alignment+0x8>
<== NOT EXECUTED
4001f908: 96 10 3f ff mov -1, %o3
<== NOT EXECUTED
4001f90c: 10 bf ff f4 b 4001f8dc <writev+0x118>
<== NOT EXECUTED
4001f910: c2 22 00 00 st %g1, [ %o0 ]
<== NOT EXECUTED