=============================================================================== 00042ab8 : #include static void CPU_usage_Per_thread_handler( Thread_Control *the_thread ) { 42ab8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 42abc: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ _Timestamp_Set_to_zero( &the_thread->cpu_time_used ); #else the_thread->cpu_time_used = 0; #endif } 42ac0: 4e5e unlk %fp <== NOT EXECUTED static void CPU_usage_Per_thread_handler( Thread_Control *the_thread ) { #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__ _Timestamp_Set_to_zero( &the_thread->cpu_time_used ); 42ac2: 42a8 0082 clrl %a0@(130) <== NOT EXECUTED 42ac6: 42a8 0086 clrl %a0@(134) <== NOT EXECUTED #else the_thread->cpu_time_used = 0; #endif } =============================================================================== 00041d60 : static inline void Dump_Line( const unsigned char *buffer, int length ) { 41d60: 4e56 ff70 linkw %fp,#-144 <== NOT EXECUTED int i; char line_buffer[120]; line_buffer[0] = '\0'; 41d64: 4200 clrb %d0 <== NOT EXECUTED static inline void Dump_Line( const unsigned char *buffer, int length ) { 41d66: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED int i; char line_buffer[120]; line_buffer[0] = '\0'; 41d6a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED for( i=0 ; i,%a4 <== NOT EXECUTED static inline void Dump_Line( const unsigned char *buffer, int length ) { 41d80: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED int i; char line_buffer[120]; line_buffer[0] = '\0'; 41d84: 1d40 ff88 moveb %d0,%fp@(-120) <== NOT EXECUTED for( i=0 ; i <== NOT EXECUTED sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] ); 41d8a: 4280 clrl %d0 <== NOT EXECUTED 41d8c: 101b moveb %a3@+,%d0 <== NOT EXECUTED int i; char line_buffer[120]; line_buffer[0] = '\0'; for( i=0 ; i <== NOT EXECUTED 41d9a: 2f03 movel %d3,%sp@- <== NOT EXECUTED 41d9c: 4e94 jsr %a4@ <== NOT EXECUTED int i; char line_buffer[120]; line_buffer[0] = '\0'; for( i=0 ; i <== NOT EXECUTED 41da6: 6010 bras 41db8 <== NOT EXECUTED sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] ); for( ; i<16 ; i++ ) strcat( line_buffer, " " ); 41da8: 4879 0005 b2cf pea 5b2cf <== NOT EXECUTED line_buffer[0] = '\0'; for( i=0 ; i <== NOT EXECUTED 41db8: 260e movel %fp,%d3 <== NOT EXECUTED 41dba: 0683 ffff ff88 addil #-120,%d3 <== NOT EXECUTED 41dc0: 47f9 0004 d840 lea 4d840 ,%a3 <== NOT EXECUTED 41dc6: 41f9 0004 d840 lea 4d840 ,%a0 <== NOT EXECUTED 41dcc: 700f moveq #15,%d0 <== NOT EXECUTED 41dce: b082 cmpl %d2,%d0 <== NOT EXECUTED 41dd0: 6cd6 bges 41da8 <== NOT EXECUTED strcat( line_buffer, " " ); strcat( line_buffer, "|" ); 41dd2: 4879 0005 ad1c pea 5ad1c <== NOT EXECUTED for( i=0 ; i,%a3 <== NOT EXECUTED sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] ); for( ; i<16 ; i++ ) strcat( line_buffer, " " ); strcat( line_buffer, "|" ); 41de0: 2f03 movel %d3,%sp@- <== NOT EXECUTED for( i=0 ; i <== NOT EXECUTED sprintf( line_buffer, "%s%c", line_buffer, isprint( buffer[ i ] ) ? buffer[ i ] : '.' ); 41df0: 4281 clrl %d1 <== NOT EXECUTED 41df2: 121a moveb %a2@+,%d1 <== NOT EXECUTED 41df4: 2079 0005 c4b4 moveal 5c4b4 <__ctype_ptr__>,%a0 <== NOT EXECUTED 41dfa: 1030 1801 moveb %a0@(00000001,%d1:l),%d0 <== NOT EXECUTED 41dfe: 49c0 extbl %d0 <== NOT EXECUTED 41e00: 0280 0000 0097 andil #151,%d0 <== NOT EXECUTED for( ; i<16 ; i++ ) strcat( line_buffer, " " ); strcat( line_buffer, "|" ); for( i=0 ; i <== NOT EXECUTED 41e08: 2001 movel %d1,%d0 <== NOT EXECUTED 41e0a: 6002 bras 41e0e <== NOT EXECUTED 41e0c: 702e moveq #46,%d0 <== NOT EXECUTED 41e0e: 2f00 movel %d0,%sp@- <== NOT EXECUTED for( ; i<16 ; i++ ) strcat( line_buffer, " " ); strcat( line_buffer, "|" ); for( i=0 ; i <== NOT EXECUTED 41e1a: 2f03 movel %d3,%sp@- <== NOT EXECUTED 41e1c: 4e93 jsr %a3@ <== NOT EXECUTED for( ; i<16 ; i++ ) strcat( line_buffer, " " ); strcat( line_buffer, "|" ); for( i=0 ; i <== NOT EXECUTED 41e26: 6010 bras 41e38 <== NOT EXECUTED sprintf( line_buffer, "%s%c", line_buffer, isprint( buffer[ i ] ) ? buffer[ i ] : '.' ); for( ; i<16 ; i++ ) strcat( line_buffer, " " ); 41e28: 4879 0005 b2d1 pea 5b2d1 <== NOT EXECUTED strcat( line_buffer, "|" ); for( i=0 ; i <== NOT EXECUTED 41e38: 260e movel %fp,%d3 <== NOT EXECUTED 41e3a: 0683 ffff ff88 addil #-120,%d3 <== NOT EXECUTED 41e40: 45f9 0004 d840 lea 4d840 ,%a2 <== NOT EXECUTED 41e46: 41f9 0004 d840 lea 4d840 ,%a0 <== NOT EXECUTED 41e4c: 700f moveq #15,%d0 <== NOT EXECUTED 41e4e: b082 cmpl %d2,%d0 <== NOT EXECUTED 41e50: 6cd6 bges 41e28 <== NOT EXECUTED strcat( line_buffer, " " ); strcat( line_buffer, "|\n" ); 41e52: 4879 0005 ad23 pea 5ad23 <== NOT EXECUTED 41e58: 2f03 movel %d3,%sp@- <== NOT EXECUTED 41e5a: 4e90 jsr %a0@ <== NOT EXECUTED printk( line_buffer ); 41e5c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 41e5e: 4eb9 0004 35d8 jsr 435d8 <== NOT EXECUTED 41e64: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED } 41e68: 4cee 1c1c ff70 moveml %fp@(-144),%d2-%d4/%a2-%a4 <== NOT EXECUTED 41e6e: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00048bf0 : { IMFS_jnode_t *node = loc->node_access; IMFS_fs_info_t *fs_info; fs_info = loc->mt_entry->fs_info; switch( node->type ) { 48bf0: 7206 moveq #6,%d1 #define MAXSYMLINK 5 int IMFS_Set_handlers( rtems_filesystem_location_info_t *loc ) { 48bf2: 4e56 0000 linkw %fp,#0 48bf6: 206e 0008 moveal %fp@(8),%a0 48bfa: 2f0a movel %a2,%sp@- IMFS_jnode_t *node = loc->node_access; IMFS_fs_info_t *fs_info; fs_info = loc->mt_entry->fs_info; switch( node->type ) { 48bfc: 2450 moveal %a0@,%a2 ) { IMFS_jnode_t *node = loc->node_access; IMFS_fs_info_t *fs_info; fs_info = loc->mt_entry->fs_info; 48bfe: 2268 0010 moveal %a0@(16),%a1 switch( node->type ) { 48c02: 202a 0048 movel %a2@(72),%d0 48c06: 5380 subql #1,%d0 ) { IMFS_jnode_t *node = loc->node_access; IMFS_fs_info_t *fs_info; fs_info = loc->mt_entry->fs_info; 48c08: 2269 0034 moveal %a1@(52),%a1 switch( node->type ) { 48c0c: b280 cmpl %d0,%d1 48c0e: 6546 bcss 48c56 <== NEVER TAKEN 48c10: 303b 0a08 movew %pc@(48c1a ,%d0:l:2),%d0 48c14: 48c0 extl %d0 48c16: 4efb 0802 jmp %pc@(48c1a ,%d0:l) 48c1a: 000e 016 <== NOT EXECUTED 48c1c: 0016 026 <== NOT EXECUTED 48c1e: 0022 042 <== NOT EXECUTED 48c20: 0022 042 <== NOT EXECUTED 48c22: 002e 056 <== NOT EXECUTED 48c24: 002e 056 <== NOT EXECUTED 48c26: 0036 066 <== NOT EXECUTED case IMFS_DIRECTORY: loc->handlers = fs_info->directory_handlers; 48c28: 2169 000c 0008 movel %a1@(12),%a0@(8) break; 48c2e: 6026 bras 48c56 case IMFS_DEVICE: loc->handlers = &IMFS_device_handlers; 48c30: 203c 0005 b418 movel #373784,%d0 48c36: 2140 0008 movel %d0,%a0@(8) break; 48c3a: 601a bras 48c56 case IMFS_SYM_LINK: case IMFS_HARD_LINK: loc->handlers = &IMFS_link_handlers; 48c3c: 223c 0005 b488 movel #373896,%d1 <== NOT EXECUTED 48c42: 2141 0008 movel %d1,%a0@(8) <== NOT EXECUTED break; 48c46: 600e bras 48c56 <== NOT EXECUTED case IMFS_LINEAR_FILE: loc->handlers = fs_info->memfile_handlers; break; case IMFS_MEMORY_FILE: loc->handlers = fs_info->memfile_handlers; 48c48: 2169 0008 0008 movel %a1@(8),%a0@(8) <== NOT EXECUTED break; 48c4e: 6006 bras 48c56 <== NOT EXECUTED case IMFS_FIFO: loc->handlers = fs_info->fifo_handlers; 48c50: 2169 0010 0008 movel %a1@(16),%a0@(8) <== NOT EXECUTED break; } return 0; } 48c56: 245f moveal %sp@+,%a2 48c58: 4280 clrl %d0 48c5a: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00048a24 : IMFS_jnode_t *IMFS_allocate_node( IMFS_jnode_types_t type, const char *name, mode_t mode ) { 48a24: 4e56 fff8 linkw %fp,#-8 48a28: 2f0a movel %a2,%sp@- struct timeval tv; /* * Allocate an IMFS jnode */ node = calloc( 1, sizeof( IMFS_jnode_t ) ); 48a2a: 4878 0060 pea 60 48a2e: 4878 0001 pea 1 48a32: 4eb9 0004 241c jsr 4241c if ( !node ) 48a38: 508f addql #8,%sp struct timeval tv; /* * Allocate an IMFS jnode */ node = calloc( 1, sizeof( IMFS_jnode_t ) ); 48a3a: 2440 moveal %d0,%a2 if ( !node ) 48a3c: 4a80 tstl %d0 48a3e: 6758 beqs 48a98 <== NEVER TAKEN /* * Fill in the basic information */ node->st_nlink = 1; node->type = type; strncpy( node->name, name, IMFS_NAME_MAX ); 48a40: 4878 0020 pea 20 48a44: 2f2e 000c movel %fp@(12),%sp@- /* * Fill in the basic information */ node->st_nlink = 1; node->type = type; 48a48: 256e 0008 0048 movel %fp@(8),%a2@(72) strncpy( node->name, name, IMFS_NAME_MAX ); 48a4e: 486a 000c pea %a2@(12) return NULL; /* * Fill in the basic information */ node->st_nlink = 1; 48a52: 7001 moveq #1,%d0 48a54: 3540 0032 movew %d0,%a2@(50) node->type = type; strncpy( node->name, name, IMFS_NAME_MAX ); 48a58: 4eb9 0004 dcfc jsr 4dcfc /* * Fill in the mode and permission information for the jnode structure. */ node->st_mode = mode; 48a5e: 256e 0010 002e movel %fp@(16),%a2@(46) #if defined(RTEMS_POSIX_API) node->st_uid = geteuid(); 48a64: 4eb9 0004 97d4 jsr 497d4 48a6a: 3540 0038 movew %d0,%a2@(56) node->st_gid = getegid(); 48a6e: 4eb9 0004 97c0 jsr 497c0 #endif /* * Now set all the times. */ gettimeofday( &tv, 0 ); 48a74: 42a7 clrl %sp@- 48a76: 486e fff8 pea %fp@(-8) * Fill in the mode and permission information for the jnode structure. */ node->st_mode = mode; #if defined(RTEMS_POSIX_API) node->st_uid = geteuid(); node->st_gid = getegid(); 48a7a: 3540 003a movew %d0,%a2@(58) #endif /* * Now set all the times. */ gettimeofday( &tv, 0 ); 48a7e: 4eb9 0004 283c jsr 4283c node->stat_atime = (time_t) tv.tv_sec; 48a84: 202e fff8 movel %fp@(-8),%d0 node->stat_mtime = (time_t) tv.tv_sec; node->stat_ctime = (time_t) tv.tv_sec; return node; 48a88: 4fef 0014 lea %sp@(20),%sp /* * Now set all the times. */ gettimeofday( &tv, 0 ); node->stat_atime = (time_t) tv.tv_sec; 48a8c: 2540 003c movel %d0,%a2@(60) node->stat_mtime = (time_t) tv.tv_sec; 48a90: 2540 0040 movel %d0,%a2@(64) node->stat_ctime = (time_t) tv.tv_sec; 48a94: 2540 0044 movel %d0,%a2@(68) return node; } 48a98: 200a movel %a2,%d0 48a9a: 246e fff4 moveal %fp@(-12),%a2 48a9e: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00049434 : void IMFS_check_node_remove( IMFS_jnode_t *jnode ) { 49434: 4e56 0000 linkw %fp,#0 49438: 2f0a movel %a2,%sp@- 4943a: 246e 0008 moveal %fp@(8),%a2 if ( !rtems_libio_is_file_open( jnode ) && jnode->st_nlink < 1 ) { 4943e: 2f0a movel %a2,%sp@- 49440: 4eb9 0004 99d2 jsr 499d2 49446: 588f addql #4,%sp 49448: 4a80 tstl %d0 4944a: 664e bnes 4949a <== ALWAYS TAKEN 4944c: 4a6a 0032 tstw %a2@(50) <== NOT EXECUTED 49450: 6648 bnes 4949a <== NOT EXECUTED if ( rtems_filesystem_current.node_access == jnode ) 49452: 2079 0005 c2ec moveal 5c2ec ,%a0 <== NOT EXECUTED 49458: b5e8 0004 cmpal %a0@(4),%a2 <== NOT EXECUTED 4945c: 6604 bnes 49462 <== NOT EXECUTED rtems_filesystem_current.node_access = NULL; 4945e: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED switch ( jnode->type ) { 49462: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED 49466: 7204 moveq #4,%d1 <== NOT EXECUTED 49468: b280 cmpl %d0,%d1 <== NOT EXECUTED 4946a: 6712 beqs 4947e <== NOT EXECUTED 4946c: 123c 0005 moveb #5,%d1 <== NOT EXECUTED 49470: b280 cmpl %d0,%d1 <== NOT EXECUTED 49472: 6616 bnes 4948a <== NOT EXECUTED case IMFS_MEMORY_FILE: IMFS_memfile_remove( jnode ); 49474: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49476: 4eb9 0004 b5e4 jsr 4b5e4 <== NOT EXECUTED 4947c: 600a bras 49488 <== NOT EXECUTED break; case IMFS_SYM_LINK: free( jnode->info.sym_link.name ); 4947e: 2f2a 004c movel %a2@(76),%sp@- <== NOT EXECUTED 49482: 4eb9 0004 27b4 jsr 427b4 <== NOT EXECUTED break; 49488: 588f addql #4,%sp <== NOT EXECUTED default: break; } free( jnode ); 4948a: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED } } 4948e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 49492: 4e5e unlk %fp <== NOT EXECUTED break; default: break; } free( jnode ); 49494: 4ef9 0004 27b4 jmp 427b4 <== NOT EXECUTED } } 4949a: 246e fffc moveal %fp@(-4),%a2 4949e: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000489bc : int IMFS_chown( rtems_filesystem_location_info_t *pathloc, /* IN */ uid_t owner, /* IN */ gid_t group /* IN */ ) { 489bc: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED IMFS_jnode_t *jnode; #if defined(RTEMS_POSIX_API) uid_t st_uid; #endif jnode = (IMFS_jnode_t *) pathloc->node_access; 489c0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED int IMFS_chown( rtems_filesystem_location_info_t *pathloc, /* IN */ uid_t owner, /* IN */ gid_t group /* IN */ ) { 489c4: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED IMFS_jnode_t *jnode; #if defined(RTEMS_POSIX_API) uid_t st_uid; #endif jnode = (IMFS_jnode_t *) pathloc->node_access; 489c8: 2450 moveal %a0@,%a2 <== NOT EXECUTED */ #if defined(RTEMS_POSIX_API) st_uid = geteuid(); if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) ) 489ca: 4284 clrl %d4 <== NOT EXECUTED int IMFS_chown( rtems_filesystem_location_info_t *pathloc, /* IN */ uid_t owner, /* IN */ gid_t group /* IN */ ) { 489cc: 362e 000e movew %fp@(14),%d3 <== NOT EXECUTED 489d0: 342e 0012 movew %fp@(18),%d2 <== NOT EXECUTED /* * Verify I am the owner of the node or the super user. */ #if defined(RTEMS_POSIX_API) st_uid = geteuid(); 489d4: 4eb9 0004 97d4 jsr 497d4 <== NOT EXECUTED if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) ) 489da: 4281 clrl %d1 <== NOT EXECUTED 489dc: 3800 movew %d0,%d4 <== NOT EXECUTED 489de: 322a 0038 movew %a2@(56),%d1 <== NOT EXECUTED 489e2: b284 cmpl %d4,%d1 <== NOT EXECUTED 489e4: 6714 beqs 489fa <== NOT EXECUTED 489e6: 4a40 tstw %d0 <== NOT EXECUTED 489e8: 6710 beqs 489fa <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EPERM ); 489ea: 4eb9 0004 c88c jsr 4c88c <__errno> <== NOT EXECUTED 489f0: 2040 moveal %d0,%a0 <== NOT EXECUTED 489f2: 7001 moveq #1,%d0 <== NOT EXECUTED 489f4: 2080 movel %d0,%a0@ <== NOT EXECUTED 489f6: 70ff moveq #-1,%d0 <== NOT EXECUTED 489f8: 601e bras 48a18 <== NOT EXECUTED #endif jnode->st_uid = owner; 489fa: 3543 0038 movew %d3,%a2@(56) <== NOT EXECUTED jnode->st_gid = group; 489fe: 3542 003a movew %d2,%a2@(58) <== NOT EXECUTED IMFS_update_ctime( jnode ); 48a02: 42a7 clrl %sp@- <== NOT EXECUTED 48a04: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 48a08: 4eb9 0004 283c jsr 4283c <== NOT EXECUTED 48a0e: 256e fff8 0044 movel %fp@(-8),%a2@(68) <== NOT EXECUTED return 0; 48a14: 508f addql #8,%sp <== NOT EXECUTED 48a16: 4280 clrl %d0 <== NOT EXECUTED } 48a18: 4cee 041c ffe8 moveml %fp@(-24),%d2-%d4/%a2 <== NOT EXECUTED 48a1e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00048aa2 : IMFS_jnode_types_t type, const char *name, mode_t mode, const IMFS_types_union *info ) { 48aa2: 4e56 ffec linkw %fp,#-20 48aa6: 206e 0008 moveal %fp@(8),%a0 48aaa: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ 48aae: 242e 000c movel %fp@(12),%d2 48ab2: 246e 0018 moveal %fp@(24),%a2 IMFS_fs_info_t *fs_info; /* * MUST have a parent node to call this routine. */ if ( parent_loc == NULL ) 48ab6: 4a88 tstl %a0 48ab8: 6700 00ee beqw 48ba8 return NULL; parent = parent_loc->node_access; 48abc: 2850 moveal %a0@,%a4 fs_info = parent_loc->mt_entry->fs_info; /* * Reject creation of FIFOs if support is disabled. */ if ( type == IMFS_FIFO && 48abe: 7007 moveq #7,%d0 */ if ( parent_loc == NULL ) return NULL; parent = parent_loc->node_access; fs_info = parent_loc->mt_entry->fs_info; 48ac0: 2068 0010 moveal %a0@(16),%a0 48ac4: 2668 0034 moveal %a0@(52),%a3 /* * Reject creation of FIFOs if support is disabled. */ if ( type == IMFS_FIFO && 48ac8: b082 cmpl %d2,%d0 48aca: 660e bnes 48ada <== ALWAYS TAKEN 48acc: 223c 0005 b3a8 movel #373672,%d1 <== NOT EXECUTED 48ad2: b2ab 0010 cmpl %a3@(16),%d1 <== NOT EXECUTED 48ad6: 6700 00d0 beqw 48ba8 <== NOT EXECUTED return NULL; /* * Allocate filesystem node and fill in basic information */ node = IMFS_allocate_node( type, name, mode & ~rtems_filesystem_umask ); 48ada: 2079 0005 c2ec moveal 5c2ec ,%a0 48ae0: 2028 002c movel %a0@(44),%d0 48ae4: 4680 notl %d0 48ae6: c0ae 0014 andl %fp@(20),%d0 48aea: 2f00 movel %d0,%sp@- 48aec: 2f2e 0010 movel %fp@(16),%sp@- 48af0: 2f02 movel %d2,%sp@- 48af2: 4eb9 0004 8a24 jsr 48a24 if ( !node ) 48af8: 4fef 000c lea %sp@(12),%sp return NULL; /* * Allocate filesystem node and fill in basic information */ node = IMFS_allocate_node( type, name, mode & ~rtems_filesystem_umask ); 48afc: 2a40 moveal %d0,%a5 if ( !node ) 48afe: 4a80 tstl %d0 48b00: 6700 00a8 beqw 48baa return NULL; /* * Set the type specific information */ if ( type == IMFS_DIRECTORY ) { 48b04: 7001 moveq #1,%d0 48b06: b082 cmpl %d2,%d0 48b08: 6616 bnes 48b20 */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail( Chain_Control *the_chain ) { return (Chain_Node *) &the_chain->permanent_null; 48b0a: 41ed 0050 lea %a5@(80),%a0 48b0e: 2b48 004c movel %a0,%a5@(76) rtems_chain_initialize_empty(&node->info.directory.Entries); 48b12: 41ed 004c lea %a5@(76),%a0 RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); the_chain->permanent_null = NULL; 48b16: 42ad 0050 clrl %a5@(80) 48b1a: 2b48 0054 movel %a0,%a5@(84) 48b1e: 6066 bras 48b86 } else if ( type == IMFS_HARD_LINK ) { 48b20: 7003 moveq #3,%d0 48b22: b082 cmpl %d2,%d0 48b24: 6706 beqs 48b2c <== NEVER TAKEN node->info.hard_link.link_node = info->hard_link.link_node; } else if ( type == IMFS_SYM_LINK ) { 48b26: 7204 moveq #4,%d1 48b28: b282 cmpl %d2,%d1 48b2a: 6606 bnes 48b32 <== ALWAYS TAKEN node->info.sym_link.name = info->sym_link.name; 48b2c: 2b52 004c movel %a2@,%a5@(76) <== NOT EXECUTED 48b30: 6054 bras 48b86 <== NOT EXECUTED } else if ( type == IMFS_DEVICE ) { 48b32: 7002 moveq #2,%d0 48b34: b082 cmpl %d2,%d0 48b36: 660c bnes 48b44 <== NEVER TAKEN node->info.device.major = info->device.major; 48b38: 2b52 004c movel %a2@,%a5@(76) node->info.device.minor = info->device.minor; 48b3c: 2b6a 0004 0050 movel %a2@(4),%a5@(80) 48b42: 6042 bras 48b86 } else if ( type == IMFS_LINEAR_FILE ) { 48b44: 7206 moveq #6,%d1 <== NOT EXECUTED 48b46: b282 cmpl %d2,%d1 <== NOT EXECUTED 48b48: 6612 bnes 48b5c <== NOT EXECUTED node->info.linearfile.size = 0; node->info.linearfile.direct = 0; 48b4a: 42ad 0054 clrl %a5@(84) <== NOT EXECUTED node->info.sym_link.name = info->sym_link.name; } else if ( type == IMFS_DEVICE ) { node->info.device.major = info->device.major; node->info.device.minor = info->device.minor; } else if ( type == IMFS_LINEAR_FILE ) { node->info.linearfile.size = 0; 48b4e: 4280 clrl %d0 <== NOT EXECUTED 48b50: 4281 clrl %d1 <== NOT EXECUTED 48b52: 2b40 004c movel %d0,%a5@(76) <== NOT EXECUTED 48b56: 2b41 0050 movel %d1,%a5@(80) <== NOT EXECUTED 48b5a: 602a bras 48b86 <== NOT EXECUTED node->info.linearfile.direct = 0; } else if ( type == IMFS_MEMORY_FILE ) { 48b5c: 7205 moveq #5,%d1 <== NOT EXECUTED 48b5e: b282 cmpl %d2,%d1 <== NOT EXECUTED 48b60: 661a bnes 48b7c <== NOT EXECUTED node->info.file.size = 0; node->info.file.indirect = 0; 48b62: 42ad 0054 clrl %a5@(84) <== NOT EXECUTED node->info.device.minor = info->device.minor; } else if ( type == IMFS_LINEAR_FILE ) { node->info.linearfile.size = 0; node->info.linearfile.direct = 0; } else if ( type == IMFS_MEMORY_FILE ) { node->info.file.size = 0; 48b66: 4280 clrl %d0 <== NOT EXECUTED 48b68: 4281 clrl %d1 <== NOT EXECUTED node->info.file.indirect = 0; node->info.file.doubly_indirect = 0; 48b6a: 42ad 0058 clrl %a5@(88) <== NOT EXECUTED node->info.device.minor = info->device.minor; } else if ( type == IMFS_LINEAR_FILE ) { node->info.linearfile.size = 0; node->info.linearfile.direct = 0; } else if ( type == IMFS_MEMORY_FILE ) { node->info.file.size = 0; 48b6e: 2b40 004c movel %d0,%a5@(76) <== NOT EXECUTED 48b72: 2b41 0050 movel %d1,%a5@(80) <== NOT EXECUTED node->info.file.indirect = 0; node->info.file.doubly_indirect = 0; node->info.file.triply_indirect = 0; 48b76: 42ad 005c clrl %a5@(92) <== NOT EXECUTED 48b7a: 600a bras 48b86 <== NOT EXECUTED } else if ( type == IMFS_FIFO ) { 48b7c: 7207 moveq #7,%d1 <== NOT EXECUTED 48b7e: b282 cmpl %d2,%d1 <== NOT EXECUTED 48b80: 6604 bnes 48b86 <== NOT EXECUTED node->info.fifo.pipe = NULL; 48b82: 42ad 004c clrl %a5@(76) <== NOT EXECUTED /* * This node MUST have a parent, so put it in that directory list. */ node->Parent = parent; node->st_ino = ++fs_info->ino_count; 48b86: 202b 0004 movel %a3@(4),%d0 48b8a: 5280 addql #1,%d0 } /* * This node MUST have a parent, so put it in that directory list. */ node->Parent = parent; 48b8c: 2b4c 0008 movel %a4,%a5@(8) node->st_ino = ++fs_info->ino_count; 48b90: 2740 0004 movel %d0,%a3@(4) 48b94: 2b40 0034 movel %d0,%a5@(52) 48b98: 2f0d movel %a5,%sp@- 48b9a: 486c 004c pea %a4@(76) 48b9e: 4eb9 0004 5fa8 jsr 45fa8 <_Chain_Append> rtems_chain_append( &parent->info.directory.Entries, &node->Node ); return node; 48ba4: 508f addql #8,%sp 48ba6: 6002 bras 48baa /* * Reject creation of FIFOs if support is disabled. */ if ( type == IMFS_FIFO && fs_info->fifo_handlers == &rtems_filesystem_handlers_default ) return NULL; 48ba8: 9bcd subal %a5,%a5 <== NOT EXECUTED node->st_ino = ++fs_info->ino_count; rtems_chain_append( &parent->info.directory.Entries, &node->Node ); return node; } 48baa: 200d movel %a5,%d0 48bac: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 48bb2: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000493f0 : #include #include "imfs.h" void IMFS_create_orphan( IMFS_jnode_t *jnode ) { 493f0: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 493f4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 493f6: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED if ( jnode->Parent != NULL ) { 493fa: 4aaa 0008 tstl %a2@(8) <== NOT EXECUTED 493fe: 670e beqs 4940e <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void rtems_chain_extract( rtems_chain_node *the_node ) { _Chain_Extract( the_node ); 49400: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49402: 4eb9 0004 5fe0 jsr 45fe0 <_Chain_Extract> <== NOT EXECUTED rtems_chain_extract( &jnode->Node ); jnode->Parent = NULL; 49408: 588f addql #4,%sp <== NOT EXECUTED 4940a: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED } --jnode->st_nlink; 4940e: 302a 0032 movew %a2@(50),%d0 <== NOT EXECUTED 49412: 5380 subql #1,%d0 <== NOT EXECUTED 49414: 3540 0032 movew %d0,%a2@(50) <== NOT EXECUTED IMFS_update_ctime( jnode ); 49418: 42a7 clrl %sp@- <== NOT EXECUTED 4941a: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4941e: 4eb9 0004 283c jsr 4283c <== NOT EXECUTED 49424: 256e fff8 0044 movel %fp@(-8),%a2@(68) <== NOT EXECUTED 4942a: 508f addql #8,%sp <== NOT EXECUTED } 4942c: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 49430: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00048bb6 : return node; } IMFS_jnode_t *IMFS_create_root_node(void) { 48bb6: 4e56 0000 linkw %fp,#0 IMFS_jnode_t *node; /* * Allocate filesystem node and fill in basic information */ node = IMFS_allocate_node( IMFS_DIRECTORY, "", (S_IFDIR | 0755) ); 48bba: 4878 41ed pea 41ed 48bbe: 4879 0005 b1f8 pea 5b1f8 48bc4: 4878 0001 pea 1 48bc8: 4eb9 0004 8a24 jsr 48a24 if ( !node ) 48bce: 4fef 000c lea %sp@(12),%sp 48bd2: 4a80 tstl %d0 48bd4: 6716 beqs 48bec <== NEVER TAKEN */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail( Chain_Control *the_chain ) { return (Chain_Node *) &the_chain->permanent_null; 48bd6: 2240 moveal %d0,%a1 48bd8: 2040 moveal %d0,%a0 48bda: 43e9 0050 lea %a1@(80),%a1 48bde: 2149 004c movel %a1,%a0@(76) /* * Set the type specific information * * NOTE: Root node is always a directory. */ rtems_chain_initialize_empty(&node->info.directory.Entries); 48be2: 5989 subql #4,%a1 RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); the_chain->permanent_null = NULL; 48be4: 42a8 0050 clrl %a0@(80) 48be8: 2149 0054 movel %a1,%a0@(84) return node; } 48bec: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000447e8 : * NOTE: Assuming the "/" directory is bad. * Not checking that the starting directory is in an IMFS is bad. */ void IMFS_dump( void ) { 447e8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED fprintf(stdout, "*************** Dump of Entire IMFS ***************\n" ); 447ec: 2079 0006 1e80 moveal 61e80 <_impure_ptr>,%a0 <== NOT EXECUTED * NOTE: Assuming the "/" directory is bad. * Not checking that the starting directory is in an IMFS is bad. */ void IMFS_dump( void ) { 447f2: 2f0a movel %a2,%sp@- <== NOT EXECUTED fprintf(stdout, "*************** Dump of Entire IMFS ***************\n" ); 447f4: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 447f8: 45f9 0005 0bb0 lea 50bb0 ,%a2 <== NOT EXECUTED 447fe: 4879 0006 054e pea 6054e <== NOT EXECUTED 44804: 4e92 jsr %a2@ <== NOT EXECUTED fprintf(stdout, "/\n" ); 44806: 2079 0006 1e80 moveal 61e80 <_impure_ptr>,%a0 <== NOT EXECUTED 4480c: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44810: 4879 0006 0583 pea 60583 <== NOT EXECUTED 44816: 4e92 jsr %a2@ <== NOT EXECUTED IMFS_dump_directory( rtems_filesystem_root.node_access, 0 ); 44818: 2079 0006 1dbc moveal 61dbc ,%a0 <== NOT EXECUTED 4481e: 42a7 clrl %sp@- <== NOT EXECUTED 44820: 2f28 0018 movel %a0@(24),%sp@- <== NOT EXECUTED 44824: 4eb9 0004 4770 jsr 44770 <== NOT EXECUTED fprintf(stdout, "*************** End of Dump ***************\n" ); 4482a: 2079 0006 1e80 moveal 61e80 <_impure_ptr>,%a0 <== NOT EXECUTED 44830: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44834: 4879 0006 0586 pea 60586 <== NOT EXECUTED 4483a: 4e92 jsr %a2@ <== NOT EXECUTED } 4483c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED void IMFS_dump( void ) { fprintf(stdout, "*************** Dump of Entire IMFS ***************\n" ); fprintf(stdout, "/\n" ); IMFS_dump_directory( rtems_filesystem_root.node_access, 0 ); fprintf(stdout, "*************** End of Dump ***************\n" ); 44840: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED } 44844: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00044770 : */ void IMFS_dump_directory( IMFS_jnode_t *the_directory, int level ) { 44770: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 44774: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 44778: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@ <== NOT EXECUTED 4477c: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail( Chain_Control *the_chain ) { return (Chain_Node *) &the_chain->permanent_null; 44780: 2a08 movel %a0,%d5 <== NOT EXECUTED for ( i=0 ; i<=level ; i++ ) fprintf(stdout, "...." ); IMFS_print_jnode( the_jnode ); if ( the_jnode->type == IMFS_DIRECTORY ) IMFS_dump_directory( the_jnode, level + 1 ); 44782: 2803 movel %d3,%d4 <== NOT EXECUTED 44784: 0685 0000 0050 addil #80,%d5 <== NOT EXECUTED the_node = the_node->next ) { the_jnode = (IMFS_jnode_t *) the_node; for ( i=0 ; i<=level ; i++ ) fprintf(stdout, "...." ); 4478a: 4bf9 0005 0bb0 lea 50bb0 ,%a5 <== NOT EXECUTED IMFS_print_jnode( the_jnode ); 44790: 49f9 0004 4660 lea 44660 ,%a4 <== NOT EXECUTED if ( the_jnode->type == IMFS_DIRECTORY ) IMFS_dump_directory( the_jnode, level + 1 ); 44796: 5284 addql #1,%d4 <== NOT EXECUTED 44798: 47f9 0004 4770 lea 44770 ,%a3 <== NOT EXECUTED IMFS_assert( level >= 0 ); IMFS_assert( the_directory->type == IMFS_DIRECTORY ); the_chain = &the_directory->info.directory.Entries; for ( the_node = the_chain->first; 4479e: 2468 004c moveal %a0@(76),%a2 <== NOT EXECUTED 447a2: 6036 bras 447da <== NOT EXECUTED !rtems_chain_is_tail( the_chain, the_node ); the_node = the_node->next ) { the_jnode = (IMFS_jnode_t *) the_node; for ( i=0 ; i<=level ; i++ ) 447a4: 4282 clrl %d2 <== NOT EXECUTED 447a6: 6016 bras 447be <== NOT EXECUTED fprintf(stdout, "...." ); 447a8: 2079 0006 1e80 moveal 61e80 <_impure_ptr>,%a0 <== NOT EXECUTED !rtems_chain_is_tail( the_chain, the_node ); the_node = the_node->next ) { the_jnode = (IMFS_jnode_t *) the_node; for ( i=0 ; i<=level ; i++ ) 447ae: 5282 addql #1,%d2 <== NOT EXECUTED fprintf(stdout, "...." ); 447b0: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 447b4: 4879 0006 0549 pea 60549 <== NOT EXECUTED 447ba: 4e95 jsr %a5@ <== NOT EXECUTED !rtems_chain_is_tail( the_chain, the_node ); the_node = the_node->next ) { the_jnode = (IMFS_jnode_t *) the_node; for ( i=0 ; i<=level ; i++ ) 447bc: 508f addql #8,%sp <== NOT EXECUTED 447be: b682 cmpl %d2,%d3 <== NOT EXECUTED 447c0: 6ce6 bges 447a8 <== NOT EXECUTED fprintf(stdout, "...." ); IMFS_print_jnode( the_jnode ); 447c2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 447c4: 4e94 jsr %a4@ <== NOT EXECUTED if ( the_jnode->type == IMFS_DIRECTORY ) 447c6: 588f addql #4,%sp <== NOT EXECUTED 447c8: 7001 moveq #1,%d0 <== NOT EXECUTED 447ca: b0aa 0048 cmpl %a2@(72),%d0 <== NOT EXECUTED 447ce: 6608 bnes 447d8 <== NOT EXECUTED IMFS_dump_directory( the_jnode, level + 1 ); 447d0: 2f04 movel %d4,%sp@- <== NOT EXECUTED 447d2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 447d4: 4e93 jsr %a3@ <== NOT EXECUTED 447d6: 508f addql #8,%sp <== NOT EXECUTED the_chain = &the_directory->info.directory.Entries; for ( the_node = the_chain->first; !rtems_chain_is_tail( the_chain, the_node ); the_node = the_node->next ) { 447d8: 2452 moveal %a2@,%a2 <== NOT EXECUTED IMFS_assert( level >= 0 ); IMFS_assert( the_directory->type == IMFS_DIRECTORY ); the_chain = &the_directory->info.directory.Entries; for ( the_node = the_chain->first; 447da: ba8a cmpl %a2,%d5 <== NOT EXECUTED 447dc: 66c6 bnes 447a4 <== NOT EXECUTED fprintf(stdout, "...." ); IMFS_print_jnode( the_jnode ); if ( the_jnode->type == IMFS_DIRECTORY ) IMFS_dump_directory( the_jnode, level + 1 ); } } 447de: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED 447e4: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00048d18 : char token[ IMFS_NAME_MAX + 1 ]; rtems_filesystem_location_info_t newloc; IMFS_jnode_t *node; int result; if ( !rtems_libio_is_valid_perms( flags ) ) { 48d18: 70f8 moveq #-8,%d0 const char *pathname, /* IN */ size_t pathnamelen, /* IN */ int flags, /* IN */ rtems_filesystem_location_info_t *pathloc /* IN/OUT */ ) { 48d1a: 4e56 ff9c linkw %fp,#-100 48d1e: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ 48d22: 282e 0010 movel %fp@(16),%d4 char token[ IMFS_NAME_MAX + 1 ]; rtems_filesystem_location_info_t newloc; IMFS_jnode_t *node; int result; if ( !rtems_libio_is_valid_perms( flags ) ) { 48d26: c084 andl %d4,%d0 const char *pathname, /* IN */ size_t pathnamelen, /* IN */ int flags, /* IN */ rtems_filesystem_location_info_t *pathloc /* IN/OUT */ ) { 48d28: 2a6e 0008 moveal %fp@(8),%a5 48d2c: 286e 000c moveal %fp@(12),%a4 48d30: 246e 0014 moveal %fp@(20),%a2 char token[ IMFS_NAME_MAX + 1 ]; rtems_filesystem_location_info_t newloc; IMFS_jnode_t *node; int result; if ( !rtems_libio_is_valid_perms( flags ) ) { 48d34: 670e beqs 48d44 <== ALWAYS TAKEN rtems_set_errno_and_return_minus_one( EIO ); 48d36: 4eb9 0004 c88c jsr 4c88c <__errno> <== NOT EXECUTED 48d3c: 7c05 moveq #5,%d6 <== NOT EXECUTED 48d3e: 2040 moveal %d0,%a0 <== NOT EXECUTED 48d40: 2086 movel %d6,%a0@ <== NOT EXECUTED 48d42: 603e bras 48d82 <== NOT EXECUTED * Evaluate all tokens until we are done or an error occurs. */ while( (type != IMFS_NO_MORE_PATH) && (type != IMFS_INVALID_TOKEN) ) { type = IMFS_get_token( &pathname[i], pathnamelen, token, &len ); 48d44: 2a0e movel %fp,%d5 size_t pathnamelen, /* IN */ int flags, /* IN */ rtems_filesystem_location_info_t *pathloc /* IN/OUT */ ) { int i = 0; 48d46: 4282 clrl %d2 * Evaluate all tokens until we are done or an error occurs. */ while( (type != IMFS_NO_MORE_PATH) && (type != IMFS_INVALID_TOKEN) ) { type = IMFS_get_token( &pathname[i], pathnamelen, token, &len ); 48d48: 0685 ffff ffc7 addil #-57,%d5 } /* * Otherwise find the token name in the present location. */ node = IMFS_find_match_in_dir( node, token ); 48d4e: 2e3c 0004 92d0 movel #299728,%d7 /* * This was filled in by the caller and is valid in the * mount table. */ node = pathloc->node_access; 48d54: 2652 moveal %a2@,%a3 * Evaluate all tokens until we are done or an error occurs. */ while( (type != IMFS_NO_MORE_PATH) && (type != IMFS_INVALID_TOKEN) ) { type = IMFS_get_token( &pathname[i], pathnamelen, token, &len ); 48d56: 486e fffc pea %fp@(-4) 48d5a: 2f05 movel %d5,%sp@- 48d5c: 2f0c movel %a4,%sp@- 48d5e: 4875 2800 pea %a5@(00000000,%d2:l) 48d62: 4eb9 0004 933c jsr 4933c pathnamelen -= len; 48d68: 2c2e fffc movel %fp@(-4),%d6 * Evaluate all tokens until we are done or an error occurs. */ while( (type != IMFS_NO_MORE_PATH) && (type != IMFS_INVALID_TOKEN) ) { type = IMFS_get_token( &pathname[i], pathnamelen, token, &len ); 48d6c: 2600 movel %d0,%d3 pathnamelen -= len; i += len; if ( !pathloc->node_access ) 48d6e: 4fef 0010 lea %sp@(16),%sp 48d72: 4a92 tstl %a2@ 48d74: 6612 bnes 48d88 <== ALWAYS TAKEN rtems_set_errno_and_return_minus_one( ENOENT ); 48d76: 4eb9 0004 c88c jsr 4c88c <__errno> 48d7c: 7a02 moveq #2,%d5 48d7e: 2040 moveal %d0,%a0 48d80: 2085 movel %d5,%a0@ 48d82: 76ff moveq #-1,%d3 48d84: 6000 017c braw 48f02 /* * I cannot move out of this directory without execute permission. */ if ( type != IMFS_NO_MORE_PATH ) 48d88: 4a80 tstl %d0 48d8a: 671c beqs 48da8 if ( node->type == IMFS_DIRECTORY ) 48d8c: 7001 moveq #1,%d0 48d8e: b0ab 0048 cmpl %a3@(72),%d0 48d92: 6614 bnes 48da8 <== NEVER TAKEN if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_SEARCH ) ) 48d94: 4878 0001 pea 1 48d98: 2f0a movel %a2,%sp@- 48d9a: 4eb9 0004 8c5e jsr 48c5e 48da0: 508f addql #8,%sp 48da2: 4a80 tstl %d0 48da4: 6700 014a beqw 48ef0 rtems_set_errno_and_return_minus_one( EACCES ); node = pathloc->node_access; 48da8: 2652 moveal %a2@,%a3 */ while( (type != IMFS_NO_MORE_PATH) && (type != IMFS_INVALID_TOKEN) ) { type = IMFS_get_token( &pathname[i], pathnamelen, token, &len ); pathnamelen -= len; 48daa: 99c6 subal %d6,%a4 i += len; 48dac: d486 addl %d6,%d2 if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_SEARCH ) ) rtems_set_errno_and_return_minus_one( EACCES ); node = pathloc->node_access; switch( type ) { 48dae: 7003 moveq #3,%d0 48db0: b083 cmpl %d3,%d0 48db2: 6742 beqs 48df6 48db4: 7204 moveq #4,%d1 48db6: b283 cmpl %d3,%d1 48db8: 6700 00aa beqw 48e64 48dbc: 103c 0002 moveb #2,%d0 48dc0: b083 cmpl %d3,%d0 48dc2: 6600 00b0 bnew 48e74 case IMFS_UP_DIR: /* * Am I at the root of all filesystems? (chroot'ed?) */ if ( pathloc->node_access == rtems_filesystem_root.node_access ) 48dc6: 2079 0005 c2ec moveal 5c2ec ,%a0 <== NOT EXECUTED 48dcc: b7e8 0018 cmpal %a0@(24),%a3 <== NOT EXECUTED 48dd0: 6784 beqs 48d56 <== NOT EXECUTED /* * Am I at the root of this mounted filesystem? */ if (pathloc->node_access == pathloc->mt_entry->mt_fs_root.node_access) { 48dd2: 206a 0010 moveal %a2@(16),%a0 <== NOT EXECUTED /* * Am I at the root of this mounted filesystem? */ if (pathloc->node_access == 48dd6: b7e8 001c cmpal %a0@(28),%a3 <== NOT EXECUTED 48dda: 6614 bnes 48df0 <== NOT EXECUTED */ if ( pathloc->node_access == rtems_filesystem_root.node_access ) { break; /* Throw out the .. in this case */ } else { newloc = pathloc->mt_entry->mt_point_node; 48ddc: 4878 0014 pea 14 <== NOT EXECUTED 48de0: 260e movel %fp,%d3 <== NOT EXECUTED 48de2: 4868 0008 pea %a0@(8) <== NOT EXECUTED 48de6: 0683 ffff ffe8 addil #-24,%d3 <== NOT EXECUTED 48dec: 6000 00b2 braw 48ea0 <== NOT EXECUTED pathnamelen+len, flags,pathloc); } } else { if ( !node->Parent ) 48df0: 266b 0008 moveal %a3@(8),%a3 <== NOT EXECUTED 48df4: 6062 bras 48e58 <== NOT EXECUTED case IMFS_NAME: /* * If we are at a link follow it. */ if ( node->type == IMFS_HARD_LINK ) { 48df6: 202b 0048 movel %a3@(72),%d0 48dfa: 7203 moveq #3,%d1 48dfc: b280 cmpl %d0,%d1 48dfe: 6610 bnes 48e10 <== ALWAYS TAKEN IMFS_evaluate_hard_link( pathloc, 0 ); 48e00: 42a7 clrl %sp@- <== NOT EXECUTED 48e02: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48e04: 4eb9 0004 8cd2 jsr 48cd2 <== NOT EXECUTED node = pathloc->node_access; 48e0a: 2652 moveal %a2@,%a3 <== NOT EXECUTED 48e0c: 508f addql #8,%sp <== NOT EXECUTED 48e0e: 601c bras 48e2c <== NOT EXECUTED * It would be a design error if we evaluated the link and * was broken. */ IMFS_assert( node ); } else if ( node->type == IMFS_SYM_LINK ) { 48e10: 7204 moveq #4,%d1 48e12: b280 cmpl %d0,%d1 48e14: 6616 bnes 48e2c <== ALWAYS TAKEN result = IMFS_evaluate_sym_link( pathloc, 0 ); 48e16: 42a7 clrl %sp@- <== NOT EXECUTED 48e18: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48e1a: 4eb9 0004 8f0e jsr 48f0e <== NOT EXECUTED /* * In contrast to a hard link, it is possible to have a broken * symbolic link. */ node = pathloc->node_access; 48e20: 2652 moveal %a2@,%a3 <== NOT EXECUTED if ( result == -1 ) 48e22: 508f addql #8,%sp <== NOT EXECUTED 48e24: 72ff moveq #-1,%d1 <== NOT EXECUTED 48e26: b280 cmpl %d0,%d1 <== NOT EXECUTED 48e28: 6700 00d6 beqw 48f00 <== NOT EXECUTED } /* * Only a directory can be decended into. */ if ( node->type != IMFS_DIRECTORY ) 48e2c: 7001 moveq #1,%d0 48e2e: b0ab 0048 cmpl %a3@(72),%d0 48e32: 6710 beqs 48e44 <== ALWAYS TAKEN rtems_set_errno_and_return_minus_one( ENOTDIR ); 48e34: 4eb9 0004 c88c jsr 4c88c <__errno> <== NOT EXECUTED 48e3a: 7814 moveq #20,%d4 <== NOT EXECUTED 48e3c: 2040 moveal %d0,%a0 <== NOT EXECUTED 48e3e: 2084 movel %d4,%a0@ <== NOT EXECUTED 48e40: 6000 ff40 braw 48d82 <== NOT EXECUTED /* * If we are at a node that is a mount point. Set loc to the * new fs root node and let them finish evaluating the path. */ if ( node->info.directory.mt_fs != NULL ) { 48e44: 206b 0058 moveal %a3@(88),%a0 48e48: 4a88 tstl %a0 48e4a: 6644 bnes 48e90 <== NEVER TAKEN } /* * Otherwise find the token name in the present location. */ node = IMFS_find_match_in_dir( node, token ); 48e4c: 2f05 movel %d5,%sp@- 48e4e: 2047 moveal %d7,%a0 48e50: 2f0b movel %a3,%sp@- 48e52: 4e90 jsr %a0@ if ( !node ) 48e54: 508f addql #8,%sp } /* * Otherwise find the token name in the present location. */ node = IMFS_find_match_in_dir( node, token ); 48e56: 2640 moveal %d0,%a3 if ( !node ) 48e58: 4a8b tstl %a3 48e5a: 6700 ff1a beqw 48d76 /* * Set the node access to the point we have found. */ pathloc->node_access = node; 48e5e: 248b movel %a3,%a2@ 48e60: 6000 fef4 braw 48d56 case IMFS_NO_MORE_PATH: case IMFS_CURRENT_DIR: break; case IMFS_INVALID_TOKEN: rtems_set_errno_and_return_minus_one( ENAMETOOLONG ); 48e64: 4eb9 0004 c88c jsr 4c88c <__errno> <== NOT EXECUTED 48e6a: 765b moveq #91,%d3 <== NOT EXECUTED 48e6c: 2040 moveal %d0,%a0 <== NOT EXECUTED 48e6e: 2083 movel %d3,%a0@ <== NOT EXECUTED 48e70: 6000 ff10 braw 48d82 <== NOT EXECUTED /* * Evaluate all tokens until we are done or an error occurs. */ while( (type != IMFS_NO_MORE_PATH) && (type != IMFS_INVALID_TOKEN) ) { 48e74: 4a83 tstl %d3 48e76: 6708 beqs 48e80 48e78: 7004 moveq #4,%d0 48e7a: b083 cmpl %d3,%d0 48e7c: 6600 fed8 bnew 48d56 * new fs root node and let let the mounted filesystem set the handlers. * * NOTE: The behavior of stat() on a mount point appears to be questionable. */ if ( node->type == IMFS_DIRECTORY ) { 48e80: 7201 moveq #1,%d1 48e82: b2ab 0048 cmpl %a3@(72),%d1 48e86: 664e bnes 48ed6 if ( node->info.directory.mt_fs != NULL ) { 48e88: 206b 0058 moveal %a3@(88),%a0 48e8c: 4a88 tstl %a0 48e8e: 6746 beqs 48ed6 <== ALWAYS TAKEN newloc = node->info.directory.mt_fs->mt_fs_root; 48e90: 4878 0014 pea 14 <== NOT EXECUTED 48e94: 260e movel %fp,%d3 <== NOT EXECUTED 48e96: 0683 ffff ffe8 addil #-24,%d3 <== NOT EXECUTED 48e9c: 4868 001c pea %a0@(28) <== NOT EXECUTED 48ea0: 2f03 movel %d3,%sp@- <== NOT EXECUTED 48ea2: 47f9 0004 d138 lea 4d138 ,%a3 <== NOT EXECUTED 48ea8: 4e93 jsr %a3@ <== NOT EXECUTED *pathloc = newloc; 48eaa: 4878 0014 pea 14 <== NOT EXECUTED 48eae: 2f03 movel %d3,%sp@- <== NOT EXECUTED 48eb0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48eb2: 4e93 jsr %a3@ <== NOT EXECUTED return (*pathloc->ops->evalpath_h)( &pathname[i-len], 48eb4: 226a 000c moveal %a2@(12),%a1 <== NOT EXECUTED 48eb8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48eba: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED 48ebe: 9488 subl %a0,%d2 <== NOT EXECUTED 48ec0: 2f04 movel %d4,%sp@- <== NOT EXECUTED 48ec2: 4874 8800 pea %a4@(00000000,%a0:l) <== NOT EXECUTED 48ec6: 4875 2800 pea %a5@(00000000,%d2:l) <== NOT EXECUTED 48eca: 2051 moveal %a1@,%a0 <== NOT EXECUTED 48ecc: 4e90 jsr %a0@ <== NOT EXECUTED 48ece: 4fef 0028 lea %sp@(40),%sp <== NOT EXECUTED 48ed2: 2600 movel %d0,%d3 <== NOT EXECUTED 48ed4: 602c bras 48f02 <== NOT EXECUTED flags, pathloc ); } else { result = IMFS_Set_handlers( pathloc ); } } else { result = IMFS_Set_handlers( pathloc ); 48ed6: 2f0a movel %a2,%sp@- 48ed8: 4eb9 0004 8bf0 jsr 48bf0 48ede: 2600 movel %d0,%d3 /* * Verify we have the correct permissions for this node. */ if ( !IMFS_evaluate_permission( pathloc, flags ) ) 48ee0: 2e84 movel %d4,%sp@ 48ee2: 2f0a movel %a2,%sp@- 48ee4: 4eb9 0004 8c5e jsr 48c5e 48eea: 508f addql #8,%sp 48eec: 4a80 tstl %d0 48eee: 6612 bnes 48f02 <== ALWAYS TAKEN rtems_set_errno_and_return_minus_one( EACCES ); 48ef0: 4eb9 0004 c88c jsr 4c88c <__errno> <== NOT EXECUTED 48ef6: 740d moveq #13,%d2 <== NOT EXECUTED 48ef8: 2040 moveal %d0,%a0 <== NOT EXECUTED 48efa: 2082 movel %d2,%a0@ <== NOT EXECUTED 48efc: 6000 fe84 braw 48d82 <== NOT EXECUTED 48f00: 2600 movel %d0,%d3 <== NOT EXECUTED return result; } 48f02: 2003 movel %d3,%d0 48f04: 4cee 3cfc ff9c moveml %fp@(-100),%d2-%d7/%a2-%a5 48f0a: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00049022 : int IMFS_evaluate_for_make( const char *path, /* IN */ rtems_filesystem_location_info_t *pathloc, /* IN/OUT */ const char **name /* OUT */ ) { 49022: 4e56 ff9c linkw %fp,#-100 49026: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ 4902a: 246e 000c moveal %fp@(12),%a2 * Evaluate all tokens until we are done or an error occurs. */ while( !done ) { type = IMFS_get_token( &path[i], pathlen, token, &len ); 4902e: 2c0e movel %fp,%d6 const char *path, /* IN */ rtems_filesystem_location_info_t *pathloc, /* IN/OUT */ const char **name /* OUT */ ) { int i = 0; 49030: 4282 clrl %d2 * Evaluate all tokens until we are done or an error occurs. */ while( !done ) { type = IMFS_get_token( &path[i], pathlen, token, &len ); 49032: 0686 ffff ffc7 addil #-57,%d6 if ( result == -1 ) return -1; } else if ( node->type == IMFS_SYM_LINK ) { result = IMFS_evaluate_link( pathloc, 0 ); 49038: 2a3c 0004 8f8a movel #298890,%d5 int IMFS_evaluate_for_make( const char *path, /* IN */ rtems_filesystem_location_info_t *pathloc, /* IN/OUT */ const char **name /* OUT */ ) { 4903e: 286e 0008 moveal %fp@(8),%a4 /* * This was filled in by the caller and is valid in the * mount table. */ node = pathloc->node_access; 49042: 2652 moveal %a2@,%a3 /* * Get the path length. */ pathlen = strlen( path ); 49044: 2f0c movel %a4,%sp@- int IMFS_evaluate_for_make( const char *path, /* IN */ rtems_filesystem_location_info_t *pathloc, /* IN/OUT */ const char **name /* OUT */ ) { 49046: 2a6e 0010 moveal %fp@(16),%a5 node = pathloc->node_access; /* * Get the path length. */ pathlen = strlen( path ); 4904a: 4eb9 0004 dce4 jsr 4dce4 49050: 588f addql #4,%sp 49052: 2800 movel %d0,%d4 * Evaluate all tokens until we are done or an error occurs. */ while( !done ) { type = IMFS_get_token( &path[i], pathlen, token, &len ); 49054: 486e fffc pea %fp@(-4) 49058: 2f06 movel %d6,%sp@- 4905a: 2f04 movel %d4,%sp@- 4905c: 4874 2800 pea %a4@(00000000,%d2:l) 49060: 4eb9 0004 933c jsr 4933c pathlen -= len; 49066: 2e2e fffc movel %fp@(-4),%d7 * Evaluate all tokens until we are done or an error occurs. */ while( !done ) { type = IMFS_get_token( &path[i], pathlen, token, &len ); 4906a: 2600 movel %d0,%d3 pathlen -= len; 4906c: 9887 subl %d7,%d4 i += len; if ( !pathloc->node_access ) 4906e: 4fef 0010 lea %sp@(16),%sp 49072: 4a92 tstl %a2@ 49074: 6700 0154 beqw 491ca /* * I cannot move out of this directory without execute permission. */ if ( type != IMFS_NO_MORE_PATH ) 49078: 4a80 tstl %d0 4907a: 671c beqs 49098 if ( node->type == IMFS_DIRECTORY ) 4907c: 7001 moveq #1,%d0 4907e: b0ab 0048 cmpl %a3@(72),%d0 49082: 6614 bnes 49098 <== NEVER TAKEN if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_SEARCH ) ) 49084: 4878 0001 pea 1 49088: 2f0a movel %a2,%sp@- 4908a: 4eb9 0004 8c5e jsr 48c5e 49090: 508f addql #8,%sp 49092: 4a80 tstl %d0 49094: 6700 017c beqw 49212 rtems_set_errno_and_return_minus_one( EACCES ); node = pathloc->node_access; 49098: 2652 moveal %a2@,%a3 while( !done ) { type = IMFS_get_token( &path[i], pathlen, token, &len ); pathlen -= len; i += len; 4909a: d487 addl %d7,%d2 if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_SEARCH ) ) rtems_set_errno_and_return_minus_one( EACCES ); node = pathloc->node_access; switch( type ) { 4909c: 7002 moveq #2,%d0 4909e: b083 cmpl %d3,%d0 490a0: 671a beqs 490bc <== NEVER TAKEN 490a2: 6508 bcss 490ac 490a4: 4a83 tstl %d3 490a6: 6700 00e4 beqw 4918c 490aa: 60a8 bras 49054 490ac: 7203 moveq #3,%d1 490ae: b283 cmpl %d3,%d1 490b0: 6740 beqs 490f2 <== ALWAYS TAKEN 490b2: 7004 moveq #4,%d0 <== NOT EXECUTED 490b4: b083 cmpl %d3,%d0 <== NOT EXECUTED 490b6: 669c bnes 49054 <== NOT EXECUTED 490b8: 6000 00e2 braw 4919c <== NOT EXECUTED case IMFS_UP_DIR: /* * Am I at the root of all filesystems? (chroot'ed?) */ if ( pathloc->node_access == rtems_filesystem_root.node_access ) 490bc: 2079 0005 c2ec moveal 5c2ec ,%a0 <== NOT EXECUTED 490c2: b7e8 0018 cmpal %a0@(24),%a3 <== NOT EXECUTED 490c6: 678c beqs 49054 <== NOT EXECUTED /* * Am I at the root of this mounted filesystem? */ if (pathloc->node_access == pathloc->mt_entry->mt_fs_root.node_access){ 490c8: 206a 0010 moveal %a2@(16),%a0 <== NOT EXECUTED 490cc: b7e8 001c cmpal %a0@(28),%a3 <== NOT EXECUTED 490d0: 6612 bnes 490e4 <== NOT EXECUTED if ( pathloc->node_access == rtems_filesystem_root.node_access ) { break; } else { newloc = pathloc->mt_entry->mt_point_node; 490d2: 4878 0014 pea 14 <== NOT EXECUTED 490d6: 260e movel %fp,%d3 <== NOT EXECUTED 490d8: 4868 0008 pea %a0@(8) <== NOT EXECUTED 490dc: 0683 ffff ffe8 addil #-24,%d3 <== NOT EXECUTED 490e2: 605c bras 49140 <== NOT EXECUTED *pathloc = newloc; return (*pathloc->ops->evalformake_h)( &path[i-len], pathloc, name ); } } else { if ( !node->Parent ) 490e4: 266b 0008 moveal %a3@(8),%a3 <== NOT EXECUTED 490e8: 4a8b tstl %a3 <== NOT EXECUTED 490ea: 6600 009a bnew 49186 <== NOT EXECUTED 490ee: 6000 00da braw 491ca <== NOT EXECUTED pathloc->node_access = node; break; case IMFS_NAME: if ( node->type == IMFS_HARD_LINK ) { 490f2: 202b 0048 movel %a3@(72),%d0 490f6: 7203 moveq #3,%d1 490f8: b280 cmpl %d0,%d1 490fa: 6706 beqs 49102 <== NEVER TAKEN result = IMFS_evaluate_link( pathloc, 0 ); if ( result == -1 ) return -1; } else if ( node->type == IMFS_SYM_LINK ) { 490fc: 7204 moveq #4,%d1 490fe: b280 cmpl %d0,%d1 49100: 6614 bnes 49116 <== ALWAYS TAKEN result = IMFS_evaluate_link( pathloc, 0 ); 49102: 42a7 clrl %sp@- <== NOT EXECUTED 49104: 2045 moveal %d5,%a0 <== NOT EXECUTED 49106: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49108: 4e90 jsr %a0@ <== NOT EXECUTED if ( result == -1 ) 4910a: 508f addql #8,%sp <== NOT EXECUTED if ( result == -1 ) return -1; } else if ( node->type == IMFS_SYM_LINK ) { result = IMFS_evaluate_link( pathloc, 0 ); 4910c: 2600 movel %d0,%d3 <== NOT EXECUTED if ( result == -1 ) 4910e: 70ff moveq #-1,%d0 <== NOT EXECUTED 49110: b083 cmpl %d3,%d0 <== NOT EXECUTED 49112: 6700 010c beqw 49220 <== NOT EXECUTED return -1; } node = pathloc->node_access; 49116: 2052 moveal %a2@,%a0 if ( !node ) 49118: 4a88 tstl %a0 4911a: 6700 00d6 beqw 491f2 /* * Only a directory can be decended into. */ if ( node->type != IMFS_DIRECTORY ) 4911e: 7001 moveq #1,%d0 49120: b0a8 0048 cmpl %a0@(72),%d0 49124: 6600 00cc bnew 491f2 /* * If we are at a node that is a mount point. Set loc to the * new fs root node and let them finish evaluating the path. */ if ( node->info.directory.mt_fs != NULL ) { 49128: 2268 0058 moveal %a0@(88),%a1 4912c: 4a89 tstl %a1 4912e: 6744 beqs 49174 <== ALWAYS TAKEN newloc = node->info.directory.mt_fs->mt_fs_root; 49130: 4878 0014 pea 14 <== NOT EXECUTED 49134: 260e movel %fp,%d3 <== NOT EXECUTED 49136: 0683 ffff ffe8 addil #-24,%d3 <== NOT EXECUTED 4913c: 4869 001c pea %a1@(28) <== NOT EXECUTED 49140: 2f03 movel %d3,%sp@- <== NOT EXECUTED 49142: 47f9 0004 d138 lea 4d138 ,%a3 <== NOT EXECUTED 49148: 4e93 jsr %a3@ <== NOT EXECUTED *pathloc = newloc; 4914a: 4878 0014 pea 14 <== NOT EXECUTED 4914e: 2f03 movel %d3,%sp@- <== NOT EXECUTED 49150: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49152: 4e93 jsr %a3@ <== NOT EXECUTED return (*pathloc->ops->evalformake_h)( &path[i-len], pathloc, name ); 49154: 206a 000c moveal %a2@(12),%a0 <== NOT EXECUTED 49158: 94ae fffc subl %fp@(-4),%d2 <== NOT EXECUTED 4915c: 2f0d movel %a5,%sp@- <== NOT EXECUTED 4915e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49160: 4874 2800 pea %a4@(00000000,%d2:l) <== NOT EXECUTED 49164: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED 49168: 4e90 jsr %a0@ <== NOT EXECUTED 4916a: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED 4916e: 2600 movel %d0,%d3 <== NOT EXECUTED 49170: 6000 00ae braw 49220 <== NOT EXECUTED /* * Otherwise find the token name in the present location. */ node = IMFS_find_match_in_dir( node, token ); 49174: 2f06 movel %d6,%sp@- 49176: 2f08 movel %a0,%sp@- 49178: 4eb9 0004 92d0 jsr 492d0 /* * If there is no node we have found the name of the node we * wish to create. */ if ( ! node ) 4917e: 508f addql #8,%sp /* * Otherwise find the token name in the present location. */ node = IMFS_find_match_in_dir( node, token ); 49180: 2640 moveal %d0,%a3 /* * If there is no node we have found the name of the node we * wish to create. */ if ( ! node ) 49182: 4a80 tstl %d0 49184: 6724 beqs 491aa done = true; else pathloc->node_access = node; 49186: 248b movel %a3,%a2@ 49188: 6000 feca braw 49054 break; case IMFS_NO_MORE_PATH: rtems_set_errno_and_return_minus_one( EEXIST ); 4918c: 4eb9 0004 c88c jsr 4c88c <__errno> 49192: 7c11 moveq #17,%d6 49194: 2040 moveal %d0,%a0 49196: 2086 movel %d6,%a0@ 49198: 6000 0084 braw 4921e break; case IMFS_INVALID_TOKEN: rtems_set_errno_and_return_minus_one( ENAMETOOLONG ); 4919c: 4eb9 0004 c88c jsr 4c88c <__errno> <== NOT EXECUTED 491a2: 7a5b moveq #91,%d5 <== NOT EXECUTED 491a4: 2040 moveal %d0,%a0 <== NOT EXECUTED 491a6: 2085 movel %d5,%a0@ <== NOT EXECUTED 491a8: 6074 bras 4921e <== NOT EXECUTED case IMFS_CURRENT_DIR: break; } } *name = &path[ i - len ]; 491aa: 2002 movel %d2,%d0 491ac: 90ae fffc subl %fp@(-4),%d0 * We have evaluated the path as far as we can. * Verify there is not any invalid stuff at the end of the name. */ for( ; path[i] != '\0'; i++) { if ( !IMFS_is_separator( path[ i ] ) ) 491b0: 47f9 0004 34c8 lea 434c8 ,%a3 case IMFS_CURRENT_DIR: break; } } *name = &path[ i - len ]; 491b6: d08c addl %a4,%d0 * pathloc is returned with a pointer to the parent of the new node. * name is returned with a pointer to the first character in the * new node name. The parent node is verified to be a directory. */ int IMFS_evaluate_for_make( 491b8: d9c2 addal %d2,%a4 case IMFS_CURRENT_DIR: break; } } *name = &path[ i - len ]; 491ba: 2a80 movel %d0,%a5@ /* * We have evaluated the path as far as we can. * Verify there is not any invalid stuff at the end of the name. */ for( ; path[i] != '\0'; i++) { 491bc: 601a bras 491d8 if ( !IMFS_is_separator( path[ i ] ) ) 491be: 49c0 extbl %d0 <== NOT EXECUTED 491c0: 2f00 movel %d0,%sp@- <== NOT EXECUTED 491c2: 4e93 jsr %a3@ <== NOT EXECUTED 491c4: 588f addql #4,%sp <== NOT EXECUTED 491c6: 4a80 tstl %d0 <== NOT EXECUTED 491c8: 660e bnes 491d8 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOENT ); 491ca: 4eb9 0004 c88c jsr 4c88c <__errno> <== NOT EXECUTED 491d0: 7802 moveq #2,%d4 <== NOT EXECUTED 491d2: 2040 moveal %d0,%a0 <== NOT EXECUTED 491d4: 2084 movel %d4,%a0@ <== NOT EXECUTED 491d6: 6046 bras 4921e <== NOT EXECUTED /* * We have evaluated the path as far as we can. * Verify there is not any invalid stuff at the end of the name. */ for( ; path[i] != '\0'; i++) { 491d8: 101c moveb %a4@+,%d0 491da: 66e2 bnes 491be <== NEVER TAKEN /* * Verify we can execute and write to this directory. */ result = IMFS_Set_handlers( pathloc ); 491dc: 2f0a movel %a2,%sp@- 491de: 4eb9 0004 8bf0 jsr 48bf0 /* * The returned node must be a directory */ node = pathloc->node_access; if ( node->type != IMFS_DIRECTORY ) 491e4: 2052 moveal %a2@,%a0 /* * Verify we can execute and write to this directory. */ result = IMFS_Set_handlers( pathloc ); 491e6: 2600 movel %d0,%d3 /* * The returned node must be a directory */ node = pathloc->node_access; if ( node->type != IMFS_DIRECTORY ) 491e8: 588f addql #4,%sp 491ea: 7001 moveq #1,%d0 491ec: b0a8 0048 cmpl %a0@(72),%d0 491f0: 670e beqs 49200 <== ALWAYS TAKEN rtems_set_errno_and_return_minus_one( ENOTDIR ); 491f2: 4eb9 0004 c88c jsr 4c88c <__errno> <== NOT EXECUTED 491f8: 7614 moveq #20,%d3 <== NOT EXECUTED 491fa: 2040 moveal %d0,%a0 <== NOT EXECUTED 491fc: 2083 movel %d3,%a0@ <== NOT EXECUTED 491fe: 601e bras 4921e <== NOT EXECUTED /* * We must have Write and execute permission on the returned node. */ if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_WX ) ) 49200: 4878 0003 pea 3 49204: 2f0a movel %a2,%sp@- 49206: 4eb9 0004 8c5e jsr 48c5e 4920c: 508f addql #8,%sp 4920e: 4a80 tstl %d0 49210: 660e bnes 49220 <== ALWAYS TAKEN rtems_set_errno_and_return_minus_one( EACCES ); 49212: 4eb9 0004 c88c jsr 4c88c <__errno> <== NOT EXECUTED 49218: 740d moveq #13,%d2 <== NOT EXECUTED 4921a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4921c: 2082 movel %d2,%a0@ <== NOT EXECUTED 4921e: 76ff moveq #-1,%d3 return result; } 49220: 2003 movel %d3,%d0 49222: 4cee 3cfc ff9c moveml %fp@(-100),%d2-%d7/%a2-%a5 49228: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00048cd2 : int IMFS_evaluate_hard_link( rtems_filesystem_location_info_t *node, /* IN/OUT */ int flags /* IN */ ) { 48cd2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 48cd6: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48cd8: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED IMFS_assert( jnode->type == IMFS_HARD_LINK ); /* * Set the hard link value and the handlers. */ node->node_access = jnode->info.hard_link.link_node; 48cdc: 2052 moveal %a2@,%a0 <== NOT EXECUTED 48cde: 24a8 004c movel %a0@(76),%a2@ <== NOT EXECUTED IMFS_Set_handlers( node ); 48ce2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48ce4: 4eb9 0004 8bf0 jsr 48bf0 <== NOT EXECUTED /* * Verify we have the correct permissions for this node. */ if ( !IMFS_evaluate_permission( node, flags ) ) 48cea: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 48cee: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48cf0: 4eb9 0004 8c5e jsr 48c5e <== NOT EXECUTED 48cf6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 48cfa: 4a80 tstl %d0 <== NOT EXECUTED 48cfc: 6610 bnes 48d0e <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EACCES ); 48cfe: 4eb9 0004 c88c jsr 4c88c <__errno> <== NOT EXECUTED 48d04: 720d moveq #13,%d1 <== NOT EXECUTED 48d06: 2040 moveal %d0,%a0 <== NOT EXECUTED 48d08: 70ff moveq #-1,%d0 <== NOT EXECUTED 48d0a: 2081 movel %d1,%a0@ <== NOT EXECUTED 48d0c: 6002 bras 48d10 <== NOT EXECUTED return result; 48d0e: 4280 clrl %d0 <== NOT EXECUTED } 48d10: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 48d14: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00048f8a : */ int IMFS_evaluate_link( rtems_filesystem_location_info_t *node, /* IN/OUT */ int flags /* IN */ ) { 48f8a: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 48f8e: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ <== NOT EXECUTED 48f92: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED if ( jnode->type == IMFS_HARD_LINK ) result = IMFS_evaluate_hard_link( node, flags ); else if (jnode->type == IMFS_SYM_LINK ) result = IMFS_evaluate_sym_link( node, flags ); 48f96: 4bf9 0004 8f0e lea 48f0e ,%a5 <== NOT EXECUTED /* * Follow the Link node. */ if ( jnode->type == IMFS_HARD_LINK ) result = IMFS_evaluate_hard_link( node, flags ); 48f9c: 49f9 0004 8cd2 lea 48cd2 ,%a4 <== NOT EXECUTED */ int IMFS_evaluate_link( rtems_filesystem_location_info_t *node, /* IN/OUT */ int flags /* IN */ ) { 48fa2: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED /* * Increment and check the link counter. */ rtems_filesystem_link_counts ++; 48fa6: 2079 0005 c2ec moveal 5c2ec ,%a0 <== NOT EXECUTED if ( rtems_filesystem_link_counts > MAXSYMLINK ) { 48fac: 7205 moveq #5,%d1 <== NOT EXECUTED /* * Increment and check the link counter. */ rtems_filesystem_link_counts ++; 48fae: 3028 0030 movew %a0@(48),%d0 <== NOT EXECUTED { IMFS_jnode_t *jnode; int result = 0; do { jnode = node->node_access; 48fb2: 2652 moveal %a2@,%a3 <== NOT EXECUTED /* * Increment and check the link counter. */ rtems_filesystem_link_counts ++; 48fb4: 5280 addql #1,%d0 <== NOT EXECUTED 48fb6: 3140 0030 movew %d0,%a0@(48) <== NOT EXECUTED if ( rtems_filesystem_link_counts > MAXSYMLINK ) { 48fba: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED 48fc0: b280 cmpl %d0,%d1 <== NOT EXECUTED 48fc2: 6416 bccs 48fda <== NOT EXECUTED rtems_filesystem_link_counts = 0; 48fc4: 4240 clrw %d0 <== NOT EXECUTED 48fc6: 3140 0030 movew %d0,%a0@(48) <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ELOOP ); 48fca: 4eb9 0004 c88c jsr 4c88c <__errno> <== NOT EXECUTED 48fd0: 725c moveq #92,%d1 <== NOT EXECUTED 48fd2: 2040 moveal %d0,%a0 <== NOT EXECUTED 48fd4: 70ff moveq #-1,%d0 <== NOT EXECUTED 48fd6: 2081 movel %d1,%a0@ <== NOT EXECUTED 48fd8: 603e bras 49018 <== NOT EXECUTED /* * Follow the Link node. */ if ( jnode->type == IMFS_HARD_LINK ) 48fda: 202b 0048 movel %a3@(72),%d0 <== NOT EXECUTED 48fde: 7203 moveq #3,%d1 <== NOT EXECUTED 48fe0: b280 cmpl %d0,%d1 <== NOT EXECUTED 48fe2: 6608 bnes 48fec <== NOT EXECUTED result = IMFS_evaluate_hard_link( node, flags ); 48fe4: 2f02 movel %d2,%sp@- <== NOT EXECUTED 48fe6: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48fe8: 4e94 jsr %a4@ <== NOT EXECUTED 48fea: 600c bras 48ff8 <== NOT EXECUTED else if (jnode->type == IMFS_SYM_LINK ) 48fec: 7204 moveq #4,%d1 <== NOT EXECUTED 48fee: b280 cmpl %d0,%d1 <== NOT EXECUTED 48ff0: 660c bnes 48ffe <== NOT EXECUTED result = IMFS_evaluate_sym_link( node, flags ); 48ff2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 48ff4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48ff6: 4e95 jsr %a5@ <== NOT EXECUTED 48ff8: 508f addql #8,%sp <== NOT EXECUTED } while ( ( result == 0 ) && ( ( jnode->type == IMFS_SYM_LINK ) || ( jnode->type == IMFS_HARD_LINK ) ) ); 48ffa: 4a80 tstl %d0 <== NOT EXECUTED 48ffc: 660e bnes 4900c <== NOT EXECUTED result = IMFS_evaluate_hard_link( node, flags ); else if (jnode->type == IMFS_SYM_LINK ) result = IMFS_evaluate_sym_link( node, flags ); } while ( ( result == 0 ) && ( ( jnode->type == IMFS_SYM_LINK ) || 48ffe: 202b 0048 movel %a3@(72),%d0 <== NOT EXECUTED 49002: 7201 moveq #1,%d1 <== NOT EXECUTED 49004: 5780 subql #3,%d0 <== NOT EXECUTED 49006: b280 cmpl %d0,%d1 <== NOT EXECUTED 49008: 649c bccs 48fa6 <== NOT EXECUTED 4900a: 4280 clrl %d0 <== NOT EXECUTED /* * Clear link counter. */ rtems_filesystem_link_counts = 0; 4900c: 2079 0005 c2ec moveal 5c2ec ,%a0 <== NOT EXECUTED 49012: 4241 clrw %d1 <== NOT EXECUTED 49014: 3141 0030 movew %d1,%a0@(48) <== NOT EXECUTED return result; } 49018: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED 4901e: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00048c5e : uid_t st_uid; gid_t st_gid; IMFS_jnode_t *jnode; int flags_to_test; if ( !rtems_libio_is_valid_perms( flags ) ) 48c5e: 70f8 moveq #-8,%d0 */ int IMFS_evaluate_permission( rtems_filesystem_location_info_t *node, int flags ) { 48c60: 4e56 fff4 linkw %fp,#-12 48c64: 48d7 040c moveml %d2-%d3/%a2,%sp@ 48c68: 242e 000c movel %fp@(12),%d2 uid_t st_uid; gid_t st_gid; IMFS_jnode_t *jnode; int flags_to_test; if ( !rtems_libio_is_valid_perms( flags ) ) 48c6c: c082 andl %d2,%d0 48c6e: 6710 beqs 48c80 <== ALWAYS TAKEN rtems_set_errno_and_return_minus_one( EPERM ); 48c70: 4eb9 0004 c88c jsr 4c88c <__errno> <== NOT EXECUTED 48c76: 2040 moveal %d0,%a0 <== NOT EXECUTED 48c78: 7001 moveq #1,%d0 <== NOT EXECUTED 48c7a: 2080 movel %d0,%a0@ <== NOT EXECUTED 48c7c: 70ff moveq #-1,%d0 <== NOT EXECUTED 48c7e: 6048 bras 48cc8 <== NOT EXECUTED jnode = node->node_access; 48c80: 206e 0008 moveal %fp@(8),%a0 48c84: 2450 moveal %a0@,%a2 #if defined(RTEMS_POSIX_API) st_uid = geteuid(); 48c86: 4eb9 0004 97d4 jsr 497d4 48c8c: 3600 movew %d0,%d3 st_gid = getegid(); 48c8e: 4eb9 0004 97c0 jsr 497c0 * Check if I am owner or a group member or someone else. */ flags_to_test = flags; if ( st_uid == jnode->st_uid ) 48c94: 4281 clrl %d1 48c96: 0283 0000 ffff andil #65535,%d3 48c9c: 322a 0038 movew %a2@(56),%d1 48ca0: b283 cmpl %d3,%d1 48ca2: 6604 bnes 48ca8 <== NEVER TAKEN flags_to_test <<= 6; 48ca4: ed8a lsll #6,%d2 48ca6: 6012 bras 48cba else if ( st_gid == jnode->st_gid ) 48ca8: 4281 clrl %d1 <== NOT EXECUTED 48caa: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED 48cb0: 322a 003a movew %a2@(58),%d1 <== NOT EXECUTED 48cb4: b280 cmpl %d0,%d1 <== NOT EXECUTED 48cb6: 6602 bnes 48cba <== NOT EXECUTED flags_to_test <<= 3; 48cb8: e78a lsll #3,%d2 <== NOT EXECUTED /* * If all of the flags are set we have permission * to do this. */ if ( ( flags_to_test & jnode->st_mode) == flags_to_test ) 48cba: 2002 movel %d2,%d0 48cbc: c0aa 002e andl %a2@(46),%d0 gid_t st_gid; IMFS_jnode_t *jnode; int flags_to_test; if ( !rtems_libio_is_valid_perms( flags ) ) rtems_set_errno_and_return_minus_one( EPERM ); 48cc0: b480 cmpl %d0,%d2 48cc2: 57c0 seq %d0 48cc4: 49c0 extbl %d0 48cc6: 4480 negl %d0 */ if ( ( flags_to_test & jnode->st_mode) == flags_to_test ) return 1; return 0; } 48cc8: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 48cce: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00048f0e : int IMFS_evaluate_sym_link( rtems_filesystem_location_info_t *node, /* IN/OUT */ int flags /* IN */ ) { 48f0e: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 48f12: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED 48f16: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED IMFS_jnode_t *jnode = node->node_access; 48f1a: 2652 moveal %a2@,%a3 <== NOT EXECUTED /* * Move the node_access to either the symbolic links parent or * root depending on the symbolic links path. */ node->node_access = jnode->Parent; 48f1c: 24ab 0008 movel %a3@(8),%a2@ <== NOT EXECUTED int IMFS_evaluate_sym_link( rtems_filesystem_location_info_t *node, /* IN/OUT */ int flags /* IN */ ) { 48f20: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED * Move the node_access to either the symbolic links parent or * root depending on the symbolic links path. */ node->node_access = jnode->Parent; rtems_filesystem_get_sym_start_loc( 48f24: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48f26: 486e fffc pea %fp@(-4) <== NOT EXECUTED 48f2a: 2f2b 004c movel %a3@(76),%sp@- <== NOT EXECUTED 48f2e: 4eb9 0004 9c48 jsr 49c48 <== NOT EXECUTED ); /* * Use eval path to evaluate the path of the symbolic link. */ result = IMFS_eval_path( 48f34: 242b 004c movel %a3@(76),%d2 <== NOT EXECUTED 48f38: d4ae fffc addl %fp@(-4),%d2 <== NOT EXECUTED 48f3c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 48f3e: 4eb9 0004 dce4 jsr 4dce4 <== NOT EXECUTED 48f44: 2e8a movel %a2,%sp@ <== NOT EXECUTED 48f46: 2f03 movel %d3,%sp@- <== NOT EXECUTED 48f48: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48f4a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 48f4c: 4eb9 0004 8d18 jsr 48d18 <== NOT EXECUTED 48f52: 2400 movel %d0,%d2 <== NOT EXECUTED strlen( &jnode->info.sym_link.name[i] ), flags, node ); IMFS_Set_handlers( node ); 48f54: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48f56: 4eb9 0004 8bf0 jsr 48bf0 <== NOT EXECUTED /* * Verify we have the correct permissions for this node. */ if ( !IMFS_evaluate_permission( node, flags ) ) 48f5c: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 48f60: 2e83 movel %d3,%sp@ <== NOT EXECUTED 48f62: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48f64: 4eb9 0004 8c5e jsr 48c5e <== NOT EXECUTED 48f6a: 508f addql #8,%sp <== NOT EXECUTED 48f6c: 4a80 tstl %d0 <== NOT EXECUTED 48f6e: 660e bnes 48f7e <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EACCES ); 48f70: 4eb9 0004 c88c jsr 4c88c <__errno> <== NOT EXECUTED 48f76: 74ff moveq #-1,%d2 <== NOT EXECUTED 48f78: 2040 moveal %d0,%a0 <== NOT EXECUTED 48f7a: 700d moveq #13,%d0 <== NOT EXECUTED 48f7c: 2080 movel %d0,%a0@ <== NOT EXECUTED return result; } 48f7e: 2002 movel %d2,%d0 <== NOT EXECUTED 48f80: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 48f86: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004c000 : int IMFS_fchmod( rtems_filesystem_location_info_t *loc, mode_t mode ) { 4c000: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED IMFS_jnode_t *jnode; #if defined(RTEMS_POSIX_API) uid_t st_uid; #endif jnode = loc->node_access; 4c004: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED int IMFS_fchmod( rtems_filesystem_location_info_t *loc, mode_t mode ) { 4c008: 2f0a movel %a2,%sp@- <== NOT EXECUTED IMFS_jnode_t *jnode; #if defined(RTEMS_POSIX_API) uid_t st_uid; #endif jnode = loc->node_access; 4c00a: 2450 moveal %a0@,%a2 <== NOT EXECUTED int IMFS_fchmod( rtems_filesystem_location_info_t *loc, mode_t mode ) { 4c00c: 2f02 movel %d2,%sp@- <== NOT EXECUTED * Verify I am the owner of the node or the super user. */ #if defined(RTEMS_POSIX_API) st_uid = geteuid(); if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) ) 4c00e: 4282 clrl %d2 <== NOT EXECUTED /* * Verify I am the owner of the node or the super user. */ #if defined(RTEMS_POSIX_API) st_uid = geteuid(); 4c010: 4eb9 0004 97d4 jsr 497d4 <== NOT EXECUTED if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) ) 4c016: 4281 clrl %d1 <== NOT EXECUTED 4c018: 3400 movew %d0,%d2 <== NOT EXECUTED 4c01a: 322a 0038 movew %a2@(56),%d1 <== NOT EXECUTED 4c01e: b282 cmpl %d2,%d1 <== NOT EXECUTED 4c020: 6714 beqs 4c036 <== NOT EXECUTED 4c022: 4a40 tstw %d0 <== NOT EXECUTED 4c024: 6710 beqs 4c036 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EPERM ); 4c026: 4eb9 0004 c88c jsr 4c88c <__errno> <== NOT EXECUTED 4c02c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4c02e: 7001 moveq #1,%d0 <== NOT EXECUTED 4c030: 2080 movel %d0,%a0@ <== NOT EXECUTED 4c032: 70ff moveq #-1,%d0 <== NOT EXECUTED 4c034: 6030 bras 4c066 <== NOT EXECUTED /* * Change only the RWX permissions on the jnode to mode. */ jnode->st_mode &= ~(S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX); 4c036: 202a 002e movel %a2@(46),%d0 <== NOT EXECUTED jnode->st_mode |= mode & (S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX); 4c03a: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED /* * Change only the RWX permissions on the jnode to mode. */ jnode->st_mode &= ~(S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX); 4c03e: 0280 ffff f000 andil #-4096,%d0 <== NOT EXECUTED jnode->st_mode |= mode & (S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX); 4c044: 0281 0000 0fff andil #4095,%d1 <== NOT EXECUTED 4c04a: 8280 orl %d0,%d1 <== NOT EXECUTED 4c04c: 2541 002e movel %d1,%a2@(46) <== NOT EXECUTED IMFS_update_ctime( jnode ); 4c050: 42a7 clrl %sp@- <== NOT EXECUTED 4c052: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4c056: 4eb9 0004 283c jsr 4283c <== NOT EXECUTED 4c05c: 256e fff8 0044 movel %fp@(-8),%a2@(68) <== NOT EXECUTED return 0; 4c062: 508f addql #8,%sp <== NOT EXECUTED 4c064: 4280 clrl %d0 <== NOT EXECUTED } 4c066: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 4c06a: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 4c06e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004c074 : int IMFS_fdatasync( rtems_libio_t *iop ) { return 0; } 4c074: 4280 clrl %d0 <== NOT EXECUTED #include "imfs.h" int IMFS_fdatasync( rtems_libio_t *iop ) { 4c076: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return 0; } 4c07a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00043022 : } int IMFS_fifo_close( rtems_libio_t *iop ) { 43022: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 43026: 2f0b movel %a3,%sp@- <== NOT EXECUTED 43028: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4302a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED int err = 0; IMFS_jnode_t *jnode = iop->pathinfo.node_access; 4302e: 266a 0018 moveal %a2@(24),%a3 <== NOT EXECUTED pipe_release(&JNODE2PIPE(jnode), iop); 43032: 2f0a movel %a2,%sp@- <== NOT EXECUTED 43034: 486b 004c pea %a3@(76) <== NOT EXECUTED 43038: 4eb9 0004 b226 jsr 4b226 <== NOT EXECUTED iop->flags &= ~LIBIO_FLAGS_OPEN; 4303e: 203c ffff feff movel #-257,%d0 <== NOT EXECUTED 43044: c1aa 0014 andl %d0,%a2@(20) <== NOT EXECUTED IMFS_check_node_remove(jnode); 43048: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4304a: 4eb9 0004 35bc jsr 435bc <== NOT EXECUTED IMFS_FIFO_RETURN(err); } 43050: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 43054: 4280 clrl %d0 <== NOT EXECUTED 43056: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 4305a: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00042eec : int IMFS_fifo_ioctl( rtems_libio_t *iop, uint32_t command, void *buffer ) { 42eec: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 42ef0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 42ef4: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED 42ef8: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED 42efc: 2f02 movel %d2,%sp@- <== NOT EXECUTED int err; if (command == FIONBIO) { 42efe: 0c80 8004 667e cmpil #-2147195266,%d0 <== NOT EXECUTED 42f04: 661a bnes 42f20 <== NOT EXECUTED if (buffer == NULL) 42f06: 4a89 tstl %a1 <== NOT EXECUTED 42f08: 6734 beqs 42f3e <== NOT EXECUTED err = -EFAULT; else { if (*(int *)buffer) 42f0a: 4a91 tstl %a1@ <== NOT EXECUTED 42f0c: 6708 beqs 42f16 <== NOT EXECUTED iop->flags |= LIBIO_FLAGS_NO_DELAY; 42f0e: 7001 moveq #1,%d0 <== NOT EXECUTED 42f10: 81a8 0014 orl %d0,%a0@(20) <== NOT EXECUTED 42f14: 6006 bras 42f1c <== NOT EXECUTED else iop->flags &= ~LIBIO_FLAGS_NO_DELAY; 42f16: 70fe moveq #-2,%d0 <== NOT EXECUTED 42f18: c1a8 0014 andl %d0,%a0@(20) <== NOT EXECUTED return 0; 42f1c: 4282 clrl %d2 <== NOT EXECUTED 42f1e: 602e bras 42f4e <== NOT EXECUTED } } else err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop); 42f20: 2f08 movel %a0,%sp@- <== NOT EXECUTED 42f22: 2f09 movel %a1,%sp@- <== NOT EXECUTED 42f24: 2f00 movel %d0,%sp@- <== NOT EXECUTED 42f26: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED 42f2a: 2f28 004c movel %a0@(76),%sp@- <== NOT EXECUTED 42f2e: 4eb9 0004 b976 jsr 4b976 <== NOT EXECUTED IMFS_FIFO_RETURN(err); 42f34: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED iop->flags &= ~LIBIO_FLAGS_NO_DELAY; return 0; } } else err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop); 42f38: 2400 movel %d0,%d2 <== NOT EXECUTED IMFS_FIFO_RETURN(err); 42f3a: 6c12 bges 42f4e <== NOT EXECUTED 42f3c: 6002 bras 42f40 <== NOT EXECUTED { int err; if (command == FIONBIO) { if (buffer == NULL) err = -EFAULT; 42f3e: 74f2 moveq #-14,%d2 <== NOT EXECUTED } } else err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop); IMFS_FIFO_RETURN(err); 42f40: 4eb9 0004 e80c jsr 4e80c <__errno> <== NOT EXECUTED 42f46: 4482 negl %d2 <== NOT EXECUTED 42f48: 2040 moveal %d0,%a0 <== NOT EXECUTED 42f4a: 2082 movel %d2,%a0@ <== NOT EXECUTED 42f4c: 74ff moveq #-1,%d2 <== NOT EXECUTED } 42f4e: 2002 movel %d2,%d0 <== NOT EXECUTED 42f50: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 42f54: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00042e94 : rtems_off64_t IMFS_fifo_lseek( rtems_libio_t *iop, rtems_off64_t offset, int whence ) { 42e94: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 42e98: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 42e9c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 42e9e: 2f02 movel %d2,%sp@- <== NOT EXECUTED off_t err = pipe_lseek(LIBIO2PIPE(iop), offset, whence, iop); 42ea0: 2f08 movel %a0,%sp@- <== NOT EXECUTED 42ea2: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 42ea6: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 42eaa: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 42eae: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED 42eb2: 2f28 004c movel %a0@(76),%sp@- <== NOT EXECUTED 42eb6: 4eb9 0004 b9d6 jsr 4b9d6 <== NOT EXECUTED IMFS_FIFO_RETURN(err); 42ebc: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED rtems_libio_t *iop, rtems_off64_t offset, int whence ) { off_t err = pipe_lseek(LIBIO2PIPE(iop), offset, whence, iop); 42ec0: 2600 movel %d0,%d3 <== NOT EXECUTED 42ec2: 2400 movel %d0,%d2 <== NOT EXECUTED 42ec4: 5bc1 smi %d1 <== NOT EXECUTED 42ec6: 49c1 extbl %d1 <== NOT EXECUTED IMFS_FIFO_RETURN(err); 42ec8: 4a81 tstl %d1 <== NOT EXECUTED 42eca: 6a10 bpls 42edc <== NOT EXECUTED 42ecc: 4eb9 0004 e80c jsr 4e80c <__errno> <== NOT EXECUTED 42ed2: 4483 negl %d3 <== NOT EXECUTED 42ed4: 2040 moveal %d0,%a0 <== NOT EXECUTED 42ed6: 72ff moveq #-1,%d1 <== NOT EXECUTED 42ed8: 74ff moveq #-1,%d2 <== NOT EXECUTED 42eda: 2083 movel %d3,%a0@ <== NOT EXECUTED } 42edc: 2001 movel %d1,%d0 <== NOT EXECUTED 42ede: 2202 movel %d2,%d1 <== NOT EXECUTED 42ee0: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 42ee4: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 42ee8: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004305e : rtems_libio_t *iop, const char *pathname, uint32_t flag, uint32_t mode ) { 4305e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 43062: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 43066: 2f02 movel %d2,%sp@- <== NOT EXECUTED IMFS_jnode_t *jnode = iop->pathinfo.node_access; int err = fifo_open(&JNODE2PIPE(jnode), iop); 43068: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4306a: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED 4306e: 41e8 004c lea %a0@(76),%a0 <== NOT EXECUTED 43072: 2f08 movel %a0,%sp@- <== NOT EXECUTED 43074: 4eb9 0004 b2ae jsr 4b2ae <== NOT EXECUTED IMFS_FIFO_RETURN(err); 4307a: 508f addql #8,%sp <== NOT EXECUTED uint32_t mode ) { IMFS_jnode_t *jnode = iop->pathinfo.node_access; int err = fifo_open(&JNODE2PIPE(jnode), iop); 4307c: 2400 movel %d0,%d2 <== NOT EXECUTED IMFS_FIFO_RETURN(err); 4307e: 6c0e bges 4308e <== NOT EXECUTED 43080: 4eb9 0004 e80c jsr 4e80c <__errno> <== NOT EXECUTED 43086: 4482 negl %d2 <== NOT EXECUTED 43088: 2040 moveal %d0,%a0 <== NOT EXECUTED 4308a: 2082 movel %d2,%a0@ <== NOT EXECUTED 4308c: 74ff moveq #-1,%d2 <== NOT EXECUTED } 4308e: 2002 movel %d2,%d0 <== NOT EXECUTED 43090: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 43094: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00042fc0 : ssize_t IMFS_fifo_read( rtems_libio_t *iop, void *buffer, size_t count ) { 42fc0: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 42fc4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 42fc8: 2f0a movel %a2,%sp@- <== NOT EXECUTED IMFS_jnode_t *jnode = iop->pathinfo.node_access; 42fca: 2468 0018 moveal %a0@(24),%a2 <== NOT EXECUTED ssize_t IMFS_fifo_read( rtems_libio_t *iop, void *buffer, size_t count ) { 42fce: 2f02 movel %d2,%sp@- <== NOT EXECUTED IMFS_jnode_t *jnode = iop->pathinfo.node_access; int err = pipe_read(JNODE2PIPE(jnode), buffer, count, iop); 42fd0: 2f08 movel %a0,%sp@- <== NOT EXECUTED 42fd2: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 42fd6: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 42fda: 2f2a 004c movel %a2@(76),%sp@- <== NOT EXECUTED 42fde: 4eb9 0004 b68a jsr 4b68a <== NOT EXECUTED if (err > 0) 42fe4: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED size_t count ) { IMFS_jnode_t *jnode = iop->pathinfo.node_access; int err = pipe_read(JNODE2PIPE(jnode), buffer, count, iop); 42fe8: 2400 movel %d0,%d2 <== NOT EXECUTED if (err > 0) 42fea: 6f16 bles 43002 <== NOT EXECUTED IMFS_update_atime(jnode); 42fec: 42a7 clrl %sp@- <== NOT EXECUTED 42fee: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 42ff2: 4eb9 0004 408c jsr 4408c <== NOT EXECUTED 42ff8: 256e fff8 003c movel %fp@(-8),%a2@(60) <== NOT EXECUTED 42ffe: 508f addql #8,%sp <== NOT EXECUTED 43000: 6012 bras 43014 <== NOT EXECUTED IMFS_FIFO_RETURN(err); 43002: 4a80 tstl %d0 <== NOT EXECUTED 43004: 670e beqs 43014 <== NOT EXECUTED 43006: 4eb9 0004 e80c jsr 4e80c <__errno> <== NOT EXECUTED 4300c: 4482 negl %d2 <== NOT EXECUTED 4300e: 2040 moveal %d0,%a0 <== NOT EXECUTED 43010: 2082 movel %d2,%a0@ <== NOT EXECUTED 43012: 74ff moveq #-1,%d2 <== NOT EXECUTED } 43014: 2002 movel %d2,%d0 <== NOT EXECUTED 43016: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 4301a: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 4301e: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00042f58 : ssize_t IMFS_fifo_write( rtems_libio_t *iop, const void *buffer, size_t count ) { 42f58: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 42f5c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 42f60: 2f0a movel %a2,%sp@- <== NOT EXECUTED IMFS_jnode_t *jnode = iop->pathinfo.node_access; 42f62: 2468 0018 moveal %a0@(24),%a2 <== NOT EXECUTED ssize_t IMFS_fifo_write( rtems_libio_t *iop, const void *buffer, size_t count ) { 42f66: 2f02 movel %d2,%sp@- <== NOT EXECUTED IMFS_jnode_t *jnode = iop->pathinfo.node_access; int err = pipe_write(JNODE2PIPE(jnode), buffer, count, iop); 42f68: 2f08 movel %a0,%sp@- <== NOT EXECUTED 42f6a: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 42f6e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 42f72: 2f2a 004c movel %a2@(76),%sp@- <== NOT EXECUTED 42f76: 4eb9 0004 b7e4 jsr 4b7e4 <== NOT EXECUTED if (err > 0) { 42f7c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED size_t count ) { IMFS_jnode_t *jnode = iop->pathinfo.node_access; int err = pipe_write(JNODE2PIPE(jnode), buffer, count, iop); 42f80: 2400 movel %d0,%d2 <== NOT EXECUTED if (err > 0) { 42f82: 6f1c bles 42fa0 <== NOT EXECUTED IMFS_mtime_ctime_update(jnode); 42f84: 42a7 clrl %sp@- <== NOT EXECUTED 42f86: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 42f8a: 4eb9 0004 408c jsr 4408c <== NOT EXECUTED 42f90: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 42f94: 508f addql #8,%sp <== NOT EXECUTED 42f96: 2540 0040 movel %d0,%a2@(64) <== NOT EXECUTED 42f9a: 2540 0044 movel %d0,%a2@(68) <== NOT EXECUTED 42f9e: 6012 bras 42fb2 <== NOT EXECUTED } IMFS_FIFO_RETURN(err); 42fa0: 4a80 tstl %d0 <== NOT EXECUTED 42fa2: 670e beqs 42fb2 <== NOT EXECUTED 42fa4: 4eb9 0004 e80c jsr 4e80c <__errno> <== NOT EXECUTED 42faa: 4482 negl %d2 <== NOT EXECUTED 42fac: 2040 moveal %d0,%a0 <== NOT EXECUTED 42fae: 2082 movel %d2,%a0@ <== NOT EXECUTED 42fb0: 74ff moveq #-1,%d2 <== NOT EXECUTED } 42fb2: 2002 movel %d2,%d0 <== NOT EXECUTED 42fb4: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 42fb8: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 42fbc: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000492d0 : IMFS_jnode_t *IMFS_find_match_in_dir( IMFS_jnode_t *directory, char *name ) { 492d0: 4e56 fff0 linkw %fp,#-16 492d4: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ /* * Check for "." and ".." */ if ( !strcmp( name, dotname ) ) 492d8: 4879 0005 b410 pea 5b410 492de: 49f9 0004 d78c lea 4d78c ,%a4 IMFS_jnode_t *IMFS_find_match_in_dir( IMFS_jnode_t *directory, char *name ) { 492e4: 242e 000c movel %fp@(12),%d2 /* * Check for "." and ".." */ if ( !strcmp( name, dotname ) ) 492e8: 2f02 movel %d2,%sp@- IMFS_jnode_t *IMFS_find_match_in_dir( IMFS_jnode_t *directory, char *name ) { 492ea: 246e 0008 moveal %fp@(8),%a2 /* * Check for "." and ".." */ if ( !strcmp( name, dotname ) ) 492ee: 4e94 jsr %a4@ 492f0: 508f addql #8,%sp 492f2: 4a80 tstl %d0 492f4: 673a beqs 49330 <== NEVER TAKEN return directory; if ( !strcmp( name, dotdotname ) ) 492f6: 4879 0005 b412 pea 5b412 492fc: 2f02 movel %d2,%sp@- 492fe: 4e94 jsr %a4@ 49300: 508f addql #8,%sp 49302: 4a80 tstl %d0 49304: 6606 bnes 4930c <== ALWAYS TAKEN return directory->Parent; 49306: 246a 0008 moveal %a2@(8),%a2 <== NOT EXECUTED 4930a: 6024 bras 49330 <== NOT EXECUTED the_chain = &directory->info.directory.Entries; for ( the_node = the_chain->first; 4930c: 266a 004c moveal %a2@(76),%a3 49310: 45ea 0050 lea %a2@(80),%a2 49314: 6010 bras 49326 !rtems_chain_is_tail( the_chain, the_node ); the_node = the_node->next ) { the_jnode = (IMFS_jnode_t *) the_node; if ( !strcmp( name, the_jnode->name ) ) 49316: 486b 000c pea %a3@(12) 4931a: 2f02 movel %d2,%sp@- 4931c: 4e94 jsr %a4@ 4931e: 508f addql #8,%sp 49320: 4a80 tstl %d0 49322: 670a beqs 4932e the_chain = &directory->info.directory.Entries; for ( the_node = the_chain->first; !rtems_chain_is_tail( the_chain, the_node ); the_node = the_node->next ) { 49324: 2653 moveal %a3@,%a3 if ( !strcmp( name, dotdotname ) ) return directory->Parent; the_chain = &directory->info.directory.Entries; for ( the_node = the_chain->first; 49326: b5cb cmpal %a3,%a2 49328: 66ec bnes 49316 if ( !strcmp( name, the_jnode->name ) ) return the_jnode; } return 0; 4932a: 95ca subal %a2,%a2 4932c: 6002 bras 49330 for ( the_node = the_chain->first; !rtems_chain_is_tail( the_chain, the_node ); the_node = the_node->next ) { the_jnode = (IMFS_jnode_t *) the_node; 4932e: 244b moveal %a3,%a2 if ( !strcmp( name, the_jnode->name ) ) return the_jnode; } return 0; } 49330: 200a movel %a2,%d0 49332: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 49338: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004922c : ((IMFS_jnode_t *)( rtems_chain_head( jnode_get_control( jnode ) )->next)) int IMFS_fsunmount( rtems_filesystem_mount_table_entry_t *temp_mt_entry ) { 4922c: 4e56 ffd8 linkw %fp,#-40 <== NOT EXECUTED 49230: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED 49234: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED * Traverse tree that starts at the mt_fs_root and deallocate memory * associated memory space */ jnode = (IMFS_jnode_t *)temp_mt_entry->mt_fs_root.node_access; loc = temp_mt_entry->mt_fs_root; 49238: 240e movel %fp,%d2 <== NOT EXECUTED 4923a: 0682 ffff ffec addil #-20,%d2 <== NOT EXECUTED temp_mt_entry->mt_fs_root.node_access = NULL; do { next = jnode->Parent; loc.node_access = (void *)jnode; IMFS_Set_handlers( &loc ); 49240: 49f9 0004 8bf0 lea 48bf0 ,%a4 <== NOT EXECUTED /* * Traverse tree that starts at the mt_fs_root and deallocate memory * associated memory space */ jnode = (IMFS_jnode_t *)temp_mt_entry->mt_fs_root.node_access; 49246: 246b 001c moveal %a3@(28),%a2 <== NOT EXECUTED loc = temp_mt_entry->mt_fs_root; 4924a: 4878 0014 pea 14 <== NOT EXECUTED 4924e: 486b 001c pea %a3@(28) <== NOT EXECUTED 49252: 2f02 movel %d2,%sp@- <== NOT EXECUTED 49254: 4eb9 0004 d138 jsr 4d138 <== NOT EXECUTED /* * Set this to null to indicate that it is being unmounted. */ temp_mt_entry->mt_fs_root.node_access = NULL; 4925a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4925e: 42ab 001c clrl %a3@(28) <== NOT EXECUTED next = jnode->Parent; loc.node_access = (void *)jnode; IMFS_Set_handlers( &loc ); if ( jnode->type != IMFS_DIRECTORY ) { result = IMFS_unlink( NULL, &loc ); 49262: 47f9 0004 2138 lea 42138 ,%a3 <== NOT EXECUTED */ temp_mt_entry->mt_fs_root.node_access = NULL; do { next = jnode->Parent; 49268: 262a 0008 movel %a2@(8),%d3 <== NOT EXECUTED loc.node_access = (void *)jnode; 4926c: 2d4a ffec movel %a2,%fp@(-20) <== NOT EXECUTED IMFS_Set_handlers( &loc ); 49270: 2f02 movel %d2,%sp@- <== NOT EXECUTED 49272: 4e94 jsr %a4@ <== NOT EXECUTED if ( jnode->type != IMFS_DIRECTORY ) { 49274: 588f addql #4,%sp <== NOT EXECUTED 49276: 7001 moveq #1,%d0 <== NOT EXECUTED 49278: b0aa 0048 cmpl %a2@(72),%d0 <== NOT EXECUTED 4927c: 660e bnes 4928c <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail( Chain_Control *the_chain ) { return (Chain_Node *) &the_chain->permanent_null; 4927e: 200a movel %a2,%d0 <== NOT EXECUTED 49280: 0680 0000 0050 addil #80,%d0 <== NOT EXECUTED result = IMFS_unlink( NULL, &loc ); if (result != 0) return -1; jnode = next; } else if ( jnode_has_no_children( jnode ) ) { 49286: b0aa 004c cmpl %a2@(76),%d0 <== NOT EXECUTED 4928a: 660e bnes 4929a <== NOT EXECUTED result = IMFS_unlink( NULL, &loc ); 4928c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4928e: 42a7 clrl %sp@- <== NOT EXECUTED 49290: 4e93 jsr %a3@ <== NOT EXECUTED if (result != 0) 49292: 508f addql #8,%sp <== NOT EXECUTED 49294: 4a80 tstl %d0 <== NOT EXECUTED 49296: 6626 bnes 492be <== NOT EXECUTED return -1; jnode = next; 49298: 2443 moveal %d3,%a2 <== NOT EXECUTED } if ( jnode != NULL ) { 4929a: 4a8a tstl %a2 <== NOT EXECUTED 4929c: 6724 beqs 492c2 <== NOT EXECUTED if ( jnode->type == IMFS_DIRECTORY ) { 4929e: 7001 moveq #1,%d0 <== NOT EXECUTED 492a0: b0aa 0048 cmpl %a2@(72),%d0 <== NOT EXECUTED 492a4: 66c2 bnes 49268 <== NOT EXECUTED 492a6: 200a movel %a2,%d0 <== NOT EXECUTED 492a8: 0680 0000 0050 addil #80,%d0 <== NOT EXECUTED if ( jnode_has_children( jnode ) ) 492ae: b0aa 004c cmpl %a2@(76),%d0 <== NOT EXECUTED 492b2: 67b4 beqs 49268 <== NOT EXECUTED jnode = jnode_get_first_child( jnode ); 492b4: 246a 004c moveal %a2@(76),%a2 <== NOT EXECUTED } } } while (jnode != NULL); 492b8: 4a8a tstl %a2 <== NOT EXECUTED 492ba: 66ac bnes 49268 <== NOT EXECUTED 492bc: 6004 bras 492c2 <== NOT EXECUTED return -1; jnode = next; } else if ( jnode_has_no_children( jnode ) ) { result = IMFS_unlink( NULL, &loc ); if (result != 0) return -1; 492be: 70ff moveq #-1,%d0 <== NOT EXECUTED 492c0: 6002 bras 492c4 <== NOT EXECUTED jnode = jnode_get_first_child( jnode ); } } } while (jnode != NULL); return 0; 492c2: 4280 clrl %d0 <== NOT EXECUTED } 492c4: 4cee 1c0c ffd8 moveml %fp@(-40),%d2-%d3/%a2-%a4 <== NOT EXECUTED 492ca: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004933c : const char *path, int pathlen, char *token, int *token_len ) { 4933c: 4e56 ffe4 linkw %fp,#-28 49340: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@ 49344: 246e 0010 moveal %fp@(16),%a2 register int i = 0; 49348: 4283 clrl %d3 register char c; /* * Copy a name into token. (Remember NULL is a token.) */ c = path[i]; 4934a: 284a moveal %a2,%a4 while ( (!IMFS_is_separator(c)) && (i < pathlen) && (i <= IMFS_NAME_MAX) ) { 4934c: 4bf9 0004 34c8 lea 434c8 ,%a5 register char c; /* * Copy a name into token. (Remember NULL is a token.) */ c = path[i]; 49352: 266e 0008 moveal %fp@(8),%a3 const char *path, int pathlen, char *token, int *token_len ) { 49356: 282e 000c movel %fp@(12),%d4 register char c; /* * Copy a name into token. (Remember NULL is a token.) */ c = path[i]; 4935a: 141b moveb %a3@+,%d2 while ( (!IMFS_is_separator(c)) && (i < pathlen) && (i <= IMFS_NAME_MAX) ) { 4935c: 600c bras 4936a token[i] = c; if ( i == IMFS_NAME_MAX ) 4935e: 7020 moveq #32,%d0 * Copy a name into token. (Remember NULL is a token.) */ c = path[i]; while ( (!IMFS_is_separator(c)) && (i < pathlen) && (i <= IMFS_NAME_MAX) ) { token[i] = c; 49360: 18c2 moveb %d2,%a4@+ if ( i == IMFS_NAME_MAX ) 49362: b083 cmpl %d3,%d0 49364: 6772 beqs 493d8 <== NEVER TAKEN return IMFS_INVALID_TOKEN; if ( !IMFS_is_valid_name_char(c) ) type = IMFS_INVALID_TOKEN; c = path [++i]; 49366: 5283 addql #1,%d3 49368: 141b moveb %a3@+,%d2 /* * Copy a name into token. (Remember NULL is a token.) */ c = path[i]; while ( (!IMFS_is_separator(c)) && (i < pathlen) && (i <= IMFS_NAME_MAX) ) { 4936a: 1002 moveb %d2,%d0 4936c: 49c0 extbl %d0 4936e: 2f00 movel %d0,%sp@- 49370: 4e95 jsr %a5@ 49372: 588f addql #4,%sp 49374: 4a80 tstl %d0 49376: 6604 bnes 4937c 49378: b883 cmpl %d3,%d4 4937a: 6ee2 bgts 4935e <== ALWAYS TAKEN /* * Copy a seperator into token. */ if ( i == 0 ) { 4937c: 4a83 tstl %d3 4937e: 660a bnes 4938a token[i] = c; 49380: 1482 moveb %d2,%a2@ if ( (token[i] != '\0') && pathlen ) { 49382: 6714 beqs 49398 49384: 4a84 tstl %d4 49386: 6614 bnes 4939c <== ALWAYS TAKEN 49388: 600e bras 49398 <== NOT EXECUTED i++; type = IMFS_CURRENT_DIR; } else { type = IMFS_NO_MORE_PATH; } } else if (token[ i-1 ] != '\0') { 4938a: 4a32 38ff tstb %a2@(ffffffff,%d3:l) 4938e: 6712 beqs 493a2 <== NEVER TAKEN token[i] = '\0'; 49390: 4200 clrb %d0 49392: 1580 3800 moveb %d0,%a2@(00000000,%d3:l) 49396: 600a bras 493a2 if ( (token[i] != '\0') && pathlen ) { i++; type = IMFS_CURRENT_DIR; } else { type = IMFS_NO_MORE_PATH; 49398: 4282 clrl %d2 4939a: 6008 bras 493a4 if ( i == 0 ) { token[i] = c; if ( (token[i] != '\0') && pathlen ) { i++; type = IMFS_CURRENT_DIR; 4939c: 7401 moveq #1,%d2 if ( i == 0 ) { token[i] = c; if ( (token[i] != '\0') && pathlen ) { i++; 4939e: 7601 moveq #1,%d3 493a0: 6002 bras 493a4 char *token, int *token_len ) { register int i = 0; IMFS_token_types type = IMFS_NAME; 493a2: 7403 moveq #3,%d2 /* * Set token_len to the number of characters copied. */ *token_len = i; 493a4: 206e 0014 moveal %fp@(20),%a0 /* * If we copied something that was not a seperator see if * it was a special name. */ if ( type == IMFS_NAME ) { 493a8: 7003 moveq #3,%d0 /* * Set token_len to the number of characters copied. */ *token_len = i; 493aa: 2083 movel %d3,%a0@ /* * If we copied something that was not a seperator see if * it was a special name. */ if ( type == IMFS_NAME ) { 493ac: b082 cmpl %d2,%d0 493ae: 6632 bnes 493e2 if ( strcmp( token, "..") == 0 ) 493b0: 4879 0005 b415 pea 5b415 493b6: 47f9 0004 d78c lea 4d78c ,%a3 493bc: 2f0a movel %a2,%sp@- 493be: 4e93 jsr %a3@ 493c0: 508f addql #8,%sp 493c2: 4a80 tstl %d0 493c4: 6716 beqs 493dc <== NEVER TAKEN type = IMFS_UP_DIR; else if ( strcmp( token, "." ) == 0 ) 493c6: 4879 0005 b416 pea 5b416 493cc: 2f0a movel %a2,%sp@- 493ce: 4e93 jsr %a3@ 493d0: 508f addql #8,%sp 493d2: 4a80 tstl %d0 493d4: 670a beqs 493e0 <== NEVER TAKEN 493d6: 600a bras 493e2 while ( (!IMFS_is_separator(c)) && (i < pathlen) && (i <= IMFS_NAME_MAX) ) { token[i] = c; if ( i == IMFS_NAME_MAX ) return IMFS_INVALID_TOKEN; 493d8: 7404 moveq #4,%d2 <== NOT EXECUTED 493da: 6006 bras 493e2 <== NOT EXECUTED * it was a special name. */ if ( type == IMFS_NAME ) { if ( strcmp( token, "..") == 0 ) type = IMFS_UP_DIR; 493dc: 7402 moveq #2,%d2 <== NOT EXECUTED 493de: 6002 bras 493e2 <== NOT EXECUTED else if ( strcmp( token, "." ) == 0 ) type = IMFS_CURRENT_DIR; 493e0: 7401 moveq #1,%d2 <== NOT EXECUTED } return type; } 493e2: 2002 movel %d2,%d0 493e4: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 493ea: 4e5e unlk %fp ... =============================================================================== 00041d80 : IMFS_jnode_t *jnode; /* * determine/check value for imfs_memfile_bytes_per_block */ IMFS_determine_bytes_per_block(&imfs_memfile_bytes_per_block, 41d80: 307c 0006 moveaw #6,%a0 int bit_mask; /* * check, whether requested bytes per block is valid */ for (bit_mask = 16; !is_valid && (bit_mask <= 512); bit_mask <<= 1) { 41d84: 7210 moveq #16,%d1 const rtems_filesystem_operations_table *op_table, const rtems_filesystem_file_handlers_r *memfile_handlers, const rtems_filesystem_file_handlers_r *directory_handlers, const rtems_filesystem_file_handlers_r *fifo_handlers ) { 41d86: 4e56 fff4 linkw %fp,#-12 IMFS_jnode_t *jnode; /* * determine/check value for imfs_memfile_bytes_per_block */ IMFS_determine_bytes_per_block(&imfs_memfile_bytes_per_block, 41d8a: 2039 0005 c0d8 movel 5c0d8 ,%d0 const rtems_filesystem_operations_table *op_table, const rtems_filesystem_file_handlers_r *memfile_handlers, const rtems_filesystem_file_handlers_r *directory_handlers, const rtems_filesystem_file_handlers_r *fifo_handlers ) { 41d90: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ 41d94: 246e 0008 moveal %fp@(8),%a2 41d98: 242e 0014 movel %fp@(20),%d2 /* * check, whether requested bytes per block is valid */ for (bit_mask = 16; !is_valid && (bit_mask <= 512); bit_mask <<= 1) { if (bit_mask == requested_bytes_per_block) { 41d9c: b081 cmpl %d1,%d0 41d9e: 6710 beqs 41db0 is_valid = true; break; } if(bit_mask > requested_bytes_per_block) 41da0: 6d08 blts 41daa int bit_mask; /* * check, whether requested bytes per block is valid */ for (bit_mask = 16; !is_valid && (bit_mask <= 512); bit_mask <<= 1) { 41da2: 5388 subql #1,%a0 41da4: d281 addl %d1,%d1 41da6: 4a88 tstl %a0 41da8: 66f2 bnes 41d9c <== ALWAYS TAKEN if(bit_mask > requested_bytes_per_block) break; } *dest_bytes_per_block = ((is_valid) ? requested_bytes_per_block : default_bytes_per_block); 41daa: 203c 0000 0080 movel #128,%d0 break; } if(bit_mask > requested_bytes_per_block) break; } *dest_bytes_per_block = ((is_valid) 41db0: 23c0 0005 d0d4 movel %d0,5d0d4 /* * Create the root node * * NOTE: UNIX root is 755 and owned by root/root (0/0). */ temp_mt_entry->mt_fs_root.node_access = IMFS_create_root_node(); 41db6: 4eb9 0004 8bb6 jsr 48bb6 temp_mt_entry->mt_fs_root.handlers = directory_handlers; temp_mt_entry->mt_fs_root.ops = op_table; 41dbc: 256e 000c 0028 movel %fp@(12),%a2@(40) /* * Create the root node * * NOTE: UNIX root is 755 and owned by root/root (0/0). */ temp_mt_entry->mt_fs_root.node_access = IMFS_create_root_node(); 41dc2: 2640 moveal %d0,%a3 41dc4: 2540 001c movel %d0,%a2@(28) temp_mt_entry->mt_fs_root.handlers = directory_handlers; 41dc8: 2542 0024 movel %d2,%a2@(36) temp_mt_entry->mt_fs_root.ops = op_table; temp_mt_entry->pathconf_limits_and_options = IMFS_LIMITS_AND_OPTIONS; 41dcc: 4878 0030 pea 30 41dd0: 4879 0005 b3e0 pea 5b3e0 41dd6: 486a 0038 pea %a2@(56) 41dda: 4eb9 0004 d138 jsr 4d138 /* * Create custom file system data. */ fs_info = calloc( 1, sizeof( IMFS_fs_info_t ) ); 41de0: 4878 0014 pea 14 41de4: 4878 0001 pea 1 41de8: 4eb9 0004 241c jsr 4241c if ( !fs_info ) { 41dee: 4fef 0014 lea %sp@(20),%sp temp_mt_entry->pathconf_limits_and_options = IMFS_LIMITS_AND_OPTIONS; /* * Create custom file system data. */ fs_info = calloc( 1, sizeof( IMFS_fs_info_t ) ); 41df2: 2040 moveal %d0,%a0 if ( !fs_info ) { 41df4: 4a80 tstl %d0 41df6: 661a bnes 41e12 <== ALWAYS TAKEN free(temp_mt_entry->mt_fs_root.node_access); 41df8: 2f0b movel %a3,%sp@- <== NOT EXECUTED 41dfa: 4eb9 0004 27b4 jsr 427b4 <== NOT EXECUTED rtems_set_errno_and_return_minus_one(ENOMEM); 41e00: 4eb9 0004 c88c jsr 4c88c <__errno> <== NOT EXECUTED 41e06: 588f addql #4,%sp <== NOT EXECUTED 41e08: 2040 moveal %d0,%a0 <== NOT EXECUTED 41e0a: 700c moveq #12,%d0 <== NOT EXECUTED 41e0c: 2080 movel %d0,%a0@ <== NOT EXECUTED 41e0e: 70ff moveq #-1,%d0 <== NOT EXECUTED 41e10: 6030 bras 41e42 <== NOT EXECUTED } temp_mt_entry->fs_info = fs_info; 41e12: 2540 0034 movel %d0,%a2@(52) /* * Set st_ino for the root to 1. */ fs_info->instance = imfs_instance++; 41e16: 2039 0005 d0d8 movel 5d0d8 ,%d0 41e1c: 2080 movel %d0,%a0@ 41e1e: 5280 addql #1,%d0 41e20: 23c0 0005 d0d8 movel %d0,5d0d8 fs_info->ino_count = 1; 41e26: 7001 moveq #1,%d0 fs_info->memfile_handlers = memfile_handlers; 41e28: 216e 0010 0008 movel %fp@(16),%a0@(8) fs_info->directory_handlers = directory_handlers; fs_info->fifo_handlers = fifo_handlers; 41e2e: 216e 0018 0010 movel %fp@(24),%a0@(16) /* * Set st_ino for the root to 1. */ fs_info->instance = imfs_instance++; fs_info->ino_count = 1; 41e34: 2140 0004 movel %d0,%a0@(4) fs_info->memfile_handlers = memfile_handlers; fs_info->directory_handlers = directory_handlers; 41e38: 2142 000c movel %d2,%a0@(12) fs_info->fifo_handlers = fifo_handlers; jnode = temp_mt_entry->mt_fs_root.node_access; jnode->st_ino = fs_info->ino_count; 41e3c: 2740 0034 movel %d0,%a3@(52) return 0; 41e40: 4200 clrb %d0 } 41e42: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 41e48: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00041e4c : /* * Verify this node can be linked to. */ info.hard_link.link_node = to_loc->node_access; if ( info.hard_link.link_node->st_nlink >= LINK_MAX ) 41e4c: 4280 clrl %d0 <== NOT EXECUTED 41e4e: 7207 moveq #7,%d1 <== NOT EXECUTED int IMFS_link( rtems_filesystem_location_info_t *to_loc, /* IN */ rtems_filesystem_location_info_t *parent_loc, /* IN */ const char *token /* IN */ ) { 41e50: 4e56 ffbc linkw %fp,#-68 <== NOT EXECUTED int i; /* * Verify this node can be linked to. */ info.hard_link.link_node = to_loc->node_access; 41e54: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 41e58: 2050 moveal %a0@,%a0 <== NOT EXECUTED int IMFS_link( rtems_filesystem_location_info_t *to_loc, /* IN */ rtems_filesystem_location_info_t *parent_loc, /* IN */ const char *token /* IN */ ) { 41e5a: 2f03 movel %d3,%sp@- <== NOT EXECUTED 41e5c: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED /* * Verify this node can be linked to. */ info.hard_link.link_node = to_loc->node_access; if ( info.hard_link.link_node->st_nlink >= LINK_MAX ) 41e60: 3028 0032 movew %a0@(50),%d0 <== NOT EXECUTED int IMFS_link( rtems_filesystem_location_info_t *to_loc, /* IN */ rtems_filesystem_location_info_t *parent_loc, /* IN */ const char *token /* IN */ ) { 41e64: 2f02 movel %d2,%sp@- <== NOT EXECUTED int i; /* * Verify this node can be linked to. */ info.hard_link.link_node = to_loc->node_access; 41e66: 2d48 ffe0 movel %a0,%fp@(-32) <== NOT EXECUTED if ( info.hard_link.link_node->st_nlink >= LINK_MAX ) 41e6a: b280 cmpl %d0,%d1 <== NOT EXECUTED 41e6c: 640e bccs 41e7c <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EMLINK ); 41e6e: 4eb9 0004 c88c jsr 4c88c <__errno> <== NOT EXECUTED 41e74: 721f moveq #31,%d1 <== NOT EXECUTED 41e76: 2040 moveal %d0,%a0 <== NOT EXECUTED 41e78: 2081 movel %d1,%a0@ <== NOT EXECUTED 41e7a: 6050 bras 41ecc <== NOT EXECUTED /* * Remove any separators at the end of the string. */ IMFS_get_token( token, strlen( token ), new_name, &i ); 41e7c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 41e7e: 240e movel %fp,%d2 <== NOT EXECUTED 41e80: 0682 ffff ffbf addil #-65,%d2 <== NOT EXECUTED 41e86: 4eb9 0004 dce4 jsr 4dce4 <== NOT EXECUTED 41e8c: 588f addql #4,%sp <== NOT EXECUTED 41e8e: 486e fffc pea %fp@(-4) <== NOT EXECUTED 41e92: 2f02 movel %d2,%sp@- <== NOT EXECUTED 41e94: 2f00 movel %d0,%sp@- <== NOT EXECUTED 41e96: 2f03 movel %d3,%sp@- <== NOT EXECUTED 41e98: 4eb9 0004 933c jsr 4933c <== NOT EXECUTED * was ONLY passed a NULL when we created the root node. We * added a new IMFS_create_root_node() so this path no longer * existed. The result was simpler code which should not have * this path. */ new_node = IMFS_create_node( 41e9e: 486e ffe0 pea %fp@(-32) <== NOT EXECUTED 41ea2: 2f3c 0000 a1ff movel #41471,%sp@- <== NOT EXECUTED 41ea8: 2f02 movel %d2,%sp@- <== NOT EXECUTED 41eaa: 4878 0003 pea 3 <== NOT EXECUTED 41eae: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 41eb2: 4eb9 0004 8aa2 jsr 48aa2 <== NOT EXECUTED new_name, ( S_IFLNK | ( S_IRWXU | S_IRWXG | S_IRWXO )), &info ); if ( !new_node ) 41eb8: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED 41ebc: 4a80 tstl %d0 <== NOT EXECUTED 41ebe: 6610 bnes 41ed0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOMEM ); 41ec0: 4eb9 0004 c88c jsr 4c88c <__errno> <== NOT EXECUTED 41ec6: 2040 moveal %d0,%a0 <== NOT EXECUTED 41ec8: 700c moveq #12,%d0 <== NOT EXECUTED 41eca: 2080 movel %d0,%a0@ <== NOT EXECUTED 41ecc: 70ff moveq #-1,%d0 <== NOT EXECUTED 41ece: 6028 bras 41ef8 <== NOT EXECUTED /* * Increment the link count of the node being pointed to. */ info.hard_link.link_node->st_nlink++; 41ed0: 206e ffe0 moveal %fp@(-32),%a0 <== NOT EXECUTED 41ed4: 3028 0032 movew %a0@(50),%d0 <== NOT EXECUTED 41ed8: 5280 addql #1,%d0 <== NOT EXECUTED 41eda: 3140 0032 movew %d0,%a0@(50) <== NOT EXECUTED IMFS_update_ctime( info.hard_link.link_node ); 41ede: 42a7 clrl %sp@- <== NOT EXECUTED 41ee0: 486e fff4 pea %fp@(-12) <== NOT EXECUTED 41ee4: 4eb9 0004 283c jsr 4283c <== NOT EXECUTED 41eea: 206e ffe0 moveal %fp@(-32),%a0 <== NOT EXECUTED return 0; 41eee: 508f addql #8,%sp <== NOT EXECUTED 41ef0: 4280 clrl %d0 <== NOT EXECUTED /* * Increment the link count of the node being pointed to. */ info.hard_link.link_node->st_nlink++; IMFS_update_ctime( info.hard_link.link_node ); 41ef2: 216e fff4 0044 movel %fp@(-12),%a0@(68) <== NOT EXECUTED return 0; } 41ef8: 242e ffb4 movel %fp@(-76),%d2 <== NOT EXECUTED 41efc: 262e ffb8 movel %fp@(-72),%d3 <== NOT EXECUTED 41f00: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004b548 : */ MEMFILE_STATIC int IMFS_memfile_addblock( IMFS_jnode_t *the_jnode, unsigned int block ) { 4b548: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b54c: 2f0a movel %a2,%sp@- <== NOT EXECUTED IMFS_assert( the_jnode->type == IMFS_MEMORY_FILE ); /* * Obtain the pointer for the specified block number */ block_entry_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 1 ); 4b54e: 4878 0001 pea 1 <== NOT EXECUTED 4b552: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4b556: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4b55a: 4eb9 0004 b240 jsr 4b240 <== NOT EXECUTED if ( *block_entry_ptr ) 4b560: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED IMFS_assert( the_jnode->type == IMFS_MEMORY_FILE ); /* * Obtain the pointer for the specified block number */ block_entry_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 1 ); 4b564: 2440 moveal %d0,%a2 <== NOT EXECUTED if ( *block_entry_ptr ) 4b566: 4a92 tstl %a2@ <== NOT EXECUTED 4b568: 660c bnes 4b576 <== NOT EXECUTED return 0; /* * There is no memory for this block number so allocate it. */ memory = memfile_alloc_block(); 4b56a: 4eb9 0004 b21c jsr 4b21c <== NOT EXECUTED if ( !memory ) 4b570: 4a80 tstl %d0 <== NOT EXECUTED 4b572: 6706 beqs 4b57a <== NOT EXECUTED return 1; *block_entry_ptr = memory; 4b574: 2480 movel %d0,%a2@ <== NOT EXECUTED /* * Obtain the pointer for the specified block number */ block_entry_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 1 ); if ( *block_entry_ptr ) return 0; 4b576: 4280 clrl %d0 <== NOT EXECUTED 4b578: 6002 bras 4b57c <== NOT EXECUTED /* * There is no memory for this block number so allocate it. */ memory = memfile_alloc_block(); if ( !memory ) return 1; 4b57a: 7001 moveq #1,%d0 <== NOT EXECUTED *block_entry_ptr = memory; return 0; } 4b57c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4b580: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004b6ec : IMFS_assert( the_jnode->type == IMFS_MEMORY_FILE ); /* * Verify new file size is supported */ if ( new_length >= IMFS_MEMFILE_MAXIMUM_SIZE ) 4b6ec: 4280 clrl %d0 <== NOT EXECUTED */ MEMFILE_STATIC int IMFS_memfile_extend( IMFS_jnode_t *the_jnode, off_t new_length ) { 4b6ee: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED 4b6f2: 48d7 1cfc moveml %d2-%d7/%a2-%a4,%sp@ <== NOT EXECUTED IMFS_assert( the_jnode->type == IMFS_MEMORY_FILE ); /* * Verify new file size is supported */ if ( new_length >= IMFS_MEMFILE_MAXIMUM_SIZE ) 4b6f6: 2c39 0005 d0d4 movel 5d0d4 ,%d6<== NOT EXECUTED 4b6fc: 2a06 movel %d6,%d5 <== NOT EXECUTED 4b6fe: e48d lsrl #2,%d5 <== NOT EXECUTED 4b700: 2805 movel %d5,%d4 <== NOT EXECUTED 4b702: 5284 addql #1,%d4 <== NOT EXECUTED 4b704: 4c05 4800 mulsl %d5,%d4 <== NOT EXECUTED */ MEMFILE_STATIC int IMFS_memfile_extend( IMFS_jnode_t *the_jnode, off_t new_length ) { 4b708: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4b70c: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED 4b710: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED IMFS_assert( the_jnode->type == IMFS_MEMORY_FILE ); /* * Verify new file size is supported */ if ( new_length >= IMFS_MEMFILE_MAXIMUM_SIZE ) 4b714: 5284 addql #1,%d4 <== NOT EXECUTED 4b716: 4c05 4800 mulsl %d5,%d4 <== NOT EXECUTED 4b71a: 5384 subql #1,%d4 <== NOT EXECUTED 4b71c: 4c06 4800 mulsl %d6,%d4 <== NOT EXECUTED 4b720: 2204 movel %d4,%d1 <== NOT EXECUTED 4b722: 2802 movel %d2,%d4 <== NOT EXECUTED 4b724: 2a03 movel %d3,%d5 <== NOT EXECUTED 4b726: 9a81 subl %d1,%d5 <== NOT EXECUTED 4b728: 9980 subxl %d0,%d4 <== NOT EXECUTED 4b72a: 6d0e blts 4b73a <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 4b72c: 4eb9 0004 c88c jsr 4c88c <__errno> <== NOT EXECUTED 4b732: 7216 moveq #22,%d1 <== NOT EXECUTED 4b734: 2040 moveal %d0,%a0 <== NOT EXECUTED 4b736: 2081 movel %d1,%a0@ <== NOT EXECUTED 4b738: 6078 bras 4b7b2 <== NOT EXECUTED /* * Verify new file size is actually larger than current size */ if ( new_length <= the_jnode->info.file.size ) 4b73a: 282a 004c movel %a2@(76),%d4 <== NOT EXECUTED 4b73e: 2a2a 0050 movel %a2@(80),%d5 <== NOT EXECUTED 4b742: 2002 movel %d2,%d0 <== NOT EXECUTED 4b744: 2203 movel %d3,%d1 <== NOT EXECUTED 4b746: 9285 subl %d5,%d1 <== NOT EXECUTED 4b748: 9184 subxl %d4,%d0 <== NOT EXECUTED 4b74a: 6f78 bles 4b7c4 <== NOT EXECUTED return 0; /* * Calculate the number of range of blocks to allocate */ new_blocks = new_length / IMFS_MEMFILE_BYTES_PER_BLOCK; 4b74c: 47f9 0005 8724 lea 58724 <__divdi3>,%a3 <== NOT EXECUTED 4b752: 2e06 movel %d6,%d7 <== NOT EXECUTED 4b754: 5bc6 smi %d6 <== NOT EXECUTED 4b756: 49c6 extbl %d6 <== NOT EXECUTED 4b758: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4b75a: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4b75c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4b75e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b760: 4e93 jsr %a3@ <== NOT EXECUTED 4b762: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4b766: 2841 moveal %d1,%a4 <== NOT EXECUTED old_blocks = the_jnode->info.file.size / IMFS_MEMFILE_BYTES_PER_BLOCK; 4b768: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4b76a: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4b76c: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4b76e: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4b770: 4e93 jsr %a3@ <== NOT EXECUTED 4b772: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED /* * Now allocate each of those blocks. */ for ( block=old_blocks ; block<=new_blocks ; block++ ) { if ( IMFS_memfile_addblock( the_jnode, block ) ) { 4b776: 47f9 0004 b548 lea 4b548 ,%a3 <== NOT EXECUTED /* * Calculate the number of range of blocks to allocate */ new_blocks = new_length / IMFS_MEMFILE_BYTES_PER_BLOCK; old_blocks = the_jnode->info.file.size / IMFS_MEMFILE_BYTES_PER_BLOCK; 4b77c: 2c01 movel %d1,%d6 <== NOT EXECUTED /* * Now allocate each of those blocks. */ for ( block=old_blocks ; block<=new_blocks ; block++ ) { 4b77e: 2801 movel %d1,%d4 <== NOT EXECUTED 4b780: 6036 bras 4b7b8 <== NOT EXECUTED if ( IMFS_memfile_addblock( the_jnode, block ) ) { 4b782: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4b784: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b786: 4e93 jsr %a3@ <== NOT EXECUTED 4b788: 508f addql #8,%sp <== NOT EXECUTED 4b78a: 4a80 tstl %d0 <== NOT EXECUTED 4b78c: 6728 beqs 4b7b6 <== NOT EXECUTED 4b78e: 600c bras 4b79c <== NOT EXECUTED for ( ; block>=old_blocks ; block-- ) { IMFS_memfile_remove_block( the_jnode, block ); 4b790: 2f04 movel %d4,%sp@- <== NOT EXECUTED /* * Now allocate each of those blocks. */ for ( block=old_blocks ; block<=new_blocks ; block++ ) { if ( IMFS_memfile_addblock( the_jnode, block ) ) { for ( ; block>=old_blocks ; block-- ) { 4b792: 5384 subql #1,%d4 <== NOT EXECUTED IMFS_memfile_remove_block( the_jnode, block ); 4b794: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b796: 4e93 jsr %a3@ <== NOT EXECUTED /* * Now allocate each of those blocks. */ for ( block=old_blocks ; block<=new_blocks ; block++ ) { if ( IMFS_memfile_addblock( the_jnode, block ) ) { for ( ; block>=old_blocks ; block-- ) { 4b798: 508f addql #8,%sp <== NOT EXECUTED 4b79a: 6006 bras 4b7a2 <== NOT EXECUTED IMFS_memfile_remove_block( the_jnode, block ); 4b79c: 47f9 0004 b6c4 lea 4b6c4 ,%a3 <== NOT EXECUTED /* * Now allocate each of those blocks. */ for ( block=old_blocks ; block<=new_blocks ; block++ ) { if ( IMFS_memfile_addblock( the_jnode, block ) ) { for ( ; block>=old_blocks ; block-- ) { 4b7a2: bc84 cmpl %d4,%d6 <== NOT EXECUTED 4b7a4: 63ea blss 4b790 <== NOT EXECUTED IMFS_memfile_remove_block( the_jnode, block ); } rtems_set_errno_and_return_minus_one( ENOSPC ); 4b7a6: 4eb9 0004 c88c jsr 4c88c <__errno> <== NOT EXECUTED 4b7ac: 2040 moveal %d0,%a0 <== NOT EXECUTED 4b7ae: 701c moveq #28,%d0 <== NOT EXECUTED 4b7b0: 2080 movel %d0,%a0@ <== NOT EXECUTED 4b7b2: 70ff moveq #-1,%d0 <== NOT EXECUTED 4b7b4: 6010 bras 4b7c6 <== NOT EXECUTED old_blocks = the_jnode->info.file.size / IMFS_MEMFILE_BYTES_PER_BLOCK; /* * Now allocate each of those blocks. */ for ( block=old_blocks ; block<=new_blocks ; block++ ) { 4b7b6: 5284 addql #1,%d4 <== NOT EXECUTED 4b7b8: b9c4 cmpal %d4,%a4 <== NOT EXECUTED 4b7ba: 64c6 bccs 4b782 <== NOT EXECUTED } /* * Set the new length of the file. */ the_jnode->info.file.size = new_length; 4b7bc: 2542 004c movel %d2,%a2@(76) <== NOT EXECUTED 4b7c0: 2543 0050 movel %d3,%a2@(80) <== NOT EXECUTED /* * Verify new file size is actually larger than current size */ if ( new_length <= the_jnode->info.file.size ) return 0; 4b7c4: 4280 clrl %d0 <== NOT EXECUTED /* * Set the new length of the file. */ the_jnode->info.file.size = new_length; return 0; } 4b7c6: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4 <== NOT EXECUTED 4b7cc: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004b240 : #endif IMFS_jnode_t *the_jnode, unsigned int block, int malloc_it ) { 4b240: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED my_block = block; /* * Is the block number in the simple indirect portion? */ if ( my_block <= LAST_INDIRECT ) { 4b244: 2039 0005 d0d4 movel 5d0d4 ,%d0<== NOT EXECUTED 4b24a: e488 lsrl #2,%d0 <== NOT EXECUTED 4b24c: 2200 movel %d0,%d1 <== NOT EXECUTED 4b24e: 5381 subql #1,%d1 <== NOT EXECUTED #endif IMFS_jnode_t *the_jnode, unsigned int block, int malloc_it ) { 4b250: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED 4b254: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4b258: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4b25c: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED my_block = block; /* * Is the block number in the simple indirect portion? */ if ( my_block <= LAST_INDIRECT ) { 4b260: b282 cmpl %d2,%d1 <== NOT EXECUTED 4b262: 6536 bcss 4b29a <== NOT EXECUTED p = info->indirect; 4b264: 226a 0054 moveal %a2@(84),%a1 <== NOT EXECUTED if ( malloc_it ) { 4b268: 4a88 tstl %a0 <== NOT EXECUTED 4b26a: 6720 beqs 4b28c <== NOT EXECUTED if ( !p ) { 4b26c: 4a89 tstl %a1 <== NOT EXECUTED 4b26e: 6610 bnes 4b280 <== NOT EXECUTED p = memfile_alloc_block(); 4b270: 4eb9 0004 b21c jsr 4b21c <== NOT EXECUTED if ( !p ) 4b276: 4a80 tstl %d0 <== NOT EXECUTED 4b278: 6700 00f8 beqw 4b372 <== NOT EXECUTED return 0; info->indirect = p; 4b27c: 2540 0054 movel %d0,%a2@(84) <== NOT EXECUTED } return &info->indirect[ my_block ]; 4b280: 206a 0054 moveal %a2@(84),%a0 <== NOT EXECUTED 4b284: e58a lsll #2,%d2 <== NOT EXECUTED 4b286: d1c2 addal %d2,%a0 <== NOT EXECUTED 4b288: 6000 00ea braw 4b374 <== NOT EXECUTED } if ( !p ) 4b28c: 4a89 tstl %a1 <== NOT EXECUTED 4b28e: 6700 00e2 beqw 4b372 <== NOT EXECUTED return 0; return &info->indirect[ my_block ]; 4b292: 41f1 2c00 lea %a1@(00000000,%d2:l:4),%a0 <== NOT EXECUTED 4b296: 6000 00dc braw 4b374 <== NOT EXECUTED /* * Is the block number in the doubly indirect portion? */ if ( my_block <= LAST_DOUBLY_INDIRECT ) { 4b29a: 2200 movel %d0,%d1 <== NOT EXECUTED 4b29c: 5281 addql #1,%d1 <== NOT EXECUTED 4b29e: 4c00 1800 mulsl %d0,%d1 <== NOT EXECUTED 4b2a2: 2241 moveal %d1,%a1 <== NOT EXECUTED 4b2a4: 5389 subql #1,%a1 <== NOT EXECUTED 4b2a6: b3c2 cmpal %d2,%a1 <== NOT EXECUTED 4b2a8: 653e bcss 4b2e8 <== NOT EXECUTED my_block -= FIRST_DOUBLY_INDIRECT; 4b2aa: 9480 subl %d0,%d2 <== NOT EXECUTED singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS; 4b2ac: 4c40 2003 remul %d0,%d3,%d2 <== NOT EXECUTED 4b2b0: 4c40 2002 remul %d0,%d2,%d2 <== NOT EXECUTED doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS; p = info->doubly_indirect; 4b2b4: 202a 0058 movel %a2@(88),%d0 <== NOT EXECUTED if ( malloc_it ) { 4b2b8: 4a88 tstl %a0 <== NOT EXECUTED 4b2ba: 671c beqs 4b2d8 <== NOT EXECUTED if ( !p ) { 4b2bc: 4a80 tstl %d0 <== NOT EXECUTED 4b2be: 6610 bnes 4b2d0 <== NOT EXECUTED p = memfile_alloc_block(); 4b2c0: 4eb9 0004 b21c jsr 4b21c <== NOT EXECUTED if ( !p ) 4b2c6: 4a80 tstl %d0 <== NOT EXECUTED 4b2c8: 6700 00a8 beqw 4b372 <== NOT EXECUTED return 0; info->doubly_indirect = p; 4b2cc: 2540 0058 movel %d0,%a2@(88) <== NOT EXECUTED } p1 = (block_p *)p[ doubly ]; 4b2d0: 2040 moveal %d0,%a0 <== NOT EXECUTED 4b2d2: 45f0 2c00 lea %a0@(00000000,%d2:l:4),%a2 <== NOT EXECUTED 4b2d6: 6066 bras 4b33e <== NOT EXECUTED } return (block_p *)&p1[ singly ]; } if ( !p ) 4b2d8: 4a80 tstl %d0 <== NOT EXECUTED 4b2da: 6700 0096 beqw 4b372 <== NOT EXECUTED return 0; p = (block_p *)p[ doubly ]; 4b2de: 2240 moveal %d0,%a1 <== NOT EXECUTED 4b2e0: 2071 2c00 moveal %a1@(00000000,%d2:l:4),%a0 <== NOT EXECUTED 4b2e4: 6000 0082 braw 4b368 <== NOT EXECUTED } /* * Is the block number in the triply indirect portion? */ if ( my_block <= LAST_TRIPLY_INDIRECT ) { 4b2e8: 2601 movel %d1,%d3 <== NOT EXECUTED 4b2ea: 5283 addql #1,%d3 <== NOT EXECUTED 4b2ec: 4c00 3800 mulsl %d0,%d3 <== NOT EXECUTED 4b2f0: 5383 subql #1,%d3 <== NOT EXECUTED 4b2f2: b682 cmpl %d2,%d3 <== NOT EXECUTED 4b2f4: 657c bcss 4b372 <== NOT EXECUTED my_block -= FIRST_TRIPLY_INDIRECT; 4b2f6: 9481 subl %d1,%d2 <== NOT EXECUTED singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS; 4b2f8: 4c40 2003 remul %d0,%d3,%d2 <== NOT EXECUTED 4b2fc: 4c40 2002 remul %d0,%d2,%d2 <== NOT EXECUTED doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS; triply = doubly / IMFS_MEMFILE_BLOCK_SLOTS; 4b300: 4c40 2004 remul %d0,%d4,%d2 <== NOT EXECUTED 4b304: 4c40 2002 remul %d0,%d2,%d2 <== NOT EXECUTED doubly %= IMFS_MEMFILE_BLOCK_SLOTS; p = info->triply_indirect; 4b308: 202a 005c movel %a2@(92),%d0 <== NOT EXECUTED if ( malloc_it ) { 4b30c: 4a88 tstl %a0 <== NOT EXECUTED 4b30e: 6746 beqs 4b356 <== NOT EXECUTED if ( !p ) { 4b310: 4a80 tstl %d0 <== NOT EXECUTED 4b312: 660e bnes 4b322 <== NOT EXECUTED p = memfile_alloc_block(); 4b314: 4eb9 0004 b21c jsr 4b21c <== NOT EXECUTED if ( !p ) 4b31a: 4a80 tstl %d0 <== NOT EXECUTED 4b31c: 6754 beqs 4b372 <== NOT EXECUTED return 0; info->triply_indirect = p; 4b31e: 2540 005c movel %d0,%a2@(92) <== NOT EXECUTED } p1 = (block_p *) p[ triply ]; 4b322: 2040 moveal %d0,%a0 <== NOT EXECUTED 4b324: 45f0 2c00 lea %a0@(00000000,%d2:l:4),%a2 <== NOT EXECUTED 4b328: 2012 movel %a2@,%d0 <== NOT EXECUTED if ( !p1 ) { 4b32a: 660c bnes 4b338 <== NOT EXECUTED p1 = memfile_alloc_block(); 4b32c: 4eb9 0004 b21c jsr 4b21c <== NOT EXECUTED if ( !p1 ) 4b332: 4a80 tstl %d0 <== NOT EXECUTED 4b334: 673c beqs 4b372 <== NOT EXECUTED return 0; p[ triply ] = (block_p) p1; 4b336: 2480 movel %d0,%a2@ <== NOT EXECUTED } p2 = (block_p *)p1[ doubly ]; 4b338: 2240 moveal %d0,%a1 <== NOT EXECUTED 4b33a: 45f1 4c00 lea %a1@(00000000,%d4:l:4),%a2 <== NOT EXECUTED 4b33e: 2012 movel %a2@,%d0 <== NOT EXECUTED if ( !p2 ) { 4b340: 660c bnes 4b34e <== NOT EXECUTED p2 = memfile_alloc_block(); 4b342: 4eb9 0004 b21c jsr 4b21c <== NOT EXECUTED if ( !p2 ) 4b348: 4a80 tstl %d0 <== NOT EXECUTED 4b34a: 6726 beqs 4b372 <== NOT EXECUTED return 0; p1[ doubly ] = (block_p) p2; 4b34c: 2480 movel %d0,%a2@ <== NOT EXECUTED } return (block_p *)&p2[ singly ]; 4b34e: 2240 moveal %d0,%a1 <== NOT EXECUTED 4b350: 41f1 3c00 lea %a1@(00000000,%d3:l:4),%a0 <== NOT EXECUTED 4b354: 601e bras 4b374 <== NOT EXECUTED } if ( !p ) 4b356: 4a80 tstl %d0 <== NOT EXECUTED 4b358: 6718 beqs 4b372 <== NOT EXECUTED return 0; p1 = (block_p *) p[ triply ]; 4b35a: 2240 moveal %d0,%a1 <== NOT EXECUTED 4b35c: 2071 2c00 moveal %a1@(00000000,%d2:l:4),%a0 <== NOT EXECUTED if ( !p1 ) 4b360: 4a88 tstl %a0 <== NOT EXECUTED 4b362: 670e beqs 4b372 <== NOT EXECUTED return 0; p2 = (block_p *)p1[ doubly ]; 4b364: 2070 4c00 moveal %a0@(00000000,%d4:l:4),%a0 <== NOT EXECUTED if ( !p2 ) 4b368: 4a88 tstl %a0 <== NOT EXECUTED 4b36a: 6706 beqs 4b372 <== NOT EXECUTED return 0; return (block_p *)&p2[ singly ]; 4b36c: 41f0 3c00 lea %a0@(00000000,%d3:l:4),%a0 <== NOT EXECUTED 4b370: 6002 bras 4b374 <== NOT EXECUTED if ( !p1 ) return 0; p2 = (block_p *)p1[ doubly ]; if ( !p2 ) return 0; 4b372: 91c8 subal %a0,%a0 <== NOT EXECUTED /* * This means the requested block number is out of range. */ return 0; } 4b374: 2008 movel %a0,%d0 <== NOT EXECUTED 4b376: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 4b37c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00044848 : * This routine returns the size of the largest file which can be created * using the IMFS memory file type. * */ int IMFS_memfile_maximum_size( void ) { 44848: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return IMFS_MEMFILE_MAXIMUM_SIZE; 4484c: 2039 0006 2bf4 movel 62bf4 ,%d0<== NOT EXECUTED * This routine returns the size of the largest file which can be created * using the IMFS memory file type. * */ int IMFS_memfile_maximum_size( void ) { 44852: 2f02 movel %d2,%sp@- <== NOT EXECUTED return IMFS_MEMFILE_MAXIMUM_SIZE; 44854: 2400 movel %d0,%d2 <== NOT EXECUTED 44856: e48a lsrl #2,%d2 <== NOT EXECUTED 44858: 2202 movel %d2,%d1 <== NOT EXECUTED 4485a: 5281 addql #1,%d1 <== NOT EXECUTED 4485c: 4c02 1800 mulsl %d2,%d1 <== NOT EXECUTED 44860: 5281 addql #1,%d1 <== NOT EXECUTED 44862: 4c02 1800 mulsl %d2,%d1 <== NOT EXECUTED } 44866: 241f movel %sp@+,%d2 <== NOT EXECUTED * using the IMFS memory file type. * */ int IMFS_memfile_maximum_size( void ) { return IMFS_MEMFILE_MAXIMUM_SIZE; 44868: 5381 subql #1,%d1 <== NOT EXECUTED } 4486a: 4c01 0800 mulsl %d1,%d0 <== NOT EXECUTED 4486e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004b380 : * Linear files (as created from a tar file are easier to handle * than block files). */ my_length = length; if (the_jnode->type == IMFS_LINEAR_FILE) { 4b380: 7006 moveq #6,%d0 <== NOT EXECUTED IMFS_jnode_t *the_jnode, off_t start, unsigned char *destination, unsigned int length ) { 4b382: 4e56 ffc8 linkw %fp,#-56 <== NOT EXECUTED 4b386: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED 4b38a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4b38e: 2e2e 0014 movel %fp@(20),%d7 <== NOT EXECUTED 4b392: 2c2e 0018 movel %fp@(24),%d6 <== NOT EXECUTED 4b396: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4b39a: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED * Linear files (as created from a tar file are easier to handle * than block files). */ my_length = length; if (the_jnode->type == IMFS_LINEAR_FILE) { 4b39e: b0aa 0048 cmpl %a2@(72),%d0 <== NOT EXECUTED 4b3a2: 6656 bnes 4b3fa <== NOT EXECUTED unsigned char *file_ptr; file_ptr = (unsigned char *)the_jnode->info.linearfile.direct; if (my_length > (the_jnode->info.linearfile.size - start)) 4b3a4: 2246 moveal %d6,%a1 <== NOT EXECUTED 4b3a6: 91c8 subal %a0,%a0 <== NOT EXECUTED 4b3a8: 282a 004c movel %a2@(76),%d4 <== NOT EXECUTED 4b3ac: 2a2a 0050 movel %a2@(80),%d5 <== NOT EXECUTED my_length = length; if (the_jnode->type == IMFS_LINEAR_FILE) { unsigned char *file_ptr; file_ptr = (unsigned char *)the_jnode->info.linearfile.direct; 4b3b0: 266a 0054 moveal %a2@(84),%a3 <== NOT EXECUTED if (my_length > (the_jnode->info.linearfile.size - start)) 4b3b4: 2d44 fff0 movel %d4,%fp@(-16) <== NOT EXECUTED 4b3b8: 2d45 fff4 movel %d5,%fp@(-12) <== NOT EXECUTED 4b3bc: 9a83 subl %d3,%d5 <== NOT EXECUTED 4b3be: 9982 subxl %d2,%d4 <== NOT EXECUTED 4b3c0: 2008 movel %a0,%d0 <== NOT EXECUTED 4b3c2: 2209 movel %a1,%d1 <== NOT EXECUTED 4b3c4: 9285 subl %d5,%d1 <== NOT EXECUTED 4b3c6: 9184 subxl %d4,%d0 <== NOT EXECUTED 4b3c8: 6f06 bles 4b3d0 <== NOT EXECUTED my_length = the_jnode->info.linearfile.size - start; 4b3ca: 2c2e fff4 movel %fp@(-12),%d6 <== NOT EXECUTED 4b3ce: 9c83 subl %d3,%d6 <== NOT EXECUTED memcpy(dest, &file_ptr[start], my_length); 4b3d0: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4b3d2: 4873 3800 pea %a3@(00000000,%d3:l) <== NOT EXECUTED IMFS_update_atime( the_jnode ); return my_length; 4b3d6: 2406 movel %d6,%d2 <== NOT EXECUTED file_ptr = (unsigned char *)the_jnode->info.linearfile.direct; if (my_length > (the_jnode->info.linearfile.size - start)) my_length = the_jnode->info.linearfile.size - start; memcpy(dest, &file_ptr[start], my_length); 4b3d8: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4b3da: 4eb9 0004 d138 jsr 4d138 <== NOT EXECUTED IMFS_update_atime( the_jnode ); 4b3e0: 42a7 clrl %sp@- <== NOT EXECUTED 4b3e2: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4b3e6: 4eb9 0004 283c jsr 4283c <== NOT EXECUTED 4b3ec: 256e fff8 003c movel %fp@(-8),%a2@(60) <== NOT EXECUTED return my_length; 4b3f2: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4b3f6: 6000 011e braw 4b516 <== NOT EXECUTED /* * If the last byte we are supposed to read is past the end of this * in memory file, then shorten the length to read. */ last_byte = start + length; 4b3fa: 2043 moveal %d3,%a0 <== NOT EXECUTED 4b3fc: 43f0 6800 lea %a0@(00000000,%d6:l),%a1 <== NOT EXECUTED if ( last_byte > the_jnode->info.file.size ) 4b400: 97cb subal %a3,%a3 <== NOT EXECUTED 4b402: 2849 moveal %a1,%a4 <== NOT EXECUTED 4b404: 202a 004c movel %a2@(76),%d0 <== NOT EXECUTED 4b408: 222a 0050 movel %a2@(80),%d1 <== NOT EXECUTED 4b40c: 280b movel %a3,%d4 <== NOT EXECUTED 4b40e: 2a0c movel %a4,%d5 <== NOT EXECUTED 4b410: 9a81 subl %d1,%d5 <== NOT EXECUTED 4b412: 9980 subxl %d0,%d4 <== NOT EXECUTED 4b414: 6f04 bles 4b41a <== NOT EXECUTED my_length = the_jnode->info.file.size - start; 4b416: 2c01 movel %d1,%d6 <== NOT EXECUTED 4b418: 9c83 subl %d3,%d6 <== NOT EXECUTED */ /* * Phase 1: possibly the last part of one block */ start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK; 4b41a: 2879 0005 d0d4 moveal 5d0d4 ,%a4<== NOT EXECUTED 4b420: 2a0c movel %a4,%d5 <== NOT EXECUTED 4b422: 5bc4 smi %d4 <== NOT EXECUTED 4b424: 49c4 extbl %d4 <== NOT EXECUTED 4b426: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4b428: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4b42a: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4b42c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b42e: 4eb9 0005 8ad8 jsr 58ad8 <__moddi3> <== NOT EXECUTED 4b434: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4b438: 2641 moveal %d1,%a3 <== NOT EXECUTED block = start / IMFS_MEMFILE_BYTES_PER_BLOCK; 4b43a: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4b43c: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4b43e: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4b440: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b442: 4eb9 0005 8724 jsr 58724 <__divdi3> <== NOT EXECUTED 4b448: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4b44c: 2801 movel %d1,%d4 <== NOT EXECUTED if ( start_offset ) { 4b44e: 4a8b tstl %a3 <== NOT EXECUTED 4b450: 673c beqs 4b48e <== NOT EXECUTED to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK - start_offset; if ( to_copy > my_length ) to_copy = my_length; block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 ); 4b452: 42a7 clrl %sp@- <== NOT EXECUTED 4b454: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4b456: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b458: 4eb9 0004 b240 jsr 4b240 <== NOT EXECUTED if ( !block_ptr ) 4b45e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4b462: 4a80 tstl %d0 <== NOT EXECUTED 4b464: 6700 00ae beqw 4b514 <== NOT EXECUTED * Phase 1: possibly the last part of one block */ start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK; block = start / IMFS_MEMFILE_BYTES_PER_BLOCK; if ( start_offset ) { to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK - start_offset; 4b468: 99cb subal %a3,%a4 <== NOT EXECUTED 4b46a: 2406 movel %d6,%d2 <== NOT EXECUTED 4b46c: b9c6 cmpal %d6,%a4 <== NOT EXECUTED 4b46e: 6402 bccs 4b472 <== NOT EXECUTED 4b470: 240c movel %a4,%d2 <== NOT EXECUTED if ( to_copy > my_length ) to_copy = my_length; block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 ); if ( !block_ptr ) return copied; memcpy( dest, &(*block_ptr)[ start_offset ], to_copy ); 4b472: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b474: 2040 moveal %d0,%a0 <== NOT EXECUTED 4b476: d7d0 addal %a0@,%a3 <== NOT EXECUTED dest += to_copy; block++; 4b478: 5284 addql #1,%d4 <== NOT EXECUTED my_length -= to_copy; 4b47a: 9c82 subl %d2,%d6 <== NOT EXECUTED if ( to_copy > my_length ) to_copy = my_length; block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 ); if ( !block_ptr ) return copied; memcpy( dest, &(*block_ptr)[ start_offset ], to_copy ); 4b47c: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4b47e: 2f07 movel %d7,%sp@- <== NOT EXECUTED dest += to_copy; 4b480: de82 addl %d2,%d7 <== NOT EXECUTED if ( to_copy > my_length ) to_copy = my_length; block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 ); if ( !block_ptr ) return copied; memcpy( dest, &(*block_ptr)[ start_offset ], to_copy ); 4b482: 4eb9 0004 d138 jsr 4d138 <== NOT EXECUTED dest += to_copy; block++; my_length -= to_copy; 4b488: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4b48c: 6002 bras 4b490 <== NOT EXECUTED */ last_byte = start + length; if ( last_byte > the_jnode->info.file.size ) my_length = the_jnode->info.file.size - start; copied = 0; 4b48e: 4282 clrl %d2 <== NOT EXECUTED } /* * Phase 2: all of zero of more blocks */ to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK; 4b490: 2679 0005 d0d4 moveal 5d0d4 ,%a3<== NOT EXECUTED while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) { block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 ); 4b496: 4bf9 0004 b240 lea 4b240 ,%a5<== NOT EXECUTED if ( !block_ptr ) return copied; memcpy( dest, &(*block_ptr)[ 0 ], to_copy ); 4b49c: 49f9 0004 d138 lea 4d138 ,%a4 <== NOT EXECUTED /* * Phase 2: all of zero of more blocks */ to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK; while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) { 4b4a2: 6026 bras 4b4ca <== NOT EXECUTED block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 ); 4b4a4: 42a7 clrl %sp@- <== NOT EXECUTED 4b4a6: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4b4a8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b4aa: 4e95 jsr %a5@ <== NOT EXECUTED if ( !block_ptr ) 4b4ac: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4b4b0: 4a80 tstl %d0 <== NOT EXECUTED 4b4b2: 6762 beqs 4b516 <== NOT EXECUTED return copied; memcpy( dest, &(*block_ptr)[ 0 ], to_copy ); 4b4b4: 2040 moveal %d0,%a0 <== NOT EXECUTED dest += to_copy; block++; 4b4b6: 5284 addql #1,%d4 <== NOT EXECUTED my_length -= to_copy; 4b4b8: 9c8b subl %a3,%d6 <== NOT EXECUTED copied += to_copy; 4b4ba: d48b addl %a3,%d2 <== NOT EXECUTED to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK; while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) { block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 ); if ( !block_ptr ) return copied; memcpy( dest, &(*block_ptr)[ 0 ], to_copy ); 4b4bc: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4b4be: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4b4c0: 2f07 movel %d7,%sp@- <== NOT EXECUTED dest += to_copy; 4b4c2: de8b addl %a3,%d7 <== NOT EXECUTED to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK; while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) { block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 ); if ( !block_ptr ) return copied; memcpy( dest, &(*block_ptr)[ 0 ], to_copy ); 4b4c4: 4e94 jsr %a4@ <== NOT EXECUTED dest += to_copy; block++; my_length -= to_copy; copied += to_copy; 4b4c6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED /* * Phase 2: all of zero of more blocks */ to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK; while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) { 4b4ca: bcb9 0005 d0d4 cmpl 5d0d4 ,%d6<== NOT EXECUTED 4b4d0: 64d2 bccs 4b4a4 <== NOT EXECUTED /* * Phase 3: possibly the first part of one block */ IMFS_assert( my_length < IMFS_MEMFILE_BYTES_PER_BLOCK ); if ( my_length ) { 4b4d2: 4a86 tstl %d6 <== NOT EXECUTED 4b4d4: 6728 beqs 4b4fe <== NOT EXECUTED block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 ); 4b4d6: 42a7 clrl %sp@- <== NOT EXECUTED 4b4d8: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4b4da: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b4dc: 4eb9 0004 b240 jsr 4b240 <== NOT EXECUTED if ( !block_ptr ) 4b4e2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4b4e6: 4a80 tstl %d0 <== NOT EXECUTED 4b4e8: 672c beqs 4b516 <== NOT EXECUTED return copied; memcpy( dest, &(*block_ptr)[ 0 ], my_length ); 4b4ea: 2040 moveal %d0,%a0 <== NOT EXECUTED copied += my_length; 4b4ec: d486 addl %d6,%d2 <== NOT EXECUTED if ( my_length ) { block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 ); if ( !block_ptr ) return copied; memcpy( dest, &(*block_ptr)[ 0 ], my_length ); 4b4ee: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4b4f0: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4b4f2: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4b4f4: 4eb9 0004 d138 jsr 4d138 <== NOT EXECUTED copied += my_length; 4b4fa: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED } IMFS_update_atime( the_jnode ); 4b4fe: 42a7 clrl %sp@- <== NOT EXECUTED 4b500: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4b504: 4eb9 0004 283c jsr 4283c <== NOT EXECUTED 4b50a: 256e fff8 003c movel %fp@(-8),%a2@(60) <== NOT EXECUTED return copied; 4b510: 508f addql #8,%sp <== NOT EXECUTED 4b512: 6002 bras 4b516 <== NOT EXECUTED to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK - start_offset; if ( to_copy > my_length ) to_copy = my_length; block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 ); if ( !block_ptr ) return copied; 4b514: 4282 clrl %d2 <== NOT EXECUTED } IMFS_update_atime( the_jnode ); return copied; } 4b516: 2002 movel %d2,%d0 <== NOT EXECUTED 4b518: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4b51e: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004b5e4 : * is better to stick to simple, easy to understand algorithms. */ int IMFS_memfile_remove( IMFS_jnode_t *the_jnode ) { 4b5e4: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 4b5e8: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@ <== NOT EXECUTED /* * Eventually this could be set smarter at each call to * memfile_free_blocks_in_table to greatly speed this up. */ to_free = IMFS_MEMFILE_BLOCK_SLOTS; 4b5ec: 2439 0005 d0d4 movel 5d0d4 ,%d2<== NOT EXECUTED 4b5f2: e48a lsrl #2,%d2 <== NOT EXECUTED * is better to stick to simple, easy to understand algorithms. */ int IMFS_memfile_remove( IMFS_jnode_t *the_jnode ) { 4b5f4: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED * + doubly indirect * + triply indirect */ info = &the_jnode->info.file; if ( info->indirect ) { 4b5f8: 4aaa 0054 tstl %a2@(84) <== NOT EXECUTED 4b5fc: 670e beqs 4b60c <== NOT EXECUTED memfile_free_blocks_in_table( &info->indirect, to_free ); 4b5fe: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b600: 486a 0054 pea %a2@(84) <== NOT EXECUTED 4b604: 4eb9 0004 b59e jsr 4b59e <== NOT EXECUTED 4b60a: 508f addql #8,%sp <== NOT EXECUTED } if ( info->doubly_indirect ) { 4b60c: 4aaa 0058 tstl %a2@(88) <== NOT EXECUTED 4b610: 673e beqs 4b650 <== NOT EXECUTED 4b612: 4283 clrl %d3 <== NOT EXECUTED for ( i=0 ; idoubly_indirect[i] ) { memfile_free_blocks_in_table( 4b614: 47f9 0004 b59e lea 4b59e ,%a3<== NOT EXECUTED 4b61a: 601a bras 4b636 <== NOT EXECUTED memfile_free_blocks_in_table( &info->indirect, to_free ); } if ( info->doubly_indirect ) { for ( i=0 ; idoubly_indirect[i] ) { 4b61c: 2003 movel %d3,%d0 <== NOT EXECUTED 4b61e: 206a 0058 moveal %a2@(88),%a0 <== NOT EXECUTED 4b622: e588 lsll #2,%d0 <== NOT EXECUTED 4b624: 4ab0 0800 tstl %a0@(00000000,%d0:l) <== NOT EXECUTED 4b628: 670a beqs 4b634 <== NOT EXECUTED memfile_free_blocks_in_table( 4b62a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b62c: 4870 0800 pea %a0@(00000000,%d0:l) <== NOT EXECUTED 4b630: 4e93 jsr %a3@ <== NOT EXECUTED 4b632: 508f addql #8,%sp <== NOT EXECUTED if ( info->indirect ) { memfile_free_blocks_in_table( &info->indirect, to_free ); } if ( info->doubly_indirect ) { for ( i=0 ; i,%d0<== NOT EXECUTED 4b63c: e488 lsrl #2,%d0 <== NOT EXECUTED 4b63e: b083 cmpl %d3,%d0 <== NOT EXECUTED 4b640: 62da bhis 4b61c <== NOT EXECUTED if ( info->doubly_indirect[i] ) { memfile_free_blocks_in_table( (block_p **)&info->doubly_indirect[i], to_free ); } } memfile_free_blocks_in_table( &info->doubly_indirect, to_free ); 4b642: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b644: 486a 0058 pea %a2@(88) <== NOT EXECUTED 4b648: 4eb9 0004 b59e jsr 4b59e <== NOT EXECUTED 4b64e: 508f addql #8,%sp <== NOT EXECUTED } if ( info->triply_indirect ) { 4b650: 4aaa 005c tstl %a2@(92) <== NOT EXECUTED 4b654: 6762 beqs 4b6b8 <== NOT EXECUTED 4b656: 4283 clrl %d3 <== NOT EXECUTED p = (block_p *) info->triply_indirect[i]; if ( !p ) /* ensure we have a valid pointer */ break; for ( j=0 ; j,%a4<== NOT EXECUTED 4b65e: 603e bras 4b69e <== NOT EXECUTED } memfile_free_blocks_in_table( &info->doubly_indirect, to_free ); } if ( info->triply_indirect ) { 4b660: 2a03 movel %d3,%d5 <== NOT EXECUTED for ( i=0 ; itriply_indirect[i]; 4b662: 206a 005c moveal %a2@(92),%a0 <== NOT EXECUTED } memfile_free_blocks_in_table( &info->doubly_indirect, to_free ); } if ( info->triply_indirect ) { 4b666: e58d lsll #2,%d5 <== NOT EXECUTED for ( i=0 ; itriply_indirect[i]; 4b668: 2670 5800 moveal %a0@(00000000,%d5:l),%a3 <== NOT EXECUTED if ( !p ) /* ensure we have a valid pointer */ 4b66c: 4a8b tstl %a3 <== NOT EXECUTED 4b66e: 673a beqs 4b6aa <== NOT EXECUTED 4b670: 4284 clrl %d4 <== NOT EXECUTED 4b672: 6010 bras 4b684 <== NOT EXECUTED break; for ( j=0 ; j <== NOT EXECUTED memfile_free_blocks_in_table( (block_p **)&p[j], to_free); 4b678: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b67a: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4b67c: 4e94 jsr %a4@ <== NOT EXECUTED 4b67e: 508f addql #8,%sp <== NOT EXECUTED if ( info->triply_indirect ) { for ( i=0 ; itriply_indirect[i]; if ( !p ) /* ensure we have a valid pointer */ break; for ( j=0 ; j,%d0<== NOT EXECUTED 4b68a: e488 lsrl #2,%d0 <== NOT EXECUTED 4b68c: b084 cmpl %d4,%d0 <== NOT EXECUTED 4b68e: 62e4 bhis 4b674 <== NOT EXECUTED if ( p[j] ) { memfile_free_blocks_in_table( (block_p **)&p[j], to_free); } } memfile_free_blocks_in_table( 4b690: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b692: daaa 005c addl %a2@(92),%d5 <== NOT EXECUTED memfile_free_blocks_in_table( &info->doubly_indirect, to_free ); } if ( info->triply_indirect ) { for ( i=0 ; idoubly_indirect, to_free ); } if ( info->triply_indirect ) { for ( i=0 ; i,%d0<== NOT EXECUTED 4b6a4: e488 lsrl #2,%d0 <== NOT EXECUTED 4b6a6: b083 cmpl %d3,%d0 <== NOT EXECUTED 4b6a8: 62b6 bhis 4b660 <== NOT EXECUTED } } memfile_free_blocks_in_table( (block_p **)&info->triply_indirect[i], to_free ); } memfile_free_blocks_in_table( 4b6aa: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b6ac: 486a 005c pea %a2@(92) <== NOT EXECUTED 4b6b0: 4eb9 0004 b59e jsr 4b59e <== NOT EXECUTED 4b6b6: 508f addql #8,%sp <== NOT EXECUTED (block_p **)&info->triply_indirect, to_free ); } return 0; } 4b6b8: 4280 clrl %d0 <== NOT EXECUTED 4b6ba: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED 4b6c0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004b6c4 : */ MEMFILE_STATIC int IMFS_memfile_remove_block( IMFS_jnode_t *the_jnode, unsigned int block ) { 4b6c4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED block_p *block_ptr; block_p ptr; block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 ); 4b6c8: 42a7 clrl %sp@- <== NOT EXECUTED 4b6ca: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4b6ce: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4b6d2: 4eb9 0004 b240 jsr 4b240 <== NOT EXECUTED IMFS_assert( block_ptr ); ptr = *block_ptr; 4b6d8: 2040 moveal %d0,%a0 <== NOT EXECUTED 4b6da: 2210 movel %a0@,%d1 <== NOT EXECUTED *block_ptr = 0; 4b6dc: 4290 clrl %a0@ <== NOT EXECUTED memfile_free_block( ptr ); 4b6de: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4b6e0: 4eb9 0004 b584 jsr 4b584 <== NOT EXECUTED return 1; } 4b6e6: 7001 moveq #1,%d0 <== NOT EXECUTED 4b6e8: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004b7d0 : * If the last byte we are supposed to write is past the end of this * in memory file, then extend the length. */ last_byte = start + my_length; if ( last_byte > the_jnode->info.file.size ) { 4b7d0: 4280 clrl %d0 <== NOT EXECUTED IMFS_jnode_t *the_jnode, off_t start, const unsigned char *source, unsigned int length ) { 4b7d2: 4e56 ffd0 linkw %fp,#-48 <== NOT EXECUTED 4b7d6: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED 4b7da: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4b7de: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4b7e2: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED 4b7e6: 2c2e 0018 movel %fp@(24),%d6 <== NOT EXECUTED /* * If the last byte we are supposed to write is past the end of this * in memory file, then extend the length. */ last_byte = start + my_length; 4b7ea: 2046 moveal %d6,%a0 <== NOT EXECUTED 4b7ec: d1c3 addal %d3,%a0 <== NOT EXECUTED if ( last_byte > the_jnode->info.file.size ) { 4b7ee: 2208 movel %a0,%d1 <== NOT EXECUTED IMFS_jnode_t *the_jnode, off_t start, const unsigned char *source, unsigned int length ) { 4b7f0: 2e2e 0014 movel %fp@(20),%d7 <== NOT EXECUTED * If the last byte we are supposed to write is past the end of this * in memory file, then extend the length. */ last_byte = start + my_length; if ( last_byte > the_jnode->info.file.size ) { 4b7f4: 282a 004c movel %a2@(76),%d4 <== NOT EXECUTED 4b7f8: 2a2a 0050 movel %a2@(80),%d5 <== NOT EXECUTED 4b7fc: 9a81 subl %d1,%d5 <== NOT EXECUTED 4b7fe: 9980 subxl %d0,%d4 <== NOT EXECUTED 4b800: 6c28 bges 4b82a <== NOT EXECUTED status = IMFS_memfile_extend( the_jnode, last_byte ); 4b802: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4b804: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4b806: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b808: 4eb9 0004 b6ec jsr 4b6ec <== NOT EXECUTED if ( status ) 4b80e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4b812: 4a80 tstl %d0 <== NOT EXECUTED 4b814: 6714 beqs 4b82a <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSPC ); 4b816: 4eb9 0004 c88c jsr 4c88c <__errno> <== NOT EXECUTED 4b81c: 741c moveq #28,%d2 <== NOT EXECUTED 4b81e: 2040 moveal %d0,%a0 <== NOT EXECUTED 4b820: 387c ffff moveaw #-1,%a4 <== NOT EXECUTED 4b824: 2082 movel %d2,%a0@ <== NOT EXECUTED 4b826: 6000 0102 braw 4b92a <== NOT EXECUTED */ /* * Phase 1: possibly the last part of one block */ start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK; 4b82a: 2879 0005 d0d4 moveal 5d0d4 ,%a4<== NOT EXECUTED 4b830: 2a0c movel %a4,%d5 <== NOT EXECUTED 4b832: 5bc4 smi %d4 <== NOT EXECUTED 4b834: 49c4 extbl %d4 <== NOT EXECUTED 4b836: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4b838: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4b83a: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4b83c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b83e: 4eb9 0005 8ad8 jsr 58ad8 <__moddi3> <== NOT EXECUTED 4b844: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4b848: 2641 moveal %d1,%a3 <== NOT EXECUTED block = start / IMFS_MEMFILE_BYTES_PER_BLOCK; 4b84a: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4b84c: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4b84e: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4b850: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b852: 4eb9 0005 8724 jsr 58724 <__divdi3> <== NOT EXECUTED 4b858: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4b85c: 2401 movel %d1,%d2 <== NOT EXECUTED if ( start_offset ) { 4b85e: 4a8b tstl %a3 <== NOT EXECUTED 4b860: 673a beqs 4b89c <== NOT EXECUTED to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK - start_offset; if ( to_copy > my_length ) to_copy = my_length; block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 ); 4b862: 42a7 clrl %sp@- <== NOT EXECUTED 4b864: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4b866: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b868: 4eb9 0004 b240 jsr 4b240 <== NOT EXECUTED if ( !block_ptr ) 4b86e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4b872: 4a80 tstl %d0 <== NOT EXECUTED 4b874: 6700 00b2 beqw 4b928 <== NOT EXECUTED * Phase 1: possibly the last part of one block */ start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK; block = start / IMFS_MEMFILE_BYTES_PER_BLOCK; if ( start_offset ) { to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK - start_offset; 4b878: 99cb subal %a3,%a4 <== NOT EXECUTED 4b87a: bc8c cmpl %a4,%d6 <== NOT EXECUTED 4b87c: 6402 bccs 4b880 <== NOT EXECUTED 4b87e: 2846 moveal %d6,%a4 <== NOT EXECUTED block, to_copy, src ); #endif memcpy( &(*block_ptr)[ start_offset ], src, to_copy ); 4b880: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4b882: 2040 moveal %d0,%a0 <== NOT EXECUTED src += to_copy; block++; 4b884: 5282 addql #1,%d2 <== NOT EXECUTED my_length -= to_copy; 4b886: 9c8c subl %a4,%d6 <== NOT EXECUTED block, to_copy, src ); #endif memcpy( &(*block_ptr)[ start_offset ], src, to_copy ); 4b888: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4b88a: d7d0 addal %a0@,%a3 <== NOT EXECUTED src += to_copy; 4b88c: de8c addl %a4,%d7 <== NOT EXECUTED block, to_copy, src ); #endif memcpy( &(*block_ptr)[ start_offset ], src, to_copy ); 4b88e: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4b890: 4eb9 0004 d138 jsr 4d138 <== NOT EXECUTED src += to_copy; block++; my_length -= to_copy; copied += to_copy; 4b896: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4b89a: 6002 bras 4b89e <== NOT EXECUTED status = IMFS_memfile_extend( the_jnode, last_byte ); if ( status ) rtems_set_errno_and_return_minus_one( ENOSPC ); } copied = 0; 4b89c: 99cc subal %a4,%a4 <== NOT EXECUTED /* * Phase 2: all of zero of more blocks */ to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK; 4b89e: 2839 0005 d0d4 movel 5d0d4 ,%d4<== NOT EXECUTED while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) { block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 ); 4b8a4: 4bf9 0004 b240 lea 4b240 ,%a5<== NOT EXECUTED if ( !block_ptr ) return copied; #if 0 fprintf(stdout, "write %d in %d: %*s\n", to_copy, block, to_copy, src ); #endif memcpy( &(*block_ptr)[ 0 ], src, to_copy ); 4b8aa: 47f9 0004 d138 lea 4d138 ,%a3 <== NOT EXECUTED /* * Phase 2: all of zero of more blocks */ to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK; while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) { 4b8b0: 6026 bras 4b8d8 <== NOT EXECUTED block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 ); 4b8b2: 42a7 clrl %sp@- <== NOT EXECUTED 4b8b4: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b8b6: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b8b8: 4e95 jsr %a5@ <== NOT EXECUTED if ( !block_ptr ) 4b8ba: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4b8be: 4a80 tstl %d0 <== NOT EXECUTED 4b8c0: 6768 beqs 4b92a <== NOT EXECUTED return copied; #if 0 fprintf(stdout, "write %d in %d: %*s\n", to_copy, block, to_copy, src ); #endif memcpy( &(*block_ptr)[ 0 ], src, to_copy ); 4b8c2: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4b8c4: 2040 moveal %d0,%a0 <== NOT EXECUTED src += to_copy; block++; 4b8c6: 5282 addql #1,%d2 <== NOT EXECUTED my_length -= to_copy; 4b8c8: 9c84 subl %d4,%d6 <== NOT EXECUTED * IMFS_memfile_write * * This routine writes the specified data buffer into the in memory * file pointed to by the_jnode. The file is extended as needed. */ MEMFILE_STATIC ssize_t IMFS_memfile_write( 4b8ca: d9c4 addal %d4,%a4 <== NOT EXECUTED if ( !block_ptr ) return copied; #if 0 fprintf(stdout, "write %d in %d: %*s\n", to_copy, block, to_copy, src ); #endif memcpy( &(*block_ptr)[ 0 ], src, to_copy ); 4b8cc: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4b8ce: 2f10 movel %a0@,%sp@- <== NOT EXECUTED src += to_copy; 4b8d0: de84 addl %d4,%d7 <== NOT EXECUTED if ( !block_ptr ) return copied; #if 0 fprintf(stdout, "write %d in %d: %*s\n", to_copy, block, to_copy, src ); #endif memcpy( &(*block_ptr)[ 0 ], src, to_copy ); 4b8d2: 4e93 jsr %a3@ <== NOT EXECUTED * IMFS_memfile_write * * This routine writes the specified data buffer into the in memory * file pointed to by the_jnode. The file is extended as needed. */ MEMFILE_STATIC ssize_t IMFS_memfile_write( 4b8d4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED /* * Phase 2: all of zero of more blocks */ to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK; while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) { 4b8d8: bcb9 0005 d0d4 cmpl 5d0d4 ,%d6<== NOT EXECUTED 4b8de: 64d2 bccs 4b8b2 <== NOT EXECUTED * Phase 3: possibly the first part of one block */ IMFS_assert( my_length < IMFS_MEMFILE_BYTES_PER_BLOCK ); to_copy = my_length; if ( my_length ) { 4b8e0: 4a86 tstl %d6 <== NOT EXECUTED 4b8e2: 6728 beqs 4b90c <== NOT EXECUTED block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 ); 4b8e4: 42a7 clrl %sp@- <== NOT EXECUTED 4b8e6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b8e8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b8ea: 4eb9 0004 b240 jsr 4b240 <== NOT EXECUTED if ( !block_ptr ) 4b8f0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4b8f4: 4a80 tstl %d0 <== NOT EXECUTED 4b8f6: 6732 beqs 4b92a <== NOT EXECUTED return copied; #if 0 fprintf(stdout, "write %d in %d: %*s\n", to_copy, block, to_copy, src ); #endif memcpy( &(*block_ptr)[ 0 ], src, my_length ); 4b8f8: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4b8fa: 2040 moveal %d0,%a0 <== NOT EXECUTED my_length = 0; copied += to_copy; 4b8fc: d9c6 addal %d6,%a4 <== NOT EXECUTED if ( !block_ptr ) return copied; #if 0 fprintf(stdout, "write %d in %d: %*s\n", to_copy, block, to_copy, src ); #endif memcpy( &(*block_ptr)[ 0 ], src, my_length ); 4b8fe: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4b900: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4b902: 4eb9 0004 d138 jsr 4d138 <== NOT EXECUTED my_length = 0; copied += to_copy; 4b908: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED } IMFS_mtime_ctime_update( the_jnode ); 4b90c: 42a7 clrl %sp@- <== NOT EXECUTED 4b90e: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4b912: 4eb9 0004 283c jsr 4283c <== NOT EXECUTED 4b918: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED return copied; 4b91c: 508f addql #8,%sp <== NOT EXECUTED memcpy( &(*block_ptr)[ 0 ], src, my_length ); my_length = 0; copied += to_copy; } IMFS_mtime_ctime_update( the_jnode ); 4b91e: 2540 0040 movel %d0,%a2@(64) <== NOT EXECUTED 4b922: 2540 0044 movel %d0,%a2@(68) <== NOT EXECUTED return copied; 4b926: 6002 bras 4b92a <== NOT EXECUTED to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK - start_offset; if ( to_copy > my_length ) to_copy = my_length; block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 ); if ( !block_ptr ) return copied; 4b928: 99cc subal %a4,%a4 <== NOT EXECUTED } IMFS_mtime_ctime_update( the_jnode ); return copied; } 4b92a: 200c movel %a4,%d0 <== NOT EXECUTED 4b92c: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4b932: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00041f04 : const char *token, /* IN */ mode_t mode, /* IN */ dev_t dev, /* IN */ rtems_filesystem_location_info_t *pathloc /* IN/OUT */ ) { 41f04: 4e56 ffb4 linkw %fp,#-76 41f08: 48d7 003c moveml %d2-%d5,%sp@ 41f0c: 262e 0008 movel %fp@(8),%d3 IMFS_jnode_t *new_node; int result; char new_name[ IMFS_NAME_MAX + 1 ]; IMFS_types_union info; IMFS_get_token( token, strlen( token ), new_name, &result ); 41f10: 2f03 movel %d3,%sp@- const char *token, /* IN */ mode_t mode, /* IN */ dev_t dev, /* IN */ rtems_filesystem_location_info_t *pathloc /* IN/OUT */ ) { 41f12: 242e 000c movel %fp@(12),%d2 IMFS_jnode_t *new_node; int result; char new_name[ IMFS_NAME_MAX + 1 ]; IMFS_types_union info; IMFS_get_token( token, strlen( token ), new_name, &result ); 41f16: 4eb9 0004 dce4 jsr 4dce4 41f1c: 588f addql #4,%sp 41f1e: 486e fffc pea %fp@(-4) 41f22: 486e ffc7 pea %fp@(-57) const char *token, /* IN */ mode_t mode, /* IN */ dev_t dev, /* IN */ rtems_filesystem_location_info_t *pathloc /* IN/OUT */ ) { 41f26: 2a2e 0010 movel %fp@(16),%d5 IMFS_jnode_t *new_node; int result; char new_name[ IMFS_NAME_MAX + 1 ]; IMFS_types_union info; IMFS_get_token( token, strlen( token ), new_name, &result ); 41f2a: 2f00 movel %d0,%sp@- const char *token, /* IN */ mode_t mode, /* IN */ dev_t dev, /* IN */ rtems_filesystem_location_info_t *pathloc /* IN/OUT */ ) { 41f2c: 282e 0014 movel %fp@(20),%d4 IMFS_jnode_t *new_node; int result; char new_name[ IMFS_NAME_MAX + 1 ]; IMFS_types_union info; IMFS_get_token( token, strlen( token ), new_name, &result ); 41f30: 2f03 movel %d3,%sp@- 41f32: 4eb9 0004 933c jsr 4933c /* * Figure out what type of IMFS node this is. */ if ( S_ISDIR(mode) ) 41f38: 4fef 0010 lea %sp@(16),%sp 41f3c: 2002 movel %d2,%d0 41f3e: 0280 0000 f000 andil #61440,%d0 41f44: 0c80 0000 4000 cmpil #16384,%d0 41f4a: 6730 beqs 41f7c type = IMFS_DIRECTORY; else if ( S_ISREG(mode) ) 41f4c: 0c80 0000 8000 cmpil #32768,%d0 41f52: 672c beqs 41f80 <== NEVER TAKEN type = IMFS_MEMORY_FILE; else if ( S_ISBLK(mode) || S_ISCHR(mode) ) { 41f54: 0c80 0000 6000 cmpil #24576,%d0 41f5a: 6708 beqs 41f64 41f5c: 0c80 0000 2000 cmpil #8192,%d0 41f62: 660c bnes 41f70 <== NEVER TAKEN type = IMFS_DEVICE; rtems_filesystem_split_dev_t( dev, info.device.major, info.device.minor ); 41f64: 2d45 ffe8 movel %d5,%fp@(-24) if ( S_ISDIR(mode) ) type = IMFS_DIRECTORY; else if ( S_ISREG(mode) ) type = IMFS_MEMORY_FILE; else if ( S_ISBLK(mode) || S_ISCHR(mode) ) { type = IMFS_DEVICE; 41f68: 7002 moveq #2,%d0 rtems_filesystem_split_dev_t( dev, info.device.major, info.device.minor ); 41f6a: 2d44 ffec movel %d4,%fp@(-20) 41f6e: 6016 bras 41f86 } else if (S_ISFIFO(mode)) 41f70: 0c80 0000 1000 cmpil #4096,%d0 <== NOT EXECUTED 41f76: 670c beqs 41f84 <== NOT EXECUTED mode_t mode, /* IN */ dev_t dev, /* IN */ rtems_filesystem_location_info_t *pathloc /* IN/OUT */ ) { IMFS_token_types type = 0; 41f78: 4280 clrl %d0 <== NOT EXECUTED 41f7a: 600a bras 41f86 <== NOT EXECUTED /* * Figure out what type of IMFS node this is. */ if ( S_ISDIR(mode) ) type = IMFS_DIRECTORY; 41f7c: 7001 moveq #1,%d0 41f7e: 6006 bras 41f86 else if ( S_ISREG(mode) ) type = IMFS_MEMORY_FILE; 41f80: 7005 moveq #5,%d0 <== NOT EXECUTED 41f82: 6002 bras 41f86 <== NOT EXECUTED else if ( S_ISBLK(mode) || S_ISCHR(mode) ) { type = IMFS_DEVICE; rtems_filesystem_split_dev_t( dev, info.device.major, info.device.minor ); } else if (S_ISFIFO(mode)) type = IMFS_FIFO; 41f84: 7007 moveq #7,%d0 <== NOT EXECUTED * was ONLY passed a NULL when we created the root node. We * added a new IMFS_create_root_node() so this path no longer * existed. The result was simpler code which should not have * this path. */ new_node = IMFS_create_node( pathloc, type, new_name, mode, &info ); 41f86: 486e ffe8 pea %fp@(-24) 41f8a: 2f02 movel %d2,%sp@- 41f8c: 486e ffc7 pea %fp@(-57) 41f90: 2f00 movel %d0,%sp@- 41f92: 2f2e 0018 movel %fp@(24),%sp@- 41f96: 4eb9 0004 8aa2 jsr 48aa2 if ( !new_node ) 41f9c: 4fef 0014 lea %sp@(20),%sp 41fa0: 4a80 tstl %d0 41fa2: 6610 bnes 41fb4 <== ALWAYS TAKEN rtems_set_errno_and_return_minus_one( ENOMEM ); 41fa4: 4eb9 0004 c88c jsr 4c88c <__errno> <== NOT EXECUTED 41faa: 2040 moveal %d0,%a0 <== NOT EXECUTED 41fac: 700c moveq #12,%d0 <== NOT EXECUTED 41fae: 2080 movel %d0,%a0@ <== NOT EXECUTED 41fb0: 70ff moveq #-1,%d0 <== NOT EXECUTED 41fb2: 6002 bras 41fb6 <== NOT EXECUTED return 0; 41fb4: 4280 clrl %d0 } 41fb6: 4cee 003c ffb4 moveml %fp@(-76),%d2-%d5 41fbc: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00041fc0 : /* * Is the node that we are mounting onto a directory node ? */ if ( node->type != IMFS_DIRECTORY ) 41fc0: 7001 moveq #1,%d0 <== NOT EXECUTED #include int IMFS_mount( rtems_filesystem_mount_table_entry_t *mt_entry ) { 41fc2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 41fc6: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED IMFS_jnode_t *node; node = mt_entry->mt_point_node.node_access; 41fca: 2069 0008 moveal %a1@(8),%a0 <== NOT EXECUTED /* * Is the node that we are mounting onto a directory node ? */ if ( node->type != IMFS_DIRECTORY ) 41fce: b0a8 0048 cmpl %a0@(72),%d0 <== NOT EXECUTED 41fd2: 6710 beqs 41fe4 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOTDIR ); 41fd4: 4eb9 0004 c88c jsr 4c88c <__errno> <== NOT EXECUTED 41fda: 2040 moveal %d0,%a0 <== NOT EXECUTED 41fdc: 7014 moveq #20,%d0 <== NOT EXECUTED 41fde: 2080 movel %d0,%a0@ <== NOT EXECUTED 41fe0: 70ff moveq #-1,%d0 <== NOT EXECUTED 41fe2: 6006 bras 41fea <== NOT EXECUTED /* * Set mt_fs pointer to point to the mount table entry for * the mounted file system. */ node->info.directory.mt_fs = mt_entry; 41fe4: 2149 0058 movel %a1,%a0@(88) <== NOT EXECUTED return 0; 41fe8: 4280 clrl %d0 <== NOT EXECUTED } 41fea: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00044660 : * This routine prints the contents of the specified jnode. */ void IMFS_print_jnode( IMFS_jnode_t *the_jnode ) { 44660: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED IMFS_assert( the_jnode ); fprintf(stdout, "%s", the_jnode->name ); 44664: 2079 0006 1e80 moveal 61e80 <_impure_ptr>,%a0 <== NOT EXECUTED * This routine prints the contents of the specified jnode. */ void IMFS_print_jnode( IMFS_jnode_t *the_jnode ) { 4466a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4466c: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 44670: 2f02 movel %d2,%sp@- <== NOT EXECUTED IMFS_assert( the_jnode ); fprintf(stdout, "%s", the_jnode->name ); 44672: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED switch( the_jnode->type ) { 44676: 7406 moveq #6,%d2 <== NOT EXECUTED IMFS_jnode_t *the_jnode ) { IMFS_assert( the_jnode ); fprintf(stdout, "%s", the_jnode->name ); 44678: 486a 000c pea %a2@(12) <== NOT EXECUTED 4467c: 4eb9 0005 0bb0 jsr 50bb0 <== NOT EXECUTED switch( the_jnode->type ) { 44682: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED 44686: 2200 movel %d0,%d1 <== NOT EXECUTED 44688: 508f addql #8,%sp <== NOT EXECUTED 4468a: 5381 subql #1,%d1 <== NOT EXECUTED 4468c: b481 cmpl %d1,%d2 <== NOT EXECUTED 4468e: 6500 009c bcsw 4472c <== NOT EXECUTED 44692: 2079 0006 1e80 moveal 61e80 <_impure_ptr>,%a0 <== NOT EXECUTED 44698: 303b 1a08 movew %pc@(446a2 ,%d1:l:2),%d0<== NOT EXECUTED 4469c: 48c0 extl %d0 <== NOT EXECUTED 4469e: 4efb 0802 jmp %pc@(446a2 ,%d0:l)<== NOT EXECUTED 446a2: 000e 016 <== NOT EXECUTED 446a4: 0022 042 <== NOT EXECUTED 446a6: 006a 0152 <== NOT EXECUTED 446a8: 006a 0152 <== NOT EXECUTED 446aa: 0050 0120 <== NOT EXECUTED 446ac: 0032 062 <== NOT EXECUTED 446ae: 0076 0166 <== NOT EXECUTED case IMFS_DIRECTORY: fprintf(stdout, "/" ); 446b0: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 446b4: 4878 002f pea 2f <== NOT EXECUTED 446b8: 4eb9 0005 0ae0 jsr 50ae0 <== NOT EXECUTED break; 446be: 508f addql #8,%sp <== NOT EXECUTED 446c0: 6000 0088 braw 4474a <== NOT EXECUTED case IMFS_DEVICE: fprintf(stdout, " (device %" PRId32 ", %" PRId32 ")", 446c4: 2f2a 0050 movel %a2@(80),%sp@- <== NOT EXECUTED 446c8: 2f2a 004c movel %a2@(76),%sp@- <== NOT EXECUTED 446cc: 4879 0006 04e6 pea 604e6 <== NOT EXECUTED 446d2: 600e bras 446e2 <== NOT EXECUTED the_jnode->info.device.major, the_jnode->info.device.minor ); break; case IMFS_LINEAR_FILE: fprintf(stdout, " (file %" PRId32 " %p)", 446d4: 2f2a 0054 movel %a2@(84),%sp@- <== NOT EXECUTED 446d8: 2f2a 0050 movel %a2@(80),%sp@- <== NOT EXECUTED 446dc: 4879 0006 04f9 pea 604f9 <== NOT EXECUTED 446e2: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 446e6: 4eb9 0005 0a62 jsr 50a62 <== NOT EXECUTED (uint32_t)the_jnode->info.linearfile.size, the_jnode->info.linearfile.direct ); break; 446ec: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 446f0: 6058 bras 4474a <== NOT EXECUTED the_jnode->info.file.indirect, the_jnode->info.file.doubly_indirect, the_jnode->info.file.triply_indirect ); #else fprintf(stdout, " (file %" PRId32 ")", 446f2: 2f2a 0050 movel %a2@(80),%sp@- <== NOT EXECUTED 446f6: 4879 0006 0508 pea 60508 <== NOT EXECUTED 446fc: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44700: 4eb9 0005 0a62 jsr 50a62 <== NOT EXECUTED (uint32_t)the_jnode->info.file.size ); #endif break; 44706: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4470a: 603e bras 4474a <== NOT EXECUTED case IMFS_HARD_LINK: fprintf(stdout, " links not printed\n" ); return; case IMFS_SYM_LINK: fprintf(stdout, " links not printed\n" ); 4470c: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44710: 4879 0006 0514 pea 60514 <== NOT EXECUTED 44716: 600a bras 44722 <== NOT EXECUTED return; case IMFS_FIFO: fprintf(stdout, " FIFO not printed\n" ); 44718: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 4471c: 4879 0006 0528 pea 60528 <== NOT EXECUTED 44722: 4eb9 0005 0bb0 jsr 50bb0 <== NOT EXECUTED return; 44728: 508f addql #8,%sp <== NOT EXECUTED 4472a: 6038 bras 44764 <== NOT EXECUTED default: fprintf(stdout, " bad type %d\n", the_jnode->type ); 4472c: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4472e: 4879 0006 053b pea 6053b <== NOT EXECUTED 44734: 2079 0006 1e80 moveal 61e80 <_impure_ptr>,%a0 <== NOT EXECUTED 4473a: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 4473e: 4eb9 0005 0a62 jsr 50a62 <== NOT EXECUTED return; 44744: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 44748: 601a bras 44764 <== NOT EXECUTED } puts(""); } 4474a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED default: fprintf(stdout, " bad type %d\n", the_jnode->type ); return; } puts(""); 4474e: 203c 0006 0bee movel #396270,%d0 <== NOT EXECUTED } 44754: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED default: fprintf(stdout, " bad type %d\n", the_jnode->type ); return; } puts(""); 44758: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED } 4475c: 4e5e unlk %fp <== NOT EXECUTED default: fprintf(stdout, " bad type %d\n", the_jnode->type ); return; } puts(""); 4475e: 4ef9 0005 2386 jmp 52386 <== NOT EXECUTED } 44764: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 44768: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4476c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00042004 : node = loc->node_access; IMFS_assert( node->type == IMFS_SYM_LINK ); for( i=0; ((iinfo.sym_link.name[i] != '\0')); i++ ) 42004: 4280 clrl %d0 <== NOT EXECUTED int IMFS_readlink( rtems_filesystem_location_info_t *loc, char *buf, /* OUT */ size_t bufsize ) { 42006: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED IMFS_jnode_t *node; int i; node = loc->node_access; 4200a: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED int IMFS_readlink( rtems_filesystem_location_info_t *loc, char *buf, /* OUT */ size_t bufsize ) { 4200e: 2f0a movel %a2,%sp@- <== NOT EXECUTED IMFS_jnode_t *node; int i; node = loc->node_access; 42010: 2250 moveal %a0@,%a1 <== NOT EXECUTED int IMFS_readlink( rtems_filesystem_location_info_t *loc, char *buf, /* OUT */ size_t bufsize ) { 42012: 2f02 movel %d2,%sp@- <== NOT EXECUTED 42014: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED IMFS_jnode_t *node; int i; node = loc->node_access; 42018: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED IMFS_assert( node->type == IMFS_SYM_LINK ); for( i=0; ((iinfo.sym_link.name[i] != '\0')); i++ ) 4201c: 6004 bras 42022 <== NOT EXECUTED 4201e: 5280 addql #1,%d0 <== NOT EXECUTED buf[i] = node->info.sym_link.name[i]; 42020: 10c1 moveb %d1,%a0@+ <== NOT EXECUTED node = loc->node_access; IMFS_assert( node->type == IMFS_SYM_LINK ); for( i=0; ((iinfo.sym_link.name[i] != '\0')); i++ ) 42022: b480 cmpl %d0,%d2 <== NOT EXECUTED 42024: 630a blss 42030 <== NOT EXECUTED 42026: 2469 004c moveal %a1@(76),%a2 <== NOT EXECUTED 4202a: 1232 0800 moveb %a2@(00000000,%d0:l),%d1 <== NOT EXECUTED 4202e: 66ee bnes 4201e <== NOT EXECUTED buf[i] = node->info.sym_link.name[i]; return i; } 42030: 241f movel %sp@+,%d2 <== NOT EXECUTED 42032: 245f moveal %sp@+,%a2 <== NOT EXECUTED 42034: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00042038 : rtems_filesystem_location_info_t *old_parent_loc, /* IN */ rtems_filesystem_location_info_t *old_loc, /* IN */ rtems_filesystem_location_info_t *new_parent_loc, /* IN */ const char *new_name /* IN */ ) { 42038: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED IMFS_jnode_t *the_jnode; IMFS_jnode_t *new_parent; the_jnode = old_loc->node_access; 4203c: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED rtems_filesystem_location_info_t *old_parent_loc, /* IN */ rtems_filesystem_location_info_t *old_loc, /* IN */ rtems_filesystem_location_info_t *new_parent_loc, /* IN */ const char *new_name /* IN */ ) { 42040: 2f0a movel %a2,%sp@- <== NOT EXECUTED IMFS_jnode_t *the_jnode; IMFS_jnode_t *new_parent; the_jnode = old_loc->node_access; 42042: 2450 moveal %a0@,%a2 <== NOT EXECUTED strncpy( the_jnode->name, new_name, IMFS_NAME_MAX ); 42044: 4878 0020 pea 20 <== NOT EXECUTED 42048: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 4204c: 486a 000c pea %a2@(12) <== NOT EXECUTED 42050: 4eb9 0004 dcfc jsr 4dcfc <== NOT EXECUTED if ( the_jnode->Parent != NULL ) 42056: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4205a: 4aaa 0008 tstl %a2@(8) <== NOT EXECUTED 4205e: 670a beqs 4206a <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void rtems_chain_extract( rtems_chain_node *the_node ) { _Chain_Extract( the_node ); 42060: 2f0a movel %a2,%sp@- <== NOT EXECUTED 42062: 4eb9 0004 5fe0 jsr 45fe0 <_Chain_Extract> <== NOT EXECUTED 42068: 588f addql #4,%sp <== NOT EXECUTED rtems_chain_extract( (rtems_chain_node *) the_jnode ); new_parent = new_parent_loc->node_access; 4206a: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED 4206e: 2050 moveal %a0@,%a0 <== NOT EXECUTED the_jnode->Parent = new_parent; 42070: 2548 0008 movel %a0,%a2@(8) <== NOT EXECUTED RTEMS_INLINE_ROUTINE void rtems_chain_append( rtems_chain_control *the_chain, rtems_chain_node *the_node ) { _Chain_Append( the_chain, the_node ); 42074: 2f0a movel %a2,%sp@- <== NOT EXECUTED 42076: 4868 004c pea %a0@(76) <== NOT EXECUTED 4207a: 4eb9 0004 5fa8 jsr 45fa8 <_Chain_Append> <== NOT EXECUTED rtems_chain_append( &new_parent->info.directory.Entries, &the_jnode->Node ); /* * Update the time. */ IMFS_update_ctime( the_jnode ); 42080: 42a7 clrl %sp@- <== NOT EXECUTED 42082: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 42086: 4eb9 0004 283c jsr 4283c <== NOT EXECUTED 4208c: 256e fff8 0044 movel %fp@(-8),%a2@(68) <== NOT EXECUTED return 0; } 42092: 4280 clrl %d0 <== NOT EXECUTED 42094: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 42098: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000494a2 : int IMFS_rmnod( rtems_filesystem_location_info_t *parent_pathloc, /* IN */ rtems_filesystem_location_info_t *pathloc /* IN */ ) { 494a2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED IMFS_jnode_t *jnode = (IMFS_jnode_t *) pathloc->node_access; 494a6: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED int IMFS_rmnod( rtems_filesystem_location_info_t *parent_pathloc, /* IN */ rtems_filesystem_location_info_t *pathloc /* IN */ ) { 494aa: 2f02 movel %d2,%sp@- <== NOT EXECUTED IMFS_jnode_t *jnode = (IMFS_jnode_t *) pathloc->node_access; 494ac: 2410 movel %a0@,%d2 <== NOT EXECUTED IMFS_create_orphan( jnode ); 494ae: 2f02 movel %d2,%sp@- <== NOT EXECUTED 494b0: 4eb9 0004 93f0 jsr 493f0 <== NOT EXECUTED IMFS_check_node_remove( jnode ); 494b6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 494b8: 4eb9 0004 9434 jsr 49434 <== NOT EXECUTED return 0; } 494be: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 494c2: 4280 clrl %d0 <== NOT EXECUTED 494c4: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000494c8 : IMFS_device_t *io; the_jnode = loc->node_access; switch ( the_jnode->type ) { 494c8: 7205 moveq #5,%d1 int IMFS_stat( rtems_filesystem_location_info_t *loc, struct stat *buf ) { 494ca: 4e56 0000 linkw %fp,#0 494ce: 206e 000c moveal %fp@(12),%a0 494d2: 2f0a movel %a2,%sp@- 494d4: 246e 0008 moveal %fp@(8),%a2 IMFS_fs_info_t *fs_info; IMFS_jnode_t *the_jnode; IMFS_device_t *io; the_jnode = loc->node_access; 494d8: 2252 moveal %a2@,%a1 switch ( the_jnode->type ) { 494da: 2029 0048 movel %a1@(72),%d0 494de: 5580 subql #2,%d0 494e0: b280 cmpl %d0,%d1 494e2: 653e bcss 49522 <== NEVER TAKEN 494e4: 303b 0a08 movew %pc@(494ee ,%d0:l:2),%d0 494e8: 48c0 extl %d0 494ea: 4efb 0802 jmp %pc@(494ee ,%d0:l) 494ee: 000c 014 <== NOT EXECUTED 494f0: 0034 064 <== NOT EXECUTED 494f2: 0026 046 <== NOT EXECUTED 494f4: 001c 034 <== NOT EXECUTED 494f6: 001c 034 <== NOT EXECUTED 494f8: 0026 046 <== NOT EXECUTED case IMFS_DEVICE: io = &the_jnode->info.device; buf->st_rdev = rtems_filesystem_make_dev_t( io->major, io->minor ); 494fa: 2029 0050 movel %a1@(80),%d0 494fe: 2169 004c 0016 movel %a1@(76),%a0@(22) 49504: 2140 001a movel %d0,%a0@(26) break; 49508: 602a bras 49534 case IMFS_LINEAR_FILE: case IMFS_MEMORY_FILE: buf->st_size = the_jnode->info.file.size; 4950a: 2029 004c movel %a1@(76),%d0 <== NOT EXECUTED 4950e: 2229 0050 movel %a1@(80),%d1 <== NOT EXECUTED 49512: 6004 bras 49518 <== NOT EXECUTED case IMFS_SYM_LINK: buf->st_size = 0; break; case IMFS_FIFO: buf->st_size = 0; 49514: 4280 clrl %d0 <== NOT EXECUTED 49516: 4281 clrl %d1 <== NOT EXECUTED 49518: 2140 001e movel %d0,%a0@(30) <== NOT EXECUTED 4951c: 2141 0022 movel %d1,%a0@(34) <== NOT EXECUTED break; 49520: 6012 bras 49534 <== NOT EXECUTED default: rtems_set_errno_and_return_minus_one( ENOTSUP ); 49522: 4eb9 0004 c88c jsr 4c88c <__errno> <== NOT EXECUTED 49528: 2040 moveal %d0,%a0 <== NOT EXECUTED 4952a: 70ff moveq #-1,%d0 <== NOT EXECUTED 4952c: 20bc 0000 0086 movel #134,%a0@ <== NOT EXECUTED 49532: 6046 bras 4957a <== NOT EXECUTED /* * The device number of the IMFS is the major number and the minor is the * instance. */ fs_info = loc->mt_entry->fs_info; 49534: 246a 0010 moveal %a2@(16),%a2 buf->st_dev = rtems_filesystem_make_dev_t( IMFS_DEVICE_MAJOR_NUMBER, fs_info->instance ); 49538: 246a 0034 moveal %a2@(52),%a2 4953c: 2012 movel %a2@,%d0 buf->st_mode = the_jnode->st_mode; 4953e: 2169 002e 000c movel %a1@(46),%a0@(12) buf->st_nlink = the_jnode->st_nlink; 49544: 3169 0032 0010 movew %a1@(50),%a0@(16) buf->st_ino = the_jnode->st_ino; 4954a: 2169 0034 0008 movel %a1@(52),%a0@(8) buf->st_uid = the_jnode->st_uid; 49550: 3169 0038 0012 movew %a1@(56),%a0@(18) buf->st_gid = the_jnode->st_gid; 49556: 3169 003a 0014 movew %a1@(58),%a0@(20) buf->st_atime = the_jnode->stat_atime; 4955c: 2169 003c 0026 movel %a1@(60),%a0@(38) buf->st_mtime = the_jnode->stat_mtime; 49562: 2169 0040 002e movel %a1@(64),%a0@(46) buf->st_ctime = the_jnode->stat_ctime; 49568: 2169 0044 0036 movel %a1@(68),%a0@(54) /* * The device number of the IMFS is the major number and the minor is the * instance. */ fs_info = loc->mt_entry->fs_info; buf->st_dev = 4956e: 2140 0004 movel %d0,%a0@(4) buf->st_atime = the_jnode->stat_atime; buf->st_mtime = the_jnode->stat_mtime; buf->st_ctime = the_jnode->stat_ctime; return 0; 49572: 4280 clrl %d0 /* * The device number of the IMFS is the major number and the minor is the * instance. */ fs_info = loc->mt_entry->fs_info; buf->st_dev = 49574: 20bc 0000 fffe movel #65534,%a0@ buf->st_atime = the_jnode->stat_atime; buf->st_mtime = the_jnode->stat_mtime; buf->st_ctime = the_jnode->stat_ctime; return 0; } 4957a: 246e fffc moveal %fp@(-4),%a2 4957e: 4e5e unlk %fp ... =============================================================================== 0004209c : int IMFS_symlink( rtems_filesystem_location_info_t *parent_loc, const char *link_name, const char *node_name ) { 4209c: 4e56 ffc4 linkw %fp,#-60 <== NOT EXECUTED 420a0: 2f03 movel %d3,%sp@- <== NOT EXECUTED 420a2: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED 420a6: 2f02 movel %d2,%sp@- <== NOT EXECUTED int i; /* * Remove any separators at the end of the string. */ IMFS_get_token( node_name, strlen( node_name ), new_name, &i ); 420a8: 240e movel %fp,%d2 <== NOT EXECUTED 420aa: 0682 ffff ffc7 addil #-57,%d2 <== NOT EXECUTED 420b0: 2f03 movel %d3,%sp@- <== NOT EXECUTED 420b2: 4eb9 0004 dce4 jsr 4dce4 <== NOT EXECUTED 420b8: 588f addql #4,%sp <== NOT EXECUTED 420ba: 486e fffc pea %fp@(-4) <== NOT EXECUTED 420be: 2f02 movel %d2,%sp@- <== NOT EXECUTED 420c0: 2f00 movel %d0,%sp@- <== NOT EXECUTED 420c2: 2f03 movel %d3,%sp@- <== NOT EXECUTED 420c4: 4eb9 0004 933c jsr 4933c <== NOT EXECUTED /* * Duplicate link name */ info.sym_link.name = strdup(link_name); 420ca: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 420ce: 4eb9 0004 d854 jsr 4d854 <== NOT EXECUTED if (info.sym_link.name == NULL) { 420d4: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED IMFS_get_token( node_name, strlen( node_name ), new_name, &i ); /* * Duplicate link name */ info.sym_link.name = strdup(link_name); 420d8: 2d40 ffe8 movel %d0,%fp@(-24) <== NOT EXECUTED if (info.sym_link.name == NULL) { 420dc: 660e bnes 420ec <== NOT EXECUTED rtems_set_errno_and_return_minus_one(ENOMEM); 420de: 4eb9 0004 c88c jsr 4c88c <__errno> <== NOT EXECUTED 420e4: 720c moveq #12,%d1 <== NOT EXECUTED 420e6: 2040 moveal %d0,%a0 <== NOT EXECUTED 420e8: 2081 movel %d1,%a0@ <== NOT EXECUTED 420ea: 603a bras 42126 <== NOT EXECUTED * was ONLY passed a NULL when we created the root node. We * added a new IMFS_create_root_node() so this path no longer * existed. The result was simpler code which should not have * this path. */ new_node = IMFS_create_node( 420ec: 486e ffe8 pea %fp@(-24) <== NOT EXECUTED 420f0: 2f3c 0000 a1ff movel #41471,%sp@- <== NOT EXECUTED 420f6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 420f8: 4878 0004 pea 4 <== NOT EXECUTED 420fc: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 42100: 4eb9 0004 8aa2 jsr 48aa2 <== NOT EXECUTED new_name, ( S_IFLNK | ( S_IRWXU | S_IRWXG | S_IRWXO )), &info ); if (new_node == NULL) { 42106: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4210a: 4a80 tstl %d0 <== NOT EXECUTED 4210c: 661c bnes 4212a <== NOT EXECUTED free(info.sym_link.name); 4210e: 2f2e ffe8 movel %fp@(-24),%sp@- <== NOT EXECUTED 42112: 4eb9 0004 27b4 jsr 427b4 <== NOT EXECUTED rtems_set_errno_and_return_minus_one(ENOMEM); 42118: 4eb9 0004 c88c jsr 4c88c <__errno> <== NOT EXECUTED 4211e: 588f addql #4,%sp <== NOT EXECUTED 42120: 2040 moveal %d0,%a0 <== NOT EXECUTED 42122: 700c moveq #12,%d0 <== NOT EXECUTED 42124: 2080 movel %d0,%a0@ <== NOT EXECUTED 42126: 70ff moveq #-1,%d0 <== NOT EXECUTED 42128: 6002 bras 4212c <== NOT EXECUTED } return 0; 4212a: 4280 clrl %d0 <== NOT EXECUTED } 4212c: 242e ffbc movel %fp@(-68),%d2 <== NOT EXECUTED 42130: 262e ffc0 movel %fp@(-64),%d3 <== NOT EXECUTED 42134: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00042138 : /* * If this is the last last pointer to the node * free the node. */ if ( node->type == IMFS_HARD_LINK ) { 42138: 7003 moveq #3,%d0 <== NOT EXECUTED int IMFS_unlink( rtems_filesystem_location_info_t *parentloc, /* IN */ rtems_filesystem_location_info_t *loc /* IN */ ) { 4213a: 4e56 ffd0 linkw %fp,#-48 <== NOT EXECUTED 4213e: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED 42142: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 42146: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED IMFS_jnode_t *node; rtems_filesystem_location_info_t the_link; int result = 0; node = loc->node_access; 4214a: 2652 moveal %a2@,%a3 <== NOT EXECUTED /* * If this is the last last pointer to the node * free the node. */ if ( node->type == IMFS_HARD_LINK ) { 4214c: b0ab 0048 cmpl %a3@(72),%d0 <== NOT EXECUTED 42150: 6600 0082 bnew 421d4 <== NOT EXECUTED if ( !node->info.hard_link.link_node ) 42154: 282b 004c movel %a3@(76),%d4 <== NOT EXECUTED 42158: 660e bnes 42168 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 4215a: 4eb9 0004 c88c jsr 4c88c <__errno> <== NOT EXECUTED 42160: 2040 moveal %d0,%a0 <== NOT EXECUTED 42162: 7016 moveq #22,%d0 <== NOT EXECUTED 42164: 2080 movel %d0,%a0@ <== NOT EXECUTED 42166: 607e bras 421e6 <== NOT EXECUTED the_link = *loc; 42168: 4878 0014 pea 14 <== NOT EXECUTED 4216c: 240e movel %fp,%d2 <== NOT EXECUTED 4216e: 0682 ffff ffe4 addil #-28,%d2 <== NOT EXECUTED 42174: 2f0a movel %a2,%sp@- <== NOT EXECUTED 42176: 2f02 movel %d2,%sp@- <== NOT EXECUTED 42178: 4eb9 0004 d138 jsr 4d138 <== NOT EXECUTED the_link.node_access = node->info.hard_link.link_node; 4217e: 2d44 ffe4 movel %d4,%fp@(-28) <== NOT EXECUTED /* * If removing the last hard link to a node, then we need * to remove the node that is a link and the node itself. */ if ( node->info.hard_link.link_node->st_nlink == 1) 42182: 7801 moveq #1,%d4 <== NOT EXECUTED if ( !node->info.hard_link.link_node ) rtems_set_errno_and_return_minus_one( EINVAL ); the_link = *loc; the_link.node_access = node->info.hard_link.link_node; IMFS_Set_handlers( &the_link ); 42184: 2f02 movel %d2,%sp@- <== NOT EXECUTED 42186: 4eb9 0004 8bf0 jsr 48bf0 <== NOT EXECUTED /* * If removing the last hard link to a node, then we need * to remove the node that is a link and the node itself. */ if ( node->info.hard_link.link_node->st_nlink == 1) 4218c: 206b 004c moveal %a3@(76),%a0 <== NOT EXECUTED 42190: 4281 clrl %d1 <== NOT EXECUTED 42192: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 42196: 3028 0032 movew %a0@(50),%d0 <== NOT EXECUTED 4219a: 3200 movew %d0,%d1 <== NOT EXECUTED 4219c: b881 cmpl %d1,%d4 <== NOT EXECUTED 4219e: 6616 bnes 421b6 <== NOT EXECUTED { result = (*the_link.handlers->rmnod_h)( parentloc, &the_link ); 421a0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 421a2: 206e ffec moveal %fp@(-20),%a0 <== NOT EXECUTED 421a6: 2f03 movel %d3,%sp@- <== NOT EXECUTED 421a8: 2068 0034 moveal %a0@(52),%a0 <== NOT EXECUTED 421ac: 4e90 jsr %a0@ <== NOT EXECUTED if ( result != 0 ) 421ae: 508f addql #8,%sp <== NOT EXECUTED 421b0: 4a80 tstl %d0 <== NOT EXECUTED 421b2: 6720 beqs 421d4 <== NOT EXECUTED 421b4: 6030 bras 421e6 <== NOT EXECUTED return -1; } else { node->info.hard_link.link_node->st_nlink --; 421b6: 5380 subql #1,%d0 <== NOT EXECUTED 421b8: 3140 0032 movew %d0,%a0@(50) <== NOT EXECUTED IMFS_update_ctime( node->info.hard_link.link_node ); 421bc: 42a7 clrl %sp@- <== NOT EXECUTED 421be: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 421c2: 4eb9 0004 283c jsr 4283c <== NOT EXECUTED 421c8: 206b 004c moveal %a3@(76),%a0 <== NOT EXECUTED 421cc: 508f addql #8,%sp <== NOT EXECUTED 421ce: 216e fff8 0044 movel %fp@(-8),%a0@(68) <== NOT EXECUTED /* * Now actually free the node we were asked to free. */ result = (*loc->handlers->rmnod_h)( parentloc, loc ); 421d4: 206a 0008 moveal %a2@(8),%a0 <== NOT EXECUTED 421d8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 421da: 2f03 movel %d3,%sp@- <== NOT EXECUTED 421dc: 2068 0034 moveal %a0@(52),%a0 <== NOT EXECUTED 421e0: 4e90 jsr %a0@ <== NOT EXECUTED return result; 421e2: 508f addql #8,%sp <== NOT EXECUTED 421e4: 6002 bras 421e8 <== NOT EXECUTED if ( node->info.hard_link.link_node->st_nlink == 1) { result = (*the_link.handlers->rmnod_h)( parentloc, &the_link ); if ( result != 0 ) return -1; 421e6: 70ff moveq #-1,%d0 <== NOT EXECUTED */ result = (*loc->handlers->rmnod_h)( parentloc, loc ); return result; } 421e8: 4cee 0c1c ffd0 moveml %fp@(-48),%d2-%d4/%a2-%a3 <== NOT EXECUTED 421ee: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000421f4 : /* * Is the node that we are mounting onto a directory node ? */ if ( node->type != IMFS_DIRECTORY ) 421f4: 7001 moveq #1,%d0 <== NOT EXECUTED #include int IMFS_unmount( rtems_filesystem_mount_table_entry_t *mt_entry ) { 421f6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED IMFS_jnode_t *node; node = mt_entry->mt_point_node.node_access; 421fa: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 421fe: 2068 0008 moveal %a0@(8),%a0 <== NOT EXECUTED /* * Is the node that we are mounting onto a directory node ? */ if ( node->type != IMFS_DIRECTORY ) 42202: b0a8 0048 cmpl %a0@(72),%d0 <== NOT EXECUTED 42206: 670e beqs 42216 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOTDIR ); 42208: 4eb9 0004 c88c jsr 4c88c <__errno> <== NOT EXECUTED 4220e: 7214 moveq #20,%d1 <== NOT EXECUTED 42210: 2040 moveal %d0,%a0 <== NOT EXECUTED 42212: 2081 movel %d1,%a0@ <== NOT EXECUTED 42214: 6012 bras 42228 <== NOT EXECUTED /* * Did the node indicate that there was a directory mounted here? */ if ( node->info.directory.mt_fs == NULL ) 42216: 4aa8 0058 tstl %a0@(88) <== NOT EXECUTED 4221a: 6610 bnes 4222c <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); /* XXX */ 4221c: 4eb9 0004 c88c jsr 4c88c <__errno> <== NOT EXECUTED 42222: 2040 moveal %d0,%a0 <== NOT EXECUTED 42224: 7016 moveq #22,%d0 <== NOT EXECUTED 42226: 2080 movel %d0,%a0@ <== NOT EXECUTED 42228: 70ff moveq #-1,%d0 <== NOT EXECUTED 4222a: 6006 bras 42232 <== NOT EXECUTED /* * Set the mt_fs pointer to indicate that there is no longer * a file system mounted to this point. */ node->info.directory.mt_fs = NULL; 4222c: 42a8 0058 clrl %a0@(88) <== NOT EXECUTED return 0; 42230: 4280 clrl %d0 <== NOT EXECUTED } 42232: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00042238 : int IMFS_utime( rtems_filesystem_location_info_t *pathloc, /* IN */ time_t actime, /* IN */ time_t modtime /* IN */ ) { 42238: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED IMFS_jnode_t *the_jnode; the_jnode = (IMFS_jnode_t *) pathloc->node_access; 4223c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED int IMFS_utime( rtems_filesystem_location_info_t *pathloc, /* IN */ time_t actime, /* IN */ time_t modtime /* IN */ ) { 42240: 2f0a movel %a2,%sp@- <== NOT EXECUTED IMFS_jnode_t *the_jnode; the_jnode = (IMFS_jnode_t *) pathloc->node_access; 42242: 2450 moveal %a0@,%a2 <== NOT EXECUTED the_jnode->stat_atime = actime; 42244: 256e 000c 003c movel %fp@(12),%a2@(60) <== NOT EXECUTED the_jnode->stat_mtime = modtime; 4224a: 256e 0010 0040 movel %fp@(16),%a2@(64) <== NOT EXECUTED the_jnode->stat_ctime = time( NULL ); 42250: 42a7 clrl %sp@- <== NOT EXECUTED 42252: 4eb9 0004 ffac jsr 4ffac