=============================================================================== 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 b3a7 pea 5b3a7 <== 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 d908 lea 4d908 ,%a3 <== NOT EXECUTED 41dc6: 41f9 0004 d908 lea 4d908 ,%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 adf4 pea 5adf4 <== 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 c588 moveal 5c588 <__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 b3a9 pea 5b3a9 <== 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 d908 lea 4d908 ,%a2 <== NOT EXECUTED 41e46: 41f9 0004 d908 lea 4d908 ,%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 adfb pea 5adfb <== 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 =============================================================================== 00048c74 : { IMFS_jnode_t *node = loc->node_access; IMFS_fs_info_t *fs_info; fs_info = loc->mt_entry->fs_info; switch( node->type ) { 48c74: 7206 moveq #6,%d1 #define MAXSYMLINK 5 int IMFS_Set_handlers( rtems_filesystem_location_info_t *loc ) { 48c76: 4e56 0000 linkw %fp,#0 48c7a: 206e 0008 moveal %fp@(8),%a0 48c7e: 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 ) { 48c80: 2450 moveal %a0@,%a2 ) { IMFS_jnode_t *node = loc->node_access; IMFS_fs_info_t *fs_info; fs_info = loc->mt_entry->fs_info; 48c82: 2268 0010 moveal %a0@(16),%a1 switch( node->type ) { 48c86: 202a 0048 movel %a2@(72),%d0 48c8a: 5380 subql #1,%d0 ) { IMFS_jnode_t *node = loc->node_access; IMFS_fs_info_t *fs_info; fs_info = loc->mt_entry->fs_info; 48c8c: 2269 0034 moveal %a1@(52),%a1 switch( node->type ) { 48c90: b280 cmpl %d0,%d1 48c92: 6546 bcss 48cda <== NEVER TAKEN 48c94: 303b 0a08 movew %pc@(48c9e ,%d0:l:2),%d0 48c98: 48c0 extl %d0 48c9a: 4efb 0802 jmp %pc@(48c9e ,%d0:l) 48c9e: 000e .short 0x000e <== NOT EXECUTED 48ca0: 0016 .short 0x0016 <== NOT EXECUTED 48ca2: 0022 .short 0x0022 <== NOT EXECUTED 48ca4: 0022 .short 0x0022 <== NOT EXECUTED 48ca6: 002e .short 0x002e <== NOT EXECUTED 48ca8: 002e .short 0x002e <== NOT EXECUTED 48caa: 0036 .short 0x0036 <== NOT EXECUTED case IMFS_DIRECTORY: loc->handlers = fs_info->directory_handlers; 48cac: 2169 000c 0008 movel %a1@(12),%a0@(8) break; 48cb2: 6026 bras 48cda case IMFS_DEVICE: loc->handlers = &IMFS_device_handlers; 48cb4: 203c 0005 b4f0 movel #374000,%d0 48cba: 2140 0008 movel %d0,%a0@(8) break; 48cbe: 601a bras 48cda case IMFS_SYM_LINK: case IMFS_HARD_LINK: loc->handlers = &IMFS_link_handlers; 48cc0: 223c 0005 b560 movel #374112,%d1 <== NOT EXECUTED 48cc6: 2141 0008 movel %d1,%a0@(8) <== NOT EXECUTED break; 48cca: 600e bras 48cda <== NOT EXECUTED case IMFS_LINEAR_FILE: loc->handlers = fs_info->memfile_handlers; break; case IMFS_MEMORY_FILE: loc->handlers = fs_info->memfile_handlers; 48ccc: 2169 0008 0008 movel %a1@(8),%a0@(8) break; 48cd2: 6006 bras 48cda case IMFS_FIFO: loc->handlers = fs_info->fifo_handlers; 48cd4: 2169 0010 0008 movel %a1@(16),%a0@(8) <== NOT EXECUTED break; } return 0; } 48cda: 245f moveal %sp@+,%a2 48cdc: 4280 clrl %d0 48cde: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00048aa8 : IMFS_jnode_t *IMFS_allocate_node( IMFS_jnode_types_t type, const char *name, mode_t mode ) { 48aa8: 4e56 fff8 linkw %fp,#-8 48aac: 2f0a movel %a2,%sp@- struct timeval tv; /* * Allocate an IMFS jnode */ node = calloc( 1, sizeof( IMFS_jnode_t ) ); 48aae: 4878 0060 pea 60 48ab2: 4878 0001 pea 1 48ab6: 4eb9 0004 241c jsr 4241c if ( !node ) 48abc: 508f addql #8,%sp struct timeval tv; /* * Allocate an IMFS jnode */ node = calloc( 1, sizeof( IMFS_jnode_t ) ); 48abe: 2440 moveal %d0,%a2 if ( !node ) 48ac0: 4a80 tstl %d0 48ac2: 6758 beqs 48b1c <== NEVER TAKEN /* * Fill in the basic information */ node->st_nlink = 1; node->type = type; strncpy( node->name, name, IMFS_NAME_MAX ); 48ac4: 4878 0020 pea 20 48ac8: 2f2e 000c movel %fp@(12),%sp@- /* * Fill in the basic information */ node->st_nlink = 1; node->type = type; 48acc: 256e 0008 0048 movel %fp@(8),%a2@(72) strncpy( node->name, name, IMFS_NAME_MAX ); 48ad2: 486a 000c pea %a2@(12) return NULL; /* * Fill in the basic information */ node->st_nlink = 1; 48ad6: 7001 moveq #1,%d0 48ad8: 3540 0032 movew %d0,%a2@(50) node->type = type; strncpy( node->name, name, IMFS_NAME_MAX ); 48adc: 4eb9 0004 ddc4 jsr 4ddc4 /* * Fill in the mode and permission information for the jnode structure. */ node->st_mode = mode; 48ae2: 256e 0010 002e movel %fp@(16),%a2@(46) #if defined(RTEMS_POSIX_API) node->st_uid = geteuid(); 48ae8: 4eb9 0004 9858 jsr 49858 48aee: 3540 0038 movew %d0,%a2@(56) node->st_gid = getegid(); 48af2: 4eb9 0004 9844 jsr 49844 #endif /* * Now set all the times. */ gettimeofday( &tv, 0 ); 48af8: 42a7 clrl %sp@- 48afa: 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(); 48afe: 3540 003a movew %d0,%a2@(58) #endif /* * Now set all the times. */ gettimeofday( &tv, 0 ); 48b02: 4eb9 0004 283c jsr 4283c node->stat_atime = (time_t) tv.tv_sec; 48b08: 202e fff8 movel %fp@(-8),%d0 node->stat_mtime = (time_t) tv.tv_sec; node->stat_ctime = (time_t) tv.tv_sec; return node; 48b0c: 4fef 0014 lea %sp@(20),%sp /* * Now set all the times. */ gettimeofday( &tv, 0 ); node->stat_atime = (time_t) tv.tv_sec; 48b10: 2540 003c movel %d0,%a2@(60) node->stat_mtime = (time_t) tv.tv_sec; 48b14: 2540 0040 movel %d0,%a2@(64) node->stat_ctime = (time_t) tv.tv_sec; 48b18: 2540 0044 movel %d0,%a2@(68) return node; } 48b1c: 200a movel %a2,%d0 48b1e: 246e fff4 moveal %fp@(-12),%a2 48b22: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000494b8 : void IMFS_check_node_remove( IMFS_jnode_t *jnode ) { 494b8: 4e56 0000 linkw %fp,#0 494bc: 2f0a movel %a2,%sp@- 494be: 246e 0008 moveal %fp@(8),%a2 if ( !rtems_libio_is_file_open( jnode ) && jnode->st_nlink < 1 ) { 494c2: 2f0a movel %a2,%sp@- 494c4: 4eb9 0004 9a56 jsr 49a56 494ca: 588f addql #4,%sp 494cc: 4a80 tstl %d0 494ce: 664e bnes 4951e <== ALWAYS TAKEN 494d0: 4a6a 0032 tstw %a2@(50) <== NOT EXECUTED 494d4: 6648 bnes 4951e <== NOT EXECUTED if ( rtems_filesystem_current.node_access == jnode ) 494d6: 2079 0005 c3c0 moveal 5c3c0 ,%a0 <== NOT EXECUTED 494dc: b5e8 0004 cmpal %a0@(4),%a2 <== NOT EXECUTED 494e0: 6604 bnes 494e6 <== NOT EXECUTED rtems_filesystem_current.node_access = NULL; 494e2: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED switch ( jnode->type ) { 494e6: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED 494ea: 7204 moveq #4,%d1 <== NOT EXECUTED 494ec: b280 cmpl %d0,%d1 <== NOT EXECUTED 494ee: 6712 beqs 49502 <== NOT EXECUTED 494f0: 123c 0005 moveb #5,%d1 <== NOT EXECUTED 494f4: b280 cmpl %d0,%d1 <== NOT EXECUTED 494f6: 6616 bnes 4950e <== NOT EXECUTED case IMFS_MEMORY_FILE: IMFS_memfile_remove( jnode ); 494f8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 494fa: 4eb9 0004 b6a8 jsr 4b6a8 <== NOT EXECUTED 49500: 600a bras 4950c <== NOT EXECUTED break; case IMFS_SYM_LINK: free( jnode->info.sym_link.name ); 49502: 2f2a 004c movel %a2@(76),%sp@- <== NOT EXECUTED 49506: 4eb9 0004 27b4 jsr 427b4 <== NOT EXECUTED break; 4950c: 588f addql #4,%sp <== NOT EXECUTED default: break; } free( jnode ); 4950e: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED } } 49512: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 49516: 4e5e unlk %fp <== NOT EXECUTED break; default: break; } free( jnode ); 49518: 4ef9 0004 27b4 jmp 427b4 <== NOT EXECUTED } } 4951e: 246e fffc moveal %fp@(-4),%a2 49522: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00048a40 : int IMFS_chown( rtems_filesystem_location_info_t *pathloc, /* IN */ uid_t owner, /* IN */ gid_t group /* IN */ ) { 48a40: 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; 48a44: 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 */ ) { 48a48: 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; 48a4c: 2450 moveal %a0@,%a2 <== NOT EXECUTED */ #if defined(RTEMS_POSIX_API) st_uid = geteuid(); if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) ) 48a4e: 4284 clrl %d4 <== NOT EXECUTED int IMFS_chown( rtems_filesystem_location_info_t *pathloc, /* IN */ uid_t owner, /* IN */ gid_t group /* IN */ ) { 48a50: 362e 000e movew %fp@(14),%d3 <== NOT EXECUTED 48a54: 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(); 48a58: 4eb9 0004 9858 jsr 49858 <== NOT EXECUTED if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) ) 48a5e: 4281 clrl %d1 <== NOT EXECUTED 48a60: 3800 movew %d0,%d4 <== NOT EXECUTED 48a62: 322a 0038 movew %a2@(56),%d1 <== NOT EXECUTED 48a66: b284 cmpl %d4,%d1 <== NOT EXECUTED 48a68: 6714 beqs 48a7e <== NOT EXECUTED 48a6a: 4a40 tstw %d0 <== NOT EXECUTED 48a6c: 6710 beqs 48a7e <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EPERM ); 48a6e: 4eb9 0004 c954 jsr 4c954 <__errno> <== NOT EXECUTED 48a74: 2040 moveal %d0,%a0 <== NOT EXECUTED 48a76: 7001 moveq #1,%d0 <== NOT EXECUTED 48a78: 2080 movel %d0,%a0@ <== NOT EXECUTED 48a7a: 70ff moveq #-1,%d0 <== NOT EXECUTED 48a7c: 601e bras 48a9c <== NOT EXECUTED #endif jnode->st_uid = owner; 48a7e: 3543 0038 movew %d3,%a2@(56) <== NOT EXECUTED jnode->st_gid = group; 48a82: 3542 003a movew %d2,%a2@(58) <== NOT EXECUTED IMFS_update_ctime( jnode ); 48a86: 42a7 clrl %sp@- <== NOT EXECUTED 48a88: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 48a8c: 4eb9 0004 283c jsr 4283c <== NOT EXECUTED 48a92: 256e fff8 0044 movel %fp@(-8),%a2@(68) <== NOT EXECUTED return 0; 48a98: 508f addql #8,%sp <== NOT EXECUTED 48a9a: 4280 clrl %d0 <== NOT EXECUTED } 48a9c: 4cee 041c ffe8 moveml %fp@(-24),%d2-%d4/%a2 <== NOT EXECUTED 48aa2: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00048b26 : IMFS_jnode_types_t type, const char *name, mode_t mode, const IMFS_types_union *info ) { 48b26: 4e56 ffec linkw %fp,#-20 48b2a: 206e 0008 moveal %fp@(8),%a0 48b2e: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ 48b32: 242e 000c movel %fp@(12),%d2 48b36: 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 ) 48b3a: 4a88 tstl %a0 48b3c: 6700 00ee beqw 48c2c return NULL; parent = parent_loc->node_access; 48b40: 2850 moveal %a0@,%a4 fs_info = parent_loc->mt_entry->fs_info; /* * Reject creation of FIFOs if support is disabled. */ if ( type == IMFS_FIFO && 48b42: 7007 moveq #7,%d0 */ if ( parent_loc == NULL ) return NULL; parent = parent_loc->node_access; fs_info = parent_loc->mt_entry->fs_info; 48b44: 2068 0010 moveal %a0@(16),%a0 48b48: 2668 0034 moveal %a0@(52),%a3 /* * Reject creation of FIFOs if support is disabled. */ if ( type == IMFS_FIFO && 48b4c: b082 cmpl %d2,%d0 48b4e: 660e bnes 48b5e <== ALWAYS TAKEN 48b50: 223c 0005 b480 movel #373888,%d1 <== NOT EXECUTED 48b56: b2ab 0010 cmpl %a3@(16),%d1 <== NOT EXECUTED 48b5a: 6700 00d0 beqw 48c2c <== NOT EXECUTED return NULL; /* * Allocate filesystem node and fill in basic information */ node = IMFS_allocate_node( type, name, mode & ~rtems_filesystem_umask ); 48b5e: 2079 0005 c3c0 moveal 5c3c0 ,%a0 48b64: 2028 002c movel %a0@(44),%d0 48b68: 4680 notl %d0 48b6a: c0ae 0014 andl %fp@(20),%d0 48b6e: 2f00 movel %d0,%sp@- 48b70: 2f2e 0010 movel %fp@(16),%sp@- 48b74: 2f02 movel %d2,%sp@- 48b76: 4eb9 0004 8aa8 jsr 48aa8 if ( !node ) 48b7c: 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 ); 48b80: 2a40 moveal %d0,%a5 if ( !node ) 48b82: 4a80 tstl %d0 48b84: 6700 00a8 beqw 48c2e return NULL; /* * Set the type specific information */ if ( type == IMFS_DIRECTORY ) { 48b88: 7001 moveq #1,%d0 48b8a: b082 cmpl %d2,%d0 48b8c: 6616 bnes 48ba4 RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); 48b8e: 41ed 0050 lea %a5@(80),%a0 48b92: 2b48 004c movel %a0,%a5@(76) */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); 48b96: 41ed 004c lea %a5@(76),%a0 Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; head->previous = NULL; 48b9a: 42ad 0050 clrl %a5@(80) */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); 48b9e: 2b48 0054 movel %a0,%a5@(84) 48ba2: 6066 bras 48c0a rtems_chain_initialize_empty(&node->info.directory.Entries); } else if ( type == IMFS_HARD_LINK ) { 48ba4: 7003 moveq #3,%d0 48ba6: b082 cmpl %d2,%d0 48ba8: 6706 beqs 48bb0 <== NEVER TAKEN node->info.hard_link.link_node = info->hard_link.link_node; } else if ( type == IMFS_SYM_LINK ) { 48baa: 7204 moveq #4,%d1 48bac: b282 cmpl %d2,%d1 48bae: 6606 bnes 48bb6 <== ALWAYS TAKEN node->info.sym_link.name = info->sym_link.name; 48bb0: 2b52 004c movel %a2@,%a5@(76) <== NOT EXECUTED 48bb4: 6054 bras 48c0a <== NOT EXECUTED } else if ( type == IMFS_DEVICE ) { 48bb6: 7002 moveq #2,%d0 48bb8: b082 cmpl %d2,%d0 48bba: 660c bnes 48bc8 node->info.device.major = info->device.major; 48bbc: 2b52 004c movel %a2@,%a5@(76) node->info.device.minor = info->device.minor; 48bc0: 2b6a 0004 0050 movel %a2@(4),%a5@(80) 48bc6: 6042 bras 48c0a } else if ( type == IMFS_LINEAR_FILE ) { 48bc8: 7206 moveq #6,%d1 48bca: b282 cmpl %d2,%d1 48bcc: 6612 bnes 48be0 <== ALWAYS TAKEN node->info.linearfile.size = 0; node->info.linearfile.direct = 0; 48bce: 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; 48bd2: 4280 clrl %d0 <== NOT EXECUTED 48bd4: 4281 clrl %d1 <== NOT EXECUTED 48bd6: 2b40 004c movel %d0,%a5@(76) <== NOT EXECUTED 48bda: 2b41 0050 movel %d1,%a5@(80) <== NOT EXECUTED 48bde: 602a bras 48c0a <== NOT EXECUTED node->info.linearfile.direct = 0; } else if ( type == IMFS_MEMORY_FILE ) { 48be0: 7205 moveq #5,%d1 48be2: b282 cmpl %d2,%d1 48be4: 661a bnes 48c00 <== NEVER TAKEN node->info.file.size = 0; node->info.file.indirect = 0; 48be6: 42ad 0054 clrl %a5@(84) 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; 48bea: 4280 clrl %d0 48bec: 4281 clrl %d1 node->info.file.indirect = 0; node->info.file.doubly_indirect = 0; 48bee: 42ad 0058 clrl %a5@(88) 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; 48bf2: 2b40 004c movel %d0,%a5@(76) 48bf6: 2b41 0050 movel %d1,%a5@(80) node->info.file.indirect = 0; node->info.file.doubly_indirect = 0; node->info.file.triply_indirect = 0; 48bfa: 42ad 005c clrl %a5@(92) 48bfe: 600a bras 48c0a } else if ( type == IMFS_FIFO ) { 48c00: 7207 moveq #7,%d1 <== NOT EXECUTED 48c02: b282 cmpl %d2,%d1 <== NOT EXECUTED 48c04: 6604 bnes 48c0a <== NOT EXECUTED node->info.fifo.pipe = NULL; 48c06: 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; 48c0a: 202b 0004 movel %a3@(4),%d0 48c0e: 5280 addql #1,%d0 } /* * This node MUST have a parent, so put it in that directory list. */ node->Parent = parent; 48c10: 2b4c 0008 movel %a4,%a5@(8) node->st_ino = ++fs_info->ino_count; 48c14: 2740 0004 movel %d0,%a3@(4) 48c18: 2b40 0034 movel %d0,%a5@(52) 48c1c: 2f0d movel %a5,%sp@- 48c1e: 486c 004c pea %a4@(76) 48c22: 4eb9 0004 5fb8 jsr 45fb8 <_Chain_Append> rtems_chain_append( &parent->info.directory.Entries, &node->Node ); return node; 48c28: 508f addql #8,%sp 48c2a: 6002 bras 48c2e /* * Reject creation of FIFOs if support is disabled. */ if ( type == IMFS_FIFO && fs_info->fifo_handlers == &rtems_filesystem_handlers_default ) return NULL; 48c2c: 9bcd subal %a5,%a5 <== NOT EXECUTED node->st_ino = ++fs_info->ino_count; rtems_chain_append( &parent->info.directory.Entries, &node->Node ); return node; } 48c2e: 200d movel %a5,%d0 48c30: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 48c36: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00049474 : #include #include "imfs.h" void IMFS_create_orphan( IMFS_jnode_t *jnode ) { 49474: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 49478: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4947a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED if ( jnode->Parent != NULL ) { 4947e: 4aaa 0008 tstl %a2@(8) <== NOT EXECUTED 49482: 670e beqs 49492 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void rtems_chain_extract( rtems_chain_node *the_node ) { _Chain_Extract( the_node ); 49484: 2f0a movel %a2,%sp@- <== NOT EXECUTED 49486: 4eb9 0004 5ff0 jsr 45ff0 <_Chain_Extract> <== NOT EXECUTED rtems_chain_extract( &jnode->Node ); jnode->Parent = NULL; 4948c: 588f addql #4,%sp <== NOT EXECUTED 4948e: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED } --jnode->st_nlink; 49492: 302a 0032 movew %a2@(50),%d0 <== NOT EXECUTED 49496: 5380 subql #1,%d0 <== NOT EXECUTED 49498: 3540 0032 movew %d0,%a2@(50) <== NOT EXECUTED IMFS_update_ctime( jnode ); 4949c: 42a7 clrl %sp@- <== NOT EXECUTED 4949e: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 494a2: 4eb9 0004 283c jsr 4283c <== NOT EXECUTED 494a8: 256e fff8 0044 movel %fp@(-8),%a2@(68) <== NOT EXECUTED 494ae: 508f addql #8,%sp <== NOT EXECUTED } 494b0: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 494b4: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00048c3a : return node; } IMFS_jnode_t *IMFS_create_root_node(void) { 48c3a: 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) ); 48c3e: 4878 41ed pea 41ed 48c42: 4879 0005 b2d0 pea 5b2d0 48c48: 4878 0001 pea 1 48c4c: 4eb9 0004 8aa8 jsr 48aa8 if ( !node ) 48c52: 4fef 000c lea %sp@(12),%sp 48c56: 4a80 tstl %d0 48c58: 6716 beqs 48c70 <== NEVER TAKEN Chain_Node *tail = _Chain_Tail( the_chain ); 48c5a: 2240 moveal %d0,%a1 48c5c: 2040 moveal %d0,%a0 48c5e: 43e9 0050 lea %a1@(80),%a1 48c62: 2149 004c movel %a1,%a0@(76) */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); 48c66: 5989 subql #4,%a1 Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; head->previous = NULL; 48c68: 42a8 0050 clrl %a0@(80) */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); 48c6c: 2149 0054 movel %a1,%a0@(84) * NOTE: Root node is always a directory. */ rtems_chain_initialize_empty(&node->info.directory.Entries); return node; } 48c70: 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 1f64 moveal 61f64 <_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 0c78 lea 50c78 ,%a2 <== NOT EXECUTED 447fe: 4879 0006 0626 pea 60626 <== NOT EXECUTED 44804: 4e92 jsr %a2@ <== NOT EXECUTED fprintf(stdout, "/\n" ); 44806: 2079 0006 1f64 moveal 61f64 <_impure_ptr>,%a0 <== NOT EXECUTED 4480c: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44810: 4879 0006 065b pea 6065b <== NOT EXECUTED 44816: 4e92 jsr %a2@ <== NOT EXECUTED IMFS_dump_directory( rtems_filesystem_root.node_access, 0 ); 44818: 2079 0006 1ea0 moveal 61ea0 ,%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 1f64 moveal 61f64 <_impure_ptr>,%a0 <== NOT EXECUTED 44830: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44834: 4879 0006 065e pea 6065e <== 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 bool _Chain_Is_tail( Chain_Control *the_chain, const Chain_Node *the_node ) { return (the_node == _Chain_Tail(the_chain)); 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 0c78 lea 50c78 ,%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 * */ int IMFS_memfile_maximum_size( void ) { return IMFS_MEMFILE_MAXIMUM_SIZE; } 4479e: 2468 004c moveal %a0@(76),%a2 <== NOT EXECUTED IMFS_assert( level >= 0 ); IMFS_assert( the_directory->type == IMFS_DIRECTORY ); the_chain = &the_directory->info.directory.Entries; for ( the_node = rtems_chain_first( the_chain ); 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 1f64 moveal 61f64 <_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 0621 pea 60621 <== 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 = rtems_chain_first( the_chain ); !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 = rtems_chain_first( the_chain ); 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 =============================================================================== 00048d9c : 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 ) ) { 48d9c: 70f8 moveq #-8,%d0 const char *pathname, /* IN */ size_t pathnamelen, /* IN */ int flags, /* IN */ rtems_filesystem_location_info_t *pathloc /* IN/OUT */ ) { 48d9e: 4e56 ff9c linkw %fp,#-100 48da2: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ 48da6: 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 ) ) { 48daa: c084 andl %d4,%d0 const char *pathname, /* IN */ size_t pathnamelen, /* IN */ int flags, /* IN */ rtems_filesystem_location_info_t *pathloc /* IN/OUT */ ) { 48dac: 2a6e 0008 moveal %fp@(8),%a5 48db0: 286e 000c moveal %fp@(12),%a4 48db4: 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 ) ) { 48db8: 670e beqs 48dc8 <== ALWAYS TAKEN rtems_set_errno_and_return_minus_one( EIO ); 48dba: 4eb9 0004 c954 jsr 4c954 <__errno> <== NOT EXECUTED 48dc0: 7c05 moveq #5,%d6 <== NOT EXECUTED 48dc2: 2040 moveal %d0,%a0 <== NOT EXECUTED 48dc4: 2086 movel %d6,%a0@ <== NOT EXECUTED 48dc6: 603e bras 48e06 <== 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 ); 48dc8: 2a0e movel %fp,%d5 size_t pathnamelen, /* IN */ int flags, /* IN */ rtems_filesystem_location_info_t *pathloc /* IN/OUT */ ) { int i = 0; 48dca: 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 ); 48dcc: 0685 ffff ffc7 addil #-57,%d5 } /* * Otherwise find the token name in the present location. */ node = IMFS_find_match_in_dir( node, token ); 48dd2: 2e3c 0004 9354 movel #299860,%d7 /* * This was filled in by the caller and is valid in the * mount table. */ node = pathloc->node_access; 48dd8: 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 ); 48dda: 486e fffc pea %fp@(-4) 48dde: 2f05 movel %d5,%sp@- 48de0: 2f0c movel %a4,%sp@- 48de2: 4875 2800 pea %a5@(00000000,%d2:l) 48de6: 4eb9 0004 93c0 jsr 493c0 pathnamelen -= len; 48dec: 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 ); 48df0: 2600 movel %d0,%d3 pathnamelen -= len; i += len; if ( !pathloc->node_access ) 48df2: 4fef 0010 lea %sp@(16),%sp 48df6: 4a92 tstl %a2@ 48df8: 6612 bnes 48e0c <== ALWAYS TAKEN rtems_set_errno_and_return_minus_one( ENOENT ); 48dfa: 4eb9 0004 c954 jsr 4c954 <__errno> 48e00: 7a02 moveq #2,%d5 48e02: 2040 moveal %d0,%a0 48e04: 2085 movel %d5,%a0@ 48e06: 76ff moveq #-1,%d3 48e08: 6000 017c braw 48f86 /* * I cannot move out of this directory without execute permission. */ if ( type != IMFS_NO_MORE_PATH ) 48e0c: 4a80 tstl %d0 48e0e: 671c beqs 48e2c if ( node->type == IMFS_DIRECTORY ) 48e10: 7001 moveq #1,%d0 48e12: b0ab 0048 cmpl %a3@(72),%d0 48e16: 6614 bnes 48e2c <== NEVER TAKEN if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_SEARCH ) ) 48e18: 4878 0001 pea 1 48e1c: 2f0a movel %a2,%sp@- 48e1e: 4eb9 0004 8ce2 jsr 48ce2 48e24: 508f addql #8,%sp 48e26: 4a80 tstl %d0 48e28: 6700 014a beqw 48f74 rtems_set_errno_and_return_minus_one( EACCES ); node = pathloc->node_access; 48e2c: 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; 48e2e: 99c6 subal %d6,%a4 i += len; 48e30: 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 ) { 48e32: 7003 moveq #3,%d0 48e34: b083 cmpl %d3,%d0 48e36: 6742 beqs 48e7a 48e38: 7204 moveq #4,%d1 48e3a: b283 cmpl %d3,%d1 48e3c: 6700 00aa beqw 48ee8 48e40: 103c 0002 moveb #2,%d0 48e44: b083 cmpl %d3,%d0 48e46: 6600 00b0 bnew 48ef8 case IMFS_UP_DIR: /* * Am I at the root of all filesystems? (chroot'ed?) */ if ( pathloc->node_access == rtems_filesystem_root.node_access ) 48e4a: 2079 0005 c3c0 moveal 5c3c0 ,%a0 <== NOT EXECUTED 48e50: b7e8 0018 cmpal %a0@(24),%a3 <== NOT EXECUTED 48e54: 6784 beqs 48dda <== NOT EXECUTED /* * Am I at the root of this mounted filesystem? */ if (pathloc->node_access == pathloc->mt_entry->mt_fs_root.node_access) { 48e56: 206a 0010 moveal %a2@(16),%a0 <== NOT EXECUTED /* * Am I at the root of this mounted filesystem? */ if (pathloc->node_access == 48e5a: b7e8 001c cmpal %a0@(28),%a3 <== NOT EXECUTED 48e5e: 6614 bnes 48e74 <== 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; 48e60: 4878 0014 pea 14 <== NOT EXECUTED 48e64: 260e movel %fp,%d3 <== NOT EXECUTED 48e66: 4868 0008 pea %a0@(8) <== NOT EXECUTED 48e6a: 0683 ffff ffe8 addil #-24,%d3 <== NOT EXECUTED 48e70: 6000 00b2 braw 48f24 <== NOT EXECUTED pathnamelen+len, flags,pathloc); } } else { if ( !node->Parent ) 48e74: 266b 0008 moveal %a3@(8),%a3 <== NOT EXECUTED 48e78: 6062 bras 48edc <== NOT EXECUTED case IMFS_NAME: /* * If we are at a link follow it. */ if ( node->type == IMFS_HARD_LINK ) { 48e7a: 202b 0048 movel %a3@(72),%d0 48e7e: 7203 moveq #3,%d1 48e80: b280 cmpl %d0,%d1 48e82: 6610 bnes 48e94 <== ALWAYS TAKEN IMFS_evaluate_hard_link( pathloc, 0 ); 48e84: 42a7 clrl %sp@- <== NOT EXECUTED 48e86: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48e88: 4eb9 0004 8d56 jsr 48d56 <== NOT EXECUTED node = pathloc->node_access; 48e8e: 2652 moveal %a2@,%a3 <== NOT EXECUTED 48e90: 508f addql #8,%sp <== NOT EXECUTED 48e92: 601c bras 48eb0 <== 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 ) { 48e94: 7204 moveq #4,%d1 48e96: b280 cmpl %d0,%d1 48e98: 6616 bnes 48eb0 <== ALWAYS TAKEN result = IMFS_evaluate_sym_link( pathloc, 0 ); 48e9a: 42a7 clrl %sp@- <== NOT EXECUTED 48e9c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48e9e: 4eb9 0004 8f92 jsr 48f92 <== NOT EXECUTED /* * In contrast to a hard link, it is possible to have a broken * symbolic link. */ node = pathloc->node_access; 48ea4: 2652 moveal %a2@,%a3 <== NOT EXECUTED if ( result == -1 ) 48ea6: 508f addql #8,%sp <== NOT EXECUTED 48ea8: 72ff moveq #-1,%d1 <== NOT EXECUTED 48eaa: b280 cmpl %d0,%d1 <== NOT EXECUTED 48eac: 6700 00d6 beqw 48f84 <== NOT EXECUTED } /* * Only a directory can be decended into. */ if ( node->type != IMFS_DIRECTORY ) 48eb0: 7001 moveq #1,%d0 48eb2: b0ab 0048 cmpl %a3@(72),%d0 48eb6: 6710 beqs 48ec8 <== ALWAYS TAKEN rtems_set_errno_and_return_minus_one( ENOTDIR ); 48eb8: 4eb9 0004 c954 jsr 4c954 <__errno> <== NOT EXECUTED 48ebe: 7814 moveq #20,%d4 <== NOT EXECUTED 48ec0: 2040 moveal %d0,%a0 <== NOT EXECUTED 48ec2: 2084 movel %d4,%a0@ <== NOT EXECUTED 48ec4: 6000 ff40 braw 48e06 <== 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 ) { 48ec8: 206b 0058 moveal %a3@(88),%a0 48ecc: 4a88 tstl %a0 48ece: 6644 bnes 48f14 <== NEVER TAKEN } /* * Otherwise find the token name in the present location. */ node = IMFS_find_match_in_dir( node, token ); 48ed0: 2f05 movel %d5,%sp@- 48ed2: 2047 moveal %d7,%a0 48ed4: 2f0b movel %a3,%sp@- 48ed6: 4e90 jsr %a0@ if ( !node ) 48ed8: 508f addql #8,%sp } /* * Otherwise find the token name in the present location. */ node = IMFS_find_match_in_dir( node, token ); 48eda: 2640 moveal %d0,%a3 if ( !node ) 48edc: 4a8b tstl %a3 48ede: 6700 ff1a beqw 48dfa /* * Set the node access to the point we have found. */ pathloc->node_access = node; 48ee2: 248b movel %a3,%a2@ 48ee4: 6000 fef4 braw 48dda case IMFS_NO_MORE_PATH: case IMFS_CURRENT_DIR: break; case IMFS_INVALID_TOKEN: rtems_set_errno_and_return_minus_one( ENAMETOOLONG ); 48ee8: 4eb9 0004 c954 jsr 4c954 <__errno> <== NOT EXECUTED 48eee: 765b moveq #91,%d3 <== NOT EXECUTED 48ef0: 2040 moveal %d0,%a0 <== NOT EXECUTED 48ef2: 2083 movel %d3,%a0@ <== NOT EXECUTED 48ef4: 6000 ff10 braw 48e06 <== NOT EXECUTED /* * Evaluate all tokens until we are done or an error occurs. */ while( (type != IMFS_NO_MORE_PATH) && (type != IMFS_INVALID_TOKEN) ) { 48ef8: 4a83 tstl %d3 48efa: 6708 beqs 48f04 48efc: 7004 moveq #4,%d0 48efe: b083 cmpl %d3,%d0 48f00: 6600 fed8 bnew 48dda * 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 ) { 48f04: 7201 moveq #1,%d1 48f06: b2ab 0048 cmpl %a3@(72),%d1 48f0a: 664e bnes 48f5a if ( node->info.directory.mt_fs != NULL ) { 48f0c: 206b 0058 moveal %a3@(88),%a0 48f10: 4a88 tstl %a0 48f12: 6746 beqs 48f5a <== ALWAYS TAKEN newloc = node->info.directory.mt_fs->mt_fs_root; 48f14: 4878 0014 pea 14 <== NOT EXECUTED 48f18: 260e movel %fp,%d3 <== NOT EXECUTED 48f1a: 0683 ffff ffe8 addil #-24,%d3 <== NOT EXECUTED 48f20: 4868 001c pea %a0@(28) <== NOT EXECUTED 48f24: 2f03 movel %d3,%sp@- <== NOT EXECUTED 48f26: 47f9 0004 d200 lea 4d200 ,%a3 <== NOT EXECUTED 48f2c: 4e93 jsr %a3@ <== NOT EXECUTED *pathloc = newloc; 48f2e: 4878 0014 pea 14 <== NOT EXECUTED 48f32: 2f03 movel %d3,%sp@- <== NOT EXECUTED 48f34: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48f36: 4e93 jsr %a3@ <== NOT EXECUTED return (*pathloc->ops->evalpath_h)( &pathname[i-len], 48f38: 226a 000c moveal %a2@(12),%a1 <== NOT EXECUTED 48f3c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48f3e: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED 48f42: 9488 subl %a0,%d2 <== NOT EXECUTED 48f44: 2f04 movel %d4,%sp@- <== NOT EXECUTED 48f46: 4874 8800 pea %a4@(00000000,%a0:l) <== NOT EXECUTED 48f4a: 4875 2800 pea %a5@(00000000,%d2:l) <== NOT EXECUTED 48f4e: 2051 moveal %a1@,%a0 <== NOT EXECUTED 48f50: 4e90 jsr %a0@ <== NOT EXECUTED 48f52: 4fef 0028 lea %sp@(40),%sp <== NOT EXECUTED 48f56: 2600 movel %d0,%d3 <== NOT EXECUTED 48f58: 602c bras 48f86 <== NOT EXECUTED flags, pathloc ); } else { result = IMFS_Set_handlers( pathloc ); } } else { result = IMFS_Set_handlers( pathloc ); 48f5a: 2f0a movel %a2,%sp@- 48f5c: 4eb9 0004 8c74 jsr 48c74 48f62: 2600 movel %d0,%d3 /* * Verify we have the correct permissions for this node. */ if ( !IMFS_evaluate_permission( pathloc, flags ) ) 48f64: 2e84 movel %d4,%sp@ 48f66: 2f0a movel %a2,%sp@- 48f68: 4eb9 0004 8ce2 jsr 48ce2 48f6e: 508f addql #8,%sp 48f70: 4a80 tstl %d0 48f72: 6612 bnes 48f86 <== ALWAYS TAKEN rtems_set_errno_and_return_minus_one( EACCES ); 48f74: 4eb9 0004 c954 jsr 4c954 <__errno> <== NOT EXECUTED 48f7a: 740d moveq #13,%d2 <== NOT EXECUTED 48f7c: 2040 moveal %d0,%a0 <== NOT EXECUTED 48f7e: 2082 movel %d2,%a0@ <== NOT EXECUTED 48f80: 6000 fe84 braw 48e06 <== NOT EXECUTED 48f84: 2600 movel %d0,%d3 <== NOT EXECUTED return result; } 48f86: 2003 movel %d3,%d0 48f88: 4cee 3cfc ff9c moveml %fp@(-100),%d2-%d7/%a2-%a5 48f8e: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000490a6 : int IMFS_evaluate_for_make( const char *path, /* IN */ rtems_filesystem_location_info_t *pathloc, /* IN/OUT */ const char **name /* OUT */ ) { 490a6: 4e56 ff9c linkw %fp,#-100 490aa: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ 490ae: 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 ); 490b2: 2c0e movel %fp,%d6 const char *path, /* IN */ rtems_filesystem_location_info_t *pathloc, /* IN/OUT */ const char **name /* OUT */ ) { int i = 0; 490b4: 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 ); 490b6: 0686 ffff ffc7 addil #-57,%d6 if ( result == -1 ) return -1; } else if ( node->type == IMFS_SYM_LINK ) { result = IMFS_evaluate_link( pathloc, 0 ); 490bc: 2a3c 0004 900e movel #299022,%d5 int IMFS_evaluate_for_make( const char *path, /* IN */ rtems_filesystem_location_info_t *pathloc, /* IN/OUT */ const char **name /* OUT */ ) { 490c2: 286e 0008 moveal %fp@(8),%a4 /* * This was filled in by the caller and is valid in the * mount table. */ node = pathloc->node_access; 490c6: 2652 moveal %a2@,%a3 /* * Get the path length. */ pathlen = strlen( path ); 490c8: 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 */ ) { 490ca: 2a6e 0010 moveal %fp@(16),%a5 node = pathloc->node_access; /* * Get the path length. */ pathlen = strlen( path ); 490ce: 4eb9 0004 ddac jsr 4ddac 490d4: 588f addql #4,%sp 490d6: 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 ); 490d8: 486e fffc pea %fp@(-4) 490dc: 2f06 movel %d6,%sp@- 490de: 2f04 movel %d4,%sp@- 490e0: 4874 2800 pea %a4@(00000000,%d2:l) 490e4: 4eb9 0004 93c0 jsr 493c0 pathlen -= len; 490ea: 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 ); 490ee: 2600 movel %d0,%d3 pathlen -= len; 490f0: 9887 subl %d7,%d4 i += len; if ( !pathloc->node_access ) 490f2: 4fef 0010 lea %sp@(16),%sp 490f6: 4a92 tstl %a2@ 490f8: 6700 0154 beqw 4924e /* * I cannot move out of this directory without execute permission. */ if ( type != IMFS_NO_MORE_PATH ) 490fc: 4a80 tstl %d0 490fe: 671c beqs 4911c if ( node->type == IMFS_DIRECTORY ) 49100: 7001 moveq #1,%d0 49102: b0ab 0048 cmpl %a3@(72),%d0 49106: 6614 bnes 4911c <== NEVER TAKEN if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_SEARCH ) ) 49108: 4878 0001 pea 1 4910c: 2f0a movel %a2,%sp@- 4910e: 4eb9 0004 8ce2 jsr 48ce2 49114: 508f addql #8,%sp 49116: 4a80 tstl %d0 49118: 6700 017c beqw 49296 rtems_set_errno_and_return_minus_one( EACCES ); node = pathloc->node_access; 4911c: 2652 moveal %a2@,%a3 while( !done ) { type = IMFS_get_token( &path[i], pathlen, token, &len ); pathlen -= len; i += len; 4911e: 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 ) { 49120: 7002 moveq #2,%d0 49122: b083 cmpl %d3,%d0 49124: 671a beqs 49140 <== NEVER TAKEN 49126: 6508 bcss 49130 49128: 4a83 tstl %d3 4912a: 6700 00e4 beqw 49210 4912e: 60a8 bras 490d8 49130: 7203 moveq #3,%d1 49132: b283 cmpl %d3,%d1 49134: 6740 beqs 49176 <== ALWAYS TAKEN 49136: 7004 moveq #4,%d0 <== NOT EXECUTED 49138: b083 cmpl %d3,%d0 <== NOT EXECUTED 4913a: 669c bnes 490d8 <== NOT EXECUTED 4913c: 6000 00e2 braw 49220 <== 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 ) 49140: 2079 0005 c3c0 moveal 5c3c0 ,%a0 <== NOT EXECUTED 49146: b7e8 0018 cmpal %a0@(24),%a3 <== NOT EXECUTED 4914a: 678c beqs 490d8 <== NOT EXECUTED /* * Am I at the root of this mounted filesystem? */ if (pathloc->node_access == pathloc->mt_entry->mt_fs_root.node_access){ 4914c: 206a 0010 moveal %a2@(16),%a0 <== NOT EXECUTED 49150: b7e8 001c cmpal %a0@(28),%a3 <== NOT EXECUTED 49154: 6612 bnes 49168 <== NOT EXECUTED if ( pathloc->node_access == rtems_filesystem_root.node_access ) { break; } else { newloc = pathloc->mt_entry->mt_point_node; 49156: 4878 0014 pea 14 <== NOT EXECUTED 4915a: 260e movel %fp,%d3 <== NOT EXECUTED 4915c: 4868 0008 pea %a0@(8) <== NOT EXECUTED 49160: 0683 ffff ffe8 addil #-24,%d3 <== NOT EXECUTED 49166: 605c bras 491c4 <== NOT EXECUTED *pathloc = newloc; return (*pathloc->ops->evalformake_h)( &path[i-len], pathloc, name ); } } else { if ( !node->Parent ) 49168: 266b 0008 moveal %a3@(8),%a3 <== NOT EXECUTED 4916c: 4a8b tstl %a3 <== NOT EXECUTED 4916e: 6600 009a bnew 4920a <== NOT EXECUTED 49172: 6000 00da braw 4924e <== NOT EXECUTED pathloc->node_access = node; break; case IMFS_NAME: if ( node->type == IMFS_HARD_LINK ) { 49176: 202b 0048 movel %a3@(72),%d0 4917a: 7203 moveq #3,%d1 4917c: b280 cmpl %d0,%d1 4917e: 6706 beqs 49186 <== NEVER TAKEN result = IMFS_evaluate_link( pathloc, 0 ); if ( result == -1 ) return -1; } else if ( node->type == IMFS_SYM_LINK ) { 49180: 7204 moveq #4,%d1 49182: b280 cmpl %d0,%d1 49184: 6614 bnes 4919a <== ALWAYS TAKEN result = IMFS_evaluate_link( pathloc, 0 ); 49186: 42a7 clrl %sp@- <== NOT EXECUTED 49188: 2045 moveal %d5,%a0 <== NOT EXECUTED 4918a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4918c: 4e90 jsr %a0@ <== NOT EXECUTED if ( result == -1 ) 4918e: 508f addql #8,%sp <== NOT EXECUTED if ( result == -1 ) return -1; } else if ( node->type == IMFS_SYM_LINK ) { result = IMFS_evaluate_link( pathloc, 0 ); 49190: 2600 movel %d0,%d3 <== NOT EXECUTED if ( result == -1 ) 49192: 70ff moveq #-1,%d0 <== NOT EXECUTED 49194: b083 cmpl %d3,%d0 <== NOT EXECUTED 49196: 6700 010c beqw 492a4 <== NOT EXECUTED return -1; } node = pathloc->node_access; 4919a: 2052 moveal %a2@,%a0 if ( !node ) 4919c: 4a88 tstl %a0 4919e: 6700 00d6 beqw 49276 /* * Only a directory can be decended into. */ if ( node->type != IMFS_DIRECTORY ) 491a2: 7001 moveq #1,%d0 491a4: b0a8 0048 cmpl %a0@(72),%d0 491a8: 6600 00cc bnew 49276 /* * 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 ) { 491ac: 2268 0058 moveal %a0@(88),%a1 491b0: 4a89 tstl %a1 491b2: 6744 beqs 491f8 <== ALWAYS TAKEN newloc = node->info.directory.mt_fs->mt_fs_root; 491b4: 4878 0014 pea 14 <== NOT EXECUTED 491b8: 260e movel %fp,%d3 <== NOT EXECUTED 491ba: 0683 ffff ffe8 addil #-24,%d3 <== NOT EXECUTED 491c0: 4869 001c pea %a1@(28) <== NOT EXECUTED 491c4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 491c6: 47f9 0004 d200 lea 4d200 ,%a3 <== NOT EXECUTED 491cc: 4e93 jsr %a3@ <== NOT EXECUTED *pathloc = newloc; 491ce: 4878 0014 pea 14 <== NOT EXECUTED 491d2: 2f03 movel %d3,%sp@- <== NOT EXECUTED 491d4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 491d6: 4e93 jsr %a3@ <== NOT EXECUTED return (*pathloc->ops->evalformake_h)( &path[i-len], pathloc, name ); 491d8: 206a 000c moveal %a2@(12),%a0 <== NOT EXECUTED 491dc: 94ae fffc subl %fp@(-4),%d2 <== NOT EXECUTED 491e0: 2f0d movel %a5,%sp@- <== NOT EXECUTED 491e2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 491e4: 4874 2800 pea %a4@(00000000,%d2:l) <== NOT EXECUTED 491e8: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED 491ec: 4e90 jsr %a0@ <== NOT EXECUTED 491ee: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED 491f2: 2600 movel %d0,%d3 <== NOT EXECUTED 491f4: 6000 00ae braw 492a4 <== NOT EXECUTED /* * Otherwise find the token name in the present location. */ node = IMFS_find_match_in_dir( node, token ); 491f8: 2f06 movel %d6,%sp@- 491fa: 2f08 movel %a0,%sp@- 491fc: 4eb9 0004 9354 jsr 49354 /* * If there is no node we have found the name of the node we * wish to create. */ if ( ! node ) 49202: 508f addql #8,%sp /* * Otherwise find the token name in the present location. */ node = IMFS_find_match_in_dir( node, token ); 49204: 2640 moveal %d0,%a3 /* * If there is no node we have found the name of the node we * wish to create. */ if ( ! node ) 49206: 4a80 tstl %d0 49208: 6724 beqs 4922e done = true; else pathloc->node_access = node; 4920a: 248b movel %a3,%a2@ 4920c: 6000 feca braw 490d8 break; case IMFS_NO_MORE_PATH: rtems_set_errno_and_return_minus_one( EEXIST ); 49210: 4eb9 0004 c954 jsr 4c954 <__errno> 49216: 7c11 moveq #17,%d6 49218: 2040 moveal %d0,%a0 4921a: 2086 movel %d6,%a0@ 4921c: 6000 0084 braw 492a2 break; case IMFS_INVALID_TOKEN: rtems_set_errno_and_return_minus_one( ENAMETOOLONG ); 49220: 4eb9 0004 c954 jsr 4c954 <__errno> <== NOT EXECUTED 49226: 7a5b moveq #91,%d5 <== NOT EXECUTED 49228: 2040 moveal %d0,%a0 <== NOT EXECUTED 4922a: 2085 movel %d5,%a0@ <== NOT EXECUTED 4922c: 6074 bras 492a2 <== NOT EXECUTED case IMFS_CURRENT_DIR: break; } } *name = &path[ i - len ]; 4922e: 2002 movel %d2,%d0 49230: 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 ] ) ) 49234: 47f9 0004 34c8 lea 434c8 ,%a3 case IMFS_CURRENT_DIR: break; } } *name = &path[ i - len ]; 4923a: 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( 4923c: d9c2 addal %d2,%a4 case IMFS_CURRENT_DIR: break; } } *name = &path[ i - len ]; 4923e: 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++) { 49240: 601a bras 4925c if ( !IMFS_is_separator( path[ i ] ) ) 49242: 49c0 extbl %d0 <== NOT EXECUTED 49244: 2f00 movel %d0,%sp@- <== NOT EXECUTED 49246: 4e93 jsr %a3@ <== NOT EXECUTED 49248: 588f addql #4,%sp <== NOT EXECUTED 4924a: 4a80 tstl %d0 <== NOT EXECUTED 4924c: 660e bnes 4925c <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOENT ); 4924e: 4eb9 0004 c954 jsr 4c954 <__errno> <== NOT EXECUTED 49254: 7802 moveq #2,%d4 <== NOT EXECUTED 49256: 2040 moveal %d0,%a0 <== NOT EXECUTED 49258: 2084 movel %d4,%a0@ <== NOT EXECUTED 4925a: 6046 bras 492a2 <== 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++) { 4925c: 101c moveb %a4@+,%d0 4925e: 66e2 bnes 49242 <== NEVER TAKEN /* * Verify we can execute and write to this directory. */ result = IMFS_Set_handlers( pathloc ); 49260: 2f0a movel %a2,%sp@- 49262: 4eb9 0004 8c74 jsr 48c74 /* * The returned node must be a directory */ node = pathloc->node_access; if ( node->type != IMFS_DIRECTORY ) 49268: 2052 moveal %a2@,%a0 /* * Verify we can execute and write to this directory. */ result = IMFS_Set_handlers( pathloc ); 4926a: 2600 movel %d0,%d3 /* * The returned node must be a directory */ node = pathloc->node_access; if ( node->type != IMFS_DIRECTORY ) 4926c: 588f addql #4,%sp 4926e: 7001 moveq #1,%d0 49270: b0a8 0048 cmpl %a0@(72),%d0 49274: 670e beqs 49284 <== ALWAYS TAKEN rtems_set_errno_and_return_minus_one( ENOTDIR ); 49276: 4eb9 0004 c954 jsr 4c954 <__errno> <== NOT EXECUTED 4927c: 7614 moveq #20,%d3 <== NOT EXECUTED 4927e: 2040 moveal %d0,%a0 <== NOT EXECUTED 49280: 2083 movel %d3,%a0@ <== NOT EXECUTED 49282: 601e bras 492a2 <== NOT EXECUTED /* * We must have Write and execute permission on the returned node. */ if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_WX ) ) 49284: 4878 0003 pea 3 49288: 2f0a movel %a2,%sp@- 4928a: 4eb9 0004 8ce2 jsr 48ce2 49290: 508f addql #8,%sp 49292: 4a80 tstl %d0 49294: 660e bnes 492a4 <== ALWAYS TAKEN rtems_set_errno_and_return_minus_one( EACCES ); 49296: 4eb9 0004 c954 jsr 4c954 <__errno> <== NOT EXECUTED 4929c: 740d moveq #13,%d2 <== NOT EXECUTED 4929e: 2040 moveal %d0,%a0 <== NOT EXECUTED 492a0: 2082 movel %d2,%a0@ <== NOT EXECUTED 492a2: 76ff moveq #-1,%d3 return result; } 492a4: 2003 movel %d3,%d0 492a6: 4cee 3cfc ff9c moveml %fp@(-100),%d2-%d7/%a2-%a5 492ac: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00048d56 : int IMFS_evaluate_hard_link( rtems_filesystem_location_info_t *node, /* IN/OUT */ int flags /* IN */ ) { 48d56: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 48d5a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48d5c: 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; 48d60: 2052 moveal %a2@,%a0 <== NOT EXECUTED 48d62: 24a8 004c movel %a0@(76),%a2@ <== NOT EXECUTED IMFS_Set_handlers( node ); 48d66: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48d68: 4eb9 0004 8c74 jsr 48c74 <== NOT EXECUTED /* * Verify we have the correct permissions for this node. */ if ( !IMFS_evaluate_permission( node, flags ) ) 48d6e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 48d72: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48d74: 4eb9 0004 8ce2 jsr 48ce2 <== NOT EXECUTED 48d7a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 48d7e: 4a80 tstl %d0 <== NOT EXECUTED 48d80: 6610 bnes 48d92 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EACCES ); 48d82: 4eb9 0004 c954 jsr 4c954 <__errno> <== NOT EXECUTED 48d88: 720d moveq #13,%d1 <== NOT EXECUTED 48d8a: 2040 moveal %d0,%a0 <== NOT EXECUTED 48d8c: 70ff moveq #-1,%d0 <== NOT EXECUTED 48d8e: 2081 movel %d1,%a0@ <== NOT EXECUTED 48d90: 6002 bras 48d94 <== NOT EXECUTED return result; 48d92: 4280 clrl %d0 <== NOT EXECUTED } 48d94: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 48d98: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004900e : */ int IMFS_evaluate_link( rtems_filesystem_location_info_t *node, /* IN/OUT */ int flags /* IN */ ) { 4900e: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 49012: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ <== NOT EXECUTED 49016: 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 ); 4901a: 4bf9 0004 8f92 lea 48f92 ,%a5 <== NOT EXECUTED /* * Follow the Link node. */ if ( jnode->type == IMFS_HARD_LINK ) result = IMFS_evaluate_hard_link( node, flags ); 49020: 49f9 0004 8d56 lea 48d56 ,%a4 <== NOT EXECUTED */ int IMFS_evaluate_link( rtems_filesystem_location_info_t *node, /* IN/OUT */ int flags /* IN */ ) { 49026: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED /* * Increment and check the link counter. */ rtems_filesystem_link_counts ++; 4902a: 2079 0005 c3c0 moveal 5c3c0 ,%a0 <== NOT EXECUTED if ( rtems_filesystem_link_counts > MAXSYMLINK ) { 49030: 7205 moveq #5,%d1 <== NOT EXECUTED /* * Increment and check the link counter. */ rtems_filesystem_link_counts ++; 49032: 3028 0030 movew %a0@(48),%d0 <== NOT EXECUTED { IMFS_jnode_t *jnode; int result = 0; do { jnode = node->node_access; 49036: 2652 moveal %a2@,%a3 <== NOT EXECUTED /* * Increment and check the link counter. */ rtems_filesystem_link_counts ++; 49038: 5280 addql #1,%d0 <== NOT EXECUTED 4903a: 3140 0030 movew %d0,%a0@(48) <== NOT EXECUTED if ( rtems_filesystem_link_counts > MAXSYMLINK ) { 4903e: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED 49044: b280 cmpl %d0,%d1 <== NOT EXECUTED 49046: 6416 bccs 4905e <== NOT EXECUTED rtems_filesystem_link_counts = 0; 49048: 4240 clrw %d0 <== NOT EXECUTED 4904a: 3140 0030 movew %d0,%a0@(48) <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ELOOP ); 4904e: 4eb9 0004 c954 jsr 4c954 <__errno> <== NOT EXECUTED 49054: 725c moveq #92,%d1 <== NOT EXECUTED 49056: 2040 moveal %d0,%a0 <== NOT EXECUTED 49058: 70ff moveq #-1,%d0 <== NOT EXECUTED 4905a: 2081 movel %d1,%a0@ <== NOT EXECUTED 4905c: 603e bras 4909c <== NOT EXECUTED /* * Follow the Link node. */ if ( jnode->type == IMFS_HARD_LINK ) 4905e: 202b 0048 movel %a3@(72),%d0 <== NOT EXECUTED 49062: 7203 moveq #3,%d1 <== NOT EXECUTED 49064: b280 cmpl %d0,%d1 <== NOT EXECUTED 49066: 6608 bnes 49070 <== NOT EXECUTED result = IMFS_evaluate_hard_link( node, flags ); 49068: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4906a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4906c: 4e94 jsr %a4@ <== NOT EXECUTED 4906e: 600c bras 4907c <== NOT EXECUTED else if (jnode->type == IMFS_SYM_LINK ) 49070: 7204 moveq #4,%d1 <== NOT EXECUTED 49072: b280 cmpl %d0,%d1 <== NOT EXECUTED 49074: 660c bnes 49082 <== NOT EXECUTED result = IMFS_evaluate_sym_link( node, flags ); 49076: 2f02 movel %d2,%sp@- <== NOT EXECUTED 49078: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4907a: 4e95 jsr %a5@ <== NOT EXECUTED 4907c: 508f addql #8,%sp <== NOT EXECUTED } while ( ( result == 0 ) && ( ( jnode->type == IMFS_SYM_LINK ) || ( jnode->type == IMFS_HARD_LINK ) ) ); 4907e: 4a80 tstl %d0 <== NOT EXECUTED 49080: 660e bnes 49090 <== 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 ) || 49082: 202b 0048 movel %a3@(72),%d0 <== NOT EXECUTED 49086: 7201 moveq #1,%d1 <== NOT EXECUTED 49088: 5780 subql #3,%d0 <== NOT EXECUTED 4908a: b280 cmpl %d0,%d1 <== NOT EXECUTED 4908c: 649c bccs 4902a <== NOT EXECUTED 4908e: 4280 clrl %d0 <== NOT EXECUTED /* * Clear link counter. */ rtems_filesystem_link_counts = 0; 49090: 2079 0005 c3c0 moveal 5c3c0 ,%a0 <== NOT EXECUTED 49096: 4241 clrw %d1 <== NOT EXECUTED 49098: 3141 0030 movew %d1,%a0@(48) <== NOT EXECUTED return result; } 4909c: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED 490a2: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00048ce2 : uid_t st_uid; gid_t st_gid; IMFS_jnode_t *jnode; int flags_to_test; if ( !rtems_libio_is_valid_perms( flags ) ) 48ce2: 70f8 moveq #-8,%d0 */ int IMFS_evaluate_permission( rtems_filesystem_location_info_t *node, int flags ) { 48ce4: 4e56 fff4 linkw %fp,#-12 48ce8: 48d7 040c moveml %d2-%d3/%a2,%sp@ 48cec: 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 ) ) 48cf0: c082 andl %d2,%d0 48cf2: 6710 beqs 48d04 <== ALWAYS TAKEN rtems_set_errno_and_return_minus_one( EPERM ); 48cf4: 4eb9 0004 c954 jsr 4c954 <__errno> <== NOT EXECUTED 48cfa: 2040 moveal %d0,%a0 <== NOT EXECUTED 48cfc: 7001 moveq #1,%d0 <== NOT EXECUTED 48cfe: 2080 movel %d0,%a0@ <== NOT EXECUTED 48d00: 70ff moveq #-1,%d0 <== NOT EXECUTED 48d02: 6048 bras 48d4c <== NOT EXECUTED jnode = node->node_access; 48d04: 206e 0008 moveal %fp@(8),%a0 48d08: 2450 moveal %a0@,%a2 #if defined(RTEMS_POSIX_API) st_uid = geteuid(); 48d0a: 4eb9 0004 9858 jsr 49858 48d10: 3600 movew %d0,%d3 st_gid = getegid(); 48d12: 4eb9 0004 9844 jsr 49844 * Check if I am owner or a group member or someone else. */ flags_to_test = flags; if ( st_uid == jnode->st_uid ) 48d18: 4281 clrl %d1 48d1a: 0283 0000 ffff andil #65535,%d3 48d20: 322a 0038 movew %a2@(56),%d1 48d24: b283 cmpl %d3,%d1 48d26: 6604 bnes 48d2c <== NEVER TAKEN flags_to_test <<= 6; 48d28: ed8a lsll #6,%d2 48d2a: 6012 bras 48d3e else if ( st_gid == jnode->st_gid ) 48d2c: 4281 clrl %d1 <== NOT EXECUTED 48d2e: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED 48d34: 322a 003a movew %a2@(58),%d1 <== NOT EXECUTED 48d38: b280 cmpl %d0,%d1 <== NOT EXECUTED 48d3a: 6602 bnes 48d3e <== NOT EXECUTED flags_to_test <<= 3; 48d3c: 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 ) 48d3e: 2002 movel %d2,%d0 48d40: 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 ); 48d44: b480 cmpl %d0,%d2 48d46: 57c0 seq %d0 48d48: 49c0 extbl %d0 48d4a: 4480 negl %d0 */ if ( ( flags_to_test & jnode->st_mode) == flags_to_test ) return 1; return 0; } 48d4c: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 48d52: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00048f92 : int IMFS_evaluate_sym_link( rtems_filesystem_location_info_t *node, /* IN/OUT */ int flags /* IN */ ) { 48f92: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 48f96: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED 48f9a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED IMFS_jnode_t *jnode = node->node_access; 48f9e: 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; 48fa0: 24ab 0008 movel %a3@(8),%a2@ <== NOT EXECUTED int IMFS_evaluate_sym_link( rtems_filesystem_location_info_t *node, /* IN/OUT */ int flags /* IN */ ) { 48fa4: 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( 48fa8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48faa: 486e fffc pea %fp@(-4) <== NOT EXECUTED 48fae: 2f2b 004c movel %a3@(76),%sp@- <== NOT EXECUTED 48fb2: 4eb9 0004 9ccc jsr 49ccc <== NOT EXECUTED ); /* * Use eval path to evaluate the path of the symbolic link. */ result = IMFS_eval_path( 48fb8: 242b 004c movel %a3@(76),%d2 <== NOT EXECUTED 48fbc: d4ae fffc addl %fp@(-4),%d2 <== NOT EXECUTED 48fc0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 48fc2: 4eb9 0004 ddac jsr 4ddac <== NOT EXECUTED 48fc8: 2e8a movel %a2,%sp@ <== NOT EXECUTED 48fca: 2f03 movel %d3,%sp@- <== NOT EXECUTED 48fcc: 2f00 movel %d0,%sp@- <== NOT EXECUTED 48fce: 2f02 movel %d2,%sp@- <== NOT EXECUTED 48fd0: 4eb9 0004 8d9c jsr 48d9c <== NOT EXECUTED 48fd6: 2400 movel %d0,%d2 <== NOT EXECUTED strlen( &jnode->info.sym_link.name[i] ), flags, node ); IMFS_Set_handlers( node ); 48fd8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48fda: 4eb9 0004 8c74 jsr 48c74 <== NOT EXECUTED /* * Verify we have the correct permissions for this node. */ if ( !IMFS_evaluate_permission( node, flags ) ) 48fe0: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 48fe4: 2e83 movel %d3,%sp@ <== NOT EXECUTED 48fe6: 2f0a movel %a2,%sp@- <== NOT EXECUTED 48fe8: 4eb9 0004 8ce2 jsr 48ce2 <== NOT EXECUTED 48fee: 508f addql #8,%sp <== NOT EXECUTED 48ff0: 4a80 tstl %d0 <== NOT EXECUTED 48ff2: 660e bnes 49002 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EACCES ); 48ff4: 4eb9 0004 c954 jsr 4c954 <__errno> <== NOT EXECUTED 48ffa: 74ff moveq #-1,%d2 <== NOT EXECUTED 48ffc: 2040 moveal %d0,%a0 <== NOT EXECUTED 48ffe: 700d moveq #13,%d0 <== NOT EXECUTED 49000: 2080 movel %d0,%a0@ <== NOT EXECUTED return result; } 49002: 2002 movel %d2,%d0 <== NOT EXECUTED 49004: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4900a: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004c0c4 : int IMFS_fchmod( rtems_filesystem_location_info_t *loc, mode_t mode ) { 4c0c4: 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; 4c0c8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED int IMFS_fchmod( rtems_filesystem_location_info_t *loc, mode_t mode ) { 4c0cc: 2f0a movel %a2,%sp@- <== NOT EXECUTED IMFS_jnode_t *jnode; #if defined(RTEMS_POSIX_API) uid_t st_uid; #endif jnode = loc->node_access; 4c0ce: 2450 moveal %a0@,%a2 <== NOT EXECUTED int IMFS_fchmod( rtems_filesystem_location_info_t *loc, mode_t mode ) { 4c0d0: 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 ) ) 4c0d2: 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(); 4c0d4: 4eb9 0004 9858 jsr 49858 <== NOT EXECUTED if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) ) 4c0da: 4281 clrl %d1 <== NOT EXECUTED 4c0dc: 3400 movew %d0,%d2 <== NOT EXECUTED 4c0de: 322a 0038 movew %a2@(56),%d1 <== NOT EXECUTED 4c0e2: b282 cmpl %d2,%d1 <== NOT EXECUTED 4c0e4: 6714 beqs 4c0fa <== NOT EXECUTED 4c0e6: 4a40 tstw %d0 <== NOT EXECUTED 4c0e8: 6710 beqs 4c0fa <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EPERM ); 4c0ea: 4eb9 0004 c954 jsr 4c954 <__errno> <== NOT EXECUTED 4c0f0: 2040 moveal %d0,%a0 <== NOT EXECUTED 4c0f2: 7001 moveq #1,%d0 <== NOT EXECUTED 4c0f4: 2080 movel %d0,%a0@ <== NOT EXECUTED 4c0f6: 70ff moveq #-1,%d0 <== NOT EXECUTED 4c0f8: 6030 bras 4c12a <== 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); 4c0fa: 202a 002e movel %a2@(46),%d0 <== NOT EXECUTED jnode->st_mode |= mode & (S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX); 4c0fe: 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); 4c102: 0280 ffff f000 andil #-4096,%d0 <== NOT EXECUTED jnode->st_mode |= mode & (S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX); 4c108: 0281 0000 0fff andil #4095,%d1 <== NOT EXECUTED 4c10e: 8280 orl %d0,%d1 <== NOT EXECUTED 4c110: 2541 002e movel %d1,%a2@(46) <== NOT EXECUTED IMFS_update_ctime( jnode ); 4c114: 42a7 clrl %sp@- <== NOT EXECUTED 4c116: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4c11a: 4eb9 0004 283c jsr 4283c <== NOT EXECUTED 4c120: 256e fff8 0044 movel %fp@(-8),%a2@(68) <== NOT EXECUTED return 0; 4c126: 508f addql #8,%sp <== NOT EXECUTED 4c128: 4280 clrl %d0 <== NOT EXECUTED } 4c12a: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 4c12e: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 4c132: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004c138 : int IMFS_fdatasync( rtems_libio_t *iop ) { return 0; } 4c138: 4280 clrl %d0 <== NOT EXECUTED #include "imfs.h" int IMFS_fdatasync( rtems_libio_t *iop ) { 4c13a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return 0; } 4c13e: 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 b2aa jsr 4b2aa <== 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 b9fa jsr 4b9fa <== 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 e8d4 jsr 4e8d4 <__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 ba5a jsr 4ba5a <== 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 e8d4 jsr 4e8d4 <__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 b332 jsr 4b332 <== 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 e8d4 jsr 4e8d4 <__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 b70e jsr 4b70e <== 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 e8d4 jsr 4e8d4 <__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 b868 jsr 4b868 <== 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 e8d4 jsr 4e8d4 <__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 =============================================================================== 00049354 : IMFS_jnode_t *IMFS_find_match_in_dir( IMFS_jnode_t *directory, char *name ) { 49354: 4e56 fff0 linkw %fp,#-16 49358: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ /* * Check for "." and ".." */ if ( !strcmp( name, dotname ) ) 4935c: 4879 0005 b4e8 pea 5b4e8 49362: 49f9 0004 d854 lea 4d854 ,%a4 IMFS_jnode_t *IMFS_find_match_in_dir( IMFS_jnode_t *directory, char *name ) { 49368: 242e 000c movel %fp@(12),%d2 /* * Check for "." and ".." */ if ( !strcmp( name, dotname ) ) 4936c: 2f02 movel %d2,%sp@- IMFS_jnode_t *IMFS_find_match_in_dir( IMFS_jnode_t *directory, char *name ) { 4936e: 246e 0008 moveal %fp@(8),%a2 /* * Check for "." and ".." */ if ( !strcmp( name, dotname ) ) 49372: 4e94 jsr %a4@ 49374: 508f addql #8,%sp 49376: 4a80 tstl %d0 49378: 673a beqs 493b4 <== NEVER TAKEN return directory; if ( !strcmp( name, dotdotname ) ) 4937a: 4879 0005 b4ea pea 5b4ea 49380: 2f02 movel %d2,%sp@- 49382: 4e94 jsr %a4@ 49384: 508f addql #8,%sp 49386: 4a80 tstl %d0 49388: 6606 bnes 49390 <== ALWAYS TAKEN return directory->Parent; 4938a: 246a 0008 moveal %a2@(8),%a2 <== NOT EXECUTED 4938e: 6024 bras 493b4 <== NOT EXECUTED if ( !strcmp( name, the_jnode->name ) ) return the_jnode; } return 0; } 49390: 266a 004c moveal %a2@(76),%a3 RTEMS_INLINE_ROUTINE bool _Chain_Is_tail( Chain_Control *the_chain, const Chain_Node *the_node ) { return (the_node == _Chain_Tail(the_chain)); 49394: 45ea 0050 lea %a2@(80),%a2 if ( !strcmp( name, dotdotname ) ) return directory->Parent; the_chain = &directory->info.directory.Entries; for ( the_node = rtems_chain_first( the_chain ); 49398: 6010 bras 493aa !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 ) ) 4939a: 486b 000c pea %a3@(12) 4939e: 2f02 movel %d2,%sp@- 493a0: 4e94 jsr %a4@ 493a2: 508f addql #8,%sp 493a4: 4a80 tstl %d0 493a6: 670a beqs 493b2 the_chain = &directory->info.directory.Entries; for ( the_node = rtems_chain_first( the_chain ); !rtems_chain_is_tail( the_chain, the_node ); the_node = the_node->next ) { 493a8: 2653 moveal %a3@,%a3 if ( !strcmp( name, dotdotname ) ) return directory->Parent; the_chain = &directory->info.directory.Entries; for ( the_node = rtems_chain_first( the_chain ); 493aa: b5cb cmpal %a3,%a2 493ac: 66ec bnes 4939a if ( !strcmp( name, the_jnode->name ) ) return the_jnode; } return 0; 493ae: 95ca subal %a2,%a2 493b0: 6002 bras 493b4 for ( the_node = rtems_chain_first( the_chain ); !rtems_chain_is_tail( the_chain, the_node ); the_node = the_node->next ) { the_jnode = (IMFS_jnode_t *) the_node; 493b2: 244b moveal %a3,%a2 if ( !strcmp( name, the_jnode->name ) ) return the_jnode; } return 0; } 493b4: 200a movel %a2,%d0 493b6: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 493bc: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000492b0 : ((IMFS_jnode_t *)( rtems_chain_head( jnode_get_control( jnode ) )->next)) int IMFS_fsunmount( rtems_filesystem_mount_table_entry_t *temp_mt_entry ) { 492b0: 4e56 ffd8 linkw %fp,#-40 <== NOT EXECUTED 492b4: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED 492b8: 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; 492bc: 240e movel %fp,%d2 <== NOT EXECUTED 492be: 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 ); 492c4: 49f9 0004 8c74 lea 48c74 ,%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; 492ca: 246b 001c moveal %a3@(28),%a2 <== NOT EXECUTED loc = temp_mt_entry->mt_fs_root; 492ce: 4878 0014 pea 14 <== NOT EXECUTED 492d2: 486b 001c pea %a3@(28) <== NOT EXECUTED 492d6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 492d8: 4eb9 0004 d200 jsr 4d200 <== NOT EXECUTED /* * Set this to null to indicate that it is being unmounted. */ temp_mt_entry->mt_fs_root.node_access = NULL; 492de: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 492e2: 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 ); 492e6: 47f9 0004 2138 lea 42138 ,%a3 <== NOT EXECUTED */ temp_mt_entry->mt_fs_root.node_access = NULL; do { next = jnode->Parent; 492ec: 262a 0008 movel %a2@(8),%d3 <== NOT EXECUTED loc.node_access = (void *)jnode; 492f0: 2d4a ffec movel %a2,%fp@(-20) <== NOT EXECUTED IMFS_Set_handlers( &loc ); 492f4: 2f02 movel %d2,%sp@- <== NOT EXECUTED 492f6: 4e94 jsr %a4@ <== NOT EXECUTED if ( jnode->type != IMFS_DIRECTORY ) { 492f8: 588f addql #4,%sp <== NOT EXECUTED 492fa: 7001 moveq #1,%d0 <== NOT EXECUTED 492fc: b0aa 0048 cmpl %a2@(72),%d0 <== NOT EXECUTED 49300: 660e bnes 49310 <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( const Chain_Control *the_chain ) { return _Chain_Immutable_first( the_chain ) == _Chain_Immutable_tail( the_chain ); 49302: 200a movel %a2,%d0 <== NOT EXECUTED 49304: 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 ) ) { 4930a: b0aa 004c cmpl %a2@(76),%d0 <== NOT EXECUTED 4930e: 660e bnes 4931e <== NOT EXECUTED result = IMFS_unlink( NULL, &loc ); 49310: 2f02 movel %d2,%sp@- <== NOT EXECUTED 49312: 42a7 clrl %sp@- <== NOT EXECUTED 49314: 4e93 jsr %a3@ <== NOT EXECUTED if (result != 0) 49316: 508f addql #8,%sp <== NOT EXECUTED 49318: 4a80 tstl %d0 <== NOT EXECUTED 4931a: 6626 bnes 49342 <== NOT EXECUTED return -1; jnode = next; 4931c: 2443 moveal %d3,%a2 <== NOT EXECUTED } if ( jnode != NULL ) { 4931e: 4a8a tstl %a2 <== NOT EXECUTED 49320: 6724 beqs 49346 <== NOT EXECUTED if ( jnode->type == IMFS_DIRECTORY ) { 49322: 7001 moveq #1,%d0 <== NOT EXECUTED 49324: b0aa 0048 cmpl %a2@(72),%d0 <== NOT EXECUTED 49328: 66c2 bnes 492ec <== NOT EXECUTED 4932a: 220a movel %a2,%d1 <== NOT EXECUTED 4932c: 0681 0000 0050 addil #80,%d1 <== NOT EXECUTED } } } while (jnode != NULL); return 0; } 49332: 202a 004c movel %a2@(76),%d0 <== NOT EXECUTED return -1; jnode = next; } if ( jnode != NULL ) { if ( jnode->type == IMFS_DIRECTORY ) { if ( jnode_has_children( jnode ) ) 49336: b280 cmpl %d0,%d1 <== NOT EXECUTED 49338: 67b2 beqs 492ec <== NOT EXECUTED jnode = jnode_get_first_child( jnode ); 4933a: 2440 moveal %d0,%a2 <== NOT EXECUTED } } } while (jnode != NULL); 4933c: 4a80 tstl %d0 <== NOT EXECUTED 4933e: 66ac bnes 492ec <== NOT EXECUTED 49340: 6004 bras 49346 <== NOT EXECUTED return -1; jnode = next; } else if ( jnode_has_no_children( jnode ) ) { result = IMFS_unlink( NULL, &loc ); if (result != 0) return -1; 49342: 70ff moveq #-1,%d0 <== NOT EXECUTED 49344: 6002 bras 49348 <== NOT EXECUTED jnode = jnode_get_first_child( jnode ); } } } while (jnode != NULL); return 0; 49346: 4280 clrl %d0 <== NOT EXECUTED } 49348: 4cee 1c0c ffd8 moveml %fp@(-40),%d2-%d3/%a2-%a4 <== NOT EXECUTED 4934e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000493c0 : const char *path, int pathlen, char *token, int *token_len ) { 493c0: 4e56 ffe4 linkw %fp,#-28 493c4: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@ 493c8: 246e 0010 moveal %fp@(16),%a2 register int i = 0; 493cc: 4283 clrl %d3 register char c; /* * Copy a name into token. (Remember NULL is a token.) */ c = path[i]; 493ce: 284a moveal %a2,%a4 while ( (!IMFS_is_separator(c)) && (i < pathlen) && (i <= IMFS_NAME_MAX) ) { 493d0: 4bf9 0004 34c8 lea 434c8 ,%a5 register char c; /* * Copy a name into token. (Remember NULL is a token.) */ c = path[i]; 493d6: 266e 0008 moveal %fp@(8),%a3 const char *path, int pathlen, char *token, int *token_len ) { 493da: 282e 000c movel %fp@(12),%d4 register char c; /* * Copy a name into token. (Remember NULL is a token.) */ c = path[i]; 493de: 141b moveb %a3@+,%d2 while ( (!IMFS_is_separator(c)) && (i < pathlen) && (i <= IMFS_NAME_MAX) ) { 493e0: 600c bras 493ee token[i] = c; if ( i == IMFS_NAME_MAX ) 493e2: 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; 493e4: 18c2 moveb %d2,%a4@+ if ( i == IMFS_NAME_MAX ) 493e6: b083 cmpl %d3,%d0 493e8: 6772 beqs 4945c <== NEVER TAKEN return IMFS_INVALID_TOKEN; if ( !IMFS_is_valid_name_char(c) ) type = IMFS_INVALID_TOKEN; c = path [++i]; 493ea: 5283 addql #1,%d3 493ec: 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) ) { 493ee: 1002 moveb %d2,%d0 493f0: 49c0 extbl %d0 493f2: 2f00 movel %d0,%sp@- 493f4: 4e95 jsr %a5@ 493f6: 588f addql #4,%sp 493f8: 4a80 tstl %d0 493fa: 6604 bnes 49400 493fc: b883 cmpl %d3,%d4 493fe: 6ee2 bgts 493e2 <== ALWAYS TAKEN /* * Copy a seperator into token. */ if ( i == 0 ) { 49400: 4a83 tstl %d3 49402: 660a bnes 4940e token[i] = c; 49404: 1482 moveb %d2,%a2@ if ( (token[i] != '\0') && pathlen ) { 49406: 6714 beqs 4941c 49408: 4a84 tstl %d4 4940a: 6614 bnes 49420 <== ALWAYS TAKEN 4940c: 600e bras 4941c <== NOT EXECUTED i++; type = IMFS_CURRENT_DIR; } else { type = IMFS_NO_MORE_PATH; } } else if (token[ i-1 ] != '\0') { 4940e: 4a32 38ff tstb %a2@(ffffffff,%d3:l) 49412: 6712 beqs 49426 <== NEVER TAKEN token[i] = '\0'; 49414: 4200 clrb %d0 49416: 1580 3800 moveb %d0,%a2@(00000000,%d3:l) 4941a: 600a bras 49426 if ( (token[i] != '\0') && pathlen ) { i++; type = IMFS_CURRENT_DIR; } else { type = IMFS_NO_MORE_PATH; 4941c: 4282 clrl %d2 4941e: 6008 bras 49428 if ( i == 0 ) { token[i] = c; if ( (token[i] != '\0') && pathlen ) { i++; type = IMFS_CURRENT_DIR; 49420: 7401 moveq #1,%d2 if ( i == 0 ) { token[i] = c; if ( (token[i] != '\0') && pathlen ) { i++; 49422: 7601 moveq #1,%d3 49424: 6002 bras 49428 char *token, int *token_len ) { register int i = 0; IMFS_token_types type = IMFS_NAME; 49426: 7403 moveq #3,%d2 /* * Set token_len to the number of characters copied. */ *token_len = i; 49428: 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 ) { 4942c: 7003 moveq #3,%d0 /* * Set token_len to the number of characters copied. */ *token_len = i; 4942e: 2083 movel %d3,%a0@ /* * If we copied something that was not a seperator see if * it was a special name. */ if ( type == IMFS_NAME ) { 49430: b082 cmpl %d2,%d0 49432: 6632 bnes 49466 if ( strcmp( token, "..") == 0 ) 49434: 4879 0005 b4ed pea 5b4ed 4943a: 47f9 0004 d854 lea 4d854 ,%a3 49440: 2f0a movel %a2,%sp@- 49442: 4e93 jsr %a3@ 49444: 508f addql #8,%sp 49446: 4a80 tstl %d0 49448: 6716 beqs 49460 <== NEVER TAKEN type = IMFS_UP_DIR; else if ( strcmp( token, "." ) == 0 ) 4944a: 4879 0005 b4ee pea 5b4ee 49450: 2f0a movel %a2,%sp@- 49452: 4e93 jsr %a3@ 49454: 508f addql #8,%sp 49456: 4a80 tstl %d0 49458: 670a beqs 49464 <== NEVER TAKEN 4945a: 600a bras 49466 while ( (!IMFS_is_separator(c)) && (i < pathlen) && (i <= IMFS_NAME_MAX) ) { token[i] = c; if ( i == IMFS_NAME_MAX ) return IMFS_INVALID_TOKEN; 4945c: 7404 moveq #4,%d2 <== NOT EXECUTED 4945e: 6006 bras 49466 <== NOT EXECUTED * it was a special name. */ if ( type == IMFS_NAME ) { if ( strcmp( token, "..") == 0 ) type = IMFS_UP_DIR; 49460: 7402 moveq #2,%d2 <== NOT EXECUTED 49462: 6002 bras 49466 <== NOT EXECUTED else if ( strcmp( token, "." ) == 0 ) type = IMFS_CURRENT_DIR; 49464: 7401 moveq #1,%d2 <== NOT EXECUTED } return type; } 49466: 2002 movel %d2,%d0 49468: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 4946e: 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 c1a8 movel 5c1a8 ,%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 d1b4 movel %d0,5d1b4 /* * 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 8c3a jsr 48c3a 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 b4b8 pea 5b4b8 41dd6: 486a 0038 pea %a2@(56) 41dda: 4eb9 0004 d200 jsr 4d200 /* * 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 c954 jsr 4c954 <__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 d1b8 movel 5d1b8 ,%d0 41e1c: 2080 movel %d0,%a0@ 41e1e: 5280 addql #1,%d0 41e20: 23c0 0005 d1b8 movel %d0,5d1b8 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 c954 jsr 4c954 <__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 ddac jsr 4ddac <== 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 93c0 jsr 493c0 <== 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 8b26 jsr 48b26 <== 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 c954 jsr 4c954 <__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 =============================================================================== 0004b60c : */ MEMFILE_STATIC int IMFS_memfile_addblock( IMFS_jnode_t *the_jnode, unsigned int block ) { 4b60c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4b610: 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 ); 4b612: 4878 0001 pea 1 <== NOT EXECUTED 4b616: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4b61a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4b61e: 4eb9 0004 b304 jsr 4b304 <== NOT EXECUTED if ( *block_entry_ptr ) 4b624: 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 ); 4b628: 2440 moveal %d0,%a2 <== NOT EXECUTED if ( *block_entry_ptr ) 4b62a: 4a92 tstl %a2@ <== NOT EXECUTED 4b62c: 660c bnes 4b63a <== NOT EXECUTED return 0; /* * There is no memory for this block number so allocate it. */ memory = memfile_alloc_block(); 4b62e: 4eb9 0004 b2e0 jsr 4b2e0 <== NOT EXECUTED if ( !memory ) 4b634: 4a80 tstl %d0 <== NOT EXECUTED 4b636: 6706 beqs 4b63e <== NOT EXECUTED return 1; *block_entry_ptr = memory; 4b638: 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; 4b63a: 4280 clrl %d0 <== NOT EXECUTED 4b63c: 6002 bras 4b640 <== NOT EXECUTED /* * There is no memory for this block number so allocate it. */ memory = memfile_alloc_block(); if ( !memory ) return 1; 4b63e: 7001 moveq #1,%d0 <== NOT EXECUTED *block_entry_ptr = memory; return 0; } 4b640: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4b644: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004b7b0 : IMFS_assert( the_jnode->type == IMFS_MEMORY_FILE ); /* * Verify new file size is supported */ if ( new_length >= IMFS_MEMFILE_MAXIMUM_SIZE ) 4b7b0: 4280 clrl %d0 <== NOT EXECUTED */ MEMFILE_STATIC int IMFS_memfile_extend( IMFS_jnode_t *the_jnode, off_t new_length ) { 4b7b2: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED 4b7b6: 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 ) 4b7ba: 2c39 0005 d1b4 movel 5d1b4 ,%d6<== NOT EXECUTED 4b7c0: 2a06 movel %d6,%d5 <== NOT EXECUTED 4b7c2: e48d lsrl #2,%d5 <== NOT EXECUTED 4b7c4: 2805 movel %d5,%d4 <== NOT EXECUTED 4b7c6: 5284 addql #1,%d4 <== NOT EXECUTED 4b7c8: 4c05 4800 mulsl %d5,%d4 <== NOT EXECUTED */ MEMFILE_STATIC int IMFS_memfile_extend( IMFS_jnode_t *the_jnode, off_t new_length ) { 4b7cc: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4b7d0: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED 4b7d4: 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 ) 4b7d8: 5284 addql #1,%d4 <== NOT EXECUTED 4b7da: 4c05 4800 mulsl %d5,%d4 <== NOT EXECUTED 4b7de: 5384 subql #1,%d4 <== NOT EXECUTED 4b7e0: 4c06 4800 mulsl %d6,%d4 <== NOT EXECUTED 4b7e4: 2204 movel %d4,%d1 <== NOT EXECUTED 4b7e6: 2802 movel %d2,%d4 <== NOT EXECUTED 4b7e8: 2a03 movel %d3,%d5 <== NOT EXECUTED 4b7ea: 9a81 subl %d1,%d5 <== NOT EXECUTED 4b7ec: 9980 subxl %d0,%d4 <== NOT EXECUTED 4b7ee: 6d0e blts 4b7fe <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); 4b7f0: 4eb9 0004 c954 jsr 4c954 <__errno> <== NOT EXECUTED 4b7f6: 7216 moveq #22,%d1 <== NOT EXECUTED 4b7f8: 2040 moveal %d0,%a0 <== NOT EXECUTED 4b7fa: 2081 movel %d1,%a0@ <== NOT EXECUTED 4b7fc: 6078 bras 4b876 <== NOT EXECUTED /* * Verify new file size is actually larger than current size */ if ( new_length <= the_jnode->info.file.size ) 4b7fe: 282a 004c movel %a2@(76),%d4 <== NOT EXECUTED 4b802: 2a2a 0050 movel %a2@(80),%d5 <== NOT EXECUTED 4b806: 2002 movel %d2,%d0 <== NOT EXECUTED 4b808: 2203 movel %d3,%d1 <== NOT EXECUTED 4b80a: 9285 subl %d5,%d1 <== NOT EXECUTED 4b80c: 9184 subxl %d4,%d0 <== NOT EXECUTED 4b80e: 6f78 bles 4b888 <== NOT EXECUTED return 0; /* * Calculate the number of range of blocks to allocate */ new_blocks = new_length / IMFS_MEMFILE_BYTES_PER_BLOCK; 4b810: 47f9 0005 87ec lea 587ec <__divdi3>,%a3 <== NOT EXECUTED 4b816: 2e06 movel %d6,%d7 <== NOT EXECUTED 4b818: 5bc6 smi %d6 <== NOT EXECUTED 4b81a: 49c6 extbl %d6 <== NOT EXECUTED 4b81c: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4b81e: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4b820: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4b822: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b824: 4e93 jsr %a3@ <== NOT EXECUTED 4b826: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4b82a: 2841 moveal %d1,%a4 <== NOT EXECUTED old_blocks = the_jnode->info.file.size / IMFS_MEMFILE_BYTES_PER_BLOCK; 4b82c: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4b82e: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4b830: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4b832: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4b834: 4e93 jsr %a3@ <== NOT EXECUTED 4b836: 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 ) ) { 4b83a: 47f9 0004 b60c lea 4b60c ,%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; 4b840: 2c01 movel %d1,%d6 <== NOT EXECUTED /* * Now allocate each of those blocks. */ for ( block=old_blocks ; block<=new_blocks ; block++ ) { 4b842: 2801 movel %d1,%d4 <== NOT EXECUTED 4b844: 6036 bras 4b87c <== NOT EXECUTED if ( IMFS_memfile_addblock( the_jnode, block ) ) { 4b846: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4b848: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b84a: 4e93 jsr %a3@ <== NOT EXECUTED 4b84c: 508f addql #8,%sp <== NOT EXECUTED 4b84e: 4a80 tstl %d0 <== NOT EXECUTED 4b850: 6728 beqs 4b87a <== NOT EXECUTED 4b852: 600c bras 4b860 <== NOT EXECUTED for ( ; block>=old_blocks ; block-- ) { IMFS_memfile_remove_block( the_jnode, block ); 4b854: 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-- ) { 4b856: 5384 subql #1,%d4 <== NOT EXECUTED IMFS_memfile_remove_block( the_jnode, block ); 4b858: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b85a: 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-- ) { 4b85c: 508f addql #8,%sp <== NOT EXECUTED 4b85e: 6006 bras 4b866 <== NOT EXECUTED IMFS_memfile_remove_block( the_jnode, block ); 4b860: 47f9 0004 b788 lea 4b788 ,%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-- ) { 4b866: bc84 cmpl %d4,%d6 <== NOT EXECUTED 4b868: 63ea blss 4b854 <== NOT EXECUTED IMFS_memfile_remove_block( the_jnode, block ); } rtems_set_errno_and_return_minus_one( ENOSPC ); 4b86a: 4eb9 0004 c954 jsr 4c954 <__errno> <== NOT EXECUTED 4b870: 2040 moveal %d0,%a0 <== NOT EXECUTED 4b872: 701c moveq #28,%d0 <== NOT EXECUTED 4b874: 2080 movel %d0,%a0@ <== NOT EXECUTED 4b876: 70ff moveq #-1,%d0 <== NOT EXECUTED 4b878: 6010 bras 4b88a <== 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++ ) { 4b87a: 5284 addql #1,%d4 <== NOT EXECUTED 4b87c: b9c4 cmpal %d4,%a4 <== NOT EXECUTED 4b87e: 64c6 bccs 4b846 <== NOT EXECUTED } /* * Set the new length of the file. */ the_jnode->info.file.size = new_length; 4b880: 2542 004c movel %d2,%a2@(76) <== NOT EXECUTED 4b884: 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; 4b888: 4280 clrl %d0 <== NOT EXECUTED /* * Set the new length of the file. */ the_jnode->info.file.size = new_length; return 0; } 4b88a: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4 <== NOT EXECUTED 4b890: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004b304 : #endif IMFS_jnode_t *the_jnode, unsigned int block, int malloc_it ) { 4b304: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED my_block = block; /* * Is the block number in the simple indirect portion? */ if ( my_block <= LAST_INDIRECT ) { 4b308: 2039 0005 d1b4 movel 5d1b4 ,%d0<== NOT EXECUTED 4b30e: e488 lsrl #2,%d0 <== NOT EXECUTED 4b310: 2200 movel %d0,%d1 <== NOT EXECUTED 4b312: 5381 subql #1,%d1 <== NOT EXECUTED #endif IMFS_jnode_t *the_jnode, unsigned int block, int malloc_it ) { 4b314: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED 4b318: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4b31c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4b320: 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 ) { 4b324: b282 cmpl %d2,%d1 <== NOT EXECUTED 4b326: 6536 bcss 4b35e <== NOT EXECUTED p = info->indirect; 4b328: 226a 0054 moveal %a2@(84),%a1 <== NOT EXECUTED if ( malloc_it ) { 4b32c: 4a88 tstl %a0 <== NOT EXECUTED 4b32e: 6720 beqs 4b350 <== NOT EXECUTED if ( !p ) { 4b330: 4a89 tstl %a1 <== NOT EXECUTED 4b332: 6610 bnes 4b344 <== NOT EXECUTED p = memfile_alloc_block(); 4b334: 4eb9 0004 b2e0 jsr 4b2e0 <== NOT EXECUTED if ( !p ) 4b33a: 4a80 tstl %d0 <== NOT EXECUTED 4b33c: 6700 00f8 beqw 4b436 <== NOT EXECUTED return 0; info->indirect = p; 4b340: 2540 0054 movel %d0,%a2@(84) <== NOT EXECUTED } return &info->indirect[ my_block ]; 4b344: 206a 0054 moveal %a2@(84),%a0 <== NOT EXECUTED 4b348: e58a lsll #2,%d2 <== NOT EXECUTED 4b34a: d1c2 addal %d2,%a0 <== NOT EXECUTED 4b34c: 6000 00ea braw 4b438 <== NOT EXECUTED } if ( !p ) 4b350: 4a89 tstl %a1 <== NOT EXECUTED 4b352: 6700 00e2 beqw 4b436 <== NOT EXECUTED return 0; return &info->indirect[ my_block ]; 4b356: 41f1 2c00 lea %a1@(00000000,%d2:l:4),%a0 <== NOT EXECUTED 4b35a: 6000 00dc braw 4b438 <== NOT EXECUTED /* * Is the block number in the doubly indirect portion? */ if ( my_block <= LAST_DOUBLY_INDIRECT ) { 4b35e: 2200 movel %d0,%d1 <== NOT EXECUTED 4b360: 5281 addql #1,%d1 <== NOT EXECUTED 4b362: 4c00 1800 mulsl %d0,%d1 <== NOT EXECUTED 4b366: 2241 moveal %d1,%a1 <== NOT EXECUTED 4b368: 5389 subql #1,%a1 <== NOT EXECUTED 4b36a: b3c2 cmpal %d2,%a1 <== NOT EXECUTED 4b36c: 653e bcss 4b3ac <== NOT EXECUTED my_block -= FIRST_DOUBLY_INDIRECT; 4b36e: 9480 subl %d0,%d2 <== NOT EXECUTED singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS; 4b370: 4c40 2003 remul %d0,%d3,%d2 <== NOT EXECUTED 4b374: 4c40 2002 remul %d0,%d2,%d2 <== NOT EXECUTED doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS; p = info->doubly_indirect; 4b378: 202a 0058 movel %a2@(88),%d0 <== NOT EXECUTED if ( malloc_it ) { 4b37c: 4a88 tstl %a0 <== NOT EXECUTED 4b37e: 671c beqs 4b39c <== NOT EXECUTED if ( !p ) { 4b380: 4a80 tstl %d0 <== NOT EXECUTED 4b382: 6610 bnes 4b394 <== NOT EXECUTED p = memfile_alloc_block(); 4b384: 4eb9 0004 b2e0 jsr 4b2e0 <== NOT EXECUTED if ( !p ) 4b38a: 4a80 tstl %d0 <== NOT EXECUTED 4b38c: 6700 00a8 beqw 4b436 <== NOT EXECUTED return 0; info->doubly_indirect = p; 4b390: 2540 0058 movel %d0,%a2@(88) <== NOT EXECUTED } p1 = (block_p *)p[ doubly ]; 4b394: 2040 moveal %d0,%a0 <== NOT EXECUTED 4b396: 45f0 2c00 lea %a0@(00000000,%d2:l:4),%a2 <== NOT EXECUTED 4b39a: 6066 bras 4b402 <== NOT EXECUTED } return (block_p *)&p1[ singly ]; } if ( !p ) 4b39c: 4a80 tstl %d0 <== NOT EXECUTED 4b39e: 6700 0096 beqw 4b436 <== NOT EXECUTED return 0; p = (block_p *)p[ doubly ]; 4b3a2: 2240 moveal %d0,%a1 <== NOT EXECUTED 4b3a4: 2071 2c00 moveal %a1@(00000000,%d2:l:4),%a0 <== NOT EXECUTED 4b3a8: 6000 0082 braw 4b42c <== NOT EXECUTED } /* * Is the block number in the triply indirect portion? */ if ( my_block <= LAST_TRIPLY_INDIRECT ) { 4b3ac: 2601 movel %d1,%d3 <== NOT EXECUTED 4b3ae: 5283 addql #1,%d3 <== NOT EXECUTED 4b3b0: 4c00 3800 mulsl %d0,%d3 <== NOT EXECUTED 4b3b4: 5383 subql #1,%d3 <== NOT EXECUTED 4b3b6: b682 cmpl %d2,%d3 <== NOT EXECUTED 4b3b8: 657c bcss 4b436 <== NOT EXECUTED my_block -= FIRST_TRIPLY_INDIRECT; 4b3ba: 9481 subl %d1,%d2 <== NOT EXECUTED singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS; 4b3bc: 4c40 2003 remul %d0,%d3,%d2 <== NOT EXECUTED 4b3c0: 4c40 2002 remul %d0,%d2,%d2 <== NOT EXECUTED doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS; triply = doubly / IMFS_MEMFILE_BLOCK_SLOTS; 4b3c4: 4c40 2004 remul %d0,%d4,%d2 <== NOT EXECUTED 4b3c8: 4c40 2002 remul %d0,%d2,%d2 <== NOT EXECUTED doubly %= IMFS_MEMFILE_BLOCK_SLOTS; p = info->triply_indirect; 4b3cc: 202a 005c movel %a2@(92),%d0 <== NOT EXECUTED if ( malloc_it ) { 4b3d0: 4a88 tstl %a0 <== NOT EXECUTED 4b3d2: 6746 beqs 4b41a <== NOT EXECUTED if ( !p ) { 4b3d4: 4a80 tstl %d0 <== NOT EXECUTED 4b3d6: 660e bnes 4b3e6 <== NOT EXECUTED p = memfile_alloc_block(); 4b3d8: 4eb9 0004 b2e0 jsr 4b2e0 <== NOT EXECUTED if ( !p ) 4b3de: 4a80 tstl %d0 <== NOT EXECUTED 4b3e0: 6754 beqs 4b436 <== NOT EXECUTED return 0; info->triply_indirect = p; 4b3e2: 2540 005c movel %d0,%a2@(92) <== NOT EXECUTED } p1 = (block_p *) p[ triply ]; 4b3e6: 2040 moveal %d0,%a0 <== NOT EXECUTED 4b3e8: 45f0 2c00 lea %a0@(00000000,%d2:l:4),%a2 <== NOT EXECUTED 4b3ec: 2012 movel %a2@,%d0 <== NOT EXECUTED if ( !p1 ) { 4b3ee: 660c bnes 4b3fc <== NOT EXECUTED p1 = memfile_alloc_block(); 4b3f0: 4eb9 0004 b2e0 jsr 4b2e0 <== NOT EXECUTED if ( !p1 ) 4b3f6: 4a80 tstl %d0 <== NOT EXECUTED 4b3f8: 673c beqs 4b436 <== NOT EXECUTED return 0; p[ triply ] = (block_p) p1; 4b3fa: 2480 movel %d0,%a2@ <== NOT EXECUTED } p2 = (block_p *)p1[ doubly ]; 4b3fc: 2240 moveal %d0,%a1 <== NOT EXECUTED 4b3fe: 45f1 4c00 lea %a1@(00000000,%d4:l:4),%a2 <== NOT EXECUTED 4b402: 2012 movel %a2@,%d0 <== NOT EXECUTED if ( !p2 ) { 4b404: 660c bnes 4b412 <== NOT EXECUTED p2 = memfile_alloc_block(); 4b406: 4eb9 0004 b2e0 jsr 4b2e0 <== NOT EXECUTED if ( !p2 ) 4b40c: 4a80 tstl %d0 <== NOT EXECUTED 4b40e: 6726 beqs 4b436 <== NOT EXECUTED return 0; p1[ doubly ] = (block_p) p2; 4b410: 2480 movel %d0,%a2@ <== NOT EXECUTED } return (block_p *)&p2[ singly ]; 4b412: 2240 moveal %d0,%a1 <== NOT EXECUTED 4b414: 41f1 3c00 lea %a1@(00000000,%d3:l:4),%a0 <== NOT EXECUTED 4b418: 601e bras 4b438 <== NOT EXECUTED } if ( !p ) 4b41a: 4a80 tstl %d0 <== NOT EXECUTED 4b41c: 6718 beqs 4b436 <== NOT EXECUTED return 0; p1 = (block_p *) p[ triply ]; 4b41e: 2240 moveal %d0,%a1 <== NOT EXECUTED 4b420: 2071 2c00 moveal %a1@(00000000,%d2:l:4),%a0 <== NOT EXECUTED if ( !p1 ) 4b424: 4a88 tstl %a0 <== NOT EXECUTED 4b426: 670e beqs 4b436 <== NOT EXECUTED return 0; p2 = (block_p *)p1[ doubly ]; 4b428: 2070 4c00 moveal %a0@(00000000,%d4:l:4),%a0 <== NOT EXECUTED if ( !p2 ) 4b42c: 4a88 tstl %a0 <== NOT EXECUTED 4b42e: 6706 beqs 4b436 <== NOT EXECUTED return 0; return (block_p *)&p2[ singly ]; 4b430: 41f0 3c00 lea %a0@(00000000,%d3:l:4),%a0 <== NOT EXECUTED 4b434: 6002 bras 4b438 <== NOT EXECUTED if ( !p1 ) return 0; p2 = (block_p *)p1[ doubly ]; if ( !p2 ) return 0; 4b436: 91c8 subal %a0,%a0 <== NOT EXECUTED /* * This means the requested block number is out of range. */ return 0; } 4b438: 2008 movel %a0,%d0 <== NOT EXECUTED 4b43a: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 4b440: 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 2cd4 movel 62cd4 ,%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 ... =============================================================================== 0004b444 : * 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) { 4b444: 7006 moveq #6,%d0 <== NOT EXECUTED IMFS_jnode_t *the_jnode, off_t start, unsigned char *destination, unsigned int length ) { 4b446: 4e56 ffc8 linkw %fp,#-56 <== NOT EXECUTED 4b44a: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED 4b44e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4b452: 2e2e 0014 movel %fp@(20),%d7 <== NOT EXECUTED 4b456: 2c2e 0018 movel %fp@(24),%d6 <== NOT EXECUTED 4b45a: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4b45e: 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) { 4b462: b0aa 0048 cmpl %a2@(72),%d0 <== NOT EXECUTED 4b466: 6656 bnes 4b4be <== NOT EXECUTED unsigned char *file_ptr; file_ptr = (unsigned char *)the_jnode->info.linearfile.direct; if (my_length > (the_jnode->info.linearfile.size - start)) 4b468: 2246 moveal %d6,%a1 <== NOT EXECUTED 4b46a: 91c8 subal %a0,%a0 <== NOT EXECUTED 4b46c: 282a 004c movel %a2@(76),%d4 <== NOT EXECUTED 4b470: 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; 4b474: 266a 0054 moveal %a2@(84),%a3 <== NOT EXECUTED if (my_length > (the_jnode->info.linearfile.size - start)) 4b478: 2d44 fff0 movel %d4,%fp@(-16) <== NOT EXECUTED 4b47c: 2d45 fff4 movel %d5,%fp@(-12) <== NOT EXECUTED 4b480: 9a83 subl %d3,%d5 <== NOT EXECUTED 4b482: 9982 subxl %d2,%d4 <== NOT EXECUTED 4b484: 2008 movel %a0,%d0 <== NOT EXECUTED 4b486: 2209 movel %a1,%d1 <== NOT EXECUTED 4b488: 9285 subl %d5,%d1 <== NOT EXECUTED 4b48a: 9184 subxl %d4,%d0 <== NOT EXECUTED 4b48c: 6f06 bles 4b494 <== NOT EXECUTED my_length = the_jnode->info.linearfile.size - start; 4b48e: 2c2e fff4 movel %fp@(-12),%d6 <== NOT EXECUTED 4b492: 9c83 subl %d3,%d6 <== NOT EXECUTED memcpy(dest, &file_ptr[start], my_length); 4b494: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4b496: 4873 3800 pea %a3@(00000000,%d3:l) <== NOT EXECUTED IMFS_update_atime( the_jnode ); return my_length; 4b49a: 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); 4b49c: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4b49e: 4eb9 0004 d200 jsr 4d200 <== NOT EXECUTED IMFS_update_atime( the_jnode ); 4b4a4: 42a7 clrl %sp@- <== NOT EXECUTED 4b4a6: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4b4aa: 4eb9 0004 283c jsr 4283c <== NOT EXECUTED 4b4b0: 256e fff8 003c movel %fp@(-8),%a2@(60) <== NOT EXECUTED return my_length; 4b4b6: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4b4ba: 6000 011e braw 4b5da <== 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; 4b4be: 2043 moveal %d3,%a0 <== NOT EXECUTED 4b4c0: 43f0 6800 lea %a0@(00000000,%d6:l),%a1 <== NOT EXECUTED if ( last_byte > the_jnode->info.file.size ) 4b4c4: 97cb subal %a3,%a3 <== NOT EXECUTED 4b4c6: 2849 moveal %a1,%a4 <== NOT EXECUTED 4b4c8: 202a 004c movel %a2@(76),%d0 <== NOT EXECUTED 4b4cc: 222a 0050 movel %a2@(80),%d1 <== NOT EXECUTED 4b4d0: 280b movel %a3,%d4 <== NOT EXECUTED 4b4d2: 2a0c movel %a4,%d5 <== NOT EXECUTED 4b4d4: 9a81 subl %d1,%d5 <== NOT EXECUTED 4b4d6: 9980 subxl %d0,%d4 <== NOT EXECUTED 4b4d8: 6f04 bles 4b4de <== NOT EXECUTED my_length = the_jnode->info.file.size - start; 4b4da: 2c01 movel %d1,%d6 <== NOT EXECUTED 4b4dc: 9c83 subl %d3,%d6 <== NOT EXECUTED */ /* * Phase 1: possibly the last part of one block */ start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK; 4b4de: 2879 0005 d1b4 moveal 5d1b4 ,%a4<== NOT EXECUTED 4b4e4: 2a0c movel %a4,%d5 <== NOT EXECUTED 4b4e6: 5bc4 smi %d4 <== NOT EXECUTED 4b4e8: 49c4 extbl %d4 <== NOT EXECUTED 4b4ea: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4b4ec: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4b4ee: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4b4f0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b4f2: 4eb9 0005 8ba0 jsr 58ba0 <__moddi3> <== NOT EXECUTED 4b4f8: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4b4fc: 2641 moveal %d1,%a3 <== NOT EXECUTED block = start / IMFS_MEMFILE_BYTES_PER_BLOCK; 4b4fe: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4b500: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4b502: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4b504: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b506: 4eb9 0005 87ec jsr 587ec <__divdi3> <== NOT EXECUTED 4b50c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4b510: 2801 movel %d1,%d4 <== NOT EXECUTED if ( start_offset ) { 4b512: 4a8b tstl %a3 <== NOT EXECUTED 4b514: 673c beqs 4b552 <== 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 ); 4b516: 42a7 clrl %sp@- <== NOT EXECUTED 4b518: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4b51a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b51c: 4eb9 0004 b304 jsr 4b304 <== NOT EXECUTED if ( !block_ptr ) 4b522: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4b526: 4a80 tstl %d0 <== NOT EXECUTED 4b528: 6700 00ae beqw 4b5d8 <== 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; 4b52c: 99cb subal %a3,%a4 <== NOT EXECUTED 4b52e: 2406 movel %d6,%d2 <== NOT EXECUTED 4b530: b9c6 cmpal %d6,%a4 <== NOT EXECUTED 4b532: 6402 bccs 4b536 <== NOT EXECUTED 4b534: 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 ); 4b536: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b538: 2040 moveal %d0,%a0 <== NOT EXECUTED 4b53a: d7d0 addal %a0@,%a3 <== NOT EXECUTED dest += to_copy; block++; 4b53c: 5284 addql #1,%d4 <== NOT EXECUTED my_length -= to_copy; 4b53e: 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 ); 4b540: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4b542: 2f07 movel %d7,%sp@- <== NOT EXECUTED dest += to_copy; 4b544: 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 ); 4b546: 4eb9 0004 d200 jsr 4d200 <== NOT EXECUTED dest += to_copy; block++; my_length -= to_copy; 4b54c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4b550: 6002 bras 4b554 <== NOT EXECUTED */ last_byte = start + length; if ( last_byte > the_jnode->info.file.size ) my_length = the_jnode->info.file.size - start; copied = 0; 4b552: 4282 clrl %d2 <== NOT EXECUTED } /* * Phase 2: all of zero of more blocks */ to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK; 4b554: 2679 0005 d1b4 moveal 5d1b4 ,%a3<== NOT EXECUTED while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) { block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 ); 4b55a: 4bf9 0004 b304 lea 4b304 ,%a5<== NOT EXECUTED if ( !block_ptr ) return copied; memcpy( dest, &(*block_ptr)[ 0 ], to_copy ); 4b560: 49f9 0004 d200 lea 4d200 ,%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 ) { 4b566: 6026 bras 4b58e <== NOT EXECUTED block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 ); 4b568: 42a7 clrl %sp@- <== NOT EXECUTED 4b56a: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4b56c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b56e: 4e95 jsr %a5@ <== NOT EXECUTED if ( !block_ptr ) 4b570: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4b574: 4a80 tstl %d0 <== NOT EXECUTED 4b576: 6762 beqs 4b5da <== NOT EXECUTED return copied; memcpy( dest, &(*block_ptr)[ 0 ], to_copy ); 4b578: 2040 moveal %d0,%a0 <== NOT EXECUTED dest += to_copy; block++; 4b57a: 5284 addql #1,%d4 <== NOT EXECUTED my_length -= to_copy; 4b57c: 9c8b subl %a3,%d6 <== NOT EXECUTED copied += to_copy; 4b57e: 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 ); 4b580: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4b582: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4b584: 2f07 movel %d7,%sp@- <== NOT EXECUTED dest += to_copy; 4b586: 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 ); 4b588: 4e94 jsr %a4@ <== NOT EXECUTED dest += to_copy; block++; my_length -= to_copy; copied += to_copy; 4b58a: 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 ) { 4b58e: bcb9 0005 d1b4 cmpl 5d1b4 ,%d6<== NOT EXECUTED 4b594: 64d2 bccs 4b568 <== NOT EXECUTED /* * Phase 3: possibly the first part of one block */ IMFS_assert( my_length < IMFS_MEMFILE_BYTES_PER_BLOCK ); if ( my_length ) { 4b596: 4a86 tstl %d6 <== NOT EXECUTED 4b598: 6728 beqs 4b5c2 <== NOT EXECUTED block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 ); 4b59a: 42a7 clrl %sp@- <== NOT EXECUTED 4b59c: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4b59e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b5a0: 4eb9 0004 b304 jsr 4b304 <== NOT EXECUTED if ( !block_ptr ) 4b5a6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4b5aa: 4a80 tstl %d0 <== NOT EXECUTED 4b5ac: 672c beqs 4b5da <== NOT EXECUTED return copied; memcpy( dest, &(*block_ptr)[ 0 ], my_length ); 4b5ae: 2040 moveal %d0,%a0 <== NOT EXECUTED copied += my_length; 4b5b0: 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 ); 4b5b2: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4b5b4: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4b5b6: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4b5b8: 4eb9 0004 d200 jsr 4d200 <== NOT EXECUTED copied += my_length; 4b5be: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED } IMFS_update_atime( the_jnode ); 4b5c2: 42a7 clrl %sp@- <== NOT EXECUTED 4b5c4: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4b5c8: 4eb9 0004 283c jsr 4283c <== NOT EXECUTED 4b5ce: 256e fff8 003c movel %fp@(-8),%a2@(60) <== NOT EXECUTED return copied; 4b5d4: 508f addql #8,%sp <== NOT EXECUTED 4b5d6: 6002 bras 4b5da <== 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; 4b5d8: 4282 clrl %d2 <== NOT EXECUTED } IMFS_update_atime( the_jnode ); return copied; } 4b5da: 2002 movel %d2,%d0 <== NOT EXECUTED 4b5dc: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4b5e2: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004b6a8 : * is better to stick to simple, easy to understand algorithms. */ int IMFS_memfile_remove( IMFS_jnode_t *the_jnode ) { 4b6a8: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED 4b6ac: 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; 4b6b0: 2439 0005 d1b4 movel 5d1b4 ,%d2<== NOT EXECUTED 4b6b6: 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 ) { 4b6b8: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED * + doubly indirect * + triply indirect */ info = &the_jnode->info.file; if ( info->indirect ) { 4b6bc: 4aaa 0054 tstl %a2@(84) <== NOT EXECUTED 4b6c0: 670e beqs 4b6d0 <== NOT EXECUTED memfile_free_blocks_in_table( &info->indirect, to_free ); 4b6c2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b6c4: 486a 0054 pea %a2@(84) <== NOT EXECUTED 4b6c8: 4eb9 0004 b662 jsr 4b662 <== NOT EXECUTED 4b6ce: 508f addql #8,%sp <== NOT EXECUTED } if ( info->doubly_indirect ) { 4b6d0: 4aaa 0058 tstl %a2@(88) <== NOT EXECUTED 4b6d4: 673e beqs 4b714 <== NOT EXECUTED 4b6d6: 4283 clrl %d3 <== NOT EXECUTED for ( i=0 ; idoubly_indirect[i] ) { memfile_free_blocks_in_table( 4b6d8: 47f9 0004 b662 lea 4b662 ,%a3<== NOT EXECUTED 4b6de: 601a bras 4b6fa <== NOT EXECUTED memfile_free_blocks_in_table( &info->indirect, to_free ); } if ( info->doubly_indirect ) { for ( i=0 ; idoubly_indirect[i] ) { 4b6e0: 2003 movel %d3,%d0 <== NOT EXECUTED 4b6e2: 206a 0058 moveal %a2@(88),%a0 <== NOT EXECUTED 4b6e6: e588 lsll #2,%d0 <== NOT EXECUTED 4b6e8: 4ab0 0800 tstl %a0@(00000000,%d0:l) <== NOT EXECUTED 4b6ec: 670a beqs 4b6f8 <== NOT EXECUTED memfile_free_blocks_in_table( 4b6ee: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b6f0: 4870 0800 pea %a0@(00000000,%d0:l) <== NOT EXECUTED 4b6f4: 4e93 jsr %a3@ <== NOT EXECUTED 4b6f6: 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 4b700: e488 lsrl #2,%d0 <== NOT EXECUTED 4b702: b083 cmpl %d3,%d0 <== NOT EXECUTED 4b704: 62da bhis 4b6e0 <== 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 ); 4b706: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b708: 486a 0058 pea %a2@(88) <== NOT EXECUTED 4b70c: 4eb9 0004 b662 jsr 4b662 <== NOT EXECUTED 4b712: 508f addql #8,%sp <== NOT EXECUTED } if ( info->triply_indirect ) { 4b714: 4aaa 005c tstl %a2@(92) <== NOT EXECUTED 4b718: 6762 beqs 4b77c <== NOT EXECUTED 4b71a: 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 4b722: 603e bras 4b762 <== NOT EXECUTED } memfile_free_blocks_in_table( &info->doubly_indirect, to_free ); } if ( info->triply_indirect ) { 4b724: 2a03 movel %d3,%d5 <== NOT EXECUTED for ( i=0 ; itriply_indirect[i]; 4b726: 206a 005c moveal %a2@(92),%a0 <== NOT EXECUTED } memfile_free_blocks_in_table( &info->doubly_indirect, to_free ); } if ( info->triply_indirect ) { 4b72a: e58d lsll #2,%d5 <== NOT EXECUTED for ( i=0 ; itriply_indirect[i]; 4b72c: 2670 5800 moveal %a0@(00000000,%d5:l),%a3 <== NOT EXECUTED if ( !p ) /* ensure we have a valid pointer */ 4b730: 4a8b tstl %a3 <== NOT EXECUTED 4b732: 673a beqs 4b76e <== NOT EXECUTED 4b734: 4284 clrl %d4 <== NOT EXECUTED 4b736: 6010 bras 4b748 <== NOT EXECUTED break; for ( j=0 ; j <== NOT EXECUTED memfile_free_blocks_in_table( (block_p **)&p[j], to_free); 4b73c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b73e: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4b740: 4e94 jsr %a4@ <== NOT EXECUTED 4b742: 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 4b74e: e488 lsrl #2,%d0 <== NOT EXECUTED 4b750: b084 cmpl %d4,%d0 <== NOT EXECUTED 4b752: 62e4 bhis 4b738 <== NOT EXECUTED if ( p[j] ) { memfile_free_blocks_in_table( (block_p **)&p[j], to_free); } } memfile_free_blocks_in_table( 4b754: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b756: 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 4b768: e488 lsrl #2,%d0 <== NOT EXECUTED 4b76a: b083 cmpl %d3,%d0 <== NOT EXECUTED 4b76c: 62b6 bhis 4b724 <== NOT EXECUTED } } memfile_free_blocks_in_table( (block_p **)&info->triply_indirect[i], to_free ); } memfile_free_blocks_in_table( 4b76e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b770: 486a 005c pea %a2@(92) <== NOT EXECUTED 4b774: 4eb9 0004 b662 jsr 4b662 <== NOT EXECUTED 4b77a: 508f addql #8,%sp <== NOT EXECUTED (block_p **)&info->triply_indirect, to_free ); } return 0; } 4b77c: 4280 clrl %d0 <== NOT EXECUTED 4b77e: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED 4b784: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004b788 : */ MEMFILE_STATIC int IMFS_memfile_remove_block( IMFS_jnode_t *the_jnode, unsigned int block ) { 4b788: 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 ); 4b78c: 42a7 clrl %sp@- <== NOT EXECUTED 4b78e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4b792: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4b796: 4eb9 0004 b304 jsr 4b304 <== NOT EXECUTED IMFS_assert( block_ptr ); ptr = *block_ptr; 4b79c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4b79e: 2210 movel %a0@,%d1 <== NOT EXECUTED *block_ptr = 0; 4b7a0: 4290 clrl %a0@ <== NOT EXECUTED memfile_free_block( ptr ); 4b7a2: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4b7a4: 4eb9 0004 b648 jsr 4b648 <== NOT EXECUTED return 1; } 4b7aa: 7001 moveq #1,%d0 <== NOT EXECUTED 4b7ac: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004b894 : * 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 ) { 4b894: 4280 clrl %d0 <== NOT EXECUTED IMFS_jnode_t *the_jnode, off_t start, const unsigned char *source, unsigned int length ) { 4b896: 4e56 ffd0 linkw %fp,#-48 <== NOT EXECUTED 4b89a: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED 4b89e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4b8a2: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4b8a6: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED 4b8aa: 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; 4b8ae: 2046 moveal %d6,%a0 <== NOT EXECUTED 4b8b0: d1c3 addal %d3,%a0 <== NOT EXECUTED if ( last_byte > the_jnode->info.file.size ) { 4b8b2: 2208 movel %a0,%d1 <== NOT EXECUTED IMFS_jnode_t *the_jnode, off_t start, const unsigned char *source, unsigned int length ) { 4b8b4: 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 ) { 4b8b8: 282a 004c movel %a2@(76),%d4 <== NOT EXECUTED 4b8bc: 2a2a 0050 movel %a2@(80),%d5 <== NOT EXECUTED 4b8c0: 9a81 subl %d1,%d5 <== NOT EXECUTED 4b8c2: 9980 subxl %d0,%d4 <== NOT EXECUTED 4b8c4: 6c28 bges 4b8ee <== NOT EXECUTED status = IMFS_memfile_extend( the_jnode, last_byte ); 4b8c6: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4b8c8: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4b8ca: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b8cc: 4eb9 0004 b7b0 jsr 4b7b0 <== NOT EXECUTED if ( status ) 4b8d2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4b8d6: 4a80 tstl %d0 <== NOT EXECUTED 4b8d8: 6714 beqs 4b8ee <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSPC ); 4b8da: 4eb9 0004 c954 jsr 4c954 <__errno> <== NOT EXECUTED 4b8e0: 741c moveq #28,%d2 <== NOT EXECUTED 4b8e2: 2040 moveal %d0,%a0 <== NOT EXECUTED 4b8e4: 387c ffff moveaw #-1,%a4 <== NOT EXECUTED 4b8e8: 2082 movel %d2,%a0@ <== NOT EXECUTED 4b8ea: 6000 0102 braw 4b9ee <== NOT EXECUTED */ /* * Phase 1: possibly the last part of one block */ start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK; 4b8ee: 2879 0005 d1b4 moveal 5d1b4 ,%a4<== NOT EXECUTED 4b8f4: 2a0c movel %a4,%d5 <== NOT EXECUTED 4b8f6: 5bc4 smi %d4 <== NOT EXECUTED 4b8f8: 49c4 extbl %d4 <== NOT EXECUTED 4b8fa: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4b8fc: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4b8fe: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4b900: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b902: 4eb9 0005 8ba0 jsr 58ba0 <__moddi3> <== NOT EXECUTED 4b908: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4b90c: 2641 moveal %d1,%a3 <== NOT EXECUTED block = start / IMFS_MEMFILE_BYTES_PER_BLOCK; 4b90e: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4b910: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4b912: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4b914: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b916: 4eb9 0005 87ec jsr 587ec <__divdi3> <== NOT EXECUTED 4b91c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4b920: 2401 movel %d1,%d2 <== NOT EXECUTED if ( start_offset ) { 4b922: 4a8b tstl %a3 <== NOT EXECUTED 4b924: 673a beqs 4b960 <== 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 ); 4b926: 42a7 clrl %sp@- <== NOT EXECUTED 4b928: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4b92a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b92c: 4eb9 0004 b304 jsr 4b304 <== NOT EXECUTED if ( !block_ptr ) 4b932: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4b936: 4a80 tstl %d0 <== NOT EXECUTED 4b938: 6700 00b2 beqw 4b9ec <== 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; 4b93c: 99cb subal %a3,%a4 <== NOT EXECUTED 4b93e: bc8c cmpl %a4,%d6 <== NOT EXECUTED 4b940: 6402 bccs 4b944 <== NOT EXECUTED 4b942: 2846 moveal %d6,%a4 <== NOT EXECUTED block, to_copy, src ); #endif memcpy( &(*block_ptr)[ start_offset ], src, to_copy ); 4b944: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4b946: 2040 moveal %d0,%a0 <== NOT EXECUTED src += to_copy; block++; 4b948: 5282 addql #1,%d2 <== NOT EXECUTED my_length -= to_copy; 4b94a: 9c8c subl %a4,%d6 <== NOT EXECUTED block, to_copy, src ); #endif memcpy( &(*block_ptr)[ start_offset ], src, to_copy ); 4b94c: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4b94e: d7d0 addal %a0@,%a3 <== NOT EXECUTED src += to_copy; 4b950: de8c addl %a4,%d7 <== NOT EXECUTED block, to_copy, src ); #endif memcpy( &(*block_ptr)[ start_offset ], src, to_copy ); 4b952: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4b954: 4eb9 0004 d200 jsr 4d200 <== NOT EXECUTED src += to_copy; block++; my_length -= to_copy; copied += to_copy; 4b95a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4b95e: 6002 bras 4b962 <== NOT EXECUTED status = IMFS_memfile_extend( the_jnode, last_byte ); if ( status ) rtems_set_errno_and_return_minus_one( ENOSPC ); } copied = 0; 4b960: 99cc subal %a4,%a4 <== NOT EXECUTED /* * Phase 2: all of zero of more blocks */ to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK; 4b962: 2839 0005 d1b4 movel 5d1b4 ,%d4<== NOT EXECUTED while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) { block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 ); 4b968: 4bf9 0004 b304 lea 4b304 ,%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 ); 4b96e: 47f9 0004 d200 lea 4d200 ,%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 ) { 4b974: 6026 bras 4b99c <== NOT EXECUTED block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 ); 4b976: 42a7 clrl %sp@- <== NOT EXECUTED 4b978: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b97a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b97c: 4e95 jsr %a5@ <== NOT EXECUTED if ( !block_ptr ) 4b97e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4b982: 4a80 tstl %d0 <== NOT EXECUTED 4b984: 6768 beqs 4b9ee <== 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 ); 4b986: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4b988: 2040 moveal %d0,%a0 <== NOT EXECUTED src += to_copy; block++; 4b98a: 5282 addql #1,%d2 <== NOT EXECUTED my_length -= to_copy; 4b98c: 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( 4b98e: 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 ); 4b990: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4b992: 2f10 movel %a0@,%sp@- <== NOT EXECUTED src += to_copy; 4b994: 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 ); 4b996: 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( 4b998: 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 ) { 4b99c: bcb9 0005 d1b4 cmpl 5d1b4 ,%d6<== NOT EXECUTED 4b9a2: 64d2 bccs 4b976 <== 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 ) { 4b9a4: 4a86 tstl %d6 <== NOT EXECUTED 4b9a6: 6728 beqs 4b9d0 <== NOT EXECUTED block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 ); 4b9a8: 42a7 clrl %sp@- <== NOT EXECUTED 4b9aa: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4b9ac: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4b9ae: 4eb9 0004 b304 jsr 4b304 <== NOT EXECUTED if ( !block_ptr ) 4b9b4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4b9b8: 4a80 tstl %d0 <== NOT EXECUTED 4b9ba: 6732 beqs 4b9ee <== 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 ); 4b9bc: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4b9be: 2040 moveal %d0,%a0 <== NOT EXECUTED my_length = 0; copied += to_copy; 4b9c0: 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 ); 4b9c2: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4b9c4: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4b9c6: 4eb9 0004 d200 jsr 4d200 <== NOT EXECUTED my_length = 0; copied += to_copy; 4b9cc: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED } IMFS_mtime_ctime_update( the_jnode ); 4b9d0: 42a7 clrl %sp@- <== NOT EXECUTED 4b9d2: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4b9d6: 4eb9 0004 283c jsr 4283c <== NOT EXECUTED 4b9dc: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED return copied; 4b9e0: 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 ); 4b9e2: 2540 0040 movel %d0,%a2@(64) <== NOT EXECUTED 4b9e6: 2540 0044 movel %d0,%a2@(68) <== NOT EXECUTED return copied; 4b9ea: 6002 bras 4b9ee <== 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; 4b9ec: 99cc subal %a4,%a4 <== NOT EXECUTED } IMFS_mtime_ctime_update( the_jnode ); return copied; } 4b9ee: 200c movel %a4,%d0 <== NOT EXECUTED 4b9f0: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4b9f6: 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 ddac jsr 4ddac 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 93c0 jsr 493c0 /* * 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 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 41f82: 6002 bras 41f86 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 8b26 jsr 48b26 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 c954 jsr 4c954 <__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 c954 jsr 4c954 <__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 1f64 moveal 61f64 <_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 0c78 jsr 50c78 <== 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 1f64 moveal 61f64 <_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 .short 0x000e <== NOT EXECUTED 446a4: 0022 .short 0x0022 <== NOT EXECUTED 446a6: 006a .short 0x006a <== NOT EXECUTED 446a8: 006a .short 0x006a <== NOT EXECUTED 446aa: 0050 .short 0x0050 <== NOT EXECUTED 446ac: 0032 .short 0x0032 <== NOT EXECUTED 446ae: 0076 .short 0x0076 <== 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 0ba8 jsr 50ba8 <== 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 05be pea 605be <== 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 05d1 pea 605d1 <== NOT EXECUTED 446e2: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 446e6: 4eb9 0005 0b2a jsr 50b2a <== 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 05e0 pea 605e0 <== NOT EXECUTED 446fc: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44700: 4eb9 0005 0b2a jsr 50b2a <== 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 05ec pea 605ec <== 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 0600 pea 60600 <== NOT EXECUTED 44722: 4eb9 0005 0c78 jsr 50c78 <== 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 0613 pea 60613 <== NOT EXECUTED 44734: 2079 0006 1f64 moveal 61f64 <_impure_ptr>,%a0 <== NOT EXECUTED 4473a: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 4473e: 4eb9 0005 0b2a jsr 50b2a <== 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 0cc6 movel #396486,%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 244e jmp 5244e <== 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 ddc4 jsr 4ddc4 <== 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 5ff0 jsr 45ff0 <_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 5fb8 jsr 45fb8 <_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 =============================================================================== 00049526 : int IMFS_rmnod( rtems_filesystem_location_info_t *parent_pathloc, /* IN */ rtems_filesystem_location_info_t *pathloc /* IN */ ) { 49526: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED IMFS_jnode_t *jnode = (IMFS_jnode_t *) pathloc->node_access; 4952a: 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 */ ) { 4952e: 2f02 movel %d2,%sp@- <== NOT EXECUTED IMFS_jnode_t *jnode = (IMFS_jnode_t *) pathloc->node_access; 49530: 2410 movel %a0@,%d2 <== NOT EXECUTED IMFS_create_orphan( jnode ); 49532: 2f02 movel %d2,%sp@- <== NOT EXECUTED 49534: 4eb9 0004 9474 jsr 49474 <== NOT EXECUTED IMFS_check_node_remove( jnode ); 4953a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4953c: 4eb9 0004 94b8 jsr 494b8 <== NOT EXECUTED return 0; } 49542: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 49546: 4280 clrl %d0 <== NOT EXECUTED 49548: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004954c : IMFS_device_t *io; the_jnode = loc->node_access; switch ( the_jnode->type ) { 4954c: 7205 moveq #5,%d1 int IMFS_stat( rtems_filesystem_location_info_t *loc, struct stat *buf ) { 4954e: 4e56 0000 linkw %fp,#0 49552: 206e 000c moveal %fp@(12),%a0 49556: 2f0a movel %a2,%sp@- 49558: 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; 4955c: 2252 moveal %a2@,%a1 switch ( the_jnode->type ) { 4955e: 2029 0048 movel %a1@(72),%d0 49562: 5580 subql #2,%d0 49564: b280 cmpl %d0,%d1 49566: 653e bcss 495a6 <== NEVER TAKEN 49568: 303b 0a08 movew %pc@(49572 ,%d0:l:2),%d0 4956c: 48c0 extl %d0 4956e: 4efb 0802 jmp %pc@(49572 ,%d0:l) 49572: 000c .short 0x000c <== NOT EXECUTED 49574: 0034 .short 0x0034 <== NOT EXECUTED 49576: 0026 .short 0x0026 <== NOT EXECUTED 49578: 001c .short 0x001c <== NOT EXECUTED 4957a: 001c .short 0x001c <== NOT EXECUTED 4957c: 0026 .short 0x0026 <== NOT EXECUTED case IMFS_DEVICE: io = &the_jnode->info.device; buf->st_rdev = rtems_filesystem_make_dev_t( io->major, io->minor ); 4957e: 2029 0050 movel %a1@(80),%d0 49582: 2169 004c 0016 movel %a1@(76),%a0@(22) 49588: 2140 001a movel %d0,%a0@(26) break; 4958c: 602a bras 495b8 case IMFS_LINEAR_FILE: case IMFS_MEMORY_FILE: buf->st_size = the_jnode->info.file.size; 4958e: 2029 004c movel %a1@(76),%d0 <== NOT EXECUTED 49592: 2229 0050 movel %a1@(80),%d1 <== NOT EXECUTED 49596: 6004 bras 4959c <== NOT EXECUTED case IMFS_SYM_LINK: buf->st_size = 0; break; case IMFS_FIFO: buf->st_size = 0; 49598: 4280 clrl %d0 <== NOT EXECUTED 4959a: 4281 clrl %d1 <== NOT EXECUTED 4959c: 2140 001e movel %d0,%a0@(30) <== NOT EXECUTED 495a0: 2141 0022 movel %d1,%a0@(34) <== NOT EXECUTED break; 495a4: 6012 bras 495b8 <== NOT EXECUTED default: rtems_set_errno_and_return_minus_one( ENOTSUP ); 495a6: 4eb9 0004 c954 jsr 4c954 <__errno> <== NOT EXECUTED 495ac: 2040 moveal %d0,%a0 <== NOT EXECUTED 495ae: 70ff moveq #-1,%d0 <== NOT EXECUTED 495b0: 20bc 0000 0086 movel #134,%a0@ <== NOT EXECUTED 495b6: 6046 bras 495fe <== 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; 495b8: 246a 0010 moveal %a2@(16),%a2 buf->st_dev = rtems_filesystem_make_dev_t( IMFS_DEVICE_MAJOR_NUMBER, fs_info->instance ); 495bc: 246a 0034 moveal %a2@(52),%a2 495c0: 2012 movel %a2@,%d0 buf->st_mode = the_jnode->st_mode; 495c2: 2169 002e 000c movel %a1@(46),%a0@(12) buf->st_nlink = the_jnode->st_nlink; 495c8: 3169 0032 0010 movew %a1@(50),%a0@(16) buf->st_ino = the_jnode->st_ino; 495ce: 2169 0034 0008 movel %a1@(52),%a0@(8) buf->st_uid = the_jnode->st_uid; 495d4: 3169 0038 0012 movew %a1@(56),%a0@(18) buf->st_gid = the_jnode->st_gid; 495da: 3169 003a 0014 movew %a1@(58),%a0@(20) buf->st_atime = the_jnode->stat_atime; 495e0: 2169 003c 0026 movel %a1@(60),%a0@(38) buf->st_mtime = the_jnode->stat_mtime; 495e6: 2169 0040 002e movel %a1@(64),%a0@(46) buf->st_ctime = the_jnode->stat_ctime; 495ec: 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 = 495f2: 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; 495f6: 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 = 495f8: 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; } 495fe: 246e fffc moveal %fp@(-4),%a2 49602: 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 ddac jsr 4ddac <== 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 93c0 jsr 493c0 <== NOT EXECUTED /* * Duplicate link name */ info.sym_link.name = strdup(link_name); 420ca: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 420ce: 4eb9 0004 d91c jsr 4d91c <== 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 c954 jsr 4c954 <__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 8b26 jsr 48b26 <== 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 c954 jsr 4c954 <__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 c954 jsr 4c954 <__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 d200 jsr 4d200 <== 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 8c74 jsr 48c74 <== 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 c954 jsr 4c954 <__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 c954 jsr 4c954 <__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 0005 0074 jsr 50074