=============================================================================== 000433f8 : #include static void CPU_usage_Per_thread_handler( Thread_Control *the_thread ) { 433f8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 433fc: 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 } 43400: 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 ); 43402: 42a8 0082 clrl %a0@(130) <== NOT EXECUTED 43406: 42a8 0086 clrl %a0@(134) <== NOT EXECUTED #else the_thread->cpu_time_used = 0; #endif } =============================================================================== 0004a014 : { IMFS_jnode_t *node = loc->node_access; IMFS_fs_info_t *fs_info; fs_info = loc->mt_entry->fs_info; switch( node->type ) { 4a014: 7007 moveq #7,%d0 #define MAXSYMLINK 5 int IMFS_Set_handlers( rtems_filesystem_location_info_t *loc ) { 4a016: 4e56 0000 linkw %fp,#0 4a01a: 206e 0008 moveal %fp@(8),%a0 4a01e: 2f0a movel %a2,%sp@- IMFS_jnode_t *node = loc->node_access; IMFS_fs_info_t *fs_info; fs_info = loc->mt_entry->fs_info; 4a020: 2468 0010 moveal %a0@(16),%a2 switch( node->type ) { 4a024: 2250 moveal %a0@,%a1 ) { IMFS_jnode_t *node = loc->node_access; IMFS_fs_info_t *fs_info; fs_info = loc->mt_entry->fs_info; 4a026: 246a 0034 moveal %a2@(52),%a2 switch( node->type ) { 4a02a: b0a9 0048 cmpl %a1@(72),%d0 4a02e: 6526 bcss 4a056 <== NEVER TAKEN 4a030: 2029 0048 movel %a1@(72),%d0 4a034: d080 addl %d0,%d0 4a036: 303b 0808 movew %pc@(4a040 ,%d0:l),%d0 4a03a: 48c0 extl %d0 4a03c: 4efb 0802 jmp %pc@(4a040 ,%d0:l) 4a040: 0016 .short 0x0016 <== NOT EXECUTED 4a042: 0010 .short 0x0010 <== NOT EXECUTED 4a044: 004c .short 0x004c <== NOT EXECUTED 4a046: 002c .short 0x002c <== NOT EXECUTED 4a048: 002c .short 0x002c <== NOT EXECUTED 4a04a: 001e .short 0x001e <== NOT EXECUTED 4a04c: 001e .short 0x001e <== NOT EXECUTED 4a04e: 003e .short 0x003e <== NOT EXECUTED case IMFS_DIRECTORY: loc->handlers = fs_info->directory_handlers; 4a050: 216a 000c 0008 movel %a2@(12),%a0@(8) loc->handlers = fs_info->fifo_handlers; break; } return 0; } 4a056: 245f moveal %sp@+,%a2 4a058: 4280 clrl %d0 4a05a: 4e5e unlk %fp 4a05c: 4e75 rts 4a05e: 4280 clrl %d0 <== NOT EXECUTED break; case IMFS_LINEAR_FILE: loc->handlers = fs_info->memfile_handlers; break; case IMFS_MEMORY_FILE: loc->handlers = fs_info->memfile_handlers; 4a060: 216a 0008 0008 movel %a2@(8),%a0@(8) <== NOT EXECUTED loc->handlers = fs_info->fifo_handlers; break; } return 0; } 4a066: 245f moveal %sp@+,%a2 <== NOT EXECUTED 4a068: 4e5e unlk %fp <== NOT EXECUTED 4a06a: 4e75 rts <== NOT EXECUTED 4a06c: 245f moveal %sp@+,%a2 <== NOT EXECUTED case IMFS_DEVICE: loc->handlers = &IMFS_device_handlers; break; case IMFS_SYM_LINK: case IMFS_HARD_LINK: loc->handlers = &IMFS_link_handlers; 4a06e: 203c 0005 cad2 movel #379602,%d0 <== NOT EXECUTED loc->handlers = fs_info->fifo_handlers; break; } return 0; } 4a074: 4e5e unlk %fp <== NOT EXECUTED case IMFS_DEVICE: loc->handlers = &IMFS_device_handlers; break; case IMFS_SYM_LINK: case IMFS_HARD_LINK: loc->handlers = &IMFS_link_handlers; 4a076: 2140 0008 movel %d0,%a0@(8) <== NOT EXECUTED loc->handlers = fs_info->fifo_handlers; break; } return 0; } 4a07a: 4280 clrl %d0 <== NOT EXECUTED 4a07c: 4e75 rts <== NOT EXECUTED 4a07e: 4280 clrl %d0 <== NOT EXECUTED break; case IMFS_MEMORY_FILE: loc->handlers = fs_info->memfile_handlers; break; case IMFS_FIFO: loc->handlers = fs_info->fifo_handlers; 4a080: 216a 0010 0008 movel %a2@(16),%a0@(8) <== NOT EXECUTED break; } return 0; } 4a086: 245f moveal %sp@+,%a2 <== NOT EXECUTED 4a088: 4e5e unlk %fp <== NOT EXECUTED 4a08a: 4e75 rts <== NOT EXECUTED 4a08c: 245f moveal %sp@+,%a2 switch( node->type ) { case IMFS_DIRECTORY: loc->handlers = fs_info->directory_handlers; break; case IMFS_DEVICE: loc->handlers = &IMFS_device_handlers; 4a08e: 203c 0005 ca62 movel #379490,%d0 loc->handlers = fs_info->fifo_handlers; break; } return 0; } 4a094: 4e5e unlk %fp switch( node->type ) { case IMFS_DIRECTORY: loc->handlers = fs_info->directory_handlers; break; case IMFS_DEVICE: loc->handlers = &IMFS_device_handlers; 4a096: 2140 0008 movel %d0,%a0@(8) loc->handlers = fs_info->fifo_handlers; break; } return 0; } 4a09a: 4280 clrl %d0 <== NOT EXECUTED =============================================================================== 00049d70 : IMFS_jnode_t *IMFS_allocate_node( IMFS_jnode_types_t type, const char *name, mode_t mode ) { 49d70: 4e56 fff8 linkw %fp,#-8 49d74: 2f0a movel %a2,%sp@- struct timeval tv; /* * Allocate an IMFS jnode */ node = calloc( 1, sizeof( IMFS_jnode_t ) ); 49d76: 4878 0060 pea 60 49d7a: 4878 0001 pea 1 49d7e: 4eb9 0004 28f0 jsr 428f0 if ( !node ) 49d84: 508f addql #8,%sp struct timeval tv; /* * Allocate an IMFS jnode */ node = calloc( 1, sizeof( IMFS_jnode_t ) ); 49d86: 2440 moveal %d0,%a2 if ( !node ) 49d88: 4a80 tstl %d0 49d8a: 674e beqs 49dda <== NEVER TAKEN /* * Fill in the basic information */ node->st_nlink = 1; node->type = type; strncpy( node->name, name, IMFS_NAME_MAX ); 49d8c: 4878 0020 pea 20 49d90: 2f2e 000c movel %fp@(12),%sp@- /* * Fill in the basic information */ node->st_nlink = 1; node->type = type; 49d94: 256e 0008 0048 movel %fp@(8),%a2@(72) strncpy( node->name, name, IMFS_NAME_MAX ); 49d9a: 486a 000c pea %a2@(12) return NULL; /* * Fill in the basic information */ node->st_nlink = 1; 49d9e: 7001 moveq #1,%d0 49da0: 3540 0032 movew %d0,%a2@(50) node->type = type; strncpy( node->name, name, IMFS_NAME_MAX ); 49da4: 4eb9 0004 eccc jsr 4eccc /* * Fill in the mode and permission information for the jnode structure. */ node->st_mode = mode; 49daa: 256e 0010 002e movel %fp@(16),%a2@(46) #endif /* * Now set all the times. */ gettimeofday( &tv, 0 ); 49db0: 42a7 clrl %sp@- 49db2: 486e fff8 pea %fp@(-8) node->st_mode = mode; #if defined(RTEMS_POSIX_API) node->st_uid = geteuid(); node->st_gid = getegid(); #else node->st_uid = 0; 49db6: 4240 clrw %d0 49db8: 3540 0038 movew %d0,%a2@(56) node->st_gid = 0; 49dbc: 3540 003a movew %d0,%a2@(58) #endif /* * Now set all the times. */ gettimeofday( &tv, 0 ); 49dc0: 4eb9 0004 2d8c jsr 42d8c node->stat_atime = (time_t) tv.tv_sec; 49dc6: 202e fff8 movel %fp@(-8),%d0 node->stat_mtime = (time_t) tv.tv_sec; node->stat_ctime = (time_t) tv.tv_sec; return node; 49dca: 4fef 0014 lea %sp@(20),%sp /* * Now set all the times. */ gettimeofday( &tv, 0 ); node->stat_atime = (time_t) tv.tv_sec; 49dce: 2540 003c movel %d0,%a2@(60) node->stat_mtime = (time_t) tv.tv_sec; 49dd2: 2540 0040 movel %d0,%a2@(64) node->stat_ctime = (time_t) tv.tv_sec; 49dd6: 2540 0044 movel %d0,%a2@(68) return node; } 49dda: 200a movel %a2,%d0 49ddc: 246e fff4 moveal %fp@(-12),%a2 49de0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004a9d4 : void IMFS_check_node_remove( IMFS_jnode_t *jnode ) { 4a9d4: 4e56 0000 linkw %fp,#0 4a9d8: 2f0a movel %a2,%sp@- 4a9da: 246e 0008 moveal %fp@(8),%a2 if ( !rtems_libio_is_file_open( jnode ) && jnode->st_nlink < 1 ) { 4a9de: 2f0a movel %a2,%sp@- 4a9e0: 4eb9 0004 b0d2 jsr 4b0d2 4a9e6: 588f addql #4,%sp 4a9e8: 4a80 tstl %d0 4a9ea: 6634 bnes 4aa20 <== ALWAYS TAKEN 4a9ec: 4a6a 0032 tstw %a2@(50) <== NOT EXECUTED 4a9f0: 662e bnes 4aa20 <== NOT EXECUTED if ( rtems_filesystem_current.node_access == jnode ) 4a9f2: 2079 0005 d740 moveal 5d740 ,%a0 <== NOT EXECUTED 4a9f8: b5e8 0004 cmpal %a0@(4),%a2 <== NOT EXECUTED 4a9fc: 6744 beqs 4aa42 <== NOT EXECUTED rtems_filesystem_current.node_access = NULL; switch ( jnode->type ) { 4a9fe: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED 4aa02: 7204 moveq #4,%d1 <== NOT EXECUTED 4aa04: b280 cmpl %d0,%d1 <== NOT EXECUTED 4aa06: 6748 beqs 4aa50 <== NOT EXECUTED 4aa08: 123c 0005 moveb #5,%d1 <== NOT EXECUTED 4aa0c: b280 cmpl %d0,%d1 <== NOT EXECUTED 4aa0e: 6718 beqs 4aa28 <== NOT EXECUTED break; default: break; } free( jnode ); 4aa10: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED } } 4aa14: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4aa18: 4e5e unlk %fp <== NOT EXECUTED break; default: break; } free( jnode ); 4aa1a: 4ef9 0004 2cfc jmp 42cfc <== NOT EXECUTED } } 4aa20: 246e fffc moveal %fp@(-4),%a2 4aa24: 4e5e unlk %fp 4aa26: 4e75 rts if ( rtems_filesystem_current.node_access == jnode ) rtems_filesystem_current.node_access = NULL; switch ( jnode->type ) { case IMFS_MEMORY_FILE: IMFS_memfile_remove( jnode ); 4aa28: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4aa2a: 4eb9 0004 c7ac jsr 4c7ac <== NOT EXECUTED break; 4aa30: 588f addql #4,%sp <== NOT EXECUTED break; default: break; } free( jnode ); 4aa32: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED } } 4aa36: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4aa3a: 4e5e unlk %fp <== NOT EXECUTED break; default: break; } free( jnode ); 4aa3c: 4ef9 0004 2cfc jmp 42cfc <== NOT EXECUTED { if ( !rtems_libio_is_file_open( jnode ) && jnode->st_nlink < 1 ) { if ( rtems_filesystem_current.node_access == jnode ) rtems_filesystem_current.node_access = NULL; switch ( jnode->type ) { 4aa42: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED 4aa46: 7204 moveq #4,%d1 <== NOT EXECUTED void IMFS_check_node_remove( IMFS_jnode_t *jnode ) { if ( !rtems_libio_is_file_open( jnode ) && jnode->st_nlink < 1 ) { if ( rtems_filesystem_current.node_access == jnode ) rtems_filesystem_current.node_access = NULL; 4aa48: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED switch ( jnode->type ) { 4aa4c: b280 cmpl %d0,%d1 <== NOT EXECUTED 4aa4e: 66b8 bnes 4aa08 <== NOT EXECUTED case IMFS_MEMORY_FILE: IMFS_memfile_remove( jnode ); break; case IMFS_SYM_LINK: free( jnode->info.sym_link.name ); 4aa50: 2f2a 004c movel %a2@(76),%sp@- <== NOT EXECUTED 4aa54: 4eb9 0004 2cfc jsr 42cfc <== NOT EXECUTED break; 4aa5a: 588f addql #4,%sp <== NOT EXECUTED default: break; } free( jnode ); 4aa5c: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED } } 4aa60: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4aa64: 4e5e unlk %fp <== NOT EXECUTED break; default: break; } free( jnode ); 4aa66: 4ef9 0004 2cfc jmp 42cfc <== NOT EXECUTED =============================================================================== 00049d3c : int IMFS_chown( rtems_filesystem_location_info_t *pathloc, /* IN */ uid_t owner, /* IN */ gid_t group /* IN */ ) { 49d3c: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 49d40: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 49d44: 2f0a movel %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; 49d46: 2450 moveal %a0@,%a2 <== NOT EXECUTED if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) ) rtems_set_errno_and_return_minus_one( EPERM ); #endif jnode->st_uid = owner; 49d48: 356e 000e 0038 movew %fp@(14),%a2@(56) <== NOT EXECUTED jnode->st_gid = group; 49d4e: 356e 0012 003a movew %fp@(18),%a2@(58) <== NOT EXECUTED IMFS_update_ctime( jnode ); 49d54: 42a7 clrl %sp@- <== NOT EXECUTED 49d56: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 49d5a: 4eb9 0004 2d8c jsr 42d8c <== NOT EXECUTED 49d60: 256e fff8 0044 movel %fp@(-8),%a2@(68) <== NOT EXECUTED return 0; } 49d66: 4280 clrl %d0 <== NOT EXECUTED 49d68: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 49d6c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00049de4 : IMFS_jnode_types_t type, const char *name, mode_t mode, const IMFS_types_union *info ) { 49de4: 4e56 ffec linkw %fp,#-20 49de8: 206e 0008 moveal %fp@(8),%a0 49dec: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ 49df0: 242e 000c movel %fp@(12),%d2 49df4: 286e 0018 moveal %fp@(24),%a4 IMFS_fs_info_t *fs_info; /* * MUST have a parent node to call this routine. */ if ( parent_loc == NULL ) 49df8: 4a88 tstl %a0 49dfa: 6700 00ac beqw 49ea8 return NULL; parent = parent_loc->node_access; fs_info = parent_loc->mt_entry->fs_info; 49dfe: 2268 0010 moveal %a0@(16),%a1 /* * Reject creation of FIFOs if support is disabled. */ if ( type == IMFS_FIFO && 49e02: 7007 moveq #7,%d0 * MUST have a parent node to call this routine. */ if ( parent_loc == NULL ) return NULL; parent = parent_loc->node_access; 49e04: 2650 moveal %a0@,%a3 fs_info = parent_loc->mt_entry->fs_info; 49e06: 2469 0034 moveal %a1@(52),%a2 /* * Reject creation of FIFOs if support is disabled. */ if ( type == IMFS_FIFO && 49e0a: b082 cmpl %d2,%d0 49e0c: 6700 008c beqw 49e9a return NULL; /* * Allocate filesystem node and fill in basic information */ node = IMFS_allocate_node( type, name, mode & ~rtems_filesystem_umask ); 49e10: 2079 0005 d740 moveal 5d740 ,%a0 49e16: 2028 002c movel %a0@(44),%d0 49e1a: 4680 notl %d0 49e1c: c0ae 0014 andl %fp@(20),%d0 49e20: 2f00 movel %d0,%sp@- 49e22: 2f2e 0010 movel %fp@(16),%sp@- 49e26: 2f02 movel %d2,%sp@- 49e28: 4eb9 0004 9d70 jsr 49d70 if ( !node ) 49e2e: 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 ); 49e32: 2a40 moveal %d0,%a5 if ( !node ) 49e34: 4a80 tstl %d0 49e36: 6756 beqs 49e8e <== NEVER TAKEN return NULL; /* * Set the type specific information */ if ( type == IMFS_DIRECTORY ) { 49e38: 7001 moveq #1,%d0 49e3a: b082 cmpl %d2,%d0 49e3c: 6778 beqs 49eb6 rtems_chain_initialize_empty(&node->info.directory.Entries); } else if ( type == IMFS_HARD_LINK ) { 49e3e: 7003 moveq #3,%d0 49e40: b082 cmpl %d2,%d0 49e42: 6700 00d6 beqw 49f1a node->info.hard_link.link_node = info->hard_link.link_node; } else if ( type == IMFS_SYM_LINK ) { 49e46: 7204 moveq #4,%d1 49e48: b282 cmpl %d2,%d1 49e4a: 6700 00ce beqw 49f1a node->info.sym_link.name = info->sym_link.name; } else if ( type == IMFS_DEVICE ) { 49e4e: 7002 moveq #2,%d0 49e50: b082 cmpl %d2,%d0 49e52: 6700 0098 beqw 49eec node->info.device.major = info->device.major; node->info.device.minor = info->device.minor; } else if ( type == IMFS_LINEAR_FILE ) { 49e56: 7206 moveq #6,%d1 <== NOT EXECUTED 49e58: b282 cmpl %d2,%d1 <== NOT EXECUTED 49e5a: 6700 010e beqw 49f6a <== NOT EXECUTED node->info.linearfile.size = 0; node->info.linearfile.direct = 0; } else if ( type == IMFS_MEMORY_FILE ) { 49e5e: 7205 moveq #5,%d1 <== NOT EXECUTED 49e60: b282 cmpl %d2,%d1 <== NOT EXECUTED 49e62: 6700 013a beqw 49f9e <== NOT EXECUTED node->info.file.size = 0; node->info.file.indirect = 0; node->info.file.doubly_indirect = 0; node->info.file.triply_indirect = 0; } else if ( type == IMFS_FIFO ) { 49e66: 7207 moveq #7,%d1 <== NOT EXECUTED 49e68: b282 cmpl %d2,%d1 <== NOT EXECUTED 49e6a: 6700 00d6 beqw 49f42 <== 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; 49e6e: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 49e72: 5280 addql #1,%d0 <== NOT EXECUTED } /* * This node MUST have a parent, so put it in that directory list. */ node->Parent = parent; 49e74: 2b4b 0008 movel %a3,%a5@(8) <== NOT EXECUTED node->st_ino = ++fs_info->ino_count; 49e78: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED 49e7c: 2b40 0034 movel %d0,%a5@(52) <== NOT EXECUTED 49e80: 2f0d movel %a5,%sp@- <== NOT EXECUTED 49e82: 486b 004c pea %a3@(76) <== NOT EXECUTED 49e86: 4eb9 0004 6e78 jsr 46e78 <_Chain_Append> <== NOT EXECUTED rtems_chain_append( &parent->info.directory.Entries, &node->Node ); return node; 49e8c: 508f addql #8,%sp <== NOT EXECUTED } 49e8e: 200d movel %a5,%d0 49e90: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 49e96: 4e5e unlk %fp 49e98: 4e75 rts fs_info = parent_loc->mt_entry->fs_info; /* * Reject creation of FIFOs if support is disabled. */ if ( type == IMFS_FIFO && 49e9a: 223c 0005 c9f2 movel #379378,%d1 <== NOT EXECUTED 49ea0: b2aa 0010 cmpl %a2@(16),%d1 <== NOT EXECUTED 49ea4: 6600 ff6a bnew 49e10 <== NOT EXECUTED fs_info->fifo_handlers == &rtems_filesystem_handlers_default ) return NULL; 49ea8: 9bcd subal %a5,%a5 <== NOT EXECUTED node->st_ino = ++fs_info->ino_count; rtems_chain_append( &parent->info.directory.Entries, &node->Node ); return node; } 49eaa: 200d movel %a5,%d0 <== NOT EXECUTED 49eac: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED 49eb2: 4e5e unlk %fp <== NOT EXECUTED 49eb4: 4e75 rts <== NOT EXECUTED 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 ); 49eb6: 41ed 0050 lea %a5@(80),%a0 49eba: 2b48 004c movel %a0,%a5@(76) */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); 49ebe: 41ed 004c lea %a5@(76),%a0 Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; head->previous = NULL; 49ec2: 42ad 0050 clrl %a5@(80) */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); 49ec6: 2b48 0054 movel %a0,%a5@(84) /* * This node MUST have a parent, so put it in that directory list. */ node->Parent = parent; node->st_ino = ++fs_info->ino_count; 49eca: 202a 0004 movel %a2@(4),%d0 49ece: 5280 addql #1,%d0 } /* * This node MUST have a parent, so put it in that directory list. */ node->Parent = parent; 49ed0: 2b4b 0008 movel %a3,%a5@(8) node->st_ino = ++fs_info->ino_count; 49ed4: 2540 0004 movel %d0,%a2@(4) 49ed8: 2b40 0034 movel %d0,%a5@(52) 49edc: 2f0d movel %a5,%sp@- 49ede: 486b 004c pea %a3@(76) 49ee2: 4eb9 0004 6e78 jsr 46e78 <_Chain_Append> rtems_chain_append( &parent->info.directory.Entries, &node->Node ); return node; 49ee8: 508f addql #8,%sp 49eea: 60a2 bras 49e8e } else if ( type == IMFS_HARD_LINK ) { node->info.hard_link.link_node = info->hard_link.link_node; } else if ( type == IMFS_SYM_LINK ) { node->info.sym_link.name = info->sym_link.name; } else if ( type == IMFS_DEVICE ) { node->info.device.major = info->device.major; 49eec: 2b54 004c movel %a4@,%a5@(76) node->info.device.minor = info->device.minor; 49ef0: 2b6c 0004 0050 movel %a4@(4),%a5@(80) /* * This node MUST have a parent, so put it in that directory list. */ node->Parent = parent; node->st_ino = ++fs_info->ino_count; 49ef6: 202a 0004 movel %a2@(4),%d0 49efa: 5280 addql #1,%d0 } /* * This node MUST have a parent, so put it in that directory list. */ node->Parent = parent; 49efc: 2b4b 0008 movel %a3,%a5@(8) node->st_ino = ++fs_info->ino_count; 49f00: 2540 0004 movel %d0,%a2@(4) 49f04: 2b40 0034 movel %d0,%a5@(52) 49f08: 2f0d movel %a5,%sp@- 49f0a: 486b 004c pea %a3@(76) 49f0e: 4eb9 0004 6e78 jsr 46e78 <_Chain_Append> rtems_chain_append( &parent->info.directory.Entries, &node->Node ); return node; 49f14: 508f addql #8,%sp 49f16: 6000 ff76 braw 49e8e if ( type == IMFS_DIRECTORY ) { rtems_chain_initialize_empty(&node->info.directory.Entries); } else if ( type == IMFS_HARD_LINK ) { node->info.hard_link.link_node = info->hard_link.link_node; } else if ( type == IMFS_SYM_LINK ) { node->info.sym_link.name = info->sym_link.name; 49f1a: 2b54 004c movel %a4@,%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; 49f1e: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 49f22: 5280 addql #1,%d0 <== NOT EXECUTED } /* * This node MUST have a parent, so put it in that directory list. */ node->Parent = parent; 49f24: 2b4b 0008 movel %a3,%a5@(8) <== NOT EXECUTED node->st_ino = ++fs_info->ino_count; 49f28: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED 49f2c: 2b40 0034 movel %d0,%a5@(52) <== NOT EXECUTED 49f30: 2f0d movel %a5,%sp@- <== NOT EXECUTED 49f32: 486b 004c pea %a3@(76) <== NOT EXECUTED 49f36: 4eb9 0004 6e78 jsr 46e78 <_Chain_Append> <== NOT EXECUTED rtems_chain_append( &parent->info.directory.Entries, &node->Node ); return node; 49f3c: 508f addql #8,%sp <== NOT EXECUTED 49f3e: 6000 ff4e braw 49e8e <== NOT EXECUTED node->info.file.size = 0; node->info.file.indirect = 0; node->info.file.doubly_indirect = 0; node->info.file.triply_indirect = 0; } else if ( type == IMFS_FIFO ) { node->info.fifo.pipe = NULL; 49f42: 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; 49f46: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED } /* * This node MUST have a parent, so put it in that directory list. */ node->Parent = parent; 49f4a: 2b4b 0008 movel %a3,%a5@(8) <== NOT EXECUTED node->st_ino = ++fs_info->ino_count; 49f4e: 5280 addql #1,%d0 <== NOT EXECUTED 49f50: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED 49f54: 2b40 0034 movel %d0,%a5@(52) <== NOT EXECUTED 49f58: 2f0d movel %a5,%sp@- <== NOT EXECUTED 49f5a: 486b 004c pea %a3@(76) <== NOT EXECUTED 49f5e: 4eb9 0004 6e78 jsr 46e78 <_Chain_Append> <== NOT EXECUTED rtems_chain_append( &parent->info.directory.Entries, &node->Node ); return node; 49f64: 508f addql #8,%sp <== NOT EXECUTED 49f66: 6000 ff26 braw 49e8e <== NOT EXECUTED } 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; node->info.linearfile.direct = 0; 49f6a: 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; 49f6e: 4280 clrl %d0 <== NOT EXECUTED 49f70: 4281 clrl %d1 <== NOT EXECUTED } /* * This node MUST have a parent, so put it in that directory list. */ node->Parent = parent; 49f72: 2b4b 0008 movel %a3,%a5@(8) <== 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; 49f76: 2b40 004c movel %d0,%a5@(76) <== NOT EXECUTED 49f7a: 2b41 0050 movel %d1,%a5@(80) <== 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; 49f7e: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 49f82: 5280 addql #1,%d0 <== NOT EXECUTED 49f84: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED 49f88: 2b40 0034 movel %d0,%a5@(52) <== NOT EXECUTED 49f8c: 2f0d movel %a5,%sp@- <== NOT EXECUTED 49f8e: 486b 004c pea %a3@(76) <== NOT EXECUTED 49f92: 4eb9 0004 6e78 jsr 46e78 <_Chain_Append> <== NOT EXECUTED rtems_chain_append( &parent->info.directory.Entries, &node->Node ); return node; 49f98: 508f addql #8,%sp <== NOT EXECUTED 49f9a: 6000 fef2 braw 49e8e <== NOT EXECUTED } 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; node->info.file.indirect = 0; 49f9e: 42ad 0054 clrl %a5@(84) <== NOT EXECUTED node->info.device.minor = info->device.minor; } else if ( type == IMFS_LINEAR_FILE ) { node->info.linearfile.size = 0; node->info.linearfile.direct = 0; } else if ( type == IMFS_MEMORY_FILE ) { node->info.file.size = 0; 49fa2: 4280 clrl %d0 <== NOT EXECUTED 49fa4: 4281 clrl %d1 <== NOT EXECUTED node->info.file.indirect = 0; node->info.file.doubly_indirect = 0; 49fa6: 42ad 0058 clrl %a5@(88) <== NOT EXECUTED node->info.device.minor = info->device.minor; } else if ( type == IMFS_LINEAR_FILE ) { node->info.linearfile.size = 0; node->info.linearfile.direct = 0; } else if ( type == IMFS_MEMORY_FILE ) { node->info.file.size = 0; 49faa: 2b40 004c movel %d0,%a5@(76) <== NOT EXECUTED 49fae: 2b41 0050 movel %d1,%a5@(80) <== NOT EXECUTED node->info.file.indirect = 0; node->info.file.doubly_indirect = 0; node->info.file.triply_indirect = 0; 49fb2: 42ad 005c clrl %a5@(92) <== 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; 49fb6: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 49fba: 5280 addql #1,%d0 <== NOT EXECUTED } /* * This node MUST have a parent, so put it in that directory list. */ node->Parent = parent; 49fbc: 2b4b 0008 movel %a3,%a5@(8) <== NOT EXECUTED node->st_ino = ++fs_info->ino_count; 49fc0: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED 49fc4: 2b40 0034 movel %d0,%a5@(52) <== NOT EXECUTED 49fc8: 2f0d movel %a5,%sp@- <== NOT EXECUTED 49fca: 486b 004c pea %a3@(76) <== NOT EXECUTED 49fce: 4eb9 0004 6e78 jsr 46e78 <_Chain_Append> <== NOT EXECUTED rtems_chain_append( &parent->info.directory.Entries, &node->Node ); return node; 49fd4: 508f addql #8,%sp <== NOT EXECUTED 49fd6: 6000 feb6 braw 49e8e <== NOT EXECUTED =============================================================================== 0004a990 : #include #include "imfs.h" void IMFS_create_orphan( IMFS_jnode_t *jnode ) { 4a990: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 4a994: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a996: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED if ( jnode->Parent != NULL ) { 4a99a: 4aaa 0008 tstl %a2@(8) <== NOT EXECUTED 4a99e: 670e beqs 4a9ae <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void rtems_chain_extract( rtems_chain_node *the_node ) { _Chain_Extract( the_node ); 4a9a0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a9a2: 4eb9 0004 6eb0 jsr 46eb0 <_Chain_Extract> <== NOT EXECUTED rtems_chain_extract( &jnode->Node ); jnode->Parent = NULL; 4a9a8: 588f addql #4,%sp <== NOT EXECUTED 4a9aa: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED } --jnode->st_nlink; IMFS_update_ctime( jnode ); 4a9ae: 42a7 clrl %sp@- <== NOT EXECUTED 4a9b0: 486e fff8 pea %fp@(-8) <== NOT EXECUTED if ( jnode->Parent != NULL ) { rtems_chain_extract( &jnode->Node ); jnode->Parent = NULL; } --jnode->st_nlink; 4a9b4: 302a 0032 movew %a2@(50),%d0 <== NOT EXECUTED 4a9b8: 5380 subql #1,%d0 <== NOT EXECUTED 4a9ba: 3540 0032 movew %d0,%a2@(50) <== NOT EXECUTED IMFS_update_ctime( jnode ); 4a9be: 4eb9 0004 2d8c jsr 42d8c <== NOT EXECUTED 4a9c4: 256e fff8 0044 movel %fp@(-8),%a2@(68) <== NOT EXECUTED 4a9ca: 508f addql #8,%sp <== NOT EXECUTED } 4a9cc: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 4a9d0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00049fda : return node; } IMFS_jnode_t *IMFS_create_root_node(void) { 49fda: 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) ); 49fde: 4878 41ed pea 41ed 49fe2: 4879 0005 c850 pea 5c850 49fe8: 4878 0001 pea 1 49fec: 4eb9 0004 9d70 jsr 49d70 if ( !node ) 49ff2: 4fef 000c lea %sp@(12),%sp 49ff6: 4a80 tstl %d0 49ff8: 6716 beqs 4a010 <== NEVER TAKEN Chain_Node *tail = _Chain_Tail( the_chain ); 49ffa: 2240 moveal %d0,%a1 head->next = tail; head->previous = NULL; 49ffc: 2040 moveal %d0,%a0 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 ); 49ffe: 43e9 0050 lea %a1@(80),%a1 4a002: 2149 004c movel %a1,%a0@(76) */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); 4a006: 5989 subql #4,%a1 Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; head->previous = NULL; 4a008: 42a8 0050 clrl %a0@(80) */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); 4a00c: 2149 0054 movel %a1,%a0@(84) * NOTE: Root node is always a directory. */ rtems_chain_initialize_empty(&node->info.directory.Entries); return node; } 4a010: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00044fba : * NOTE: Assuming the "/" directory is bad. * Not checking that the starting directory is in an IMFS is bad. */ void IMFS_dump( void ) { 44fba: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED fprintf(stdout, "*************** Dump of Entire IMFS ***************\n" ); 44fbe: 2079 0006 3a64 moveal 63a64 <_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 ) { 44fc4: 2f0a movel %a2,%sp@- <== NOT EXECUTED fprintf(stdout, "*************** Dump of Entire IMFS ***************\n" ); 44fc6: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44fca: 45f9 0005 2e9c lea 52e9c ,%a2 <== NOT EXECUTED 44fd0: 4878 0034 pea 34 <== NOT EXECUTED 44fd4: 4878 0001 pea 1 <== NOT EXECUTED 44fd8: 4879 0006 2366 pea 62366 <== NOT EXECUTED 44fde: 4e92 jsr %a2@ <== NOT EXECUTED fprintf(stdout, "/\n" ); 44fe0: 2079 0006 3a64 moveal 63a64 <_impure_ptr>,%a0 <== NOT EXECUTED 44fe6: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44fea: 4878 0002 pea 2 <== NOT EXECUTED 44fee: 4878 0001 pea 1 <== NOT EXECUTED 44ff2: 4879 0006 239b pea 6239b <== NOT EXECUTED 44ff8: 4e92 jsr %a2@ <== NOT EXECUTED IMFS_dump_directory( rtems_filesystem_root.node_access, 0 ); 44ffa: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 44ffe: 2079 0006 39e0 moveal 639e0 ,%a0 <== NOT EXECUTED 45004: 4297 clrl %sp@ <== NOT EXECUTED 45006: 2f28 0018 movel %a0@(24),%sp@- <== NOT EXECUTED 4500a: 4eb9 0004 4f2c jsr 44f2c <== NOT EXECUTED fprintf(stdout, "*************** End of Dump ***************\n" ); 45010: 2079 0006 3a64 moveal 63a64 <_impure_ptr>,%a0 <== NOT EXECUTED 45016: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 4501a: 4878 0037 pea 37 <== NOT EXECUTED 4501e: 4878 0001 pea 1 <== NOT EXECUTED 45022: 4879 0006 239e pea 6239e <== NOT EXECUTED 45028: 4e92 jsr %a2@ <== NOT EXECUTED } 4502a: 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" ); 4502e: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED } 45032: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00044f2c : */ void IMFS_dump_directory( IMFS_jnode_t *the_directory, int level ) { 44f2c: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 44f30: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 44f34: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@ <== 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)); 44f38: 2808 movel %a0,%d4 <== NOT EXECUTED 44f3a: 0684 0000 0050 addil #80,%d4 <== NOT EXECUTED 44f40: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED * */ int IMFS_memfile_maximum_size( void ) { return IMFS_MEMFILE_MAXIMUM_SIZE; } 44f44: 2668 004c moveal %a0@(76),%a3 <== 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 ); 44f48: b88b cmpl %a3,%d4 <== NOT EXECUTED 44f4a: 6754 beqs 44fa0 <== 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 ); 44f4c: 2a03 movel %d3,%d5 <== NOT EXECUTED 44f4e: 49f9 0004 4da0 lea 44da0 ,%a4 <== NOT EXECUTED 44f54: 45f9 0005 2e9c lea 52e9c ,%a2 <== NOT EXECUTED 44f5a: 5285 addql #1,%d5 <== NOT EXECUTED 44f5c: 4bf9 0004 4f2c lea 44f2c ,%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++ ) 44f62: 4a83 tstl %d3 <== NOT EXECUTED 44f64: 6d26 blts 44f8c <== NOT EXECUTED 44f66: 4282 clrl %d2 <== NOT EXECUTED fprintf(stdout, "...." ); 44f68: 2079 0006 3a64 moveal 63a64 <_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++ ) 44f6e: 5282 addql #1,%d2 <== NOT EXECUTED fprintf(stdout, "...." ); 44f70: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44f74: 4878 0004 pea 4 <== NOT EXECUTED 44f78: 4878 0001 pea 1 <== NOT EXECUTED 44f7c: 4879 0006 2361 pea 62361 <== NOT EXECUTED 44f82: 4e92 jsr %a2@ <== 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++ ) 44f84: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 44f88: b483 cmpl %d3,%d2 <== NOT EXECUTED 44f8a: 6fdc bles 44f68 <== NOT EXECUTED fprintf(stdout, "...." ); IMFS_print_jnode( the_jnode ); 44f8c: 2f0b movel %a3,%sp@- <== NOT EXECUTED 44f8e: 4e94 jsr %a4@ <== NOT EXECUTED if ( the_jnode->type == IMFS_DIRECTORY ) 44f90: 588f addql #4,%sp <== NOT EXECUTED 44f92: 7001 moveq #1,%d0 <== NOT EXECUTED 44f94: b0ab 0048 cmpl %a3@(72),%d0 <== NOT EXECUTED 44f98: 6710 beqs 44faa <== 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 ) { 44f9a: 2653 moveal %a3@,%a3 <== 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 ); 44f9c: b88b cmpl %a3,%d4 <== NOT EXECUTED 44f9e: 66c2 bnes 44f62 <== NOT EXECUTED fprintf(stdout, "...." ); IMFS_print_jnode( the_jnode ); if ( the_jnode->type == IMFS_DIRECTORY ) IMFS_dump_directory( the_jnode, level + 1 ); } } 44fa0: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED 44fa6: 4e5e unlk %fp <== NOT EXECUTED 44fa8: 4e75 rts <== 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 ); 44faa: 2f05 movel %d5,%sp@- <== NOT EXECUTED 44fac: 2f0b movel %a3,%sp@- <== NOT EXECUTED 44fae: 4e95 jsr %a5@ <== 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 ) { 44fb0: 2653 moveal %a3@,%a3 <== 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 ); 44fb2: 508f addql #8,%sp <== 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 ); 44fb4: b88b cmpl %a3,%d4 <== NOT EXECUTED 44fb6: 66aa bnes 44f62 <== NOT EXECUTED 44fb8: 60e6 bras 44fa0 <== NOT EXECUTED =============================================================================== 0004a124 : 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 ) ) { 4a124: 70f8 moveq #-8,%d0 const char *pathname, /* IN */ size_t pathnamelen, /* IN */ int flags, /* IN */ rtems_filesystem_location_info_t *pathloc /* IN/OUT */ ) { 4a126: 4e56 ffb0 linkw %fp,#-80 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 ) ) { 4a12a: c0ae 0010 andl %fp@(16),%d0 const char *pathname, /* IN */ size_t pathnamelen, /* IN */ int flags, /* IN */ rtems_filesystem_location_info_t *pathloc /* IN/OUT */ ) { 4a12e: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ 4a132: 2a6e 0008 moveal %fp@(8),%a5 4a136: 246e 000c moveal %fp@(12),%a2 4a13a: 286e 0014 moveal %fp@(20),%a4 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 ) ) { 4a13e: 4a80 tstl %d0 4a140: 6600 0238 bnew 4a37a 4a144: 2c0e movel %fp,%d6 4a146: 280e movel %fp,%d4 size_t pathnamelen, /* IN */ int flags, /* IN */ rtems_filesystem_location_info_t *pathloc /* IN/OUT */ ) { int i = 0; 4a148: 4282 clrl %d2 4a14a: 5986 subql #4,%d6 4a14c: 0684 ffff ffdb addil #-37,%d4 4a152: 2a3c 0004 a8b0 movel #305328,%d5 } /* * Otherwise find the token name in the present location. */ node = IMFS_find_match_in_dir( node, token ); 4a158: 2e3c 0004 a834 movel #305204,%d7 /* * This was filled in by the caller and is valid in the * mount table. */ node = pathloc->node_access; 4a15e: 2654 moveal %a4@,%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 ); 4a160: 2f06 movel %d6,%sp@- 4a162: 2045 moveal %d5,%a0 4a164: 2f04 movel %d4,%sp@- 4a166: 2f0a movel %a2,%sp@- 4a168: 4875 2800 pea %a5@(00000000,%d2:l) 4a16c: 4e90 jsr %a0@ pathnamelen -= len; i += len; if ( !pathloc->node_access ) 4a16e: 2054 moveal %a4@,%a0 * 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 ); 4a170: 2600 movel %d0,%d3 pathnamelen -= len; i += len; if ( !pathloc->node_access ) 4a172: 4fef 0010 lea %sp@(16),%sp */ while( (type != IMFS_NO_MORE_PATH) && (type != IMFS_INVALID_TOKEN) ) { type = IMFS_get_token( &pathname[i], pathnamelen, token, &len ); pathnamelen -= len; 4a176: 202e fffc movel %fp@(-4),%d0 i += len; if ( !pathloc->node_access ) 4a17a: 4a88 tstl %a0 4a17c: 6700 00f8 beqw 4a276 */ while( (type != IMFS_NO_MORE_PATH) && (type != IMFS_INVALID_TOKEN) ) { type = IMFS_get_token( &pathname[i], pathnamelen, token, &len ); pathnamelen -= len; 4a180: 95c0 subal %d0,%a2 i += len; 4a182: d480 addl %d0,%d2 rtems_set_errno_and_return_minus_one( ENOENT ); /* * I cannot move out of this directory without execute permission. */ if ( type != IMFS_NO_MORE_PATH ) 4a184: 4a83 tstl %d3 4a186: 6662 bnes 4a1ea * 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 ) { 4a188: 7201 moveq #1,%d1 4a18a: b2a8 0048 cmpl %a0@(72),%d1 4a18e: 6600 0132 bnew 4a2c2 if ( node->info.directory.mt_fs != NULL ) { 4a192: 2068 0058 moveal %a0@(88),%a0 4a196: 4a88 tstl %a0 4a198: 6700 0128 beqw 4a2c2 4a19c: 28a8 001c movel %a0@(28),%a4@ <== NOT EXECUTED 4a1a0: 2268 0028 moveal %a0@(40),%a1 <== NOT EXECUTED 4a1a4: 2628 0020 movel %a0@(32),%d3 <== NOT EXECUTED 4a1a8: 2228 0024 movel %a0@(36),%d1 <== NOT EXECUTED 4a1ac: 2028 002c movel %a0@(44),%d0 <== NOT EXECUTED newloc = node->info.directory.mt_fs->mt_fs_root; *pathloc = newloc; return (*pathloc->ops->evalpath_h)( &pathname[i-len], 4a1b0: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4a1b2: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4a1b6: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED 4a1ba: 4872 8800 pea %a2@(00000000,%a0:l) <== NOT EXECUTED 4a1be: 9488 subl %a0,%d2 <== NOT EXECUTED 4a1c0: 4875 2800 pea %a5@(00000000,%d2:l) <== NOT EXECUTED 4a1c4: 2051 moveal %a1@,%a0 <== NOT EXECUTED * * NOTE: The behavior of stat() on a mount point appears to be questionable. */ if ( node->type == IMFS_DIRECTORY ) { if ( node->info.directory.mt_fs != NULL ) { 4a1c6: 2943 0004 movel %d3,%a4@(4) <== NOT EXECUTED 4a1ca: 2941 0008 movel %d1,%a4@(8) <== NOT EXECUTED 4a1ce: 2949 000c movel %a1,%a4@(12) <== NOT EXECUTED 4a1d2: 2940 0010 movel %d0,%a4@(16) <== NOT EXECUTED newloc = node->info.directory.mt_fs->mt_fs_root; *pathloc = newloc; return (*pathloc->ops->evalpath_h)( &pathname[i-len], 4a1d6: 4e90 jsr %a0@ <== NOT EXECUTED 4a1d8: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4a1dc: 2600 movel %d0,%d3 <== NOT EXECUTED if ( !IMFS_evaluate_permission( pathloc, flags ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a1de: 2003 movel %d3,%d0 4a1e0: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 4a1e6: 4e5e unlk %fp 4a1e8: 4e75 rts /* * I cannot move out of this directory without execute permission. */ if ( type != IMFS_NO_MORE_PATH ) if ( node->type == IMFS_DIRECTORY ) 4a1ea: 7001 moveq #1,%d0 4a1ec: b0ab 0048 cmpl %a3@(72),%d0 4a1f0: 6700 00b8 beqw 4a2aa if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_SEARCH ) ) rtems_set_errno_and_return_minus_one( EACCES ); node = pathloc->node_access; 4a1f4: 2648 moveal %a0,%a3 switch( type ) { 4a1f6: 7003 moveq #3,%d0 4a1f8: b083 cmpl %d3,%d0 4a1fa: 671c beqs 4a218 4a1fc: 7204 moveq #4,%d1 4a1fe: b283 cmpl %d3,%d1 4a200: 6700 008e beqw 4a290 4a204: 103c 0002 moveb #2,%d0 4a208: b083 cmpl %d3,%d0 4a20a: 6748 beqs 4a254 <== NEVER TAKEN /* * Evaluate all tokens until we are done or an error occurs. */ while( (type != IMFS_NO_MORE_PATH) && (type != IMFS_INVALID_TOKEN) ) { 4a20c: 7004 moveq #4,%d0 4a20e: b083 cmpl %d3,%d0 4a210: 6600 ff4e bnew 4a160 4a214: 6000 ff72 braw 4a188 <== NOT EXECUTED case IMFS_NAME: /* * If we are at a link follow it. */ if ( node->type == IMFS_HARD_LINK ) { 4a218: 2028 0048 movel %a0@(72),%d0 4a21c: 7203 moveq #3,%d1 4a21e: b280 cmpl %d0,%d1 4a220: 6700 00d8 beqw 4a2fa * It would be a design error if we evaluated the link and * was broken. */ IMFS_assert( node ); } else if ( node->type == IMFS_SYM_LINK ) { 4a224: 7204 moveq #4,%d1 4a226: b280 cmpl %d0,%d1 4a228: 6700 0134 beqw 4a35e } /* * Only a directory can be decended into. */ if ( node->type != IMFS_DIRECTORY ) 4a22c: 7201 moveq #1,%d1 4a22e: b280 cmpl %d0,%d1 4a230: 6600 0162 bnew 4a394 /* * 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 ) { 4a234: 206b 0058 moveal %a3@(88),%a0 4a238: 4a88 tstl %a0 4a23a: 6600 ff60 bnew 4a19c } /* * Otherwise find the token name in the present location. */ node = IMFS_find_match_in_dir( node, token ); 4a23e: 2f04 movel %d4,%sp@- 4a240: 2047 moveal %d7,%a0 4a242: 2f0b movel %a3,%sp@- 4a244: 4e90 jsr %a0@ if ( !node ) 4a246: 508f addql #8,%sp } /* * Otherwise find the token name in the present location. */ node = IMFS_find_match_in_dir( node, token ); 4a248: 2640 moveal %d0,%a3 if ( !node ) 4a24a: 4a80 tstl %d0 4a24c: 6728 beqs 4a276 /* * Set the node access to the point we have found. */ pathloc->node_access = node; 4a24e: 288b movel %a3,%a4@ 4a250: 6000 ff0e braw 4a160 case IMFS_UP_DIR: /* * Am I at the root of all filesystems? (chroot'ed?) */ if ( pathloc->node_access == rtems_filesystem_root.node_access ) 4a254: 2279 0005 d740 moveal 5d740 ,%a1 <== NOT EXECUTED 4a25a: b1e9 0018 cmpal %a1@(24),%a0 <== NOT EXECUTED 4a25e: 6700 ff00 beqw 4a160 <== NOT EXECUTED /* * Am I at the root of this mounted filesystem? */ if (pathloc->node_access == pathloc->mt_entry->mt_fs_root.node_access) { 4a262: 226c 0010 moveal %a4@(16),%a1 <== NOT EXECUTED /* * Am I at the root of this mounted filesystem? */ if (pathloc->node_access == 4a266: b1e9 001c cmpal %a1@(28),%a0 <== NOT EXECUTED 4a26a: 6700 00a4 beqw 4a310 <== NOT EXECUTED pathnamelen+len, flags,pathloc); } } else { if ( !node->Parent ) 4a26e: 2668 0008 moveal %a0@(8),%a3 <== NOT EXECUTED 4a272: 4a8b tstl %a3 <== NOT EXECUTED 4a274: 66d8 bnes 4a24e <== NOT EXECUTED /* * Otherwise find the token name in the present location. */ node = IMFS_find_match_in_dir( node, token ); if ( !node ) rtems_set_errno_and_return_minus_one( ENOENT ); 4a276: 4eb9 0004 d85c jsr 4d85c <__errno> 4a27c: 76ff moveq #-1,%d3 4a27e: 7a02 moveq #2,%d5 4a280: 2040 moveal %d0,%a0 if ( !IMFS_evaluate_permission( pathloc, flags ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a282: 2003 movel %d3,%d0 /* * Otherwise find the token name in the present location. */ node = IMFS_find_match_in_dir( node, token ); if ( !node ) rtems_set_errno_and_return_minus_one( ENOENT ); 4a284: 2085 movel %d5,%a0@ if ( !IMFS_evaluate_permission( pathloc, flags ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a286: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 4a28c: 4e5e unlk %fp 4a28e: 4e75 rts case IMFS_NO_MORE_PATH: case IMFS_CURRENT_DIR: break; case IMFS_INVALID_TOKEN: rtems_set_errno_and_return_minus_one( ENAMETOOLONG ); 4a290: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED 4a296: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a298: 785b moveq #91,%d4 <== NOT EXECUTED 4a29a: 2040 moveal %d0,%a0 <== NOT EXECUTED if ( !IMFS_evaluate_permission( pathloc, flags ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a29c: 2003 movel %d3,%d0 <== NOT EXECUTED case IMFS_NO_MORE_PATH: case IMFS_CURRENT_DIR: break; case IMFS_INVALID_TOKEN: rtems_set_errno_and_return_minus_one( ENAMETOOLONG ); 4a29e: 2084 movel %d4,%a0@ <== NOT EXECUTED if ( !IMFS_evaluate_permission( pathloc, flags ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a2a0: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a2a6: 4e5e unlk %fp <== NOT EXECUTED 4a2a8: 4e75 rts <== NOT EXECUTED /* * I cannot move out of this directory without execute permission. */ if ( type != IMFS_NO_MORE_PATH ) if ( node->type == IMFS_DIRECTORY ) if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_SEARCH ) ) 4a2aa: 4878 0001 pea 1 4a2ae: 2f0c movel %a4,%sp@- 4a2b0: 4eb9 0004 a09e jsr 4a09e 4a2b6: 508f addql #8,%sp 4a2b8: 4a80 tstl %d0 4a2ba: 6724 beqs 4a2e0 <== NEVER TAKEN 4a2bc: 2054 moveal %a4@,%a0 4a2be: 6000 ff34 braw 4a1f4 flags, pathloc ); } else { result = IMFS_Set_handlers( pathloc ); } } else { result = IMFS_Set_handlers( pathloc ); 4a2c2: 2f0c movel %a4,%sp@- 4a2c4: 4eb9 0004 a014 jsr 4a014 /* * Verify we have the correct permissions for this node. */ if ( !IMFS_evaluate_permission( pathloc, flags ) ) 4a2ca: 2eae 0010 movel %fp@(16),%sp@ flags, pathloc ); } else { result = IMFS_Set_handlers( pathloc ); } } else { result = IMFS_Set_handlers( pathloc ); 4a2ce: 2600 movel %d0,%d3 /* * Verify we have the correct permissions for this node. */ if ( !IMFS_evaluate_permission( pathloc, flags ) ) 4a2d0: 2f0c movel %a4,%sp@- 4a2d2: 4eb9 0004 a09e jsr 4a09e 4a2d8: 508f addql #8,%sp 4a2da: 4a80 tstl %d0 4a2dc: 6600 ff00 bnew 4a1de rtems_set_errno_and_return_minus_one( EACCES ); 4a2e0: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED 4a2e6: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a2e8: 740d moveq #13,%d2 <== NOT EXECUTED 4a2ea: 2040 moveal %d0,%a0 <== NOT EXECUTED return result; } 4a2ec: 2003 movel %d3,%d0 <== NOT EXECUTED /* * Verify we have the correct permissions for this node. */ if ( !IMFS_evaluate_permission( pathloc, flags ) ) rtems_set_errno_and_return_minus_one( EACCES ); 4a2ee: 2082 movel %d2,%a0@ <== NOT EXECUTED return result; } 4a2f0: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a2f6: 4e5e unlk %fp <== NOT EXECUTED 4a2f8: 4e75 rts <== NOT EXECUTED case IMFS_NAME: /* * If we are at a link follow it. */ if ( node->type == IMFS_HARD_LINK ) { IMFS_evaluate_hard_link( pathloc, 0 ); 4a2fa: 42a7 clrl %sp@- <== NOT EXECUTED 4a2fc: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4a2fe: 4eb9 0004 a0d8 jsr 4a0d8 <== NOT EXECUTED node = pathloc->node_access; 4a304: 2654 moveal %a4@,%a3 <== NOT EXECUTED 4a306: 508f addql #8,%sp <== NOT EXECUTED 4a308: 202b 0048 movel %a3@(72),%d0 <== NOT EXECUTED 4a30c: 6000 ff1e braw 4a22c <== NOT EXECUTED /* * Am I at the root of this mounted filesystem? */ if (pathloc->node_access == 4a310: 28a9 0008 movel %a1@(8),%a4@ <== NOT EXECUTED 4a314: 2069 0014 moveal %a1@(20),%a0 <== NOT EXECUTED 4a318: 2629 000c movel %a1@(12),%d3 <== NOT EXECUTED 4a31c: 2229 0010 movel %a1@(16),%d1 <== NOT EXECUTED 4a320: 2029 0018 movel %a1@(24),%d0 <== 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; *pathloc = newloc; return (*pathloc->ops->evalpath_h)(&(pathname[i-len]), 4a324: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4a326: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4a32a: 226e fffc moveal %fp@(-4),%a1 <== NOT EXECUTED 4a32e: 4872 9800 pea %a2@(00000000,%a1:l) <== NOT EXECUTED 4a332: 9489 subl %a1,%d2 <== NOT EXECUTED 4a334: 4875 2800 pea %a5@(00000000,%d2:l) <== NOT EXECUTED 4a338: 2250 moveal %a0@,%a1 <== NOT EXECUTED /* * Am I at the root of this mounted filesystem? */ if (pathloc->node_access == 4a33a: 2943 0004 movel %d3,%a4@(4) <== NOT EXECUTED 4a33e: 2941 0008 movel %d1,%a4@(8) <== NOT EXECUTED 4a342: 2948 000c movel %a0,%a4@(12) <== NOT EXECUTED 4a346: 2940 0010 movel %d0,%a4@(16) <== 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; *pathloc = newloc; return (*pathloc->ops->evalpath_h)(&(pathname[i-len]), 4a34a: 4e91 jsr %a1@ <== NOT EXECUTED 4a34c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4a350: 2600 movel %d0,%d3 <== NOT EXECUTED if ( !IMFS_evaluate_permission( pathloc, flags ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a352: 2003 movel %d3,%d0 <== NOT EXECUTED 4a354: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a35a: 4e5e unlk %fp <== NOT EXECUTED 4a35c: 4e75 rts <== NOT EXECUTED * was broken. */ IMFS_assert( node ); } else if ( node->type == IMFS_SYM_LINK ) { result = IMFS_evaluate_sym_link( pathloc, 0 ); 4a35e: 42a7 clrl %sp@- <== NOT EXECUTED 4a360: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4a362: 4eb9 0004 a3bc jsr 4a3bc <== NOT EXECUTED /* * In contrast to a hard link, it is possible to have a broken * symbolic link. */ node = pathloc->node_access; 4a368: 2654 moveal %a4@,%a3 <== NOT EXECUTED if ( result == -1 ) 4a36a: 508f addql #8,%sp <== NOT EXECUTED 4a36c: 72ff moveq #-1,%d1 <== NOT EXECUTED 4a36e: b280 cmpl %d0,%d1 <== NOT EXECUTED 4a370: 673c beqs 4a3ae <== NOT EXECUTED /* * In contrast to a hard link, it is possible to have a broken * symbolic link. */ node = pathloc->node_access; 4a372: 202b 0048 movel %a3@(72),%d0 <== NOT EXECUTED 4a376: 6000 feb4 braw 4a22c <== NOT EXECUTED rtems_filesystem_location_info_t newloc; IMFS_jnode_t *node; int result; if ( !rtems_libio_is_valid_perms( flags ) ) { rtems_set_errno_and_return_minus_one( EIO ); 4a37a: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED 4a380: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a382: 7e05 moveq #5,%d7 <== NOT EXECUTED 4a384: 2040 moveal %d0,%a0 <== NOT EXECUTED if ( !IMFS_evaluate_permission( pathloc, flags ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a386: 2003 movel %d3,%d0 <== NOT EXECUTED rtems_filesystem_location_info_t newloc; IMFS_jnode_t *node; int result; if ( !rtems_libio_is_valid_perms( flags ) ) { rtems_set_errno_and_return_minus_one( EIO ); 4a388: 2087 movel %d7,%a0@ <== NOT EXECUTED if ( !IMFS_evaluate_permission( pathloc, flags ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a38a: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a390: 4e5e unlk %fp <== NOT EXECUTED 4a392: 4e75 rts <== NOT EXECUTED /* * Only a directory can be decended into. */ if ( node->type != IMFS_DIRECTORY ) rtems_set_errno_and_return_minus_one( ENOTDIR ); 4a394: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED 4a39a: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a39c: 7c14 moveq #20,%d6 <== NOT EXECUTED 4a39e: 2040 moveal %d0,%a0 <== NOT EXECUTED if ( !IMFS_evaluate_permission( pathloc, flags ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a3a0: 2003 movel %d3,%d0 <== NOT EXECUTED /* * Only a directory can be decended into. */ if ( node->type != IMFS_DIRECTORY ) rtems_set_errno_and_return_minus_one( ENOTDIR ); 4a3a2: 2086 movel %d6,%a0@ <== NOT EXECUTED if ( !IMFS_evaluate_permission( pathloc, flags ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a3a4: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a3aa: 4e5e unlk %fp <== NOT EXECUTED 4a3ac: 4e75 rts <== NOT EXECUTED 4a3ae: 2600 movel %d0,%d3 <== NOT EXECUTED 4a3b0: 2003 movel %d3,%d0 <== NOT EXECUTED 4a3b2: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a3b8: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004a4fe : int IMFS_evaluate_for_make( const char *path, /* IN */ rtems_filesystem_location_info_t *pathloc, /* IN/OUT */ const char **name /* OUT */ ) { 4a4fe: 4e56 ffb0 linkw %fp,#-80 4a502: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ 4a506: 286e 0008 moveal %fp@(8),%a4 4a50a: 2e0e movel %fp,%d7 4a50c: 2c0e movel %fp,%d6 int i = 0; 4a50e: 4284 clrl %d4 4a510: 5987 subql #4,%d7 4a512: 0686 ffff ffdb addil #-37,%d6 4a518: 4bf9 0004 a8b0 lea 4a8b0 ,%a5 node = pathloc->node_access; /* * Get the path length. */ pathlen = strlen( path ); 4a51e: 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 */ ) { 4a520: 266e 000c moveal %fp@(12),%a3 node = pathloc->node_access; /* * Get the path length. */ pathlen = strlen( path ); 4a524: 4eb9 0004 ecb4 jsr 4ecb4 /* * This was filled in by the caller and is valid in the * mount table. */ node = pathloc->node_access; 4a52a: 2453 moveal %a3@,%a2 /* * Get the path length. */ pathlen = strlen( path ); 4a52c: 588f addql #4,%sp 4a52e: 2400 movel %d0,%d2 * Evaluate all tokens until we are done or an error occurs. */ while( !done ) { type = IMFS_get_token( &path[i], pathlen, token, &len ); 4a530: 2f07 movel %d7,%sp@- 4a532: 2f06 movel %d6,%sp@- 4a534: 2f02 movel %d2,%sp@- 4a536: 4874 4800 pea %a4@(00000000,%d4:l) 4a53a: 4e95 jsr %a5@ pathlen -= len; 4a53c: 2a2e fffc movel %fp@(-4),%d5 * Evaluate all tokens until we are done or an error occurs. */ while( !done ) { type = IMFS_get_token( &path[i], pathlen, token, &len ); 4a540: 2600 movel %d0,%d3 pathlen -= len; i += len; if ( !pathloc->node_access ) 4a542: 4fef 0010 lea %sp@(16),%sp */ while( !done ) { type = IMFS_get_token( &path[i], pathlen, token, &len ); pathlen -= len; 4a546: 9485 subl %d5,%d2 i += len; if ( !pathloc->node_access ) 4a548: 2053 moveal %a3@,%a0 4a54a: 4a88 tstl %a0 4a54c: 6700 00ca beqw 4a618 /* * I cannot move out of this directory without execute permission. */ if ( type != IMFS_NO_MORE_PATH ) 4a550: 4a80 tstl %d0 4a552: 6742 beqs 4a596 if ( node->type == IMFS_DIRECTORY ) 4a554: 7001 moveq #1,%d0 4a556: b0aa 0048 cmpl %a2@(72),%d0 4a55a: 6700 00d6 beqw 4a632 while( !done ) { type = IMFS_get_token( &path[i], pathlen, token, &len ); pathlen -= len; i += len; 4a55e: d885 addl %d5,%d4 if ( type != IMFS_NO_MORE_PATH ) if ( node->type == IMFS_DIRECTORY ) if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_SEARCH ) ) rtems_set_errno_and_return_minus_one( EACCES ); node = pathloc->node_access; 4a560: 2448 moveal %a0,%a2 switch( type ) { 4a562: 7002 moveq #2,%d0 4a564: b083 cmpl %d3,%d0 4a566: 6700 008e beqw 4a5f6 4a56a: 6426 bccs 4a592 4a56c: 7203 moveq #3,%d1 4a56e: b283 cmpl %d3,%d1 4a570: 673e beqs 4a5b0 <== ALWAYS TAKEN 4a572: 7004 moveq #4,%d0 <== NOT EXECUTED 4a574: b083 cmpl %d3,%d0 <== NOT EXECUTED 4a576: 66b8 bnes 4a530 <== NOT EXECUTED case IMFS_NO_MORE_PATH: rtems_set_errno_and_return_minus_one( EEXIST ); break; case IMFS_INVALID_TOKEN: rtems_set_errno_and_return_minus_one( ENAMETOOLONG ); 4a578: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED 4a57e: 7c5b moveq #91,%d6 <== NOT EXECUTED 4a580: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a582: 2040 moveal %d0,%a0 <== NOT EXECUTED 4a584: 2086 movel %d6,%a0@ <== NOT EXECUTED if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_WX ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a586: 2003 movel %d3,%d0 4a588: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 4a58e: 4e5e unlk %fp 4a590: 4e75 rts if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_SEARCH ) ) rtems_set_errno_and_return_minus_one( EACCES ); node = pathloc->node_access; switch( type ) { 4a592: 4a83 tstl %d3 4a594: 669a bnes 4a530 <== ALWAYS TAKEN pathloc->node_access = node; break; case IMFS_NO_MORE_PATH: rtems_set_errno_and_return_minus_one( EEXIST ); 4a596: 4eb9 0004 d85c jsr 4d85c <__errno> 4a59c: 76ff moveq #-1,%d3 4a59e: 7e11 moveq #17,%d7 4a5a0: 2040 moveal %d0,%a0 if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_WX ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a5a2: 2003 movel %d3,%d0 pathloc->node_access = node; break; case IMFS_NO_MORE_PATH: rtems_set_errno_and_return_minus_one( EEXIST ); 4a5a4: 2087 movel %d7,%a0@ if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_WX ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a5a6: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 4a5ac: 4e5e unlk %fp 4a5ae: 4e75 rts pathloc->node_access = node; break; case IMFS_NAME: if ( node->type == IMFS_HARD_LINK ) { 4a5b0: 2028 0048 movel %a0@(72),%d0 4a5b4: 7203 moveq #3,%d1 4a5b6: b280 cmpl %d0,%d1 4a5b8: 6700 014e beqw 4a708 result = IMFS_evaluate_link( pathloc, 0 ); if ( result == -1 ) return -1; } else if ( node->type == IMFS_SYM_LINK ) { 4a5bc: 7204 moveq #4,%d1 4a5be: b280 cmpl %d0,%d1 4a5c0: 6700 0146 beqw 4a708 if ( result == -1 ) return -1; } node = pathloc->node_access; if ( !node ) 4a5c4: 4a8a tstl %a2 4a5c6: 6700 015c beqw 4a724 /* * Only a directory can be decended into. */ if ( node->type != IMFS_DIRECTORY ) 4a5ca: 7001 moveq #1,%d0 4a5cc: b0aa 0048 cmpl %a2@(72),%d0 4a5d0: 6600 0152 bnew 4a724 /* * 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 ) { 4a5d4: 206a 0058 moveal %a2@(88),%a0 4a5d8: 4a88 tstl %a0 4a5da: 6600 0162 bnew 4a73e /* * Otherwise find the token name in the present location. */ node = IMFS_find_match_in_dir( node, token ); 4a5de: 2f06 movel %d6,%sp@- 4a5e0: 2f0a movel %a2,%sp@- 4a5e2: 4eb9 0004 a834 jsr 4a834 /* * If there is no node we have found the name of the node we * wish to create. */ if ( ! node ) 4a5e8: 508f addql #8,%sp /* * Otherwise find the token name in the present location. */ node = IMFS_find_match_in_dir( node, token ); 4a5ea: 2440 moveal %d0,%a2 /* * If there is no node we have found the name of the node we * wish to create. */ if ( ! node ) 4a5ec: 4a80 tstl %d0 4a5ee: 675a beqs 4a64a done = true; else pathloc->node_access = node; 4a5f0: 268a movel %a2,%a3@ 4a5f2: 6000 ff3c braw 4a530 case IMFS_UP_DIR: /* * Am I at the root of all filesystems? (chroot'ed?) */ if ( pathloc->node_access == rtems_filesystem_root.node_access ) 4a5f6: 2279 0005 d740 moveal 5d740 ,%a1 <== NOT EXECUTED 4a5fc: b1e9 0018 cmpal %a1@(24),%a0 <== NOT EXECUTED 4a600: 6700 ff2e beqw 4a530 <== NOT EXECUTED /* * Am I at the root of this mounted filesystem? */ if (pathloc->node_access == pathloc->mt_entry->mt_fs_root.node_access){ 4a604: 226b 0010 moveal %a3@(16),%a1 <== NOT EXECUTED 4a608: b1e9 001c cmpal %a1@(28),%a0 <== NOT EXECUTED 4a60c: 6700 00b0 beqw 4a6be <== NOT EXECUTED *pathloc = newloc; return (*pathloc->ops->evalformake_h)( &path[i-len], pathloc, name ); } } else { if ( !node->Parent ) 4a610: 2468 0008 moveal %a0@(8),%a2 <== NOT EXECUTED 4a614: 4a8a tstl %a2 <== NOT EXECUTED 4a616: 66d8 bnes 4a5f0 <== NOT EXECUTED * Verify there is not any invalid stuff at the end of the name. */ for( ; path[i] != '\0'; i++) { if ( !IMFS_is_separator( path[ i ] ) ) rtems_set_errno_and_return_minus_one( ENOENT ); 4a618: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED 4a61e: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a620: 7a02 moveq #2,%d5 <== NOT EXECUTED 4a622: 2040 moveal %d0,%a0 <== NOT EXECUTED if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_WX ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a624: 2003 movel %d3,%d0 <== NOT EXECUTED * Verify there is not any invalid stuff at the end of the name. */ for( ; path[i] != '\0'; i++) { if ( !IMFS_is_separator( path[ i ] ) ) rtems_set_errno_and_return_minus_one( ENOENT ); 4a626: 2085 movel %d5,%a0@ <== NOT EXECUTED if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_WX ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a628: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a62e: 4e5e unlk %fp <== NOT EXECUTED 4a630: 4e75 rts <== NOT EXECUTED * I cannot move out of this directory without execute permission. */ if ( type != IMFS_NO_MORE_PATH ) if ( node->type == IMFS_DIRECTORY ) if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_SEARCH ) ) 4a632: 4878 0001 pea 1 4a636: 2f0b movel %a3,%sp@- 4a638: 4eb9 0004 a09e jsr 4a09e 4a63e: 508f addql #8,%sp 4a640: 4a80 tstl %d0 4a642: 6760 beqs 4a6a4 <== NEVER TAKEN 4a644: 2053 moveal %a3@,%a0 4a646: 6000 ff16 braw 4a55e case IMFS_CURRENT_DIR: break; } } *name = &path[ i - len ]; 4a64a: 2004 movel %d4,%d0 4a64c: 90ae fffc subl %fp@(-4),%d0 4a650: d08c addl %a4,%d0 4a652: 206e 0010 moveal %fp@(16),%a0 4a656: 2080 movel %d0,%a0@ /* * 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++) { 4a658: 1034 4800 moveb %a4@(00000000,%d4:l),%d0 4a65c: 671a beqs 4a678 <== ALWAYS TAKEN 4a65e: 4bf9 0004 3c2c lea 43c2c ,%a5<== NOT EXECUTED * 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( 4a664: 45f4 4801 lea %a4@(00000001,%d4:l),%a2 <== 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++) { if ( !IMFS_is_separator( path[ i ] ) ) 4a668: 49c0 extbl %d0 <== NOT EXECUTED 4a66a: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4a66c: 4e95 jsr %a5@ <== NOT EXECUTED 4a66e: 588f addql #4,%sp <== NOT EXECUTED 4a670: 4a80 tstl %d0 <== NOT EXECUTED 4a672: 67a4 beqs 4a618 <== 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++) { 4a674: 101a moveb %a2@+,%d0 <== NOT EXECUTED 4a676: 66f0 bnes 4a668 <== NOT EXECUTED /* * Verify we can execute and write to this directory. */ result = IMFS_Set_handlers( pathloc ); 4a678: 2f0b movel %a3,%sp@- 4a67a: 4eb9 0004 a014 jsr 4a014 /* * The returned node must be a directory */ node = pathloc->node_access; if ( node->type != IMFS_DIRECTORY ) 4a680: 2053 moveal %a3@,%a0 /* * Verify we can execute and write to this directory. */ result = IMFS_Set_handlers( pathloc ); 4a682: 2600 movel %d0,%d3 /* * The returned node must be a directory */ node = pathloc->node_access; if ( node->type != IMFS_DIRECTORY ) 4a684: 588f addql #4,%sp 4a686: 7001 moveq #1,%d0 4a688: b0a8 0048 cmpl %a0@(72),%d0 4a68c: 6600 0096 bnew 4a724 /* * We must have Write and execute permission on the returned node. */ if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_WX ) ) 4a690: 4878 0003 pea 3 4a694: 2f0b movel %a3,%sp@- 4a696: 4eb9 0004 a09e jsr 4a09e 4a69c: 508f addql #8,%sp 4a69e: 4a80 tstl %d0 4a6a0: 6600 fee4 bnew 4a586 rtems_set_errno_and_return_minus_one( EACCES ); 4a6a4: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED 4a6aa: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a6ac: 740d moveq #13,%d2 <== NOT EXECUTED 4a6ae: 2040 moveal %d0,%a0 <== NOT EXECUTED return result; } 4a6b0: 2003 movel %d3,%d0 <== NOT EXECUTED /* * We must have Write and execute permission on the returned node. */ if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_WX ) ) rtems_set_errno_and_return_minus_one( EACCES ); 4a6b2: 2082 movel %d2,%a0@ <== NOT EXECUTED return result; } 4a6b4: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a6ba: 4e5e unlk %fp <== NOT EXECUTED 4a6bc: 4e75 rts <== NOT EXECUTED /* * Am I at the root of this mounted filesystem? */ if (pathloc->node_access == pathloc->mt_entry->mt_fs_root.node_access){ 4a6be: 2429 000c movel %a1@(12),%d2 <== NOT EXECUTED break; } else { newloc = pathloc->mt_entry->mt_point_node; *pathloc = newloc; return (*pathloc->ops->evalformake_h)( &path[i-len], pathloc, name ); 4a6c2: 98ae fffc subl %fp@(-4),%d4 <== NOT EXECUTED /* * Am I at the root of this mounted filesystem? */ if (pathloc->node_access == pathloc->mt_entry->mt_fs_root.node_access){ 4a6c6: 26a9 0008 movel %a1@(8),%a3@ <== NOT EXECUTED 4a6ca: 2069 0014 moveal %a1@(20),%a0 <== NOT EXECUTED 4a6ce: 2229 0010 movel %a1@(16),%d1 <== NOT EXECUTED 4a6d2: 2029 0018 movel %a1@(24),%d0 <== NOT EXECUTED break; } else { newloc = pathloc->mt_entry->mt_point_node; *pathloc = newloc; return (*pathloc->ops->evalformake_h)( &path[i-len], pathloc, name ); 4a6d6: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4a6da: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4a6dc: 4874 4800 pea %a4@(00000000,%d4:l) <== NOT EXECUTED 4a6e0: 2268 0004 moveal %a0@(4),%a1 <== NOT EXECUTED /* * Am I at the root of this mounted filesystem? */ if (pathloc->node_access == pathloc->mt_entry->mt_fs_root.node_access){ 4a6e4: 2742 0004 movel %d2,%a3@(4) <== NOT EXECUTED 4a6e8: 2741 0008 movel %d1,%a3@(8) <== NOT EXECUTED 4a6ec: 2748 000c movel %a0,%a3@(12) <== NOT EXECUTED 4a6f0: 2740 0010 movel %d0,%a3@(16) <== NOT EXECUTED break; } else { newloc = pathloc->mt_entry->mt_point_node; *pathloc = newloc; return (*pathloc->ops->evalformake_h)( &path[i-len], pathloc, name ); 4a6f4: 4e91 jsr %a1@ <== NOT EXECUTED 4a6f6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4a6fa: 2600 movel %d0,%d3 <== NOT EXECUTED if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_WX ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a6fc: 2003 movel %d3,%d0 <== NOT EXECUTED 4a6fe: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a704: 4e5e unlk %fp <== NOT EXECUTED 4a706: 4e75 rts <== NOT EXECUTED if ( result == -1 ) return -1; } else if ( node->type == IMFS_SYM_LINK ) { result = IMFS_evaluate_link( pathloc, 0 ); 4a708: 42a7 clrl %sp@- <== NOT EXECUTED 4a70a: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4a70c: 4eb9 0004 a444 jsr 4a444 <== NOT EXECUTED if ( result == -1 ) 4a712: 508f addql #8,%sp <== NOT EXECUTED if ( result == -1 ) return -1; } else if ( node->type == IMFS_SYM_LINK ) { result = IMFS_evaluate_link( pathloc, 0 ); 4a714: 2600 movel %d0,%d3 <== NOT EXECUTED if ( result == -1 ) 4a716: 70ff moveq #-1,%d0 <== NOT EXECUTED 4a718: b083 cmpl %d3,%d0 <== NOT EXECUTED 4a71a: 6700 fe6a beqw 4a586 <== NOT EXECUTED 4a71e: 2453 moveal %a3@,%a2 <== NOT EXECUTED 4a720: 6000 fea2 braw 4a5c4 <== NOT EXECUTED /* * The returned node must be a directory */ node = pathloc->node_access; if ( node->type != IMFS_DIRECTORY ) rtems_set_errno_and_return_minus_one( ENOTDIR ); 4a724: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED 4a72a: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a72c: 7814 moveq #20,%d4 <== NOT EXECUTED 4a72e: 2040 moveal %d0,%a0 <== NOT EXECUTED if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_WX ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a730: 2003 movel %d3,%d0 <== NOT EXECUTED /* * The returned node must be a directory */ node = pathloc->node_access; if ( node->type != IMFS_DIRECTORY ) rtems_set_errno_and_return_minus_one( ENOTDIR ); 4a732: 2084 movel %d4,%a0@ <== NOT EXECUTED if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_WX ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a734: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a73a: 4e5e unlk %fp <== NOT EXECUTED 4a73c: 4e75 rts <== 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 ) { 4a73e: 2428 0020 movel %a0@(32),%d2 <== NOT EXECUTED newloc = node->info.directory.mt_fs->mt_fs_root; *pathloc = newloc; return (*pathloc->ops->evalformake_h)( &path[i-len], pathloc, name ); 4a742: 98ae fffc subl %fp@(-4),%d4 <== 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 ) { 4a746: 26a8 001c movel %a0@(28),%a3@ <== NOT EXECUTED 4a74a: 2268 0028 moveal %a0@(40),%a1 <== NOT EXECUTED 4a74e: 2228 0024 movel %a0@(36),%d1 <== NOT EXECUTED 4a752: 2028 002c movel %a0@(44),%d0 <== NOT EXECUTED newloc = node->info.directory.mt_fs->mt_fs_root; *pathloc = newloc; return (*pathloc->ops->evalformake_h)( &path[i-len], pathloc, name ); 4a756: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4a75a: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4a75c: 4874 4800 pea %a4@(00000000,%d4:l) <== NOT EXECUTED 4a760: 2069 0004 moveal %a1@(4),%a0 <== 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 ) { 4a764: 2742 0004 movel %d2,%a3@(4) <== NOT EXECUTED 4a768: 2741 0008 movel %d1,%a3@(8) <== NOT EXECUTED 4a76c: 2749 000c movel %a1,%a3@(12) <== NOT EXECUTED 4a770: 2740 0010 movel %d0,%a3@(16) <== NOT EXECUTED newloc = node->info.directory.mt_fs->mt_fs_root; *pathloc = newloc; return (*pathloc->ops->evalformake_h)( &path[i-len], pathloc, name ); 4a774: 4e90 jsr %a0@ <== NOT EXECUTED 4a776: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4a77a: 2600 movel %d0,%d3 <== NOT EXECUTED if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_WX ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a77c: 2003 movel %d3,%d0 <== NOT EXECUTED 4a77e: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a784: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004a0d8 : int IMFS_evaluate_hard_link( rtems_filesystem_location_info_t *node, /* IN/OUT */ int flags /* IN */ ) { 4a0d8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a0dc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a0de: 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; 4a0e2: 2052 moveal %a2@,%a0 <== NOT EXECUTED 4a0e4: 24a8 004c movel %a0@(76),%a2@ <== NOT EXECUTED IMFS_Set_handlers( node ); 4a0e8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a0ea: 4eb9 0004 a014 jsr 4a014 <== NOT EXECUTED /* * Verify we have the correct permissions for this node. */ if ( !IMFS_evaluate_permission( node, flags ) ) 4a0f0: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4a0f4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a0f6: 4eb9 0004 a09e jsr 4a09e <== NOT EXECUTED 4a0fc: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4a100: 4a80 tstl %d0 <== NOT EXECUTED 4a102: 670a beqs 4a10e <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a104: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED */ if ( !IMFS_evaluate_permission( node, flags ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; 4a108: 4280 clrl %d0 <== NOT EXECUTED } 4a10a: 4e5e unlk %fp <== NOT EXECUTED 4a10c: 4e75 rts <== NOT EXECUTED /* * Verify we have the correct permissions for this node. */ if ( !IMFS_evaluate_permission( node, flags ) ) rtems_set_errno_and_return_minus_one( EACCES ); 4a10e: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED return result; } 4a114: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED /* * Verify we have the correct permissions for this node. */ if ( !IMFS_evaluate_permission( node, flags ) ) rtems_set_errno_and_return_minus_one( EACCES ); 4a118: 2040 moveal %d0,%a0 <== NOT EXECUTED 4a11a: 720d moveq #13,%d1 <== NOT EXECUTED 4a11c: 70ff moveq #-1,%d0 <== NOT EXECUTED return result; } 4a11e: 4e5e unlk %fp <== NOT EXECUTED /* * Verify we have the correct permissions for this node. */ if ( !IMFS_evaluate_permission( node, flags ) ) rtems_set_errno_and_return_minus_one( EACCES ); 4a120: 2081 movel %d1,%a0@ <== NOT EXECUTED return result; } =============================================================================== 0004a444 : */ int IMFS_evaluate_link( rtems_filesystem_location_info_t *node, /* IN/OUT */ int flags /* IN */ ) { 4a444: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED */ rtems_filesystem_link_counts ++; if ( rtems_filesystem_link_counts > MAXSYMLINK ) { rtems_filesystem_link_counts = 0; rtems_set_errno_and_return_minus_one( ELOOP ); 4a448: 2079 0005 d740 moveal 5d740 ,%a0 <== NOT EXECUTED */ int IMFS_evaluate_link( rtems_filesystem_location_info_t *node, /* IN/OUT */ int flags /* IN */ ) { 4a44e: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ <== NOT EXECUTED 4a452: 266e 0008 moveal %fp@(8),%a3 <== 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 ); 4a456: 4bf9 0004 a3bc lea 4a3bc ,%a5 <== NOT EXECUTED /* * Follow the Link node. */ if ( jnode->type == IMFS_HARD_LINK ) result = IMFS_evaluate_hard_link( node, flags ); 4a45c: 49f9 0004 a0d8 lea 4a0d8 ,%a4 <== NOT EXECUTED */ int IMFS_evaluate_link( rtems_filesystem_location_info_t *node, /* IN/OUT */ int flags /* IN */ ) { 4a462: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED IMFS_jnode_t *jnode; int result = 0; do { jnode = node->node_access; 4a466: 2453 moveal %a3@,%a2 <== NOT EXECUTED /* * Increment and check the link counter. */ rtems_filesystem_link_counts ++; if ( rtems_filesystem_link_counts > MAXSYMLINK ) { 4a468: 4281 clrl %d1 <== NOT EXECUTED /* * Increment and check the link counter. */ rtems_filesystem_link_counts ++; 4a46a: 3028 0030 movew %a0@(48),%d0 <== NOT EXECUTED 4a46e: 5280 addql #1,%d0 <== NOT EXECUTED if ( rtems_filesystem_link_counts > MAXSYMLINK ) { 4a470: 3200 movew %d0,%d1 <== NOT EXECUTED /* * Increment and check the link counter. */ rtems_filesystem_link_counts ++; 4a472: 3140 0030 movew %d0,%a0@(48) <== NOT EXECUTED if ( rtems_filesystem_link_counts > MAXSYMLINK ) { 4a476: 7005 moveq #5,%d0 <== NOT EXECUTED 4a478: b081 cmpl %d1,%d0 <== NOT EXECUTED 4a47a: 6564 bcss 4a4e0 <== NOT EXECUTED /* * Follow the Link node. */ if ( jnode->type == IMFS_HARD_LINK ) 4a47c: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED 4a480: 7203 moveq #3,%d1 <== NOT EXECUTED 4a482: b280 cmpl %d0,%d1 <== NOT EXECUTED 4a484: 6740 beqs 4a4c6 <== NOT EXECUTED result = IMFS_evaluate_hard_link( node, flags ); else if (jnode->type == IMFS_SYM_LINK ) 4a486: 7204 moveq #4,%d1 <== NOT EXECUTED 4a488: b280 cmpl %d0,%d1 <== NOT EXECUTED 4a48a: 671a beqs 4a4a6 <== NOT EXECUTED result = IMFS_evaluate_sym_link( node, flags ); } while ( ( result == 0 ) && ( ( jnode->type == IMFS_SYM_LINK ) || 4a48c: 5780 subql #3,%d0 <== NOT EXECUTED 4a48e: 7201 moveq #1,%d1 <== NOT EXECUTED 4a490: b280 cmpl %d0,%d1 <== NOT EXECUTED 4a492: 64d2 bccs 4a466 <== NOT EXECUTED 4a494: 4280 clrl %d0 <== NOT EXECUTED /* * Clear link counter. */ rtems_filesystem_link_counts = 0; 4a496: 4241 clrw %d1 <== NOT EXECUTED 4a498: 3141 0030 movew %d1,%a0@(48) <== NOT EXECUTED return result; } 4a49c: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED 4a4a2: 4e5e unlk %fp <== NOT EXECUTED 4a4a4: 4e75 rts <== 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 ); 4a4a6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4a4a8: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4a4aa: 4e95 jsr %a5@ <== NOT EXECUTED 4a4ac: 508f addql #8,%sp <== NOT EXECUTED } while ( ( result == 0 ) && ( ( jnode->type == IMFS_SYM_LINK ) || ( jnode->type == IMFS_HARD_LINK ) ) ); 4a4ae: 4a80 tstl %d0 <== NOT EXECUTED 4a4b0: 6620 bnes 4a4d2 <== NOT EXECUTED 4a4b2: 202a 0048 movel %a2@(72),%d0 <== 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 ) || 4a4b6: 7201 moveq #1,%d1 <== NOT EXECUTED 4a4b8: 5780 subql #3,%d0 <== NOT EXECUTED ( jnode->type == IMFS_HARD_LINK ) ) ); 4a4ba: 2079 0005 d740 moveal 5d740 ,%a0 <== 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 ) || 4a4c0: b280 cmpl %d0,%d1 <== NOT EXECUTED 4a4c2: 64a2 bccs 4a466 <== NOT EXECUTED 4a4c4: 60ce bras 4a494 <== NOT EXECUTED /* * Follow the Link node. */ if ( jnode->type == IMFS_HARD_LINK ) result = IMFS_evaluate_hard_link( node, flags ); 4a4c6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4a4c8: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4a4ca: 4e94 jsr %a4@ <== NOT EXECUTED 4a4cc: 508f addql #8,%sp <== NOT EXECUTED else if (jnode->type == IMFS_SYM_LINK ) result = IMFS_evaluate_sym_link( node, flags ); } while ( ( result == 0 ) && ( ( jnode->type == IMFS_SYM_LINK ) || ( jnode->type == IMFS_HARD_LINK ) ) ); 4a4ce: 4a80 tstl %d0 <== NOT EXECUTED 4a4d0: 67e0 beqs 4a4b2 <== NOT EXECUTED 4a4d2: 2079 0005 d740 moveal 5d740 ,%a0 <== NOT EXECUTED /* * Clear link counter. */ rtems_filesystem_link_counts = 0; 4a4d8: 4241 clrw %d1 <== NOT EXECUTED 4a4da: 3141 0030 movew %d1,%a0@(48) <== NOT EXECUTED 4a4de: 60bc bras 4a49c <== NOT EXECUTED * Increment and check the link counter. */ rtems_filesystem_link_counts ++; if ( rtems_filesystem_link_counts > MAXSYMLINK ) { rtems_filesystem_link_counts = 0; 4a4e0: 4241 clrw %d1 <== NOT EXECUTED 4a4e2: 3141 0030 movew %d1,%a0@(48) <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ELOOP ); 4a4e6: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED 4a4ec: 725c moveq #92,%d1 <== NOT EXECUTED 4a4ee: 2040 moveal %d0,%a0 <== NOT EXECUTED 4a4f0: 70ff moveq #-1,%d0 <== NOT EXECUTED */ rtems_filesystem_link_counts = 0; return result; } 4a4f2: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED */ rtems_filesystem_link_counts ++; if ( rtems_filesystem_link_counts > MAXSYMLINK ) { rtems_filesystem_link_counts = 0; rtems_set_errno_and_return_minus_one( ELOOP ); 4a4f8: 2081 movel %d1,%a0@ <== NOT EXECUTED */ rtems_filesystem_link_counts = 0; return result; } 4a4fa: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004a09e : uid_t st_uid; gid_t st_gid; IMFS_jnode_t *jnode; int flags_to_test; if ( !rtems_libio_is_valid_perms( flags ) ) 4a09e: 72f8 moveq #-8,%d1 */ int IMFS_evaluate_permission( rtems_filesystem_location_info_t *node, int flags ) { 4a0a0: 4e56 0000 linkw %fp,#0 4a0a4: 202e 000c movel %fp@(12),%d0 uid_t st_uid; gid_t st_gid; IMFS_jnode_t *jnode; int flags_to_test; if ( !rtems_libio_is_valid_perms( flags ) ) 4a0a8: c280 andl %d0,%d1 4a0aa: 661a bnes 4a0c6 <== NEVER TAKEN /* * If all of the flags are set we have permission * to do this. */ if ( ( flags_to_test & jnode->st_mode) == flags_to_test ) 4a0ac: 206e 0008 moveal %fp@(8),%a0 return 1; return 0; } 4a0b0: 4e5e unlk %fp */ flags_to_test = flags; if ( st_uid == jnode->st_uid ) flags_to_test <<= 6; 4a0b2: ed88 lsll #6,%d0 /* * If all of the flags are set we have permission * to do this. */ if ( ( flags_to_test & jnode->st_mode) == flags_to_test ) 4a0b4: 2050 moveal %a0@,%a0 4a0b6: 2200 movel %d0,%d1 4a0b8: c2a8 002e andl %a0@(46),%d1 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 ); 4a0bc: b280 cmpl %d0,%d1 4a0be: 57c0 seq %d0 4a0c0: 49c0 extbl %d0 4a0c2: 4480 negl %d0 */ if ( ( flags_to_test & jnode->st_mode) == flags_to_test ) return 1; return 0; } 4a0c4: 4e75 rts 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 ); 4a0c6: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED 4a0cc: 7201 moveq #1,%d1 <== NOT EXECUTED 4a0ce: 2040 moveal %d0,%a0 <== NOT EXECUTED 4a0d0: 70ff moveq #-1,%d0 <== NOT EXECUTED */ if ( ( flags_to_test & jnode->st_mode) == flags_to_test ) return 1; return 0; } 4a0d2: 4e5e unlk %fp <== NOT EXECUTED 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 ); 4a0d4: 2081 movel %d1,%a0@ <== NOT EXECUTED */ if ( ( flags_to_test & jnode->st_mode) == flags_to_test ) return 1; return 0; } =============================================================================== 0004a3bc : int IMFS_evaluate_sym_link( rtems_filesystem_location_info_t *node, /* IN/OUT */ int flags /* IN */ ) { 4a3bc: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 4a3c0: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED 4a3c4: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED IMFS_jnode_t *jnode = node->node_access; 4a3c8: 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; 4a3ca: 24ab 0008 movel %a3@(8),%a2@ <== NOT EXECUTED int IMFS_evaluate_sym_link( rtems_filesystem_location_info_t *node, /* IN/OUT */ int flags /* IN */ ) { 4a3ce: 242e 000c movel %fp@(12),%d2 <== 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( 4a3d2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a3d4: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4a3d8: 2f2b 004c movel %a3@(76),%sp@- <== NOT EXECUTED 4a3dc: 4eb9 0004 b404 jsr 4b404 <== NOT EXECUTED ); /* * Use eval path to evaluate the path of the symbolic link. */ result = IMFS_eval_path( 4a3e2: 262b 004c movel %a3@(76),%d3 <== NOT EXECUTED 4a3e6: d6ae fffc addl %fp@(-4),%d3 <== NOT EXECUTED 4a3ea: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4a3ec: 4eb9 0004 ecb4 jsr 4ecb4 <== NOT EXECUTED 4a3f2: 2e8a movel %a2,%sp@ <== NOT EXECUTED 4a3f4: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4a3f6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4a3f8: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4a3fa: 4eb9 0004 a124 jsr 4a124 <== NOT EXECUTED 4a400: 2600 movel %d0,%d3 <== NOT EXECUTED strlen( &jnode->info.sym_link.name[i] ), flags, node ); IMFS_Set_handlers( node ); 4a402: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a404: 4eb9 0004 a014 jsr 4a014 <== NOT EXECUTED /* * Verify we have the correct permissions for this node. */ if ( !IMFS_evaluate_permission( node, flags ) ) 4a40a: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 4a40e: 2e82 movel %d2,%sp@ <== NOT EXECUTED 4a410: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a412: 4eb9 0004 a09e jsr 4a09e <== NOT EXECUTED 4a418: 508f addql #8,%sp <== NOT EXECUTED 4a41a: 4a80 tstl %d0 <== NOT EXECUTED 4a41c: 670c beqs 4a42a <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a41e: 2003 movel %d3,%d0 <== NOT EXECUTED 4a420: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4a426: 4e5e unlk %fp <== NOT EXECUTED 4a428: 4e75 rts <== NOT EXECUTED /* * Verify we have the correct permissions for this node. */ if ( !IMFS_evaluate_permission( node, flags ) ) rtems_set_errno_and_return_minus_one( EACCES ); 4a42a: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED 4a430: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a432: 2040 moveal %d0,%a0 <== NOT EXECUTED 4a434: 700d moveq #13,%d0 <== NOT EXECUTED 4a436: 2080 movel %d0,%a0@ <== NOT EXECUTED return result; } 4a438: 2003 movel %d3,%d0 <== NOT EXECUTED 4a43a: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4a440: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004d304 : int IMFS_fchmod( rtems_filesystem_location_info_t *loc, mode_t mode ) { 4d304: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 4d308: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4d30c: 2f0a movel %a2,%sp@- <== NOT EXECUTED IMFS_jnode_t *jnode; #if defined(RTEMS_POSIX_API) uid_t st_uid; #endif jnode = loc->node_access; 4d30e: 2450 moveal %a0@,%a2 <== 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); jnode->st_mode |= mode & (S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX); 4d310: 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); 4d314: 202a 002e movel %a2@(46),%d0 <== NOT EXECUTED jnode->st_mode |= mode & (S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX); 4d318: 0281 0000 0fff andil #4095,%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); 4d31e: 0280 ffff f000 andil #-4096,%d0 <== NOT EXECUTED jnode->st_mode |= mode & (S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX); 4d324: 8280 orl %d0,%d1 <== NOT EXECUTED 4d326: 2541 002e movel %d1,%a2@(46) <== NOT EXECUTED IMFS_update_ctime( jnode ); 4d32a: 42a7 clrl %sp@- <== NOT EXECUTED 4d32c: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4d330: 4eb9 0004 2d8c jsr 42d8c <== NOT EXECUTED 4d336: 256e fff8 0044 movel %fp@(-8),%a2@(68) <== NOT EXECUTED return 0; } 4d33c: 4280 clrl %d0 <== NOT EXECUTED 4d33e: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 4d342: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004d348 : int IMFS_fdatasync( rtems_libio_t *iop ) { return 0; } 4d348: 4280 clrl %d0 <== NOT EXECUTED #include "imfs.h" int IMFS_fdatasync( rtems_libio_t *iop ) { 4d34a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return 0; } 4d34e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004376c : } int IMFS_fifo_close( rtems_libio_t *iop ) { 4376c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 43770: 2f0b movel %a3,%sp@- <== NOT EXECUTED 43772: 2f0a movel %a2,%sp@- <== NOT EXECUTED 43774: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED int err = 0; IMFS_jnode_t *jnode = iop->pathinfo.node_access; 43778: 266a 0018 moveal %a2@(24),%a3 <== NOT EXECUTED pipe_release(&JNODE2PIPE(jnode), iop); 4377c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4377e: 486b 004c pea %a3@(76) <== NOT EXECUTED 43782: 4eb9 0004 cd1a jsr 4cd1a <== NOT EXECUTED iop->flags &= ~LIBIO_FLAGS_OPEN; 43788: 203c ffff feff movel #-257,%d0 <== NOT EXECUTED 4378e: c1aa 0014 andl %d0,%a2@(20) <== NOT EXECUTED IMFS_check_node_remove(jnode); 43792: 2f0b movel %a3,%sp@- <== NOT EXECUTED 43794: 4eb9 0004 3e0c jsr 43e0c <== NOT EXECUTED IMFS_FIFO_RETURN(err); } 4379a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 4379e: 4280 clrl %d0 <== NOT EXECUTED 437a0: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 437a4: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000435e4 : int IMFS_fifo_ioctl( rtems_libio_t *iop, uint32_t command, void *buffer ) { 435e4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 435e8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 435ec: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED 435f0: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED 435f4: 2f02 movel %d2,%sp@- <== NOT EXECUTED int err; if (command == FIONBIO) { 435f6: 0c80 8004 667e cmpil #-2147195266,%d0 <== NOT EXECUTED 435fc: 6724 beqs 43622 <== NOT EXECUTED iop->flags &= ~LIBIO_FLAGS_NO_DELAY; return 0; } } else err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop); 435fe: 2f08 movel %a0,%sp@- <== NOT EXECUTED 43600: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED 43604: 2f09 movel %a1,%sp@- <== NOT EXECUTED 43606: 2f00 movel %d0,%sp@- <== NOT EXECUTED 43608: 2f28 004c movel %a0@(76),%sp@- <== NOT EXECUTED 4360c: 4eb9 0004 d622 jsr 4d622 <== NOT EXECUTED IMFS_FIFO_RETURN(err); 43612: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 43616: 4a80 tstl %d0 <== NOT EXECUTED 43618: 6d46 blts 43660 <== NOT EXECUTED } 4361a: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 4361e: 4e5e unlk %fp <== NOT EXECUTED 43620: 4e75 rts <== NOT EXECUTED ) { int err; if (command == FIONBIO) { if (buffer == NULL) 43622: 4a89 tstl %a1 <== NOT EXECUTED 43624: 6724 beqs 4364a <== NOT EXECUTED err = -EFAULT; else { if (*(int *)buffer) 43626: 4a91 tstl %a1@ <== NOT EXECUTED 43628: 6710 beqs 4363a <== NOT EXECUTED iop->flags |= LIBIO_FLAGS_NO_DELAY; 4362a: 7201 moveq #1,%d1 <== NOT EXECUTED else iop->flags &= ~LIBIO_FLAGS_NO_DELAY; return 0; 4362c: 4280 clrl %d0 <== NOT EXECUTED } else err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop); IMFS_FIFO_RETURN(err); } 4362e: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 43632: 4e5e unlk %fp <== NOT EXECUTED if (command == FIONBIO) { if (buffer == NULL) err = -EFAULT; else { if (*(int *)buffer) iop->flags |= LIBIO_FLAGS_NO_DELAY; 43634: 83a8 0014 orl %d1,%a0@(20) <== NOT EXECUTED } else err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop); IMFS_FIFO_RETURN(err); } 43638: 4e75 rts <== NOT EXECUTED err = -EFAULT; else { if (*(int *)buffer) iop->flags |= LIBIO_FLAGS_NO_DELAY; else iop->flags &= ~LIBIO_FLAGS_NO_DELAY; 4363a: 72fe moveq #-2,%d1 <== NOT EXECUTED return 0; 4363c: 4280 clrl %d0 <== NOT EXECUTED } else err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop); IMFS_FIFO_RETURN(err); } 4363e: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 43642: 4e5e unlk %fp <== NOT EXECUTED err = -EFAULT; else { if (*(int *)buffer) iop->flags |= LIBIO_FLAGS_NO_DELAY; else iop->flags &= ~LIBIO_FLAGS_NO_DELAY; 43644: c3a8 0014 andl %d1,%a0@(20) <== NOT EXECUTED } else err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop); IMFS_FIFO_RETURN(err); } 43648: 4e75 rts <== NOT EXECUTED } } else err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop); IMFS_FIFO_RETURN(err); 4364a: 4eb9 0004 f8ac jsr 4f8ac <__errno> <== NOT EXECUTED ) { int err; if (command == FIONBIO) { if (buffer == NULL) 43650: 740e moveq #14,%d2 <== NOT EXECUTED } } else err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop); IMFS_FIFO_RETURN(err); 43652: 2040 moveal %d0,%a0 <== NOT EXECUTED 43654: 70ff moveq #-1,%d0 <== NOT EXECUTED 43656: 2082 movel %d2,%a0@ <== NOT EXECUTED } 43658: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 4365c: 4e5e unlk %fp <== NOT EXECUTED 4365e: 4e75 rts <== NOT EXECUTED } } else err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop); IMFS_FIFO_RETURN(err); 43660: 2400 movel %d0,%d2 <== NOT EXECUTED 43662: 4482 negl %d2 <== NOT EXECUTED 43664: 4eb9 0004 f8ac jsr 4f8ac <__errno> <== NOT EXECUTED 4366a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4366c: 70ff moveq #-1,%d0 <== NOT EXECUTED 4366e: 2082 movel %d2,%a0@ <== NOT EXECUTED 43670: 60e6 bras 43658 <== NOT EXECUTED =============================================================================== 0004357c : rtems_off64_t IMFS_fifo_lseek( rtems_libio_t *iop, rtems_off64_t offset, int whence ) { 4357c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 43580: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 43584: 2f03 movel %d3,%sp@- <== NOT EXECUTED 43586: 2f02 movel %d2,%sp@- <== NOT EXECUTED off_t err = pipe_lseek(LIBIO2PIPE(iop), offset, whence, iop); 43588: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4358a: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 4358e: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED 43592: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 43596: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4359a: 2f28 004c movel %a0@(76),%sp@- <== NOT EXECUTED 4359e: 4eb9 0004 d682 jsr 4d682 <== NOT EXECUTED IMFS_FIFO_RETURN(err); 435a4: 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); 435a8: 2600 movel %d0,%d3 <== NOT EXECUTED 435aa: 2400 movel %d0,%d2 <== NOT EXECUTED 435ac: 5bc1 smi %d1 <== NOT EXECUTED 435ae: 49c1 extbl %d1 <== NOT EXECUTED IMFS_FIFO_RETURN(err); 435b0: 4a81 tstl %d1 <== NOT EXECUTED 435b2: 6b10 bmis 435c4 <== NOT EXECUTED } 435b4: 2001 movel %d1,%d0 <== NOT EXECUTED 435b6: 2202 movel %d2,%d1 <== NOT EXECUTED 435b8: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 435bc: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 435c0: 4e5e unlk %fp <== NOT EXECUTED 435c2: 4e75 rts <== NOT EXECUTED rtems_off64_t offset, int whence ) { off_t err = pipe_lseek(LIBIO2PIPE(iop), offset, whence, iop); IMFS_FIFO_RETURN(err); 435c4: 4eb9 0004 f8ac jsr 4f8ac <__errno> <== NOT EXECUTED 435ca: 4483 negl %d3 <== NOT EXECUTED 435cc: 2040 moveal %d0,%a0 <== NOT EXECUTED 435ce: 72ff moveq #-1,%d1 <== NOT EXECUTED 435d0: 74ff moveq #-1,%d2 <== NOT EXECUTED 435d2: 2083 movel %d3,%a0@ <== NOT EXECUTED } 435d4: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 435d8: 2001 movel %d1,%d0 <== NOT EXECUTED 435da: 2202 movel %d2,%d1 <== NOT EXECUTED 435dc: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 435e0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000437a8 : rtems_libio_t *iop, const char *pathname, uint32_t flag, uint32_t mode ) { 437a8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 437ac: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 437b0: 2f02 movel %d2,%sp@- <== NOT EXECUTED IMFS_jnode_t *jnode = iop->pathinfo.node_access; int err = fifo_open(&JNODE2PIPE(jnode), iop); 437b2: 2f08 movel %a0,%sp@- <== NOT EXECUTED 437b4: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED 437b8: 41e8 004c lea %a0@(76),%a0 <== NOT EXECUTED 437bc: 2f08 movel %a0,%sp@- <== NOT EXECUTED 437be: 4eb9 0004 cde8 jsr 4cde8 <== NOT EXECUTED IMFS_FIFO_RETURN(err); 437c4: 508f addql #8,%sp <== NOT EXECUTED uint32_t mode ) { IMFS_jnode_t *jnode = iop->pathinfo.node_access; int err = fifo_open(&JNODE2PIPE(jnode), iop); 437c6: 2400 movel %d0,%d2 <== NOT EXECUTED IMFS_FIFO_RETURN(err); 437c8: 6d0a blts 437d4 <== NOT EXECUTED } 437ca: 2002 movel %d2,%d0 <== NOT EXECUTED 437cc: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 437d0: 4e5e unlk %fp <== NOT EXECUTED 437d2: 4e75 rts <== NOT EXECUTED ) { IMFS_jnode_t *jnode = iop->pathinfo.node_access; int err = fifo_open(&JNODE2PIPE(jnode), iop); IMFS_FIFO_RETURN(err); 437d4: 4eb9 0004 f8ac jsr 4f8ac <__errno> <== NOT EXECUTED 437da: 4482 negl %d2 <== NOT EXECUTED 437dc: 2040 moveal %d0,%a0 <== NOT EXECUTED 437de: 2082 movel %d2,%a0@ <== NOT EXECUTED 437e0: 74ff moveq #-1,%d2 <== NOT EXECUTED } 437e2: 2002 movel %d2,%d0 <== NOT EXECUTED 437e4: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 437e8: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000436f2 : ssize_t IMFS_fifo_read( rtems_libio_t *iop, void *buffer, size_t count ) { 436f2: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 436f6: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 436fa: 2f0a movel %a2,%sp@- <== NOT EXECUTED 436fc: 2f02 movel %d2,%sp@- <== NOT EXECUTED IMFS_jnode_t *jnode = iop->pathinfo.node_access; int err = pipe_read(JNODE2PIPE(jnode), buffer, count, iop); 436fe: 2f08 movel %a0,%sp@- <== NOT EXECUTED 43700: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED rtems_libio_t *iop, void *buffer, size_t count ) { IMFS_jnode_t *jnode = iop->pathinfo.node_access; 43704: 2468 0018 moveal %a0@(24),%a2 <== NOT EXECUTED int err = pipe_read(JNODE2PIPE(jnode), buffer, count, iop); 43708: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4370c: 2f2a 004c movel %a2@(76),%sp@- <== NOT EXECUTED 43710: 4eb9 0004 d240 jsr 4d240 <== NOT EXECUTED if (err > 0) 43716: 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); 4371a: 2400 movel %d0,%d2 <== NOT EXECUTED if (err > 0) 4371c: 6f22 bles 43740 <== NOT EXECUTED IMFS_update_atime(jnode); 4371e: 42a7 clrl %sp@- <== NOT EXECUTED 43720: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 43724: 4eb9 0004 4a94 jsr 44a94 <== NOT EXECUTED 4372a: 256e fff8 003c movel %fp@(-8),%a2@(60) <== NOT EXECUTED 43730: 2002 movel %d2,%d0 <== NOT EXECUTED 43732: 508f addql #8,%sp <== NOT EXECUTED IMFS_FIFO_RETURN(err); } 43734: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 43738: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 4373c: 4e5e unlk %fp <== NOT EXECUTED 4373e: 4e75 rts <== NOT EXECUTED int err = pipe_read(JNODE2PIPE(jnode), buffer, count, iop); if (err > 0) IMFS_update_atime(jnode); IMFS_FIFO_RETURN(err); 43740: 4a80 tstl %d0 <== NOT EXECUTED 43742: 660e bnes 43752 <== NOT EXECUTED } 43744: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED int err = pipe_read(JNODE2PIPE(jnode), buffer, count, iop); if (err > 0) IMFS_update_atime(jnode); IMFS_FIFO_RETURN(err); 43748: 4280 clrl %d0 <== NOT EXECUTED } 4374a: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 4374e: 4e5e unlk %fp <== NOT EXECUTED 43750: 4e75 rts <== NOT EXECUTED int err = pipe_read(JNODE2PIPE(jnode), buffer, count, iop); if (err > 0) IMFS_update_atime(jnode); IMFS_FIFO_RETURN(err); 43752: 4eb9 0004 f8ac jsr 4f8ac <__errno> <== NOT EXECUTED 43758: 4482 negl %d2 <== NOT EXECUTED 4375a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4375c: 70ff moveq #-1,%d0 <== NOT EXECUTED 4375e: 2082 movel %d2,%a0@ <== NOT EXECUTED } 43760: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 43764: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 43768: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00043672 : ssize_t IMFS_fifo_write( rtems_libio_t *iop, const void *buffer, size_t count ) { 43672: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 43676: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4367a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4367c: 2f02 movel %d2,%sp@- <== NOT EXECUTED IMFS_jnode_t *jnode = iop->pathinfo.node_access; int err = pipe_write(JNODE2PIPE(jnode), buffer, count, iop); 4367e: 2f08 movel %a0,%sp@- <== NOT EXECUTED 43680: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED rtems_libio_t *iop, const void *buffer, size_t count ) { IMFS_jnode_t *jnode = iop->pathinfo.node_access; 43684: 2468 0018 moveal %a0@(24),%a2 <== NOT EXECUTED int err = pipe_write(JNODE2PIPE(jnode), buffer, count, iop); 43688: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4368c: 2f2a 004c movel %a2@(76),%sp@- <== NOT EXECUTED 43690: 4eb9 0004 d432 jsr 4d432 <== NOT EXECUTED if (err > 0) { 43696: 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); 4369a: 2400 movel %d0,%d2 <== NOT EXECUTED if (err > 0) { 4369c: 6f28 bles 436c6 <== NOT EXECUTED IMFS_mtime_ctime_update(jnode); 4369e: 42a7 clrl %sp@- <== NOT EXECUTED 436a0: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 436a4: 4eb9 0004 4a94 jsr 44a94 <== NOT EXECUTED 436aa: 222e fff8 movel %fp@(-8),%d1 <== NOT EXECUTED 436ae: 2002 movel %d2,%d0 <== NOT EXECUTED 436b0: 508f addql #8,%sp <== NOT EXECUTED 436b2: 2541 0040 movel %d1,%a2@(64) <== NOT EXECUTED } IMFS_FIFO_RETURN(err); } 436b6: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED { IMFS_jnode_t *jnode = iop->pathinfo.node_access; int err = pipe_write(JNODE2PIPE(jnode), buffer, count, iop); if (err > 0) { IMFS_mtime_ctime_update(jnode); 436ba: 2541 0044 movel %d1,%a2@(68) <== NOT EXECUTED } IMFS_FIFO_RETURN(err); } 436be: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 436c2: 4e5e unlk %fp <== NOT EXECUTED 436c4: 4e75 rts <== NOT EXECUTED int err = pipe_write(JNODE2PIPE(jnode), buffer, count, iop); if (err > 0) { IMFS_mtime_ctime_update(jnode); } IMFS_FIFO_RETURN(err); 436c6: 4a80 tstl %d0 <== NOT EXECUTED 436c8: 660e bnes 436d8 <== NOT EXECUTED } 436ca: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED int err = pipe_write(JNODE2PIPE(jnode), buffer, count, iop); if (err > 0) { IMFS_mtime_ctime_update(jnode); } IMFS_FIFO_RETURN(err); 436ce: 4280 clrl %d0 <== NOT EXECUTED } 436d0: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 436d4: 4e5e unlk %fp <== NOT EXECUTED 436d6: 4e75 rts <== NOT EXECUTED int err = pipe_write(JNODE2PIPE(jnode), buffer, count, iop); if (err > 0) { IMFS_mtime_ctime_update(jnode); } IMFS_FIFO_RETURN(err); 436d8: 4eb9 0004 f8ac jsr 4f8ac <__errno> <== NOT EXECUTED 436de: 4482 negl %d2 <== NOT EXECUTED 436e0: 2040 moveal %d0,%a0 <== NOT EXECUTED 436e2: 70ff moveq #-1,%d0 <== NOT EXECUTED 436e4: 2082 movel %d2,%a0@ <== NOT EXECUTED } 436e6: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 436ea: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 436ee: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004a834 : IMFS_jnode_t *IMFS_find_match_in_dir( IMFS_jnode_t *directory, char *name ) { 4a834: 4e56 fff0 linkw %fp,#-16 4a838: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ /* * Check for "." and ".." */ if ( !strcmp( name, dotname ) ) 4a83c: 4879 0005 ca5a pea 5ca5a 4a842: 47f9 0004 e75c lea 4e75c ,%a3 IMFS_jnode_t *IMFS_find_match_in_dir( IMFS_jnode_t *directory, char *name ) { 4a848: 242e 000c movel %fp@(12),%d2 /* * Check for "." and ".." */ if ( !strcmp( name, dotname ) ) 4a84c: 2f02 movel %d2,%sp@- IMFS_jnode_t *IMFS_find_match_in_dir( IMFS_jnode_t *directory, char *name ) { 4a84e: 246e 0008 moveal %fp@(8),%a2 /* * Check for "." and ".." */ if ( !strcmp( name, dotname ) ) 4a852: 4e93 jsr %a3@ 4a854: 508f addql #8,%sp 4a856: 4a80 tstl %d0 4a858: 6714 beqs 4a86e <== NEVER TAKEN return directory; if ( !strcmp( name, dotdotname ) ) 4a85a: 4879 0005 ca5c pea 5ca5c 4a860: 2f02 movel %d2,%sp@- 4a862: 4e93 jsr %a3@ 4a864: 508f addql #8,%sp 4a866: 4a80 tstl %d0 4a868: 6610 bnes 4a87a <== ALWAYS TAKEN return directory->Parent; 4a86a: 246a 0008 moveal %a2@(8),%a2 <== NOT EXECUTED if ( !strcmp( name, the_jnode->name ) ) return the_jnode; } return 0; } 4a86e: 200a movel %a2,%d0 4a870: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 4a876: 4e5e unlk %fp 4a878: 4e75 rts RTEMS_INLINE_ROUTINE bool _Chain_Is_tail( Chain_Control *the_chain, const Chain_Node *the_node ) { return (the_node == _Chain_Tail(the_chain)); 4a87a: 260a movel %a2,%d3 4a87c: 0683 0000 0050 addil #80,%d3 4a882: 202a 004c movel %a2@(76),%d0 if ( !strcmp( name, dotdotname ) ) return directory->Parent; the_chain = &directory->info.directory.Entries; for ( the_node = rtems_chain_first( the_chain ); 4a886: b680 cmpl %d0,%d3 4a888: 6716 beqs 4a8a0 4a88a: 2440 moveal %d0,%a2 !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 ) ) 4a88c: 486a 000c pea %a2@(12) 4a890: 2f02 movel %d2,%sp@- 4a892: 4e93 jsr %a3@ 4a894: 508f addql #8,%sp 4a896: 4a80 tstl %d0 4a898: 67d4 beqs 4a86e 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 ) { 4a89a: 2452 moveal %a2@,%a2 if ( !strcmp( name, dotdotname ) ) return directory->Parent; the_chain = &directory->info.directory.Entries; for ( the_node = rtems_chain_first( the_chain ); 4a89c: b68a cmpl %a2,%d3 4a89e: 66ec bnes 4a88c if ( !strcmp( name, the_jnode->name ) ) return the_jnode; } return 0; 4a8a0: 95ca subal %a2,%a2 } 4a8a2: 200a movel %a2,%d0 4a8a4: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 4a8aa: 4e5e unlk %fp ... =============================================================================== 0004a788 : ((IMFS_jnode_t *)( rtems_chain_head( jnode_get_control( jnode ) )->next)) int IMFS_fsunmount( rtems_filesystem_mount_table_entry_t *temp_mt_entry ) { 4a788: 4e56 ffd8 linkw %fp,#-40 <== NOT EXECUTED 4a78c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4a790: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ <== 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; 4a794: 47ee ffec lea %fp@(-20),%a3 <== NOT EXECUTED 4a798: 49f9 0004 a014 lea 4a014 ,%a4 <== NOT EXECUTED next = jnode->Parent; loc.node_access = (void *)jnode; IMFS_Set_handlers( &loc ); if ( jnode->type != IMFS_DIRECTORY ) { result = IMFS_unlink( NULL, &loc ); 4a79e: 4bf9 0004 25c0 lea 425c0 ,%a5 <== 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; 4a7a4: 26a8 001c movel %a0@(28),%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; 4a7a8: 2468 001c moveal %a0@(28),%a2 <== NOT EXECUTED loc = temp_mt_entry->mt_fs_root; 4a7ac: 2d68 0020 fff0 movel %a0@(32),%fp@(-16) <== NOT EXECUTED 4a7b2: 2d68 0024 fff4 movel %a0@(36),%fp@(-12) <== NOT EXECUTED 4a7b8: 2d68 0028 fff8 movel %a0@(40),%fp@(-8) <== NOT EXECUTED 4a7be: 2d68 002c fffc movel %a0@(44),%fp@(-4) <== NOT EXECUTED /* * Set this to null to indicate that it is being unmounted. */ temp_mt_entry->mt_fs_root.node_access = NULL; 4a7c4: 42a8 001c clrl %a0@(28) <== NOT EXECUTED do { next = jnode->Parent; 4a7c8: 242a 0008 movel %a2@(8),%d2 <== NOT EXECUTED loc.node_access = (void *)jnode; 4a7cc: 2d4a ffec movel %a2,%fp@(-20) <== NOT EXECUTED IMFS_Set_handlers( &loc ); 4a7d0: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4a7d2: 4e94 jsr %a4@ <== NOT EXECUTED if ( jnode->type != IMFS_DIRECTORY ) { 4a7d4: 588f addql #4,%sp <== 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 ); 4a7d6: 200a movel %a2,%d0 <== NOT EXECUTED 4a7d8: 0680 0000 0050 addil #80,%d0 <== NOT EXECUTED 4a7de: 7201 moveq #1,%d1 <== NOT EXECUTED 4a7e0: b2aa 0048 cmpl %a2@(72),%d1 <== NOT EXECUTED 4a7e4: 6634 bnes 4a81a <== NOT EXECUTED result = IMFS_unlink( NULL, &loc ); if (result != 0) return -1; jnode = next; } else if ( jnode_has_no_children( jnode ) ) { 4a7e6: b0aa 004c cmpl %a2@(76),%d0 <== NOT EXECUTED 4a7ea: 672e beqs 4a81a <== NOT EXECUTED result = IMFS_unlink( NULL, &loc ); if (result != 0) return -1; jnode = next; } if ( jnode != NULL ) { 4a7ec: 4a8a tstl %a2 <== NOT EXECUTED 4a7ee: 671e beqs 4a80e <== NOT EXECUTED if ( jnode->type == IMFS_DIRECTORY ) { 4a7f0: 7001 moveq #1,%d0 <== NOT EXECUTED 4a7f2: b0aa 0048 cmpl %a2@(72),%d0 <== NOT EXECUTED 4a7f6: 66d0 bnes 4a7c8 <== NOT EXECUTED 4a7f8: 220a movel %a2,%d1 <== NOT EXECUTED 4a7fa: 0681 0000 0050 addil #80,%d1 <== NOT EXECUTED } } } while (jnode != NULL); return 0; } 4a800: 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 ) ) 4a804: b280 cmpl %d0,%d1 <== NOT EXECUTED 4a806: 67c0 beqs 4a7c8 <== NOT EXECUTED jnode = jnode_get_first_child( jnode ); 4a808: 2440 moveal %d0,%a2 <== NOT EXECUTED } } } while (jnode != NULL); 4a80a: 4a80 tstl %d0 <== NOT EXECUTED 4a80c: 66ba bnes 4a7c8 <== NOT EXECUTED return 0; 4a80e: 4280 clrl %d0 <== NOT EXECUTED } 4a810: 4cee 3c04 ffd8 moveml %fp@(-40),%d2/%a2-%a5 <== NOT EXECUTED 4a816: 4e5e unlk %fp <== NOT EXECUTED 4a818: 4e75 rts <== NOT EXECUTED result = IMFS_unlink( NULL, &loc ); if (result != 0) return -1; jnode = next; } else if ( jnode_has_no_children( jnode ) ) { result = IMFS_unlink( NULL, &loc ); 4a81a: 2f0b movel %a3,%sp@- <== NOT EXECUTED if (result != 0) return -1; jnode = next; 4a81c: 2442 moveal %d2,%a2 <== NOT EXECUTED result = IMFS_unlink( NULL, &loc ); if (result != 0) return -1; jnode = next; } else if ( jnode_has_no_children( jnode ) ) { result = IMFS_unlink( NULL, &loc ); 4a81e: 42a7 clrl %sp@- <== NOT EXECUTED 4a820: 4e95 jsr %a5@ <== NOT EXECUTED if (result != 0) 4a822: 508f addql #8,%sp <== NOT EXECUTED 4a824: 4a80 tstl %d0 <== NOT EXECUTED 4a826: 67c4 beqs 4a7ec <== NOT EXECUTED return -1; 4a828: 70ff moveq #-1,%d0 <== NOT EXECUTED } } } while (jnode != NULL); return 0; } 4a82a: 4cee 3c04 ffd8 moveml %fp@(-40),%d2/%a2-%a5 <== NOT EXECUTED 4a830: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004a8b0 : const char *path, int pathlen, char *token, int *token_len ) { 4a8b0: 4e56 ffe4 linkw %fp,#-28 4a8b4: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@ register char c; /* * Copy a name into token. (Remember NULL is a token.) */ c = path[i]; 4a8b8: 246e 0008 moveal %fp@(8),%a2 4a8bc: 49f9 0004 3c2c lea 43c2c ,%a4 int pathlen, char *token, int *token_len ) { register int i = 0; 4a8c2: 4282 clrl %d2 register char c; /* * Copy a name into token. (Remember NULL is a token.) */ c = path[i]; 4a8c4: 161a moveb %a2@+,%d3 const char *path, int pathlen, char *token, int *token_len ) { 4a8c6: 2a6e 0010 moveal %fp@(16),%a5 register char c; /* * Copy a name into token. (Remember NULL is a token.) */ c = path[i]; 4a8ca: 264d moveal %a5,%a3 while ( (!IMFS_is_separator(c)) && (i < pathlen) && (i <= IMFS_NAME_MAX) ) { 4a8cc: 1003 moveb %d3,%d0 const char *path, int pathlen, char *token, int *token_len ) { 4a8ce: 282e 000c movel %fp@(12),%d4 /* * Copy a name into token. (Remember NULL is a token.) */ c = path[i]; while ( (!IMFS_is_separator(c)) && (i < pathlen) && (i <= IMFS_NAME_MAX) ) { 4a8d2: 49c0 extbl %d0 4a8d4: 2f00 movel %d0,%sp@- 4a8d6: 4e94 jsr %a4@ 4a8d8: 588f addql #4,%sp 4a8da: 4a80 tstl %d0 4a8dc: 6620 bnes 4a8fe 4a8de: b882 cmpl %d2,%d4 4a8e0: 6f1c bles 4a8fe <== NEVER TAKEN token[i] = c; if ( i == IMFS_NAME_MAX ) 4a8e2: 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; 4a8e4: 16c3 moveb %d3,%a3@+ if ( i == IMFS_NAME_MAX ) 4a8e6: b082 cmpl %d2,%d0 4a8e8: 6700 0082 beqw 4a96c return IMFS_INVALID_TOKEN; if ( !IMFS_is_valid_name_char(c) ) type = IMFS_INVALID_TOKEN; c = path [++i]; 4a8ec: 5282 addql #1,%d2 4a8ee: 161a moveb %a2@+,%d3 /* * Copy a name into token. (Remember NULL is a token.) */ c = path[i]; while ( (!IMFS_is_separator(c)) && (i < pathlen) && (i <= IMFS_NAME_MAX) ) { 4a8f0: 1003 moveb %d3,%d0 4a8f2: 49c0 extbl %d0 4a8f4: 2f00 movel %d0,%sp@- 4a8f6: 4e94 jsr %a4@ 4a8f8: 588f addql #4,%sp 4a8fa: 4a80 tstl %d0 4a8fc: 67e0 beqs 4a8de /* * Copy a seperator into token. */ if ( i == 0 ) { 4a8fe: 4a82 tstl %d2 4a900: 6626 bnes 4a928 token[i] = c; 4a902: 1a83 moveb %d3,%a5@ if ( (token[i] != '\0') && pathlen ) { 4a904: 6718 beqs 4a91e 4a906: 4a84 tstl %d4 4a908: 6714 beqs 4a91e <== NEVER TAKEN /* * Set token_len to the number of characters copied. */ *token_len = i; 4a90a: 206e 0014 moveal %fp@(20),%a0 if ( i == 0 ) { token[i] = c; if ( (token[i] != '\0') && pathlen ) { i++; 4a90e: 7401 moveq #1,%d2 type = IMFS_CURRENT_DIR; 4a910: 7001 moveq #1,%d0 /* * Set token_len to the number of characters copied. */ *token_len = i; 4a912: 2082 movel %d2,%a0@ else if ( strcmp( token, "." ) == 0 ) type = IMFS_CURRENT_DIR; } return type; } 4a914: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 4a91a: 4e5e unlk %fp 4a91c: 4e75 rts /* * Set token_len to the number of characters copied. */ *token_len = i; 4a91e: 206e 0014 moveal %fp@(20),%a0 if ( (token[i] != '\0') && pathlen ) { i++; type = IMFS_CURRENT_DIR; } else { type = IMFS_NO_MORE_PATH; 4a922: 4280 clrl %d0 /* * Set token_len to the number of characters copied. */ *token_len = i; 4a924: 2082 movel %d2,%a0@ 4a926: 60ec bras 4a914 i++; type = IMFS_CURRENT_DIR; } else { type = IMFS_NO_MORE_PATH; } } else if (token[ i-1 ] != '\0') { 4a928: 4a35 28ff tstb %a5@(ffffffff,%d2:l) 4a92c: 6706 beqs 4a934 <== NEVER TAKEN token[i] = '\0'; 4a92e: 4200 clrb %d0 4a930: 1b80 2800 moveb %d0,%a5@(00000000,%d2:l) * If we copied something that was not a seperator see if * it was a special name. */ if ( type == IMFS_NAME ) { if ( strcmp( token, "..") == 0 ) 4a934: 4879 0005 ca5f pea 5ca5f 4a93a: 45f9 0004 e75c lea 4e75c ,%a2 /* * Set token_len to the number of characters copied. */ *token_len = i; 4a940: 206e 0014 moveal %fp@(20),%a0 4a944: 2082 movel %d2,%a0@ * If we copied something that was not a seperator see if * it was a special name. */ if ( type == IMFS_NAME ) { if ( strcmp( token, "..") == 0 ) 4a946: 2f0d movel %a5,%sp@- 4a948: 4e92 jsr %a2@ 4a94a: 508f addql #8,%sp 4a94c: 4a80 tstl %d0 4a94e: 6728 beqs 4a978 <== NEVER TAKEN type = IMFS_UP_DIR; else if ( strcmp( token, "." ) == 0 ) 4a950: 4879 0005 ca60 pea 5ca60 4a956: 2f0d movel %a5,%sp@- 4a958: 4e92 jsr %a2@ 4a95a: 508f addql #8,%sp 4a95c: 4a80 tstl %d0 4a95e: 6724 beqs 4a984 <== NEVER TAKEN 4a960: 7003 moveq #3,%d0 type = IMFS_CURRENT_DIR; } return type; } 4a962: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 4a968: 4e5e unlk %fp 4a96a: 4e75 rts while ( (!IMFS_is_separator(c)) && (i < pathlen) && (i <= IMFS_NAME_MAX) ) { token[i] = c; if ( i == IMFS_NAME_MAX ) return IMFS_INVALID_TOKEN; 4a96c: 7004 moveq #4,%d0 <== NOT EXECUTED else if ( strcmp( token, "." ) == 0 ) type = IMFS_CURRENT_DIR; } return type; } 4a96e: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 <== NOT EXECUTED 4a974: 4e5e unlk %fp <== NOT EXECUTED 4a976: 4e75 rts <== NOT EXECUTED * it was a special name. */ if ( type == IMFS_NAME ) { if ( strcmp( token, "..") == 0 ) type = IMFS_UP_DIR; 4a978: 7002 moveq #2,%d0 <== NOT EXECUTED else if ( strcmp( token, "." ) == 0 ) type = IMFS_CURRENT_DIR; } return type; } 4a97a: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 <== NOT EXECUTED 4a980: 4e5e unlk %fp <== NOT EXECUTED 4a982: 4e75 rts <== NOT EXECUTED if ( type == IMFS_NAME ) { if ( strcmp( token, "..") == 0 ) type = IMFS_UP_DIR; else if ( strcmp( token, "." ) == 0 ) type = IMFS_CURRENT_DIR; 4a984: 7001 moveq #1,%d0 <== NOT EXECUTED } return type; } 4a986: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 <== NOT EXECUTED 4a98c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00042138 : /* * 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) { 42138: 7010 moveq #16,%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 ) { 4213a: 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, 4213e: 2239 0005 d528 movel 5d528 ,%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 ) { 42144: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ 42148: 246e 0008 moveal %fp@(8),%a2 4214c: 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) { 42150: b081 cmpl %d1,%d0 42152: 6724 beqs 42178 is_valid = true; break; } if(bit_mask > requested_bytes_per_block) 42154: 103c 000f moveb #15,%d0 42158: b081 cmpl %d1,%d0 4215a: 6c16 bges 42172 4215c: 307c 0005 moveaw #5,%a0 42160: 103c 0020 moveb #32,%d0 int bit_mask; /* * check, whether requested bytes per block is valid */ for (bit_mask = 16; !is_valid && (bit_mask <= 512); bit_mask <<= 1) { 42164: 5388 subql #1,%a0 if (bit_mask == requested_bytes_per_block) { 42166: b081 cmpl %d1,%d0 42168: 670e beqs 42178 is_valid = true; break; } if(bit_mask > requested_bytes_per_block) 4216a: 6e06 bgts 42172 <== NEVER TAKEN int bit_mask; /* * check, whether requested bytes per block is valid */ for (bit_mask = 16; !is_valid && (bit_mask <= 512); bit_mask <<= 1) { 4216c: d080 addl %d0,%d0 4216e: 4a88 tstl %a0 42170: 66f2 bnes 42164 <== ALWAYS TAKEN if(bit_mask > requested_bytes_per_block) break; } *dest_bytes_per_block = ((is_valid) ? requested_bytes_per_block : default_bytes_per_block); 42172: 223c 0000 0080 movel #128,%d1 break; } if(bit_mask > requested_bytes_per_block) break; } *dest_bytes_per_block = ((is_valid) 42178: 23c1 0005 e4e8 movel %d1,5e4e8 /* * 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(); 4217e: 4eb9 0004 9fda jsr 49fda 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 ) ); 42184: 4878 0014 pea 14 * NOTE: UNIX root is 755 and owned by root/root (0/0). */ temp_mt_entry->mt_fs_root.node_access = IMFS_create_root_node(); temp_mt_entry->mt_fs_root.handlers = directory_handlers; temp_mt_entry->mt_fs_root.ops = op_table; temp_mt_entry->pathconf_limits_and_options = IMFS_LIMITS_AND_OPTIONS; 42188: 41f9 0005 ca2a lea 5ca2a ,%a0 4218e: 43f9 0005 ca2e lea 5ca2e ,%a1 /* * 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(); 42194: 2640 moveal %d0,%a3 temp_mt_entry->mt_fs_root.handlers = directory_handlers; temp_mt_entry->mt_fs_root.ops = op_table; temp_mt_entry->pathconf_limits_and_options = IMFS_LIMITS_AND_OPTIONS; 42196: 2550 0038 movel %a0@,%a2@(56) 4219a: 41f9 0005 ca32 lea 5ca32 ,%a0 421a0: 2551 003c movel %a1@,%a2@(60) 421a4: 43f9 0005 ca36 lea 5ca36 ,%a1 421aa: 2550 0040 movel %a0@,%a2@(64) 421ae: 41f9 0005 ca3a lea 5ca3a ,%a0 421b4: 2551 0044 movel %a1@,%a2@(68) 421b8: 43f9 0005 ca3e lea 5ca3e ,%a1 /* * Create custom file system data. */ fs_info = calloc( 1, sizeof( IMFS_fs_info_t ) ); 421be: 4878 0001 pea 1 * NOTE: UNIX root is 755 and owned by root/root (0/0). */ temp_mt_entry->mt_fs_root.node_access = IMFS_create_root_node(); temp_mt_entry->mt_fs_root.handlers = directory_handlers; temp_mt_entry->mt_fs_root.ops = op_table; temp_mt_entry->pathconf_limits_and_options = IMFS_LIMITS_AND_OPTIONS; 421c2: 2550 0048 movel %a0@,%a2@(72) 421c6: 41f9 0005 ca42 lea 5ca42 ,%a0 421cc: 2551 004c movel %a1@,%a2@(76) 421d0: 43f9 0005 ca46 lea 5ca46 ,%a1 421d6: 2550 0050 movel %a0@,%a2@(80) 421da: 41f9 0005 ca4a lea 5ca4a ,%a0 421e0: 2551 0054 movel %a1@,%a2@(84) 421e4: 43f9 0005 ca4e lea 5ca4e ,%a1 421ea: 2550 0058 movel %a0@,%a2@(88) 421ee: 41f9 0005 ca52 lea 5ca52 ,%a0 421f4: 2551 005c movel %a1@,%a2@(92) 421f8: 43f9 0005 ca56 lea 5ca56 ,%a1 421fe: 2550 0060 movel %a0@,%a2@(96) 42202: 2551 0064 movel %a1@,%a2@(100) * * NOTE: UNIX root is 755 and owned by root/root (0/0). */ temp_mt_entry->mt_fs_root.node_access = IMFS_create_root_node(); temp_mt_entry->mt_fs_root.handlers = directory_handlers; temp_mt_entry->mt_fs_root.ops = op_table; 42206: 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(); 4220c: 2540 001c movel %d0,%a2@(28) temp_mt_entry->mt_fs_root.handlers = directory_handlers; 42210: 2542 0024 movel %d2,%a2@(36) 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 ) ); 42214: 4eb9 0004 28f0 jsr 428f0 if ( !fs_info ) { 4221a: 508f addql #8,%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 ) ); 4221c: 2040 moveal %d0,%a0 if ( !fs_info ) { 4221e: 4a80 tstl %d0 42220: 673c beqs 4225e <== NEVER TAKEN free(temp_mt_entry->mt_fs_root.node_access); rtems_set_errno_and_return_minus_one(ENOMEM); } temp_mt_entry->fs_info = fs_info; 42222: 2548 0034 movel %a0,%a2@(52) /* * Set st_ino for the root to 1. */ fs_info->instance = imfs_instance++; 42226: 2239 0005 e4ec movel 5e4ec ,%d1 4222c: 2241 moveal %d1,%a1 4222e: 5289 addql #1,%a1 fs_info->fifo_handlers = fifo_handlers; jnode = temp_mt_entry->mt_fs_root.node_access; jnode->st_ino = fs_info->ino_count; return 0; 42230: 4280 clrl %d0 /* * Set st_ino for the root to 1. */ fs_info->instance = imfs_instance++; 42232: 2081 movel %d1,%a0@ fs_info->ino_count = 1; 42234: 7201 moveq #1,%d1 fs_info->memfile_handlers = memfile_handlers; 42236: 216e 0010 0008 movel %fp@(16),%a0@(8) fs_info->directory_handlers = directory_handlers; fs_info->fifo_handlers = fifo_handlers; 4223c: 216e 0018 0010 movel %fp@(24),%a0@(16) */ fs_info->instance = imfs_instance++; fs_info->ino_count = 1; fs_info->memfile_handlers = memfile_handlers; fs_info->directory_handlers = directory_handlers; 42242: 2142 000c movel %d2,%a0@(12) /* * Set st_ino for the root to 1. */ fs_info->instance = imfs_instance++; fs_info->ino_count = 1; 42246: 2141 0004 movel %d1,%a0@(4) fs_info->memfile_handlers = memfile_handlers; fs_info->directory_handlers = directory_handlers; fs_info->fifo_handlers = fifo_handlers; jnode = temp_mt_entry->mt_fs_root.node_access; jnode->st_ino = fs_info->ino_count; 4224a: 2741 0034 movel %d1,%a3@(52) return 0; } 4224e: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 /* * Set st_ino for the root to 1. */ fs_info->instance = imfs_instance++; 42254: 23c9 0005 e4ec movel %a1,5e4ec jnode = temp_mt_entry->mt_fs_root.node_access; jnode->st_ino = fs_info->ino_count; return 0; } 4225a: 4e5e unlk %fp 4225c: 4e75 rts /* * Create custom file system data. */ fs_info = calloc( 1, sizeof( IMFS_fs_info_t ) ); if ( !fs_info ) { free(temp_mt_entry->mt_fs_root.node_access); 4225e: 2f0b movel %a3,%sp@- <== NOT EXECUTED 42260: 4eb9 0004 2cfc jsr 42cfc <== NOT EXECUTED rtems_set_errno_and_return_minus_one(ENOMEM); 42266: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED 4226c: 588f addql #4,%sp <== NOT EXECUTED 4226e: 720c moveq #12,%d1 <== NOT EXECUTED 42270: 2040 moveal %d0,%a0 <== NOT EXECUTED 42272: 70ff moveq #-1,%d0 <== NOT EXECUTED jnode = temp_mt_entry->mt_fs_root.node_access; jnode->st_ino = fs_info->ino_count; return 0; } 42274: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED * Create custom file system data. */ fs_info = calloc( 1, sizeof( IMFS_fs_info_t ) ); if ( !fs_info ) { free(temp_mt_entry->mt_fs_root.node_access); rtems_set_errno_and_return_minus_one(ENOMEM); 4227a: 2081 movel %d1,%a0@ <== NOT EXECUTED jnode = temp_mt_entry->mt_fs_root.node_access; jnode->st_ino = fs_info->ino_count; return 0; } 4227c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00042280 : /* * 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 ) 42280: 4280 clrl %d0 <== NOT EXECUTED 42282: 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 */ ) { 42284: 4e56 ffbc linkw %fp,#-68 <== NOT EXECUTED 42288: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4228c: 2f03 movel %d3,%sp@- <== NOT EXECUTED int i; /* * Verify this node can be linked to. */ info.hard_link.link_node = to_loc->node_access; 4228e: 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 */ ) { 42290: 2f02 movel %d2,%sp@- <== NOT EXECUTED 42292: 242e 0010 movel %fp@(16),%d2 <== 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 ) 42296: 3028 0032 movew %a0@(50),%d0 <== NOT EXECUTED int i; /* * Verify this node can be linked to. */ info.hard_link.link_node = to_loc->node_access; 4229a: 2d48 ffe0 movel %a0,%fp@(-32) <== NOT EXECUTED if ( info.hard_link.link_node->st_nlink >= LINK_MAX ) 4229e: b280 cmpl %d0,%d1 <== NOT EXECUTED 422a0: 6578 bcss 4231a <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EMLINK ); /* * Remove any separators at the end of the string. */ IMFS_get_token( token, strlen( token ), new_name, &i ); 422a2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 422a4: 260e movel %fp,%d3 <== NOT EXECUTED 422a6: 0683 ffff ffbf addil #-65,%d3 <== NOT EXECUTED 422ac: 4eb9 0004 ecb4 jsr 4ecb4 <== NOT EXECUTED 422b2: 588f addql #4,%sp <== NOT EXECUTED 422b4: 486e fffc pea %fp@(-4) <== NOT EXECUTED 422b8: 2f03 movel %d3,%sp@- <== NOT EXECUTED 422ba: 2f00 movel %d0,%sp@- <== NOT EXECUTED 422bc: 2f02 movel %d2,%sp@- <== NOT EXECUTED 422be: 4eb9 0004 a8b0 jsr 4a8b0 <== 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( 422c4: 486e ffe0 pea %fp@(-32) <== NOT EXECUTED 422c8: 2f3c 0000 a1ff movel #41471,%sp@- <== NOT EXECUTED 422ce: 2f03 movel %d3,%sp@- <== NOT EXECUTED 422d0: 4878 0003 pea 3 <== NOT EXECUTED 422d4: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 422d8: 4eb9 0004 9de4 jsr 49de4 <== NOT EXECUTED new_name, ( S_IFLNK | ( S_IRWXU | S_IRWXG | S_IRWXO )), &info ); if ( !new_node ) 422de: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED 422e2: 4a80 tstl %d0 <== NOT EXECUTED 422e4: 674e beqs 42334 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOMEM ); /* * Increment the link count of the node being pointed to. */ info.hard_link.link_node->st_nlink++; 422e6: 206e ffe0 moveal %fp@(-32),%a0 <== NOT EXECUTED 422ea: 3028 0032 movew %a0@(50),%d0 <== NOT EXECUTED 422ee: 5280 addql #1,%d0 <== NOT EXECUTED 422f0: 3140 0032 movew %d0,%a0@(50) <== NOT EXECUTED IMFS_update_ctime( info.hard_link.link_node ); 422f4: 42a7 clrl %sp@- <== NOT EXECUTED 422f6: 486e fff4 pea %fp@(-12) <== NOT EXECUTED 422fa: 4eb9 0004 2d8c jsr 42d8c <== NOT EXECUTED 42300: 206e ffe0 moveal %fp@(-32),%a0 <== NOT EXECUTED return 0; 42304: 508f addql #8,%sp <== NOT EXECUTED 42306: 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 ); 42308: 216e fff4 0044 movel %fp@(-12),%a0@(68) <== NOT EXECUTED return 0; } 4230e: 242e ffb4 movel %fp@(-76),%d2 <== NOT EXECUTED 42312: 262e ffb8 movel %fp@(-72),%d3 <== NOT EXECUTED 42316: 4e5e unlk %fp <== NOT EXECUTED 42318: 4e75 rts <== 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 ) rtems_set_errno_and_return_minus_one( EMLINK ); 4231a: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED 42320: 741f moveq #31,%d2 <== NOT EXECUTED 42322: 2040 moveal %d0,%a0 <== NOT EXECUTED 42324: 70ff moveq #-1,%d0 <== NOT EXECUTED 42326: 2082 movel %d2,%a0@ <== NOT EXECUTED */ info.hard_link.link_node->st_nlink++; IMFS_update_ctime( info.hard_link.link_node ); return 0; } 42328: 242e ffb4 movel %fp@(-76),%d2 <== NOT EXECUTED 4232c: 262e ffb8 movel %fp@(-72),%d3 <== NOT EXECUTED 42330: 4e5e unlk %fp <== NOT EXECUTED 42332: 4e75 rts <== NOT EXECUTED ( S_IFLNK | ( S_IRWXU | S_IRWXG | S_IRWXO )), &info ); if ( !new_node ) rtems_set_errno_and_return_minus_one( ENOMEM ); 42334: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED */ info.hard_link.link_node->st_nlink++; IMFS_update_ctime( info.hard_link.link_node ); return 0; } 4233a: 242e ffb4 movel %fp@(-76),%d2 <== NOT EXECUTED ( S_IFLNK | ( S_IRWXU | S_IRWXG | S_IRWXO )), &info ); if ( !new_node ) rtems_set_errno_and_return_minus_one( ENOMEM ); 4233e: 2040 moveal %d0,%a0 <== NOT EXECUTED 42340: 720c moveq #12,%d1 <== NOT EXECUTED 42342: 70ff moveq #-1,%d0 <== NOT EXECUTED */ info.hard_link.link_node->st_nlink++; IMFS_update_ctime( info.hard_link.link_node ); return 0; } 42344: 262e ffb8 movel %fp@(-72),%d3 <== NOT EXECUTED 42348: 4e5e unlk %fp <== NOT EXECUTED ( S_IFLNK | ( S_IRWXU | S_IRWXG | S_IRWXO )), &info ); if ( !new_node ) rtems_set_errno_and_return_minus_one( ENOMEM ); 4234a: 2081 movel %d1,%a0@ <== NOT EXECUTED */ info.hard_link.link_node->st_nlink++; IMFS_update_ctime( info.hard_link.link_node ); return 0; } ... =============================================================================== 0004c700 : */ MEMFILE_STATIC int IMFS_memfile_addblock( IMFS_jnode_t *the_jnode, unsigned int block ) { 4c700: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4c704: 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 ); 4c706: 4878 0001 pea 1 <== NOT EXECUTED 4c70a: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4c70e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4c712: 4eb9 0004 c2d4 jsr 4c2d4 <== NOT EXECUTED if ( *block_entry_ptr ) 4c718: 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 ); 4c71c: 2440 moveal %d0,%a2 <== NOT EXECUTED if ( *block_entry_ptr ) 4c71e: 4a92 tstl %a2@ <== NOT EXECUTED 4c720: 670a beqs 4c72c <== NOT EXECUTED if ( !memory ) return 1; *block_entry_ptr = memory; return 0; } 4c722: 246e fffc moveal %fp@(-4),%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; 4c726: 4280 clrl %d0 <== NOT EXECUTED if ( !memory ) return 1; *block_entry_ptr = memory; return 0; } 4c728: 4e5e unlk %fp <== NOT EXECUTED 4c72a: 4e75 rts <== NOT EXECUTED return 0; /* * There is no memory for this block number so allocate it. */ memory = memfile_alloc_block(); 4c72c: 4eb9 0004 c2b0 jsr 4c2b0 <== NOT EXECUTED if ( !memory ) 4c732: 4a80 tstl %d0 <== NOT EXECUTED 4c734: 670c beqs 4c742 <== NOT EXECUTED return 1; *block_entry_ptr = memory; 4c736: 2480 movel %d0,%a2@ <== NOT EXECUTED return 0; } 4c738: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED memory = memfile_alloc_block(); if ( !memory ) return 1; *block_entry_ptr = memory; return 0; 4c73c: 4280 clrl %d0 <== NOT EXECUTED } 4c73e: 4e5e unlk %fp <== NOT EXECUTED 4c740: 4e75 rts <== NOT EXECUTED 4c742: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED /* * There is no memory for this block number so allocate it. */ memory = memfile_alloc_block(); if ( !memory ) return 1; 4c746: 7001 moveq #1,%d0 <== NOT EXECUTED *block_entry_ptr = memory; return 0; } 4c748: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004c8ee : IMFS_assert( the_jnode->type == IMFS_MEMORY_FILE ); /* * Verify new file size is supported */ if ( new_length >= IMFS_MEMFILE_MAXIMUM_SIZE ) 4c8ee: 4280 clrl %d0 <== NOT EXECUTED */ MEMFILE_STATIC int IMFS_memfile_extend( IMFS_jnode_t *the_jnode, off_t new_length ) { 4c8f0: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED 4c8f4: 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 ) 4c8f8: 2c39 0005 e4e8 movel 5e4e8 ,%d6<== NOT EXECUTED 4c8fe: 2406 movel %d6,%d2 <== NOT EXECUTED 4c900: e48a lsrl #2,%d2 <== NOT EXECUTED 4c902: 2802 movel %d2,%d4 <== NOT EXECUTED 4c904: 5284 addql #1,%d4 <== NOT EXECUTED 4c906: 4c02 4800 mulsl %d2,%d4 <== NOT EXECUTED */ MEMFILE_STATIC int IMFS_memfile_extend( IMFS_jnode_t *the_jnode, off_t new_length ) { 4c90a: 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 ) 4c90e: 5284 addql #1,%d4 <== NOT EXECUTED 4c910: 4c02 4800 mulsl %d2,%d4 <== NOT EXECUTED */ MEMFILE_STATIC int IMFS_memfile_extend( IMFS_jnode_t *the_jnode, off_t new_length ) { 4c914: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4c918: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED IMFS_assert( the_jnode->type == IMFS_MEMORY_FILE ); /* * Verify new file size is supported */ if ( new_length >= IMFS_MEMFILE_MAXIMUM_SIZE ) 4c91c: 5384 subql #1,%d4 <== NOT EXECUTED 4c91e: 4c06 4800 mulsl %d6,%d4 <== NOT EXECUTED 4c922: 2204 movel %d4,%d1 <== NOT EXECUTED 4c924: 2800 movel %d0,%d4 <== NOT EXECUTED 4c926: 2a01 movel %d1,%d5 <== NOT EXECUTED 4c928: 9a83 subl %d3,%d5 <== NOT EXECUTED 4c92a: 9982 subxl %d2,%d4 <== NOT EXECUTED 4c92c: 6f00 00ae blew 4c9dc <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); /* * Verify new file size is actually larger than current size */ if ( new_length <= the_jnode->info.file.size ) 4c930: 282a 004c movel %a2@(76),%d4 <== NOT EXECUTED 4c934: 2a2a 0050 movel %a2@(80),%d5 <== NOT EXECUTED 4c938: 2002 movel %d2,%d0 <== NOT EXECUTED 4c93a: 2203 movel %d3,%d1 <== NOT EXECUTED 4c93c: 9285 subl %d5,%d1 <== NOT EXECUTED 4c93e: 9184 subxl %d4,%d0 <== NOT EXECUTED 4c940: 6f5e bles 4c9a0 <== NOT EXECUTED return 0; /* * Calculate the number of range of blocks to allocate */ new_blocks = new_length / IMFS_MEMFILE_BYTES_PER_BLOCK; 4c942: 49f9 0005 a074 lea 5a074 <__divdi3>,%a4 <== NOT EXECUTED 4c948: 2e06 movel %d6,%d7 <== NOT EXECUTED 4c94a: 5bc6 smi %d6 <== NOT EXECUTED 4c94c: 49c6 extbl %d6 <== NOT EXECUTED 4c94e: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4c950: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4c952: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4c954: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4c956: 4e94 jsr %a4@ <== NOT EXECUTED 4c958: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4c95c: 2641 moveal %d1,%a3 <== NOT EXECUTED old_blocks = the_jnode->info.file.size / IMFS_MEMFILE_BYTES_PER_BLOCK; 4c95e: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4c960: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4c962: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4c964: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4c966: 4e94 jsr %a4@ <== NOT EXECUTED 4c968: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4c96c: 2c01 movel %d1,%d6 <== NOT EXECUTED /* * Now allocate each of those blocks. */ for ( block=old_blocks ; block<=new_blocks ; block++ ) { 4c96e: b28b cmpl %a3,%d1 <== NOT EXECUTED 4c970: 621a bhis 4c98c <== NOT EXECUTED 4c972: 2801 movel %d1,%d4 <== NOT EXECUTED 4c974: 49f9 0004 c700 lea 4c700 ,%a4 <== NOT EXECUTED if ( IMFS_memfile_addblock( the_jnode, block ) ) { 4c97a: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4c97c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c97e: 4e94 jsr %a4@ <== NOT EXECUTED 4c980: 508f addql #8,%sp <== NOT EXECUTED 4c982: 4a80 tstl %d0 <== NOT EXECUTED 4c984: 6626 bnes 4c9ac <== 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++ ) { 4c986: 5284 addql #1,%d4 <== NOT EXECUTED 4c988: b88b cmpl %a3,%d4 <== NOT EXECUTED 4c98a: 63ee blss 4c97a <== NOT EXECUTED /* * Set the new length of the file. */ the_jnode->info.file.size = new_length; return 0; 4c98c: 4280 clrl %d0 <== NOT EXECUTED } /* * Set the new length of the file. */ the_jnode->info.file.size = new_length; 4c98e: 2542 004c movel %d2,%a2@(76) <== NOT EXECUTED 4c992: 2543 0050 movel %d3,%a2@(80) <== NOT EXECUTED return 0; } 4c996: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4 <== NOT EXECUTED 4c99c: 4e5e unlk %fp <== NOT EXECUTED 4c99e: 4e75 rts <== NOT EXECUTED /* * Verify new file size is actually larger than current size */ if ( new_length <= the_jnode->info.file.size ) return 0; 4c9a0: 4280 clrl %d0 <== NOT EXECUTED /* * Set the new length of the file. */ the_jnode->info.file.size = new_length; return 0; } 4c9a2: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4 <== NOT EXECUTED 4c9a8: 4e5e unlk %fp <== NOT EXECUTED 4c9aa: 4e75 rts <== 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-- ) { 4c9ac: b886 cmpl %d6,%d4 <== NOT EXECUTED 4c9ae: 6514 bcss 4c9c4 <== NOT EXECUTED 4c9b0: 47f9 0004 c8c6 lea 4c8c6 ,%a3 <== NOT EXECUTED IMFS_memfile_remove_block( the_jnode, block ); 4c9b6: 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-- ) { 4c9b8: 5384 subql #1,%d4 <== NOT EXECUTED IMFS_memfile_remove_block( the_jnode, block ); 4c9ba: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c9bc: 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-- ) { 4c9be: 508f addql #8,%sp <== NOT EXECUTED 4c9c0: b886 cmpl %d6,%d4 <== NOT EXECUTED 4c9c2: 64f2 bccs 4c9b6 <== NOT EXECUTED IMFS_memfile_remove_block( the_jnode, block ); } rtems_set_errno_and_return_minus_one( ENOSPC ); 4c9c4: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED 4c9ca: 721c moveq #28,%d1 <== NOT EXECUTED 4c9cc: 2040 moveal %d0,%a0 <== NOT EXECUTED 4c9ce: 70ff moveq #-1,%d0 <== NOT EXECUTED /* * Set the new length of the file. */ the_jnode->info.file.size = new_length; return 0; } 4c9d0: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4 <== NOT EXECUTED for ( block=old_blocks ; block<=new_blocks ; block++ ) { if ( IMFS_memfile_addblock( the_jnode, block ) ) { for ( ; block>=old_blocks ; block-- ) { IMFS_memfile_remove_block( the_jnode, block ); } rtems_set_errno_and_return_minus_one( ENOSPC ); 4c9d6: 2081 movel %d1,%a0@ <== NOT EXECUTED /* * Set the new length of the file. */ the_jnode->info.file.size = new_length; return 0; } 4c9d8: 4e5e unlk %fp <== NOT EXECUTED 4c9da: 4e75 rts <== NOT EXECUTED /* * Verify new file size is supported */ if ( new_length >= IMFS_MEMFILE_MAXIMUM_SIZE ) rtems_set_errno_and_return_minus_one( EINVAL ); 4c9dc: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED 4c9e2: 7416 moveq #22,%d2 <== NOT EXECUTED 4c9e4: 2040 moveal %d0,%a0 <== NOT EXECUTED 4c9e6: 70ff moveq #-1,%d0 <== NOT EXECUTED 4c9e8: 2082 movel %d2,%a0@ <== NOT EXECUTED /* * Set the new length of the file. */ the_jnode->info.file.size = new_length; return 0; } 4c9ea: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4 <== NOT EXECUTED 4c9f0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004c2d4 : #endif IMFS_jnode_t *the_jnode, unsigned int block, int malloc_it ) { 4c2d4: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED my_block = block; /* * Is the block number in the simple indirect portion? */ if ( my_block <= LAST_INDIRECT ) { 4c2d8: 2239 0005 e4e8 movel 5e4e8 ,%d1<== NOT EXECUTED 4c2de: e489 lsrl #2,%d1 <== NOT EXECUTED 4c2e0: 2001 movel %d1,%d0 <== NOT EXECUTED 4c2e2: 5380 subql #1,%d0 <== NOT EXECUTED #endif IMFS_jnode_t *the_jnode, unsigned int block, int malloc_it ) { 4c2e4: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED 4c2e8: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4c2ec: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4c2f0: 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 ) { 4c2f4: b082 cmpl %d2,%d0 <== NOT EXECUTED 4c2f6: 651e bcss 4c316 <== NOT EXECUTED p = info->indirect; 4c2f8: 226a 0054 moveal %a2@(84),%a1 <== NOT EXECUTED if ( malloc_it ) { 4c2fc: 4a88 tstl %a0 <== NOT EXECUTED 4c2fe: 675a beqs 4c35a <== NOT EXECUTED if ( !p ) { 4c300: 4a89 tstl %a1 <== NOT EXECUTED 4c302: 6700 00c0 beqw 4c3c4 <== NOT EXECUTED } if ( !p ) return 0; return &info->indirect[ my_block ]; 4c306: 43f1 2c00 lea %a1@(00000000,%d2:l:4),%a1 <== NOT EXECUTED 4c30a: 2009 movel %a1,%d0 <== NOT EXECUTED /* * This means the requested block number is out of range. */ return 0; } 4c30c: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 4c312: 4e5e unlk %fp <== NOT EXECUTED 4c314: 4e75 rts <== NOT EXECUTED /* * Is the block number in the doubly indirect portion? */ if ( my_block <= LAST_DOUBLY_INDIRECT ) { 4c316: 2001 movel %d1,%d0 <== NOT EXECUTED 4c318: 5280 addql #1,%d0 <== NOT EXECUTED 4c31a: 4c01 0800 mulsl %d1,%d0 <== NOT EXECUTED 4c31e: 2240 moveal %d0,%a1 <== NOT EXECUTED 4c320: 5389 subql #1,%a1 <== NOT EXECUTED 4c322: b3c2 cmpal %d2,%a1 <== NOT EXECUTED 4c324: 6544 bcss 4c36a <== NOT EXECUTED my_block -= FIRST_DOUBLY_INDIRECT; 4c326: 9481 subl %d1,%d2 <== NOT EXECUTED singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS; doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS; p = info->doubly_indirect; 4c328: 226a 0058 moveal %a2@(88),%a1 <== NOT EXECUTED */ if ( my_block <= LAST_DOUBLY_INDIRECT ) { my_block -= FIRST_DOUBLY_INDIRECT; singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS; 4c32c: 4c41 2003 remul %d1,%d3,%d2 <== NOT EXECUTED 4c330: 4c41 2002 remul %d1,%d2,%d2 <== NOT EXECUTED doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS; p = info->doubly_indirect; if ( malloc_it ) { 4c334: 4a88 tstl %a0 <== NOT EXECUTED 4c336: 6700 0104 beqw 4c43c <== NOT EXECUTED if ( !p ) { 4c33a: 4a89 tstl %a1 <== NOT EXECUTED 4c33c: 6700 00a0 beqw 4c3de <== NOT EXECUTED if ( !p ) return 0; info->doubly_indirect = p; } p1 = (block_p *)p[ doubly ]; 4c340: 45f1 2c00 lea %a1@(00000000,%d2:l:4),%a2 <== NOT EXECUTED 4c344: 2052 moveal %a2@,%a0 <== NOT EXECUTED if ( !p1 ) { 4c346: 4a88 tstl %a0 <== NOT EXECUTED 4c348: 6764 beqs 4c3ae <== NOT EXECUTED p2 = (block_p *)p1[ doubly ]; if ( !p2 ) return 0; return (block_p *)&p2[ singly ]; 4c34a: 41f0 3c00 lea %a0@(00000000,%d3:l:4),%a0 <== NOT EXECUTED 4c34e: 2008 movel %a0,%d0 <== NOT EXECUTED /* * This means the requested block number is out of range. */ return 0; } 4c350: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 4c356: 4e5e unlk %fp <== NOT EXECUTED 4c358: 4e75 rts <== NOT EXECUTED info->indirect = p; } return &info->indirect[ my_block ]; } if ( !p ) 4c35a: 4a89 tstl %a1 <== NOT EXECUTED 4c35c: 66a8 bnes 4c306 <== NOT EXECUTED if ( !p1 ) return 0; p2 = (block_p *)p1[ doubly ]; if ( !p2 ) return 0; 4c35e: 4280 clrl %d0 <== NOT EXECUTED /* * This means the requested block number is out of range. */ return 0; } 4c360: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 4c366: 4e5e unlk %fp <== NOT EXECUTED 4c368: 4e75 rts <== NOT EXECUTED } /* * Is the block number in the triply indirect portion? */ if ( my_block <= LAST_TRIPLY_INDIRECT ) { 4c36a: 2600 movel %d0,%d3 <== NOT EXECUTED 4c36c: 5283 addql #1,%d3 <== NOT EXECUTED 4c36e: 4c01 3800 mulsl %d1,%d3 <== NOT EXECUTED 4c372: 5383 subql #1,%d3 <== NOT EXECUTED 4c374: b682 cmpl %d2,%d3 <== NOT EXECUTED 4c376: 65e6 bcss 4c35e <== NOT EXECUTED my_block -= FIRST_TRIPLY_INDIRECT; 4c378: 9480 subl %d0,%d2 <== NOT EXECUTED singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS; 4c37a: 4c41 2003 remul %d1,%d3,%d2 <== NOT EXECUTED 4c37e: 4c41 2002 remul %d1,%d2,%d2 <== NOT EXECUTED doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS; triply = doubly / IMFS_MEMFILE_BLOCK_SLOTS; doubly %= IMFS_MEMFILE_BLOCK_SLOTS; p = info->triply_indirect; 4c382: 226a 005c moveal %a2@(92),%a1 <== NOT EXECUTED if ( my_block <= LAST_TRIPLY_INDIRECT ) { my_block -= FIRST_TRIPLY_INDIRECT; singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS; doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS; triply = doubly / IMFS_MEMFILE_BLOCK_SLOTS; 4c386: 4c41 2004 remul %d1,%d4,%d2 <== NOT EXECUTED 4c38a: 4c41 2002 remul %d1,%d2,%d2 <== NOT EXECUTED doubly %= IMFS_MEMFILE_BLOCK_SLOTS; p = info->triply_indirect; if ( malloc_it ) { 4c38e: 4a88 tstl %a0 <== NOT EXECUTED 4c390: 6700 00c4 beqw 4c456 <== NOT EXECUTED if ( !p ) { 4c394: 4a89 tstl %a1 <== NOT EXECUTED 4c396: 6700 0084 beqw 4c41c <== NOT EXECUTED if ( !p ) return 0; info->triply_indirect = p; } p1 = (block_p *) p[ triply ]; 4c39a: 45f1 2c00 lea %a1@(00000000,%d2:l:4),%a2 <== NOT EXECUTED 4c39e: 2052 moveal %a2@,%a0 <== NOT EXECUTED if ( !p1 ) { 4c3a0: 4a88 tstl %a0 <== NOT EXECUTED 4c3a2: 675a beqs 4c3fe <== NOT EXECUTED if ( !p1 ) return 0; p[ triply ] = (block_p) p1; } p2 = (block_p *)p1[ doubly ]; 4c3a4: 45f0 4c00 lea %a0@(00000000,%d4:l:4),%a2 <== NOT EXECUTED 4c3a8: 2052 moveal %a2@,%a0 <== NOT EXECUTED if ( !p2 ) { 4c3aa: 4a88 tstl %a0 <== NOT EXECUTED 4c3ac: 669c bnes 4c34a <== NOT EXECUTED p2 = memfile_alloc_block(); 4c3ae: 4eb9 0004 c2b0 jsr 4c2b0 <== NOT EXECUTED 4c3b4: 2040 moveal %d0,%a0 <== NOT EXECUTED if ( !p2 ) 4c3b6: 4a80 tstl %d0 <== NOT EXECUTED 4c3b8: 67a4 beqs 4c35e <== NOT EXECUTED return 0; p1[ doubly ] = (block_p) p2; 4c3ba: 2480 movel %d0,%a2@ <== NOT EXECUTED p2 = (block_p *)p1[ doubly ]; if ( !p2 ) return 0; return (block_p *)&p2[ singly ]; 4c3bc: 41f0 3c00 lea %a0@(00000000,%d3:l:4),%a0 <== NOT EXECUTED 4c3c0: 2008 movel %a0,%d0 <== NOT EXECUTED 4c3c2: 608c bras 4c350 <== NOT EXECUTED p = info->indirect; if ( malloc_it ) { if ( !p ) { p = memfile_alloc_block(); 4c3c4: 4eb9 0004 c2b0 jsr 4c2b0 <== NOT EXECUTED if ( !p ) 4c3ca: 4a80 tstl %d0 <== NOT EXECUTED 4c3cc: 6790 beqs 4c35e <== NOT EXECUTED return 0; info->indirect = p; 4c3ce: 2240 moveal %d0,%a1 <== NOT EXECUTED } if ( !p ) return 0; return &info->indirect[ my_block ]; 4c3d0: 43f1 2c00 lea %a1@(00000000,%d2:l:4),%a1 <== NOT EXECUTED if ( !p ) { p = memfile_alloc_block(); if ( !p ) return 0; info->indirect = p; 4c3d4: 2540 0054 movel %d0,%a2@(84) <== NOT EXECUTED } if ( !p ) return 0; return &info->indirect[ my_block ]; 4c3d8: 2009 movel %a1,%d0 <== NOT EXECUTED 4c3da: 6000 ff30 braw 4c30c <== NOT EXECUTED p = info->doubly_indirect; if ( malloc_it ) { if ( !p ) { p = memfile_alloc_block(); 4c3de: 4eb9 0004 c2b0 jsr 4c2b0 <== NOT EXECUTED 4c3e4: 2240 moveal %d0,%a1 <== NOT EXECUTED if ( !p ) 4c3e6: 4a80 tstl %d0 <== NOT EXECUTED 4c3e8: 6700 ff74 beqw 4c35e <== NOT EXECUTED return 0; info->doubly_indirect = p; 4c3ec: 2540 0058 movel %d0,%a2@(88) <== NOT EXECUTED } p1 = (block_p *)p[ doubly ]; 4c3f0: 45f1 2c00 lea %a1@(00000000,%d2:l:4),%a2 <== NOT EXECUTED 4c3f4: 2052 moveal %a2@,%a0 <== NOT EXECUTED if ( !p1 ) { 4c3f6: 4a88 tstl %a0 <== NOT EXECUTED 4c3f8: 6600 ff50 bnew 4c34a <== NOT EXECUTED 4c3fc: 60b0 bras 4c3ae <== NOT EXECUTED info->triply_indirect = p; } p1 = (block_p *) p[ triply ]; if ( !p1 ) { p1 = memfile_alloc_block(); 4c3fe: 4eb9 0004 c2b0 jsr 4c2b0 <== NOT EXECUTED 4c404: 2040 moveal %d0,%a0 <== NOT EXECUTED if ( !p1 ) 4c406: 4a80 tstl %d0 <== NOT EXECUTED 4c408: 6700 ff54 beqw 4c35e <== NOT EXECUTED return 0; p[ triply ] = (block_p) p1; 4c40c: 2480 movel %d0,%a2@ <== NOT EXECUTED } p2 = (block_p *)p1[ doubly ]; 4c40e: 45f0 4c00 lea %a0@(00000000,%d4:l:4),%a2 <== NOT EXECUTED 4c412: 2052 moveal %a2@,%a0 <== NOT EXECUTED if ( !p2 ) { 4c414: 4a88 tstl %a0 <== NOT EXECUTED 4c416: 6600 ff32 bnew 4c34a <== NOT EXECUTED 4c41a: 6092 bras 4c3ae <== NOT EXECUTED p = info->triply_indirect; if ( malloc_it ) { if ( !p ) { p = memfile_alloc_block(); 4c41c: 4eb9 0004 c2b0 jsr 4c2b0 <== NOT EXECUTED 4c422: 2240 moveal %d0,%a1 <== NOT EXECUTED if ( !p ) 4c424: 4a80 tstl %d0 <== NOT EXECUTED 4c426: 6700 ff36 beqw 4c35e <== NOT EXECUTED return 0; info->triply_indirect = p; 4c42a: 2540 005c movel %d0,%a2@(92) <== NOT EXECUTED } p1 = (block_p *) p[ triply ]; 4c42e: 45f1 2c00 lea %a1@(00000000,%d2:l:4),%a2 <== NOT EXECUTED 4c432: 2052 moveal %a2@,%a0 <== NOT EXECUTED if ( !p1 ) { 4c434: 4a88 tstl %a0 <== NOT EXECUTED 4c436: 6600 ff6c bnew 4c3a4 <== NOT EXECUTED 4c43a: 60c2 bras 4c3fe <== NOT EXECUTED } return (block_p *)&p1[ singly ]; } if ( !p ) 4c43c: 4a89 tstl %a1 <== NOT EXECUTED 4c43e: 6700 ff1e beqw 4c35e <== NOT EXECUTED return 0; p = (block_p *)p[ doubly ]; 4c442: 2071 2c00 moveal %a1@(00000000,%d2:l:4),%a0 <== NOT EXECUTED if ( !p ) 4c446: 4a88 tstl %a0 <== NOT EXECUTED 4c448: 6700 ff14 beqw 4c35e <== NOT EXECUTED p2 = (block_p *)p1[ doubly ]; if ( !p2 ) return 0; return (block_p *)&p2[ singly ]; 4c44c: 41f0 3c00 lea %a0@(00000000,%d3:l:4),%a0 <== NOT EXECUTED 4c450: 2008 movel %a0,%d0 <== NOT EXECUTED 4c452: 6000 fefc braw 4c350 <== NOT EXECUTED p1[ doubly ] = (block_p) p2; } return (block_p *)&p2[ singly ]; } if ( !p ) 4c456: 4a89 tstl %a1 <== NOT EXECUTED 4c458: 6700 ff04 beqw 4c35e <== NOT EXECUTED return 0; p1 = (block_p *) p[ triply ]; 4c45c: 2071 2c00 moveal %a1@(00000000,%d2:l:4),%a0 <== NOT EXECUTED if ( !p1 ) 4c460: 4a88 tstl %a0 <== NOT EXECUTED 4c462: 6700 fefa beqw 4c35e <== NOT EXECUTED return 0; p2 = (block_p *)p1[ doubly ]; 4c466: 2070 4c00 moveal %a0@(00000000,%d4:l:4),%a0 <== NOT EXECUTED if ( !p2 ) 4c46a: 4a88 tstl %a0 <== NOT EXECUTED 4c46c: 6700 fef0 beqw 4c35e <== NOT EXECUTED return 0; return (block_p *)&p2[ singly ]; 4c470: 41f0 3c00 lea %a0@(00000000,%d3:l:4),%a0 <== NOT EXECUTED 4c474: 2008 movel %a0,%d0 <== NOT EXECUTED 4c476: 6000 fed8 braw 4c350 <== NOT EXECUTED =============================================================================== 00045036 : * 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 ) { 45036: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return IMFS_MEMFILE_MAXIMUM_SIZE; 4503a: 2039 0006 47c8 movel 647c8 ,%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 ) { 45040: 2f02 movel %d2,%sp@- <== NOT EXECUTED return IMFS_MEMFILE_MAXIMUM_SIZE; 45042: 2400 movel %d0,%d2 <== NOT EXECUTED 45044: e48a lsrl #2,%d2 <== NOT EXECUTED 45046: 2202 movel %d2,%d1 <== NOT EXECUTED 45048: 5281 addql #1,%d1 <== NOT EXECUTED 4504a: 4c02 1800 mulsl %d2,%d1 <== NOT EXECUTED 4504e: 5281 addql #1,%d1 <== NOT EXECUTED 45050: 4c02 1800 mulsl %d2,%d1 <== NOT EXECUTED } 45054: 241f movel %sp@+,%d2 <== NOT EXECUTED * using the IMFS memory file type. * */ int IMFS_memfile_maximum_size( void ) { return IMFS_MEMFILE_MAXIMUM_SIZE; 45056: 5381 subql #1,%d1 <== NOT EXECUTED } 45058: 4c01 0800 mulsl %d1,%d0 <== NOT EXECUTED 4505c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004c47a : IMFS_jnode_t *the_jnode, off_t start, unsigned char *destination, unsigned int length ) { 4c47a: 4e56 ffc8 linkw %fp,#-56 <== NOT EXECUTED 4c47e: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED 4c482: 246e 0008 moveal %fp@(8),%a2 <== 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) { 4c486: 7806 moveq #6,%d4 <== NOT EXECUTED IMFS_jnode_t *the_jnode, off_t start, unsigned char *destination, unsigned int length ) { 4c488: 266e 0014 moveal %fp@(20),%a3 <== NOT EXECUTED 4c48c: 2a6e 0018 moveal %fp@(24),%a5 <== NOT EXECUTED 4c490: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4c494: 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) { 4c498: b8aa 0048 cmpl %a2@(72),%d4 <== NOT EXECUTED 4c49c: 6700 017c beqw 4c61a <== 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; 4c4a0: 43f5 3800 lea %a5@(00000000,%d3:l),%a1 <== NOT EXECUTED if ( last_byte > the_jnode->info.file.size ) 4c4a4: 4280 clrl %d0 <== NOT EXECUTED 4c4a6: 2209 movel %a1,%d1 <== NOT EXECUTED 4c4a8: 282a 004c movel %a2@(76),%d4 <== NOT EXECUTED 4c4ac: 2a2a 0050 movel %a2@(80),%d5 <== NOT EXECUTED 4c4b0: 2c00 movel %d0,%d6 <== NOT EXECUTED 4c4b2: 2e01 movel %d1,%d7 <== NOT EXECUTED 4c4b4: 9e85 subl %d5,%d7 <== NOT EXECUTED 4c4b6: 9d84 subxl %d4,%d6 <== NOT EXECUTED 4c4b8: 6f00 0110 blew 4c5ca <== NOT EXECUTED */ /* * Phase 1: possibly the last part of one block */ start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK; 4c4bc: 2c39 0005 e4e8 movel 5e4e8 ,%d6<== 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; if ( last_byte > the_jnode->info.file.size ) my_length = the_jnode->info.file.size - start; 4c4c2: 2e05 movel %d5,%d7 <== NOT EXECUTED 4c4c4: 9e83 subl %d3,%d7 <== NOT EXECUTED */ /* * Phase 1: possibly the last part of one block */ start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK; 4c4c6: 2a06 movel %d6,%d5 <== NOT EXECUTED 4c4c8: 5bc4 smi %d4 <== NOT EXECUTED 4c4ca: 49c4 extbl %d4 <== NOT EXECUTED 4c4cc: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4c4ce: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4c4d0: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4c4d2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4c4d4: 4eb9 0005 a428 jsr 5a428 <__moddi3> <== NOT EXECUTED 4c4da: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4c4de: 2841 moveal %d1,%a4 <== NOT EXECUTED block = start / IMFS_MEMFILE_BYTES_PER_BLOCK; 4c4e0: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4c4e2: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4c4e4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4c4e6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4c4e8: 4eb9 0005 a074 jsr 5a074 <__divdi3> <== NOT EXECUTED 4c4ee: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4c4f2: 2401 movel %d1,%d2 <== NOT EXECUTED if ( start_offset ) { 4c4f4: 4a8c tstl %a4 <== NOT EXECUTED 4c4f6: 6700 010e beqw 4c606 <== 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 ); 4c4fa: 42a7 clrl %sp@- <== NOT EXECUTED 4c4fc: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4c4fe: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c500: 4eb9 0004 c2d4 jsr 4c2d4 <== NOT EXECUTED if ( !block_ptr ) 4c506: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4c50a: 4a80 tstl %d0 <== NOT EXECUTED 4c50c: 6700 01c0 beqw 4c6ce <== 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; 4c510: 9c8c subl %a4,%d6 <== NOT EXECUTED 4c512: 2207 movel %d7,%d1 <== NOT EXECUTED 4c514: bc87 cmpl %d7,%d6 <== NOT EXECUTED 4c516: 6500 0162 bcsw 4c67a <== 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 ); 4c51a: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4c51c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4c51e: d9d0 addal %a0@,%a4 <== NOT EXECUTED dest += to_copy; 4c520: 280b movel %a3,%d4 <== NOT EXECUTED 4c522: d881 addl %d1,%d4 <== NOT EXECUTED block++; my_length -= to_copy; 4c524: 9e81 subl %d1,%d7 <== NOT EXECUTED block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 ); if ( !block_ptr ) return copied; memcpy( dest, &(*block_ptr)[ start_offset ], to_copy ); dest += to_copy; block++; 4c526: 5282 addql #1,%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 ); 4c528: 2f0c movel %a4,%sp@- <== NOT EXECUTED dest += to_copy; block++; my_length -= to_copy; copied += to_copy; 4c52a: 2841 moveal %d1,%a4 <== 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 ); 4c52c: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4c52e: 4eb9 0004 e108 jsr 4e108 <== NOT EXECUTED dest += to_copy; block++; my_length -= to_copy; 4c534: 2c39 0005 e4e8 movel 5e4e8 ,%d6<== NOT EXECUTED 4c53a: 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 ) { 4c53e: bc87 cmpl %d7,%d6 <== NOT EXECUTED 4c540: 623c bhis 4c57e <== NOT EXECUTED 4c542: 47f9 0004 c2d4 lea 4c2d4 ,%a3<== NOT EXECUTED block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 ); if ( !block_ptr ) return copied; memcpy( dest, &(*block_ptr)[ 0 ], to_copy ); 4c548: 4bf9 0004 e108 lea 4e108 ,%a5 <== 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 ) { block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 ); 4c54e: 42a7 clrl %sp@- <== NOT EXECUTED if ( !block_ptr ) return copied; memcpy( dest, &(*block_ptr)[ 0 ], to_copy ); dest += to_copy; block++; my_length -= to_copy; 4c550: 9e86 subl %d6,%d7 <== 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 ) { block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 ); 4c552: 2f02 movel %d2,%sp@- <== NOT EXECUTED if ( !block_ptr ) return copied; memcpy( dest, &(*block_ptr)[ 0 ], to_copy ); dest += to_copy; block++; 4c554: 5282 addql #1,%d2 <== 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 ) { block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 ); 4c556: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c558: 4e93 jsr %a3@ <== NOT EXECUTED if ( !block_ptr ) 4c55a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4c55e: 4a80 tstl %d0 <== NOT EXECUTED 4c560: 6700 00ac beqw 4c60e <== NOT EXECUTED return copied; memcpy( dest, &(*block_ptr)[ 0 ], to_copy ); 4c564: 2040 moveal %d0,%a0 <== NOT EXECUTED dest += to_copy; block++; my_length -= to_copy; copied += to_copy; 4c566: d9c6 addal %d6,%a4 <== 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 ); 4c568: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4c56a: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4c56c: 2f04 movel %d4,%sp@- <== NOT EXECUTED dest += to_copy; 4c56e: d886 addl %d6,%d4 <== 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 ); 4c570: 4e95 jsr %a5@ <== 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 ) { 4c572: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4c576: beb9 0005 e4e8 cmpl 5e4e8 ,%d7<== NOT EXECUTED 4c57c: 64d0 bccs 4c54e <== NOT EXECUTED /* * Phase 3: possibly the first part of one block */ IMFS_assert( my_length < IMFS_MEMFILE_BYTES_PER_BLOCK ); if ( my_length ) { 4c57e: 4a87 tstl %d7 <== NOT EXECUTED 4c580: 6728 beqs 4c5aa <== NOT EXECUTED block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 ); 4c582: 42a7 clrl %sp@- <== NOT EXECUTED 4c584: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4c586: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c588: 4eb9 0004 c2d4 jsr 4c2d4 <== NOT EXECUTED if ( !block_ptr ) 4c58e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4c592: 4a80 tstl %d0 <== NOT EXECUTED 4c594: 6778 beqs 4c60e <== NOT EXECUTED return copied; memcpy( dest, &(*block_ptr)[ 0 ], my_length ); 4c596: 2040 moveal %d0,%a0 <== NOT EXECUTED copied += my_length; 4c598: d9c7 addal %d7,%a4 <== 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 ); 4c59a: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4c59c: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4c59e: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4c5a0: 4eb9 0004 e108 jsr 4e108 <== NOT EXECUTED copied += my_length; 4c5a6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED } IMFS_update_atime( the_jnode ); 4c5aa: 42a7 clrl %sp@- <== NOT EXECUTED 4c5ac: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4c5b0: 4eb9 0004 2d8c jsr 42d8c <== NOT EXECUTED 4c5b6: 256e fff8 003c movel %fp@(-8),%a2@(60) <== NOT EXECUTED return copied; 4c5bc: 200c movel %a4,%d0 <== NOT EXECUTED 4c5be: 508f addql #8,%sp <== NOT EXECUTED } 4c5c0: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4c5c6: 4e5e unlk %fp <== NOT EXECUTED 4c5c8: 4e75 rts <== NOT EXECUTED */ /* * Phase 1: possibly the last part of one block */ start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK; 4c5ca: 2c39 0005 e4e8 movel 5e4e8 ,%d6<== NOT EXECUTED /* * Linear files (as created from a tar file are easier to handle * than block files). */ my_length = length; 4c5d0: 2e0d movel %a5,%d7 <== NOT EXECUTED */ /* * Phase 1: possibly the last part of one block */ start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK; 4c5d2: 2a06 movel %d6,%d5 <== NOT EXECUTED 4c5d4: 5bc4 smi %d4 <== NOT EXECUTED 4c5d6: 49c4 extbl %d4 <== NOT EXECUTED 4c5d8: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4c5da: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4c5dc: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4c5de: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4c5e0: 4eb9 0005 a428 jsr 5a428 <__moddi3> <== NOT EXECUTED 4c5e6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4c5ea: 2841 moveal %d1,%a4 <== NOT EXECUTED block = start / IMFS_MEMFILE_BYTES_PER_BLOCK; 4c5ec: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4c5ee: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4c5f0: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4c5f2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4c5f4: 4eb9 0005 a074 jsr 5a074 <__divdi3> <== NOT EXECUTED 4c5fa: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4c5fe: 2401 movel %d1,%d2 <== NOT EXECUTED if ( start_offset ) { 4c600: 4a8c tstl %a4 <== NOT EXECUTED 4c602: 6600 fef6 bnew 4c4fa <== NOT EXECUTED unsigned int last_byte; unsigned int copied; unsigned int start_offset; unsigned char *dest; dest = destination; 4c606: 280b movel %a3,%d4 <== NOT EXECUTED */ last_byte = start + length; if ( last_byte > the_jnode->info.file.size ) my_length = the_jnode->info.file.size - start; copied = 0; 4c608: 99cc subal %a4,%a4 <== NOT EXECUTED 4c60a: 6000 ff32 braw 4c53e <== NOT EXECUTED IMFS_assert( my_length < IMFS_MEMFILE_BYTES_PER_BLOCK ); if ( my_length ) { block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 ); if ( !block_ptr ) return copied; 4c60e: 200c movel %a4,%d0 <== NOT EXECUTED } IMFS_update_atime( the_jnode ); return copied; } 4c610: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4c616: 4e5e unlk %fp <== NOT EXECUTED 4c618: 4e75 rts <== NOT EXECUTED if (the_jnode->type == IMFS_LINEAR_FILE) { unsigned char *file_ptr; file_ptr = (unsigned char *)the_jnode->info.linearfile.direct; if (my_length > (the_jnode->info.linearfile.size - start)) 4c61a: 91c8 subal %a0,%a0 <== NOT EXECUTED 4c61c: 202a 004c movel %a2@(76),%d0 <== NOT EXECUTED 4c620: 222a 0050 movel %a2@(80),%d1 <== NOT EXECUTED 4c624: 2d4d fff4 movel %a5,%fp@(-12) <== 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; 4c628: 286a 0054 moveal %a2@(84),%a4 <== NOT EXECUTED if (my_length > (the_jnode->info.linearfile.size - start)) 4c62c: 2800 movel %d0,%d4 <== NOT EXECUTED 4c62e: 2a01 movel %d1,%d5 <== NOT EXECUTED 4c630: 2d48 fff0 movel %a0,%fp@(-16) <== NOT EXECUTED 4c634: 9a83 subl %d3,%d5 <== NOT EXECUTED 4c636: 9982 subxl %d2,%d4 <== NOT EXECUTED 4c638: 2c2e fff0 movel %fp@(-16),%d6 <== NOT EXECUTED 4c63c: 2e2e fff4 movel %fp@(-12),%d7 <== NOT EXECUTED 4c640: 9e85 subl %d5,%d7 <== NOT EXECUTED 4c642: 9d84 subxl %d4,%d6 <== NOT EXECUTED 4c644: 6f5e bles 4c6a4 <== NOT EXECUTED my_length = the_jnode->info.linearfile.size - start; 4c646: 2e01 movel %d1,%d7 <== NOT EXECUTED 4c648: 9e83 subl %d3,%d7 <== NOT EXECUTED memcpy(dest, &file_ptr[start], my_length); 4c64a: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4c64c: 4874 3800 pea %a4@(00000000,%d3:l) <== NOT EXECUTED 4c650: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4c652: 4eb9 0004 e108 jsr 4e108 <== NOT EXECUTED IMFS_update_atime( the_jnode ); 4c658: 42a7 clrl %sp@- <== NOT EXECUTED 4c65a: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4c65e: 4eb9 0004 2d8c jsr 42d8c <== NOT EXECUTED 4c664: 256e fff8 003c movel %fp@(-8),%a2@(60) <== NOT EXECUTED return my_length; 4c66a: 2007 movel %d7,%d0 <== NOT EXECUTED 4c66c: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED } IMFS_update_atime( the_jnode ); return copied; } 4c670: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4c676: 4e5e unlk %fp <== NOT EXECUTED 4c678: 4e75 rts <== 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; 4c67a: 2206 movel %d6,%d1 <== 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 ); 4c67c: 2040 moveal %d0,%a0 <== NOT EXECUTED dest += to_copy; 4c67e: 280b movel %a3,%d4 <== NOT EXECUTED 4c680: d881 addl %d1,%d4 <== NOT EXECUTED block++; my_length -= to_copy; 4c682: 9e81 subl %d1,%d7 <== NOT EXECUTED block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 ); if ( !block_ptr ) return copied; memcpy( dest, &(*block_ptr)[ start_offset ], to_copy ); dest += to_copy; block++; 4c684: 5282 addql #1,%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 ); 4c686: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4c688: d9d0 addal %a0@,%a4 <== NOT EXECUTED 4c68a: 2f0c movel %a4,%sp@- <== NOT EXECUTED dest += to_copy; block++; my_length -= to_copy; copied += to_copy; 4c68c: 2841 moveal %d1,%a4 <== 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 ); 4c68e: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4c690: 4eb9 0004 e108 jsr 4e108 <== NOT EXECUTED dest += to_copy; block++; my_length -= to_copy; 4c696: 2c39 0005 e4e8 movel 5e4e8 ,%d6<== NOT EXECUTED 4c69c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4c6a0: 6000 fe9c braw 4c53e <== NOT EXECUTED /* * Linear files (as created from a tar file are easier to handle * than block files). */ my_length = length; 4c6a4: 2e0d movel %a5,%d7 <== 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); 4c6a6: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4c6a8: 4874 3800 pea %a4@(00000000,%d3:l) <== NOT EXECUTED 4c6ac: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4c6ae: 4eb9 0004 e108 jsr 4e108 <== NOT EXECUTED IMFS_update_atime( the_jnode ); 4c6b4: 42a7 clrl %sp@- <== NOT EXECUTED 4c6b6: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4c6ba: 4eb9 0004 2d8c jsr 42d8c <== NOT EXECUTED 4c6c0: 256e fff8 003c movel %fp@(-8),%a2@(60) <== NOT EXECUTED return my_length; 4c6c6: 2007 movel %d7,%d0 <== NOT EXECUTED 4c6c8: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4c6cc: 60a2 bras 4c670 <== 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; 4c6ce: 4280 clrl %d0 <== NOT EXECUTED } IMFS_update_atime( the_jnode ); return copied; } 4c6d0: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4c6d6: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004c7ac : * is better to stick to simple, easy to understand algorithms. */ int IMFS_memfile_remove( IMFS_jnode_t *the_jnode ) { 4c7ac: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 4c7b0: 48d7 1c7c moveml %d2-%d6/%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; 4c7b4: 2839 0005 e4e8 movel 5e4e8 ,%d4<== NOT EXECUTED 4c7ba: e48c lsrl #2,%d4 <== NOT EXECUTED * is better to stick to simple, easy to understand algorithms. */ int IMFS_memfile_remove( IMFS_jnode_t *the_jnode ) { 4c7bc: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED * + doubly indirect * + triply indirect */ info = &the_jnode->info.file; if ( info->indirect ) { 4c7c0: 4aac 0054 tstl %a4@(84) <== NOT EXECUTED 4c7c4: 670e beqs 4c7d4 <== NOT EXECUTED memfile_free_blocks_in_table( &info->indirect, to_free ); 4c7c6: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4c7c8: 486c 0054 pea %a4@(84) <== NOT EXECUTED 4c7cc: 4eb9 0004 c766 jsr 4c766 <== NOT EXECUTED 4c7d2: 508f addql #8,%sp <== NOT EXECUTED } if ( info->doubly_indirect ) { 4c7d4: 206c 0058 moveal %a4@(88),%a0 <== NOT EXECUTED 4c7d8: 4a88 tstl %a0 <== NOT EXECUTED 4c7da: 6750 beqs 4c82c <== NOT EXECUTED for ( i=0 ; i,%d1<== NOT EXECUTED 4c7e2: 2001 movel %d1,%d0 <== NOT EXECUTED 4c7e4: e488 lsrl #2,%d0 <== NOT EXECUTED 4c7e6: 47f9 0004 c766 lea 4c766 ,%a3<== NOT EXECUTED 4c7ec: 6734 beqs 4c822 <== NOT EXECUTED 4c7ee: 4280 clrl %d0 <== NOT EXECUTED 4c7f0: 4282 clrl %d2 <== NOT EXECUTED 4c7f2: 47f9 0004 c766 lea 4c766 ,%a3<== NOT EXECUTED 4c7f8: 5282 addql #1,%d2 <== NOT EXECUTED if ( info->doubly_indirect[i] ) { 4c7fa: e588 lsll #2,%d0 <== NOT EXECUTED 4c7fc: 4ab0 0800 tstl %a0@(00000000,%d0:l) <== NOT EXECUTED 4c800: 6710 beqs 4c812 <== NOT EXECUTED memfile_free_blocks_in_table( 4c802: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4c804: 4870 0800 pea %a0@(00000000,%d0:l) <== NOT EXECUTED 4c808: 4e93 jsr %a3@ <== NOT EXECUTED 4c80a: 2239 0005 e4e8 movel 5e4e8 ,%d1<== NOT EXECUTED 4c810: 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 <== NOT EXECUTED 4c81c: 206c 0058 moveal %a4@(88),%a0 <== NOT EXECUTED 4c820: 60d6 bras 4c7f8 <== 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 ); 4c822: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4c824: 486c 0058 pea %a4@(88) <== NOT EXECUTED 4c828: 4e93 jsr %a3@ <== NOT EXECUTED 4c82a: 508f addql #8,%sp <== NOT EXECUTED } if ( info->triply_indirect ) { 4c82c: 206c 005c moveal %a4@(92),%a0 <== NOT EXECUTED 4c830: 4a88 tstl %a0 <== NOT EXECUTED 4c832: 6700 0086 beqw 4c8ba <== NOT EXECUTED for ( i=0 ; i,%d1<== NOT EXECUTED 4c83c: 2001 movel %d1,%d0 <== NOT EXECUTED 4c83e: e488 lsrl #2,%d0 <== NOT EXECUTED 4c840: 47f9 0004 c766 lea 4c766 ,%a3<== NOT EXECUTED 4c846: 6768 beqs 4c8b0 <== NOT EXECUTED p = (block_p *) info->triply_indirect[i]; 4c848: 2450 moveal %a0@,%a2 <== NOT EXECUTED 4c84a: 47f9 0004 c766 lea 4c766 ,%a3<== NOT EXECUTED if ( !p ) /* ensure we have a valid pointer */ 4c850: 4a8a tstl %a2 <== NOT EXECUTED 4c852: 675c beqs 4c8b0 <== NOT EXECUTED } if ( info->triply_indirect ) { for ( i=0 ; itriply_indirect[i]; 4c854: 4286 clrl %d6 <== NOT EXECUTED if ( !p ) /* ensure we have a valid pointer */ 4c856: 4285 clrl %d5 <== NOT EXECUTED break; for ( j=0 ; j <== NOT EXECUTED 4c85c: 4280 clrl %d0 <== NOT EXECUTED 4c85e: 4282 clrl %d2 <== NOT EXECUTED 4c860: 5282 addql #1,%d2 <== NOT EXECUTED if ( p[j] ) { 4c862: e588 lsll #2,%d0 <== NOT EXECUTED 4c864: 4ab2 0800 tstl %a2@(00000000,%d0:l) <== NOT EXECUTED 4c868: 6710 beqs 4c87a <== NOT EXECUTED memfile_free_blocks_in_table( (block_p **)&p[j], to_free); 4c86a: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4c86c: 4872 0800 pea %a2@(00000000,%d0:l) <== NOT EXECUTED 4c870: 4e93 jsr %a3@ <== NOT EXECUTED 4c872: 2239 0005 e4e8 movel 5e4e8 ,%d1<== NOT EXECUTED 4c878: 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 <== NOT EXECUTED if ( p[j] ) { memfile_free_blocks_in_table( (block_p **)&p[j], to_free); } } memfile_free_blocks_in_table( 4c884: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4c886: dcac 005c addl %a4@(92),%d6 <== 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,%d1<== NOT EXECUTED 4c896: 2001 movel %d1,%d0 <== NOT EXECUTED 4c898: 508f addql #8,%sp <== NOT EXECUTED 4c89a: e488 lsrl #2,%d0 <== NOT EXECUTED 4c89c: ba80 cmpl %d0,%d5 <== NOT EXECUTED 4c89e: 6410 bccs 4c8b0 <== NOT EXECUTED p = (block_p *) info->triply_indirect[i]; if ( !p ) /* ensure we have a valid pointer */ 4c8a0: 2c05 movel %d5,%d6 <== NOT EXECUTED } if ( info->triply_indirect ) { for ( i=0 ; itriply_indirect[i]; 4c8a2: 206c 005c moveal %a4@(92),%a0 <== NOT EXECUTED if ( !p ) /* ensure we have a valid pointer */ 4c8a6: e58e lsll #2,%d6 <== NOT EXECUTED } if ( info->triply_indirect ) { for ( i=0 ; itriply_indirect[i]; 4c8a8: 2470 6800 moveal %a0@(00000000,%d6:l),%a2 <== NOT EXECUTED if ( !p ) /* ensure we have a valid pointer */ 4c8ac: 4a8a tstl %a2 <== NOT EXECUTED 4c8ae: 66a8 bnes 4c858 <== NOT EXECUTED } } memfile_free_blocks_in_table( (block_p **)&info->triply_indirect[i], to_free ); } memfile_free_blocks_in_table( 4c8b0: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4c8b2: 486c 005c pea %a4@(92) <== NOT EXECUTED 4c8b6: 4e93 jsr %a3@ <== NOT EXECUTED 4c8b8: 508f addql #8,%sp <== NOT EXECUTED (block_p **)&info->triply_indirect, to_free ); } return 0; } 4c8ba: 4280 clrl %d0 <== NOT EXECUTED 4c8bc: 4cee 1c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a4 <== NOT EXECUTED 4c8c2: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004c8c6 : */ MEMFILE_STATIC int IMFS_memfile_remove_block( IMFS_jnode_t *the_jnode, unsigned int block ) { 4c8c6: 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 ); 4c8ca: 42a7 clrl %sp@- <== NOT EXECUTED 4c8cc: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4c8d0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4c8d4: 4eb9 0004 c2d4 jsr 4c2d4 <== NOT EXECUTED IMFS_assert( block_ptr ); ptr = *block_ptr; 4c8da: 2040 moveal %d0,%a0 <== NOT EXECUTED 4c8dc: 2210 movel %a0@,%d1 <== NOT EXECUTED *block_ptr = 0; 4c8de: 4290 clrl %a0@ <== NOT EXECUTED memfile_free_block( ptr ); 4c8e0: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4c8e2: 4eb9 0004 c74c jsr 4c74c <== NOT EXECUTED return 1; } 4c8e8: 7001 moveq #1,%d0 <== NOT EXECUTED 4c8ea: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004c9f4 : * 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 ) { 4c9f4: 4280 clrl %d0 <== NOT EXECUTED IMFS_jnode_t *the_jnode, off_t start, const unsigned char *source, unsigned int length ) { 4c9f6: 4e56 ffd4 linkw %fp,#-44 <== NOT EXECUTED 4c9fa: 48d7 1cfc moveml %d2-%d7/%a2-%a4,%sp@ <== NOT EXECUTED 4c9fe: 2e2e 0018 movel %fp@(24),%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; 4ca02: 2047 moveal %d7,%a0 <== NOT EXECUTED IMFS_jnode_t *the_jnode, off_t start, const unsigned char *source, unsigned int length ) { 4ca04: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4ca08: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED 4ca0c: 246e 0008 moveal %fp@(8),%a2 <== 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; 4ca10: d1c3 addal %d3,%a0 <== NOT EXECUTED if ( last_byte > the_jnode->info.file.size ) { 4ca12: 2208 movel %a0,%d1 <== NOT EXECUTED IMFS_jnode_t *the_jnode, off_t start, const unsigned char *source, unsigned int length ) { 4ca14: 286e 0014 moveal %fp@(20),%a4 <== 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 ) { 4ca18: 282a 004c movel %a2@(76),%d4 <== NOT EXECUTED 4ca1c: 2a2a 0050 movel %a2@(80),%d5 <== NOT EXECUTED 4ca20: 9a81 subl %d1,%d5 <== NOT EXECUTED 4ca22: 9980 subxl %d0,%d4 <== NOT EXECUTED 4ca24: 6d00 0118 bltw 4cb3e <== NOT EXECUTED */ /* * Phase 1: possibly the last part of one block */ start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK; 4ca28: 2c39 0005 e4e8 movel 5e4e8 ,%d6<== NOT EXECUTED 4ca2e: 2a06 movel %d6,%d5 <== NOT EXECUTED 4ca30: 5bc4 smi %d4 <== NOT EXECUTED 4ca32: 49c4 extbl %d4 <== NOT EXECUTED 4ca34: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4ca36: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4ca38: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4ca3a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4ca3c: 4eb9 0005 a428 jsr 5a428 <__moddi3> <== NOT EXECUTED 4ca42: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4ca46: 2641 moveal %d1,%a3 <== NOT EXECUTED block = start / IMFS_MEMFILE_BYTES_PER_BLOCK; 4ca48: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4ca4a: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4ca4c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4ca4e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4ca50: 4eb9 0005 a074 jsr 5a074 <__divdi3> <== NOT EXECUTED 4ca56: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4ca5a: 2401 movel %d1,%d2 <== NOT EXECUTED if ( start_offset ) { 4ca5c: 4a8b tstl %a3 <== NOT EXECUTED 4ca5e: 6700 00d6 beqw 4cb36 <== 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 ); 4ca62: 42a7 clrl %sp@- <== NOT EXECUTED 4ca64: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4ca66: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4ca68: 4eb9 0004 c2d4 jsr 4c2d4 <== NOT EXECUTED if ( !block_ptr ) 4ca6e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4ca72: 4a80 tstl %d0 <== NOT EXECUTED 4ca74: 6700 012c beqw 4cba2 <== 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; 4ca78: 9c8b subl %a3,%d6 <== NOT EXECUTED 4ca7a: be86 cmpl %d6,%d7 <== NOT EXECUTED 4ca7c: 6500 00fa bcsw 4cb78 <== NOT EXECUTED block, to_copy, src ); #endif memcpy( &(*block_ptr)[ start_offset ], src, to_copy ); 4ca80: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4ca82: 2040 moveal %d0,%a0 <== NOT EXECUTED src += to_copy; 4ca84: 280c movel %a4,%d4 <== NOT EXECUTED 4ca86: d886 addl %d6,%d4 <== NOT EXECUTED block++; my_length -= to_copy; 4ca88: 9e86 subl %d6,%d7 <== NOT EXECUTED copied += to_copy; 4ca8a: 2606 movel %d6,%d3 <== NOT EXECUTED src ); #endif memcpy( &(*block_ptr)[ start_offset ], src, to_copy ); src += to_copy; block++; 4ca8c: 5282 addql #1,%d2 <== NOT EXECUTED block, to_copy, src ); #endif memcpy( &(*block_ptr)[ start_offset ], src, to_copy ); 4ca8e: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4ca90: d7d0 addal %a0@,%a3 <== NOT EXECUTED 4ca92: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4ca94: 4eb9 0004 e108 jsr 4e108 <== NOT EXECUTED src += to_copy; block++; my_length -= to_copy; copied += to_copy; 4ca9a: 2c39 0005 e4e8 movel 5e4e8 ,%d6<== NOT EXECUTED 4caa0: 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 ) { 4caa4: bc87 cmpl %d7,%d6 <== NOT EXECUTED 4caa6: 623c bhis 4cae4 <== NOT EXECUTED 4caa8: 47f9 0004 c2d4 lea 4c2d4 ,%a3<== 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 ); 4caae: 49f9 0004 e108 lea 4e108 ,%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 ) { block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 ); 4cab4: 42a7 clrl %sp@- <== NOT EXECUTED fprintf(stdout, "write %d in %d: %*s\n", to_copy, block, to_copy, src ); #endif memcpy( &(*block_ptr)[ 0 ], src, to_copy ); src += to_copy; block++; my_length -= to_copy; 4cab6: 9e86 subl %d6,%d7 <== 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 ) { block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 ); 4cab8: 2f02 movel %d2,%sp@- <== NOT EXECUTED #if 0 fprintf(stdout, "write %d in %d: %*s\n", to_copy, block, to_copy, src ); #endif memcpy( &(*block_ptr)[ 0 ], src, to_copy ); src += to_copy; block++; 4caba: 5282 addql #1,%d2 <== 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 ) { block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 ); 4cabc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4cabe: 4e93 jsr %a3@ <== NOT EXECUTED if ( !block_ptr ) 4cac0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4cac4: 4a80 tstl %d0 <== NOT EXECUTED 4cac6: 6700 00a4 beqw 4cb6c <== 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 ); 4caca: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4cacc: 2040 moveal %d0,%a0 <== 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( 4cace: d686 addl %d6,%d3 <== 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 ); 4cad0: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4cad2: 2f10 movel %a0@,%sp@- <== NOT EXECUTED src += to_copy; 4cad4: d886 addl %d6,%d4 <== 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 ); 4cad6: 4e94 jsr %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 ) { 4cad8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4cadc: beb9 0005 e4e8 cmpl 5e4e8 ,%d7<== NOT EXECUTED 4cae2: 64d0 bccs 4cab4 <== 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 ) { 4cae4: 4a87 tstl %d7 <== NOT EXECUTED 4cae6: 6728 beqs 4cb10 <== NOT EXECUTED block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 ); 4cae8: 42a7 clrl %sp@- <== NOT EXECUTED 4caea: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4caec: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4caee: 4eb9 0004 c2d4 jsr 4c2d4 <== NOT EXECUTED if ( !block_ptr ) 4caf4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4caf8: 4a80 tstl %d0 <== NOT EXECUTED 4cafa: 6770 beqs 4cb6c <== 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 ); 4cafc: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4cafe: 2040 moveal %d0,%a0 <== NOT EXECUTED my_length = 0; copied += to_copy; 4cb00: d687 addl %d7,%d3 <== 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 ); 4cb02: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4cb04: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4cb06: 4eb9 0004 e108 jsr 4e108 <== NOT EXECUTED my_length = 0; copied += to_copy; 4cb0c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED } IMFS_mtime_ctime_update( the_jnode ); 4cb10: 42a7 clrl %sp@- <== NOT EXECUTED 4cb12: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4cb16: 4eb9 0004 2d8c jsr 42d8c <== NOT EXECUTED 4cb1c: 222e fff8 movel %fp@(-8),%d1 <== NOT EXECUTED return copied; 4cb20: 2003 movel %d3,%d0 <== NOT EXECUTED 4cb22: 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 ); 4cb24: 2541 0040 movel %d1,%a2@(64) <== NOT EXECUTED 4cb28: 2541 0044 movel %d1,%a2@(68) <== NOT EXECUTED return copied; } 4cb2c: 4cee 1cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a4 <== NOT EXECUTED 4cb32: 4e5e unlk %fp <== NOT EXECUTED 4cb34: 4e75 rts <== NOT EXECUTED unsigned int last_byte; unsigned int start_offset; int copied; const unsigned char *src; src = source; 4cb36: 280c movel %a4,%d4 <== NOT EXECUTED status = IMFS_memfile_extend( the_jnode, last_byte ); if ( status ) rtems_set_errno_and_return_minus_one( ENOSPC ); } copied = 0; 4cb38: 4283 clrl %d3 <== NOT EXECUTED 4cb3a: 6000 ff68 braw 4caa4 <== NOT EXECUTED * in memory file, then extend the length. */ last_byte = start + my_length; if ( last_byte > the_jnode->info.file.size ) { status = IMFS_memfile_extend( the_jnode, last_byte ); 4cb3e: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4cb40: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4cb42: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4cb44: 4eb9 0004 c8ee jsr 4c8ee <== NOT EXECUTED if ( status ) 4cb4a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4cb4e: 4a80 tstl %d0 <== NOT EXECUTED 4cb50: 6700 fed6 beqw 4ca28 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSPC ); 4cb54: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED 4cb5a: 761c moveq #28,%d3 <== NOT EXECUTED 4cb5c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4cb5e: 70ff moveq #-1,%d0 <== NOT EXECUTED 4cb60: 2083 movel %d3,%a0@ <== NOT EXECUTED } IMFS_mtime_ctime_update( the_jnode ); return copied; } 4cb62: 4cee 1cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a4 <== NOT EXECUTED 4cb68: 4e5e unlk %fp <== NOT EXECUTED 4cb6a: 4e75 rts <== NOT EXECUTED IMFS_assert( my_length < IMFS_MEMFILE_BYTES_PER_BLOCK ); to_copy = my_length; if ( my_length ) { block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 ); if ( !block_ptr ) 4cb6c: 2003 movel %d3,%d0 <== NOT EXECUTED } IMFS_mtime_ctime_update( the_jnode ); return copied; } 4cb6e: 4cee 1cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a4 <== NOT EXECUTED 4cb74: 4e5e unlk %fp <== NOT EXECUTED 4cb76: 4e75 rts <== 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; 4cb78: 2c07 movel %d7,%d6 <== NOT EXECUTED block, to_copy, src ); #endif memcpy( &(*block_ptr)[ start_offset ], src, to_copy ); 4cb7a: 2040 moveal %d0,%a0 <== NOT EXECUTED src += to_copy; 4cb7c: 280c movel %a4,%d4 <== NOT EXECUTED 4cb7e: d886 addl %d6,%d4 <== NOT EXECUTED block++; my_length -= to_copy; 4cb80: 9e86 subl %d6,%d7 <== NOT EXECUTED copied += to_copy; 4cb82: 2606 movel %d6,%d3 <== NOT EXECUTED src ); #endif memcpy( &(*block_ptr)[ start_offset ], src, to_copy ); src += to_copy; block++; 4cb84: 5282 addql #1,%d2 <== NOT EXECUTED block, to_copy, src ); #endif memcpy( &(*block_ptr)[ start_offset ], src, to_copy ); 4cb86: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4cb88: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4cb8a: d7d0 addal %a0@,%a3 <== NOT EXECUTED 4cb8c: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4cb8e: 4eb9 0004 e108 jsr 4e108 <== NOT EXECUTED src += to_copy; block++; my_length -= to_copy; copied += to_copy; 4cb94: 2c39 0005 e4e8 movel 5e4e8 ,%d6<== NOT EXECUTED 4cb9a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4cb9e: 6000 ff04 braw 4caa4 <== 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; 4cba2: 4280 clrl %d0 <== NOT EXECUTED } IMFS_mtime_ctime_update( the_jnode ); return copied; } 4cba4: 4cee 1cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a4 <== NOT EXECUTED 4cbaa: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00042350 : const char *token, /* IN */ mode_t mode, /* IN */ dev_t dev, /* IN */ rtems_filesystem_location_info_t *pathloc /* IN/OUT */ ) { 42350: 4e56 ffb0 linkw %fp,#-80 42354: 48d7 007c moveml %d2-%d6,%sp@ 42358: 282e 0008 movel %fp@(8),%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 ); 4235c: 240e movel %fp,%d2 4235e: 0682 ffff ffc7 addil #-57,%d2 42364: 2f04 movel %d4,%sp@- const char *token, /* IN */ mode_t mode, /* IN */ dev_t dev, /* IN */ rtems_filesystem_location_info_t *pathloc /* IN/OUT */ ) { 42366: 262e 000c movel %fp@(12),%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 ); 4236a: 4eb9 0004 ecb4 jsr 4ecb4 42370: 588f addql #4,%sp 42372: 486e fffc pea %fp@(-4) const char *token, /* IN */ mode_t mode, /* IN */ dev_t dev, /* IN */ rtems_filesystem_location_info_t *pathloc /* IN/OUT */ ) { 42376: 2c2e 0010 movel %fp@(16),%d6 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 ); 4237a: 2f02 movel %d2,%sp@- const char *token, /* IN */ mode_t mode, /* IN */ dev_t dev, /* IN */ rtems_filesystem_location_info_t *pathloc /* IN/OUT */ ) { 4237c: 2a2e 0014 movel %fp@(20),%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 ); 42380: 2f00 movel %d0,%sp@- 42382: 2f04 movel %d4,%sp@- 42384: 4eb9 0004 a8b0 jsr 4a8b0 /* * Figure out what type of IMFS node this is. */ if ( S_ISDIR(mode) ) 4238a: 4fef 0010 lea %sp@(16),%sp 4238e: 2003 movel %d3,%d0 42390: 0280 0000 f000 andil #61440,%d0 42396: 0c80 0000 4000 cmpil #16384,%d0 4239c: 6756 beqs 423f4 type = IMFS_DIRECTORY; else if ( S_ISREG(mode) ) 4239e: 0c80 0000 8000 cmpil #32768,%d0 423a4: 6752 beqs 423f8 <== NEVER TAKEN type = IMFS_MEMORY_FILE; else if ( S_ISBLK(mode) || S_ISCHR(mode) ) { 423a6: 0c80 0000 6000 cmpil #24576,%d0 423ac: 673a beqs 423e8 423ae: 0c80 0000 2000 cmpil #8192,%d0 423b4: 6732 beqs 423e8 <== ALWAYS TAKEN type = IMFS_DEVICE; rtems_filesystem_split_dev_t( dev, info.device.major, info.device.minor ); } else if (S_ISFIFO(mode)) 423b6: 0c80 0000 1000 cmpil #4096,%d0 <== NOT EXECUTED 423bc: 673e beqs 423fc <== NOT EXECUTED mode_t mode, /* IN */ dev_t dev, /* IN */ rtems_filesystem_location_info_t *pathloc /* IN/OUT */ ) { IMFS_token_types type = 0; 423be: 4280 clrl %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 ); 423c0: 486e ffe8 pea %fp@(-24) 423c4: 2f03 movel %d3,%sp@- 423c6: 2f02 movel %d2,%sp@- 423c8: 2f00 movel %d0,%sp@- 423ca: 2f2e 0018 movel %fp@(24),%sp@- 423ce: 4eb9 0004 9de4 jsr 49de4 if ( !new_node ) 423d4: 4fef 0014 lea %sp@(20),%sp 423d8: 4a80 tstl %d0 423da: 6724 beqs 42400 <== NEVER TAKEN rtems_set_errno_and_return_minus_one( ENOMEM ); return 0; 423dc: 4280 clrl %d0 } 423de: 4cee 007c ffb0 moveml %fp@(-80),%d2-%d6 423e4: 4e5e unlk %fp 423e6: 4e75 rts type = IMFS_DIRECTORY; else if ( S_ISREG(mode) ) type = IMFS_MEMORY_FILE; else if ( S_ISBLK(mode) || S_ISCHR(mode) ) { type = IMFS_DEVICE; rtems_filesystem_split_dev_t( dev, info.device.major, info.device.minor ); 423e8: 2d46 ffe8 movel %d6,%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; 423ec: 7002 moveq #2,%d0 rtems_filesystem_split_dev_t( dev, info.device.major, info.device.minor ); 423ee: 2d45 ffec movel %d5,%fp@(-20) 423f2: 60cc bras 423c0 /* * Figure out what type of IMFS node this is. */ if ( S_ISDIR(mode) ) type = IMFS_DIRECTORY; 423f4: 7001 moveq #1,%d0 423f6: 60c8 bras 423c0 else if ( S_ISREG(mode) ) type = IMFS_MEMORY_FILE; 423f8: 7005 moveq #5,%d0 <== NOT EXECUTED 423fa: 60c4 bras 423c0 <== NOT EXECUTED else if ( S_ISBLK(mode) || S_ISCHR(mode) ) { type = IMFS_DEVICE; rtems_filesystem_split_dev_t( dev, info.device.major, info.device.minor ); } else if (S_ISFIFO(mode)) type = IMFS_FIFO; 423fc: 7007 moveq #7,%d0 <== NOT EXECUTED 423fe: 60c0 bras 423c0 <== NOT EXECUTED * existed. The result was simpler code which should not have * this path. */ new_node = IMFS_create_node( pathloc, type, new_name, mode, &info ); if ( !new_node ) rtems_set_errno_and_return_minus_one( ENOMEM ); 42400: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED 42406: 720c moveq #12,%d1 <== NOT EXECUTED 42408: 2040 moveal %d0,%a0 <== NOT EXECUTED 4240a: 70ff moveq #-1,%d0 <== NOT EXECUTED return 0; } 4240c: 4cee 007c ffb0 moveml %fp@(-80),%d2-%d6 <== NOT EXECUTED * existed. The result was simpler code which should not have * this path. */ new_node = IMFS_create_node( pathloc, type, new_name, mode, &info ); if ( !new_node ) rtems_set_errno_and_return_minus_one( ENOMEM ); 42412: 2081 movel %d1,%a0@ <== NOT EXECUTED return 0; } 42414: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00042418 : /* * Is the node that we are mounting onto a directory node ? */ if ( node->type != IMFS_DIRECTORY ) 42418: 7001 moveq #1,%d0 <== NOT EXECUTED #include int IMFS_mount( rtems_filesystem_mount_table_entry_t *mt_entry ) { 4241a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4241e: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED IMFS_jnode_t *node; node = mt_entry->mt_point_node.node_access; 42422: 2069 0008 moveal %a1@(8),%a0 <== NOT EXECUTED /* * Is the node that we are mounting onto a directory node ? */ if ( node->type != IMFS_DIRECTORY ) 42426: b0a8 0048 cmpl %a0@(72),%d0 <== NOT EXECUTED 4242a: 660a bnes 42436 <== 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; 4242c: 2149 0058 movel %a1,%a0@(88) <== NOT EXECUTED return 0; 42430: 4280 clrl %d0 <== NOT EXECUTED } 42432: 4e5e unlk %fp <== NOT EXECUTED 42434: 4e75 rts <== NOT EXECUTED /* * Is the node that we are mounting onto a directory node ? */ if ( node->type != IMFS_DIRECTORY ) rtems_set_errno_and_return_minus_one( ENOTDIR ); 42436: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED 4243c: 7214 moveq #20,%d1 <== NOT EXECUTED 4243e: 2040 moveal %d0,%a0 <== NOT EXECUTED 42440: 70ff moveq #-1,%d0 <== NOT EXECUTED * the mounted file system. */ node->info.directory.mt_fs = mt_entry; return 0; } 42442: 4e5e unlk %fp <== NOT EXECUTED /* * Is the node that we are mounting onto a directory node ? */ if ( node->type != IMFS_DIRECTORY ) rtems_set_errno_and_return_minus_one( ENOTDIR ); 42444: 2081 movel %d1,%a0@ <== NOT EXECUTED * the mounted file system. */ node->info.directory.mt_fs = mt_entry; return 0; } =============================================================================== 00044da0 : * This routine prints the contents of the specified jnode. */ void IMFS_print_jnode( IMFS_jnode_t *the_jnode ) { 44da0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED IMFS_assert( the_jnode ); fprintf(stdout, "%s", the_jnode->name ); 44da4: 2079 0006 3a64 moveal 63a64 <_impure_ptr>,%a0 <== NOT EXECUTED * This routine prints the contents of the specified jnode. */ void IMFS_print_jnode( IMFS_jnode_t *the_jnode ) { 44daa: 2f0a movel %a2,%sp@- <== NOT EXECUTED IMFS_assert( the_jnode ); fprintf(stdout, "%s", the_jnode->name ); 44dac: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED * This routine prints the contents of the specified jnode. */ void IMFS_print_jnode( IMFS_jnode_t *the_jnode ) { 44db0: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED IMFS_assert( the_jnode ); fprintf(stdout, "%s", the_jnode->name ); 44db4: 486a 000c pea %a2@(12) <== NOT EXECUTED 44db8: 4eb9 0005 2334 jsr 52334 <== NOT EXECUTED switch( the_jnode->type ) { 44dbe: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED 44dc2: 508f addql #8,%sp <== NOT EXECUTED 44dc4: 7207 moveq #7,%d1 <== NOT EXECUTED 44dc6: b280 cmpl %d0,%d1 <== NOT EXECUTED 44dc8: 6424 bccs 44dee <== NOT EXECUTED case IMFS_FIFO: fprintf(stdout, " FIFO not printed\n" ); return; default: fprintf(stdout, " bad type %d\n", the_jnode->type ); 44dca: 2f00 movel %d0,%sp@- <== NOT EXECUTED 44dcc: 4879 0006 2353 pea 62353 <== NOT EXECUTED 44dd2: 2079 0006 3a64 moveal 63a64 <_impure_ptr>,%a0 <== NOT EXECUTED 44dd8: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44ddc: 4eb9 0005 21e6 jsr 521e6 <== NOT EXECUTED return; } puts(""); } 44de2: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED fprintf(stdout, " FIFO not printed\n" ); return; default: fprintf(stdout, " bad type %d\n", the_jnode->type ); return; 44de6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED } puts(""); } 44dea: 4e5e unlk %fp <== NOT EXECUTED 44dec: 4e75 rts <== NOT EXECUTED ) { IMFS_assert( the_jnode ); fprintf(stdout, "%s", the_jnode->name ); switch( the_jnode->type ) { 44dee: 323b 0a08 movew %pc@(44df8 ,%d0:l:2),%d1<== NOT EXECUTED 44df2: 48c1 extl %d1 <== NOT EXECUTED 44df4: 4efb 1802 jmp %pc@(44df8 ,%d1:l)<== NOT EXECUTED 44df8: ffd2 .short 0xffd2 <== NOT EXECUTED 44dfa: 003a .short 0x003a <== NOT EXECUTED 44dfc: 0066 .short 0x0066 <== NOT EXECUTED 44dfe: 0010 .short 0x0010 <== NOT EXECUTED 44e00: 0010 .short 0x0010 <== NOT EXECUTED 44e02: 009e 00d2 010a oril #13762826,%d6 <== NOT EXECUTED case IMFS_HARD_LINK: fprintf(stdout, " links not printed\n" ); return; case IMFS_SYM_LINK: fprintf(stdout, " links not printed\n" ); 44e08: 2079 0006 3a64 moveal 63a64 <_impure_ptr>,%a0 <== NOT EXECUTED 44e0e: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44e12: 4878 0013 pea 13 <== NOT EXECUTED 44e16: 4878 0001 pea 1 <== NOT EXECUTED 44e1a: 4879 0006 232c pea 6232c <== NOT EXECUTED 44e20: 4eb9 0005 2e9c jsr 52e9c <== NOT EXECUTED default: fprintf(stdout, " bad type %d\n", the_jnode->type ); return; } puts(""); } 44e26: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED fprintf(stdout, " links not printed\n" ); return; case IMFS_SYM_LINK: fprintf(stdout, " links not printed\n" ); return; 44e2a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED default: fprintf(stdout, " bad type %d\n", the_jnode->type ); return; } puts(""); } 44e2e: 4e5e unlk %fp <== NOT EXECUTED 44e30: 4e75 rts <== NOT EXECUTED IMFS_assert( the_jnode ); fprintf(stdout, "%s", the_jnode->name ); switch( the_jnode->type ) { case IMFS_DIRECTORY: fprintf(stdout, "/" ); 44e32: 2079 0006 3a64 moveal 63a64 <_impure_ptr>,%a0 <== NOT EXECUTED 44e38: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44e3c: 4878 002f pea 2f <== NOT EXECUTED 44e40: 4eb9 0005 2264 jsr 52264 <== NOT EXECUTED default: fprintf(stdout, " bad type %d\n", the_jnode->type ); return; } puts(""); } 44e46: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED default: fprintf(stdout, " bad type %d\n", the_jnode->type ); return; } puts(""); 44e4a: 203c 0006 2a06 movel #403974,%d0 <== NOT EXECUTED fprintf(stdout, "%s", the_jnode->name ); switch( the_jnode->type ) { case IMFS_DIRECTORY: fprintf(stdout, "/" ); break; 44e50: 508f addql #8,%sp <== NOT EXECUTED default: fprintf(stdout, " bad type %d\n", the_jnode->type ); return; } puts(""); 44e52: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED } 44e56: 4e5e unlk %fp <== NOT EXECUTED default: fprintf(stdout, " bad type %d\n", the_jnode->type ); return; } puts(""); 44e58: 4ef9 0005 3bbe jmp 53bbe <== NOT EXECUTED case IMFS_DIRECTORY: fprintf(stdout, "/" ); break; case IMFS_DEVICE: fprintf(stdout, " (device %" PRId32 ", %" PRId32 ")", 44e5e: 2f2a 0050 movel %a2@(80),%sp@- <== NOT EXECUTED 44e62: 2f2a 004c movel %a2@(76),%sp@- <== NOT EXECUTED 44e66: 2079 0006 3a64 moveal 63a64 <_impure_ptr>,%a0 <== NOT EXECUTED 44e6c: 4879 0006 22fe pea 622fe <== NOT EXECUTED 44e72: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44e76: 4eb9 0005 21e6 jsr 521e6 <== NOT EXECUTED default: fprintf(stdout, " bad type %d\n", the_jnode->type ); return; } puts(""); } 44e7c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED default: fprintf(stdout, " bad type %d\n", the_jnode->type ); return; } puts(""); 44e80: 203c 0006 2a06 movel #403974,%d0 <== NOT EXECUTED break; case IMFS_DEVICE: fprintf(stdout, " (device %" PRId32 ", %" PRId32 ")", the_jnode->info.device.major, the_jnode->info.device.minor ); break; 44e86: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED default: fprintf(stdout, " bad type %d\n", the_jnode->type ); return; } puts(""); 44e8a: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED } 44e8e: 4e5e unlk %fp <== NOT EXECUTED default: fprintf(stdout, " bad type %d\n", the_jnode->type ); return; } puts(""); 44e90: 4ef9 0005 3bbe jmp 53bbe <== NOT EXECUTED the_jnode->info.file.indirect, the_jnode->info.file.doubly_indirect, the_jnode->info.file.triply_indirect ); #else fprintf(stdout, " (file %" PRId32 ")", 44e96: 2f2a 0050 movel %a2@(80),%sp@- <== NOT EXECUTED 44e9a: 2079 0006 3a64 moveal 63a64 <_impure_ptr>,%a0 <== NOT EXECUTED 44ea0: 4879 0006 2320 pea 62320 <== NOT EXECUTED 44ea6: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44eaa: 4eb9 0005 21e6 jsr 521e6 <== NOT EXECUTED default: fprintf(stdout, " bad type %d\n", the_jnode->type ); return; } puts(""); } 44eb0: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED default: fprintf(stdout, " bad type %d\n", the_jnode->type ); return; } puts(""); 44eb4: 203c 0006 2a06 movel #403974,%d0 <== NOT EXECUTED ); #else fprintf(stdout, " (file %" PRId32 ")", (uint32_t)the_jnode->info.file.size ); #endif break; 44eba: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED default: fprintf(stdout, " bad type %d\n", the_jnode->type ); return; } puts(""); 44ebe: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED } 44ec2: 4e5e unlk %fp <== NOT EXECUTED default: fprintf(stdout, " bad type %d\n", the_jnode->type ); return; } puts(""); 44ec4: 4ef9 0005 3bbe jmp 53bbe <== NOT EXECUTED fprintf(stdout, " (device %" PRId32 ", %" PRId32 ")", the_jnode->info.device.major, the_jnode->info.device.minor ); break; case IMFS_LINEAR_FILE: fprintf(stdout, " (file %" PRId32 " %p)", 44eca: 2f2a 0054 movel %a2@(84),%sp@- <== NOT EXECUTED 44ece: 2f2a 0050 movel %a2@(80),%sp@- <== NOT EXECUTED 44ed2: 2079 0006 3a64 moveal 63a64 <_impure_ptr>,%a0 <== NOT EXECUTED 44ed8: 4879 0006 2311 pea 62311 <== NOT EXECUTED 44ede: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44ee2: 4eb9 0005 21e6 jsr 521e6 <== NOT EXECUTED default: fprintf(stdout, " bad type %d\n", the_jnode->type ); return; } puts(""); } 44ee8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED default: fprintf(stdout, " bad type %d\n", the_jnode->type ); return; } puts(""); 44eec: 203c 0006 2a06 movel #403974,%d0 <== NOT EXECUTED case IMFS_LINEAR_FILE: fprintf(stdout, " (file %" PRId32 " %p)", (uint32_t)the_jnode->info.linearfile.size, the_jnode->info.linearfile.direct ); break; 44ef2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED default: fprintf(stdout, " bad type %d\n", the_jnode->type ); return; } puts(""); 44ef6: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED } 44efa: 4e5e unlk %fp <== NOT EXECUTED default: fprintf(stdout, " bad type %d\n", the_jnode->type ); return; } puts(""); 44efc: 4ef9 0005 3bbe jmp 53bbe <== NOT EXECUTED case IMFS_SYM_LINK: fprintf(stdout, " links not printed\n" ); return; case IMFS_FIFO: fprintf(stdout, " FIFO not printed\n" ); 44f02: 2079 0006 3a64 moveal 63a64 <_impure_ptr>,%a0 <== NOT EXECUTED 44f08: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44f0c: 4878 0012 pea 12 <== NOT EXECUTED 44f10: 4878 0001 pea 1 <== NOT EXECUTED 44f14: 4879 0006 2340 pea 62340 <== NOT EXECUTED 44f1a: 4eb9 0005 2e9c jsr 52e9c <== NOT EXECUTED default: fprintf(stdout, " bad type %d\n", the_jnode->type ); return; } puts(""); } 44f20: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED fprintf(stdout, " links not printed\n" ); return; case IMFS_FIFO: fprintf(stdout, " FIFO not printed\n" ); return; 44f24: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED default: fprintf(stdout, " bad type %d\n", the_jnode->type ); return; } puts(""); } 44f28: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004245c : ssize_t IMFS_readlink( rtems_filesystem_location_info_t *loc, char *buf, /* OUT */ size_t bufsize ) { 4245c: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED IMFS_jnode_t *node; ssize_t i; node = loc->node_access; 42460: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED ssize_t IMFS_readlink( rtems_filesystem_location_info_t *loc, char *buf, /* OUT */ size_t bufsize ) { 42464: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED 42468: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED 4246c: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED IMFS_jnode_t *node; ssize_t i; node = loc->node_access; 42470: 2450 moveal %a0@,%a2 <== NOT EXECUTED IMFS_assert( node->type == IMFS_SYM_LINK ); for( i=0; ((iinfo.sym_link.name[i] != '\0')); i++ ) 42472: 672a beqs 4249e <== NOT EXECUTED 42474: 206a 004c moveal %a2@(76),%a0 <== NOT EXECUTED 42478: 1210 moveb %a0@,%d1 <== NOT EXECUTED 4247a: 6722 beqs 4249e <== NOT EXECUTED 4247c: 91c8 subal %a0,%a0 <== NOT EXECUTED 4247e: 4280 clrl %d0 <== NOT EXECUTED 42480: 5280 addql #1,%d0 <== NOT EXECUTED buf[i] = node->info.sym_link.name[i]; 42482: 1781 8800 moveb %d1,%a3@(00000000,%a0:l) <== NOT EXECUTED node = loc->node_access; IMFS_assert( node->type == IMFS_SYM_LINK ); for( i=0; ((iinfo.sym_link.name[i] != '\0')); i++ ) 42486: 2040 moveal %d0,%a0 <== NOT EXECUTED 42488: b480 cmpl %d0,%d2 <== NOT EXECUTED 4248a: 630a blss 42496 <== NOT EXECUTED 4248c: 226a 004c moveal %a2@(76),%a1 <== NOT EXECUTED 42490: 1231 0800 moveb %a1@(00000000,%d0:l),%d1 <== NOT EXECUTED 42494: 66ea bnes 42480 <== NOT EXECUTED buf[i] = node->info.sym_link.name[i]; return i; } 42496: 4cd7 0c04 moveml %sp@,%d2/%a2-%a3 <== NOT EXECUTED 4249a: 4e5e unlk %fp <== NOT EXECUTED 4249c: 4e75 rts <== NOT EXECUTED node = loc->node_access; IMFS_assert( node->type == IMFS_SYM_LINK ); for( i=0; ((iinfo.sym_link.name[i] != '\0')); i++ ) 4249e: 4280 clrl %d0 <== NOT EXECUTED buf[i] = node->info.sym_link.name[i]; return i; } 424a0: 4cd7 0c04 moveml %sp@,%d2/%a2-%a3 <== NOT EXECUTED 424a4: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000424a8 : 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 */ ) { 424a8: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED IMFS_jnode_t *the_jnode; IMFS_jnode_t *new_parent; the_jnode = old_loc->node_access; 424ac: 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 */ ) { 424b0: 2f0a movel %a2,%sp@- <== NOT EXECUTED IMFS_jnode_t *the_jnode; IMFS_jnode_t *new_parent; the_jnode = old_loc->node_access; strncpy( the_jnode->name, new_name, IMFS_NAME_MAX ); 424b2: 4878 0020 pea 20 <== NOT EXECUTED 424b6: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED ) { IMFS_jnode_t *the_jnode; IMFS_jnode_t *new_parent; the_jnode = old_loc->node_access; 424ba: 2450 moveal %a0@,%a2 <== NOT EXECUTED strncpy( the_jnode->name, new_name, IMFS_NAME_MAX ); 424bc: 486a 000c pea %a2@(12) <== NOT EXECUTED 424c0: 4eb9 0004 eccc jsr 4eccc <== NOT EXECUTED if ( the_jnode->Parent != NULL ) 424c6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 424ca: 4aaa 0008 tstl %a2@(8) <== NOT EXECUTED 424ce: 670a beqs 424da <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void rtems_chain_extract( rtems_chain_node *the_node ) { _Chain_Extract( the_node ); 424d0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 424d2: 4eb9 0004 6eb0 jsr 46eb0 <_Chain_Extract> <== NOT EXECUTED 424d8: 588f addql #4,%sp <== NOT EXECUTED rtems_chain_extract( (rtems_chain_node *) the_jnode ); new_parent = new_parent_loc->node_access; 424da: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED 424de: 2050 moveal %a0@,%a0 <== NOT EXECUTED the_jnode->Parent = new_parent; 424e0: 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 ); 424e4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 424e6: 4868 004c pea %a0@(76) <== NOT EXECUTED 424ea: 4eb9 0004 6e78 jsr 46e78 <_Chain_Append> <== NOT EXECUTED rtems_chain_append( &new_parent->info.directory.Entries, &the_jnode->Node ); /* * Update the time. */ IMFS_update_ctime( the_jnode ); 424f0: 42a7 clrl %sp@- <== NOT EXECUTED 424f2: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 424f6: 4eb9 0004 2d8c jsr 42d8c <== NOT EXECUTED 424fc: 256e fff8 0044 movel %fp@(-8),%a2@(68) <== NOT EXECUTED return 0; } 42502: 4280 clrl %d0 <== NOT EXECUTED 42504: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 42508: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004aa6c : int IMFS_rmnod( rtems_filesystem_location_info_t *parent_pathloc, /* IN */ rtems_filesystem_location_info_t *pathloc /* IN */ ) { 4aa6c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4aa70: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 4aa74: 2f02 movel %d2,%sp@- <== NOT EXECUTED IMFS_jnode_t *jnode = (IMFS_jnode_t *) pathloc->node_access; 4aa76: 2410 movel %a0@,%d2 <== NOT EXECUTED IMFS_create_orphan( jnode ); 4aa78: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4aa7a: 4eb9 0004 a990 jsr 4a990 <== NOT EXECUTED IMFS_check_node_remove( jnode ); 4aa80: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4aa82: 4eb9 0004 a9d4 jsr 4a9d4 <== NOT EXECUTED return 0; } 4aa88: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 4aa8c: 4280 clrl %d0 <== NOT EXECUTED 4aa8e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004aa94 : IMFS_device_t *io; the_jnode = loc->node_access; switch ( the_jnode->type ) { 4aa94: 7007 moveq #7,%d0 int IMFS_stat( rtems_filesystem_location_info_t *loc, struct stat *buf ) { 4aa96: 4e56 0000 linkw %fp,#0 4aa9a: 206e 000c moveal %fp@(12),%a0 4aa9e: 2f0a movel %a2,%sp@- 4aaa0: 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; 4aaa4: 2252 moveal %a2@,%a1 switch ( the_jnode->type ) { 4aaa6: b0a9 0048 cmpl %a1@(72),%d0 4aaaa: 6418 bccs 4aac4 <== ALWAYS TAKEN case IMFS_FIFO: buf->st_size = 0; break; default: rtems_set_errno_and_return_minus_one( ENOTSUP ); 4aaac: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED buf->st_atime = the_jnode->stat_atime; buf->st_mtime = the_jnode->stat_mtime; buf->st_ctime = the_jnode->stat_ctime; return 0; } 4aab2: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED case IMFS_FIFO: buf->st_size = 0; break; default: rtems_set_errno_and_return_minus_one( ENOTSUP ); 4aab6: 2040 moveal %d0,%a0 <== NOT EXECUTED 4aab8: 70ff moveq #-1,%d0 <== NOT EXECUTED buf->st_atime = the_jnode->stat_atime; buf->st_mtime = the_jnode->stat_mtime; buf->st_ctime = the_jnode->stat_ctime; return 0; } 4aaba: 4e5e unlk %fp <== NOT EXECUTED case IMFS_FIFO: buf->st_size = 0; break; default: rtems_set_errno_and_return_minus_one( ENOTSUP ); 4aabc: 20bc 0000 0086 movel #134,%a0@ <== NOT EXECUTED buf->st_atime = the_jnode->stat_atime; buf->st_mtime = the_jnode->stat_mtime; buf->st_ctime = the_jnode->stat_ctime; return 0; } 4aac2: 4e75 rts <== NOT EXECUTED IMFS_device_t *io; the_jnode = loc->node_access; switch ( the_jnode->type ) { 4aac4: 2029 0048 movel %a1@(72),%d0 4aac8: d080 addl %d0,%d0 4aaca: 303b 0808 movew %pc@(4aad4 ,%d0:l),%d0 4aace: 48c0 extl %d0 4aad0: 4efb 0802 jmp %pc@(4aad4 ,%d0:l) 4aad4: ffd8 .short 0xffd8 <== NOT EXECUTED 4aad6: ffd8 .short 0xffd8 <== NOT EXECUTED 4aad8: 00c2 bitrev %d2 <== NOT EXECUTED 4aada: ffd8 .short 0xffd8 <== NOT EXECUTED 4aadc: 0010 .short 0x0010 <== NOT EXECUTED 4aade: 006a .short 0x006a <== NOT EXECUTED 4aae0: 006a .short 0x006a <== NOT EXECUTED 4aae2: 0010 .short 0x0010 <== 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; 4aae4: 246a 0010 moveal %a2@(16),%a2 <== NOT EXECUTED case IMFS_SYM_LINK: buf->st_size = 0; break; case IMFS_FIFO: buf->st_size = 0; 4aae8: 4280 clrl %d0 <== NOT EXECUTED 4aaea: 4281 clrl %d1 <== 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; buf->st_dev = rtems_filesystem_make_dev_t( IMFS_DEVICE_MAJOR_NUMBER, fs_info->instance ); 4aaec: 246a 0034 moveal %a2@(52),%a2 <== NOT EXECUTED case IMFS_SYM_LINK: buf->st_size = 0; break; case IMFS_FIFO: buf->st_size = 0; 4aaf0: 2140 001e movel %d0,%a0@(30) <== NOT EXECUTED 4aaf4: 2141 0022 movel %d1,%a0@(34) <== 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; buf->st_dev = rtems_filesystem_make_dev_t( IMFS_DEVICE_MAJOR_NUMBER, fs_info->instance ); 4aaf8: 2212 movel %a2@,%d1 <== NOT EXECUTED buf->st_atime = the_jnode->stat_atime; buf->st_mtime = the_jnode->stat_mtime; buf->st_ctime = the_jnode->stat_ctime; return 0; 4aafa: 4280 clrl %d0 <== NOT EXECUTED */ fs_info = loc->mt_entry->fs_info; buf->st_dev = rtems_filesystem_make_dev_t( IMFS_DEVICE_MAJOR_NUMBER, fs_info->instance ); buf->st_mode = the_jnode->st_mode; 4aafc: 2169 002e 000c movel %a1@(46),%a0@(12) <== NOT EXECUTED buf->st_nlink = the_jnode->st_nlink; 4ab02: 3169 0032 0010 movew %a1@(50),%a0@(16) <== NOT EXECUTED buf->st_ino = the_jnode->st_ino; 4ab08: 2169 0034 0008 movel %a1@(52),%a0@(8) <== NOT EXECUTED buf->st_uid = the_jnode->st_uid; 4ab0e: 3169 0038 0012 movew %a1@(56),%a0@(18) <== NOT EXECUTED buf->st_gid = the_jnode->st_gid; 4ab14: 3169 003a 0014 movew %a1@(58),%a0@(20) <== NOT EXECUTED buf->st_atime = the_jnode->stat_atime; 4ab1a: 2169 003c 0026 movel %a1@(60),%a0@(38) <== NOT EXECUTED buf->st_mtime = the_jnode->stat_mtime; 4ab20: 2169 0040 002e movel %a1@(64),%a0@(46) <== NOT EXECUTED buf->st_ctime = the_jnode->stat_ctime; 4ab26: 2169 0044 0036 movel %a1@(68),%a0@(54) <== 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; buf->st_dev = 4ab2c: 20bc 0000 fffe movel #65534,%a0@ <== NOT EXECUTED 4ab32: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED buf->st_atime = the_jnode->stat_atime; buf->st_mtime = the_jnode->stat_mtime; buf->st_ctime = the_jnode->stat_ctime; return 0; } 4ab36: 246e fffc moveal %fp@(-4),%a2 4ab3a: 4e5e unlk %fp 4ab3c: 4e75 rts /* * The device number of the IMFS is the major number and the minor is the * instance. */ fs_info = loc->mt_entry->fs_info; 4ab3e: 246a 0010 moveal %a2@(16),%a2 <== NOT EXECUTED buf->st_rdev = rtems_filesystem_make_dev_t( io->major, io->minor ); break; case IMFS_LINEAR_FILE: case IMFS_MEMORY_FILE: buf->st_size = the_jnode->info.file.size; 4ab42: 2029 004c movel %a1@(76),%d0 <== NOT EXECUTED 4ab46: 2229 0050 movel %a1@(80),%d1 <== 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; buf->st_dev = rtems_filesystem_make_dev_t( IMFS_DEVICE_MAJOR_NUMBER, fs_info->instance ); 4ab4a: 246a 0034 moveal %a2@(52),%a2 <== NOT EXECUTED buf->st_rdev = rtems_filesystem_make_dev_t( io->major, io->minor ); break; case IMFS_LINEAR_FILE: case IMFS_MEMORY_FILE: buf->st_size = the_jnode->info.file.size; 4ab4e: 2140 001e movel %d0,%a0@(30) <== NOT EXECUTED 4ab52: 2141 0022 movel %d1,%a0@(34) <== 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; buf->st_dev = rtems_filesystem_make_dev_t( IMFS_DEVICE_MAJOR_NUMBER, fs_info->instance ); 4ab56: 2212 movel %a2@,%d1 <== NOT EXECUTED buf->st_atime = the_jnode->stat_atime; buf->st_mtime = the_jnode->stat_mtime; buf->st_ctime = the_jnode->stat_ctime; return 0; 4ab58: 4280 clrl %d0 <== NOT EXECUTED */ fs_info = loc->mt_entry->fs_info; buf->st_dev = rtems_filesystem_make_dev_t( IMFS_DEVICE_MAJOR_NUMBER, fs_info->instance ); buf->st_mode = the_jnode->st_mode; 4ab5a: 2169 002e 000c movel %a1@(46),%a0@(12) <== NOT EXECUTED buf->st_nlink = the_jnode->st_nlink; 4ab60: 3169 0032 0010 movew %a1@(50),%a0@(16) <== NOT EXECUTED buf->st_ino = the_jnode->st_ino; 4ab66: 2169 0034 0008 movel %a1@(52),%a0@(8) <== NOT EXECUTED buf->st_uid = the_jnode->st_uid; 4ab6c: 3169 0038 0012 movew %a1@(56),%a0@(18) <== NOT EXECUTED buf->st_gid = the_jnode->st_gid; 4ab72: 3169 003a 0014 movew %a1@(58),%a0@(20) <== NOT EXECUTED buf->st_atime = the_jnode->stat_atime; 4ab78: 2169 003c 0026 movel %a1@(60),%a0@(38) <== NOT EXECUTED buf->st_mtime = the_jnode->stat_mtime; 4ab7e: 2169 0040 002e movel %a1@(64),%a0@(46) <== NOT EXECUTED buf->st_ctime = the_jnode->stat_ctime; 4ab84: 2169 0044 0036 movel %a1@(68),%a0@(54) <== 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; buf->st_dev = 4ab8a: 20bc 0000 fffe movel #65534,%a0@ <== NOT EXECUTED 4ab90: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED 4ab94: 60a0 bras 4ab36 <== 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; 4ab96: 246a 0010 moveal %a2@(16),%a2 switch ( the_jnode->type ) { case IMFS_DEVICE: io = &the_jnode->info.device; buf->st_rdev = rtems_filesystem_make_dev_t( io->major, io->minor ); 4ab9a: 2029 0050 movel %a1@(80),%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 = rtems_filesystem_make_dev_t( IMFS_DEVICE_MAJOR_NUMBER, fs_info->instance ); 4ab9e: 246a 0034 moveal %a2@(52),%a2 switch ( the_jnode->type ) { case IMFS_DEVICE: io = &the_jnode->info.device; buf->st_rdev = rtems_filesystem_make_dev_t( io->major, io->minor ); 4aba2: 2169 004c 0016 movel %a1@(76),%a0@(22) * 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 = rtems_filesystem_make_dev_t( IMFS_DEVICE_MAJOR_NUMBER, fs_info->instance ); 4aba8: 2212 movel %a2@,%d1 buf->st_mode = the_jnode->st_mode; 4abaa: 2169 002e 000c movel %a1@(46),%a0@(12) buf->st_nlink = the_jnode->st_nlink; 4abb0: 3169 0032 0010 movew %a1@(50),%a0@(16) buf->st_ino = the_jnode->st_ino; 4abb6: 2169 0034 0008 movel %a1@(52),%a0@(8) buf->st_uid = the_jnode->st_uid; 4abbc: 3169 0038 0012 movew %a1@(56),%a0@(18) buf->st_gid = the_jnode->st_gid; 4abc2: 3169 003a 0014 movew %a1@(58),%a0@(20) buf->st_atime = the_jnode->stat_atime; 4abc8: 2169 003c 0026 movel %a1@(60),%a0@(38) buf->st_mtime = the_jnode->stat_mtime; 4abce: 2169 0040 002e movel %a1@(64),%a0@(46) buf->st_ctime = the_jnode->stat_ctime; 4abd4: 2169 0044 0036 movel %a1@(68),%a0@(54) switch ( the_jnode->type ) { case IMFS_DEVICE: io = &the_jnode->info.device; buf->st_rdev = rtems_filesystem_make_dev_t( io->major, io->minor ); 4abda: 2140 001a movel %d0,%a0@(26) buf->st_atime = the_jnode->stat_atime; buf->st_mtime = the_jnode->stat_mtime; buf->st_ctime = the_jnode->stat_ctime; return 0; 4abde: 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 = 4abe0: 20bc 0000 fffe movel #65534,%a0@ 4abe6: 2141 0004 movel %d1,%a0@(4) 4abea: 6000 ff4a braw 4ab36 ... =============================================================================== 0004250c : int IMFS_symlink( rtems_filesystem_location_info_t *parent_loc, const char *link_name, const char *node_name ) { 4250c: 4e56 ffc4 linkw %fp,#-60 <== NOT EXECUTED 42510: 2f03 movel %d3,%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 ); 42512: 260e movel %fp,%d3 <== NOT EXECUTED 42514: 0683 ffff ffc7 addil #-57,%d3 <== NOT EXECUTED int IMFS_symlink( rtems_filesystem_location_info_t *parent_loc, const char *link_name, const char *node_name ) { 4251a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4251c: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED int i; /* * Remove any separators at the end of the string. */ IMFS_get_token( node_name, strlen( node_name ), new_name, &i ); 42520: 2f02 movel %d2,%sp@- <== NOT EXECUTED 42522: 4eb9 0004 ecb4 jsr 4ecb4 <== NOT EXECUTED 42528: 588f addql #4,%sp <== NOT EXECUTED 4252a: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4252e: 2f03 movel %d3,%sp@- <== NOT EXECUTED 42530: 2f00 movel %d0,%sp@- <== NOT EXECUTED 42532: 2f02 movel %d2,%sp@- <== NOT EXECUTED 42534: 4eb9 0004 a8b0 jsr 4a8b0 <== NOT EXECUTED /* * Duplicate link name */ info.sym_link.name = strdup(link_name); 4253a: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4253e: 4eb9 0004 e824 jsr 4e824 <== NOT EXECUTED if (info.sym_link.name == NULL) { 42544: 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); 42548: 2d40 ffe8 movel %d0,%fp@(-24) <== NOT EXECUTED if (info.sym_link.name == NULL) { 4254c: 6730 beqs 4257e <== 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( 4254e: 486e ffe8 pea %fp@(-24) <== NOT EXECUTED 42552: 2f3c 0000 a1ff movel #41471,%sp@- <== NOT EXECUTED 42558: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4255a: 4878 0004 pea 4 <== NOT EXECUTED 4255e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 42562: 4eb9 0004 9de4 jsr 49de4 <== NOT EXECUTED new_name, ( S_IFLNK | ( S_IRWXU | S_IRWXG | S_IRWXO )), &info ); if (new_node == NULL) { 42568: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4256c: 4a80 tstl %d0 <== NOT EXECUTED 4256e: 6728 beqs 42598 <== NOT EXECUTED free(info.sym_link.name); rtems_set_errno_and_return_minus_one(ENOMEM); } return 0; } 42570: 242e ffbc movel %fp@(-68),%d2 <== NOT EXECUTED if (new_node == NULL) { free(info.sym_link.name); rtems_set_errno_and_return_minus_one(ENOMEM); } return 0; 42574: 4280 clrl %d0 <== NOT EXECUTED } 42576: 262e ffc0 movel %fp@(-64),%d3 <== NOT EXECUTED 4257a: 4e5e unlk %fp <== NOT EXECUTED 4257c: 4e75 rts <== NOT EXECUTED /* * Duplicate link name */ info.sym_link.name = strdup(link_name); if (info.sym_link.name == NULL) { rtems_set_errno_and_return_minus_one(ENOMEM); 4257e: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED 42584: 740c moveq #12,%d2 <== NOT EXECUTED 42586: 2040 moveal %d0,%a0 <== NOT EXECUTED 42588: 70ff moveq #-1,%d0 <== NOT EXECUTED 4258a: 2082 movel %d2,%a0@ <== NOT EXECUTED free(info.sym_link.name); rtems_set_errno_and_return_minus_one(ENOMEM); } return 0; } 4258c: 242e ffbc movel %fp@(-68),%d2 <== NOT EXECUTED 42590: 262e ffc0 movel %fp@(-64),%d3 <== NOT EXECUTED 42594: 4e5e unlk %fp <== NOT EXECUTED 42596: 4e75 rts <== NOT EXECUTED ( S_IFLNK | ( S_IRWXU | S_IRWXG | S_IRWXO )), &info ); if (new_node == NULL) { free(info.sym_link.name); 42598: 2f2e ffe8 movel %fp@(-24),%sp@- <== NOT EXECUTED 4259c: 4eb9 0004 2cfc jsr 42cfc <== NOT EXECUTED rtems_set_errno_and_return_minus_one(ENOMEM); 425a2: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED } return 0; } 425a8: 242e ffbc movel %fp@(-68),%d2 <== NOT EXECUTED &info ); if (new_node == NULL) { free(info.sym_link.name); rtems_set_errno_and_return_minus_one(ENOMEM); 425ac: 2040 moveal %d0,%a0 <== NOT EXECUTED 425ae: 720c moveq #12,%d1 <== NOT EXECUTED 425b0: 588f addql #4,%sp <== NOT EXECUTED 425b2: 70ff moveq #-1,%d0 <== NOT EXECUTED } return 0; } 425b4: 262e ffc0 movel %fp@(-64),%d3 <== NOT EXECUTED 425b8: 4e5e unlk %fp <== NOT EXECUTED &info ); if (new_node == NULL) { free(info.sym_link.name); rtems_set_errno_and_return_minus_one(ENOMEM); 425ba: 2081 movel %d1,%a0@ <== NOT EXECUTED } return 0; } ... =============================================================================== 000425c0 : /* * If this is the last last pointer to the node * free the node. */ if ( node->type == IMFS_HARD_LINK ) { 425c0: 7003 moveq #3,%d0 <== NOT EXECUTED int IMFS_unlink( rtems_filesystem_location_info_t *parentloc, /* IN */ rtems_filesystem_location_info_t *loc /* IN */ ) { 425c2: 4e56 ffd0 linkw %fp,#-48 <== NOT EXECUTED 425c6: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED 425ca: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED 425ce: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED IMFS_jnode_t *node; rtems_filesystem_location_info_t the_link; int result = 0; node = loc->node_access; 425d2: 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 ) { 425d4: b0ab 0048 cmpl %a3@(72),%d0 <== NOT EXECUTED 425d8: 671a beqs 425f4 <== NOT EXECUTED /* * Now actually free the node we were asked to free. */ result = (*loc->handlers->rmnod_h)( parentloc, loc ); 425da: 2f0a movel %a2,%sp@- <== NOT EXECUTED 425dc: 206a 0008 moveal %a2@(8),%a0 <== NOT EXECUTED 425e0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 425e2: 2068 0034 moveal %a0@(52),%a0 <== NOT EXECUTED 425e6: 4e90 jsr %a0@ <== NOT EXECUTED return result; 425e8: 508f addql #8,%sp <== NOT EXECUTED } 425ea: 4cee 0c1c ffd0 moveml %fp@(-48),%d2-%d4/%a2-%a3 <== NOT EXECUTED 425f0: 4e5e unlk %fp <== NOT EXECUTED 425f2: 4e75 rts <== NOT EXECUTED * free the node. */ if ( node->type == IMFS_HARD_LINK ) { if ( !node->info.hard_link.link_node ) 425f4: 202b 004c movel %a3@(76),%d0 <== NOT EXECUTED 425f8: 6700 0090 beqw 4268a <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EINVAL ); the_link = *loc; 425fc: 41ea 0004 lea %a2@(4),%a0 <== NOT EXECUTED the_link.node_access = node->info.hard_link.link_node; IMFS_Set_handlers( &the_link ); 42600: 260e movel %fp,%d3 <== NOT EXECUTED 42602: 0683 ffff ffe4 addil #-28,%d3 <== 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) 42608: 7801 moveq #1,%d4 <== NOT EXECUTED if ( node->type == IMFS_HARD_LINK ) { if ( !node->info.hard_link.link_node ) rtems_set_errno_and_return_minus_one( EINVAL ); the_link = *loc; 4260a: 2d58 ffe8 movel %a0@+,%fp@(-24) <== NOT EXECUTED 4260e: 2d58 ffec movel %a0@+,%fp@(-20) <== NOT EXECUTED 42612: 2d58 fff0 movel %a0@+,%fp@(-16) <== NOT EXECUTED 42616: 2d50 fff4 movel %a0@,%fp@(-12) <== NOT EXECUTED the_link.node_access = node->info.hard_link.link_node; IMFS_Set_handlers( &the_link ); 4261a: 2f03 movel %d3,%sp@- <== 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; 4261c: 2d40 ffe4 movel %d0,%fp@(-28) <== NOT EXECUTED IMFS_Set_handlers( &the_link ); 42620: 4eb9 0004 a014 jsr 4a014 <== 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) 42626: 206b 004c moveal %a3@(76),%a0 <== NOT EXECUTED 4262a: 4281 clrl %d1 <== NOT EXECUTED 4262c: 588f addql #4,%sp <== NOT EXECUTED 4262e: 3028 0032 movew %a0@(50),%d0 <== NOT EXECUTED 42632: 3200 movew %d0,%d1 <== NOT EXECUTED 42634: b881 cmpl %d1,%d4 <== NOT EXECUTED 42636: 6730 beqs 42668 <== NOT EXECUTED if ( result != 0 ) return -1; } else { node->info.hard_link.link_node->st_nlink --; 42638: 5380 subql #1,%d0 <== NOT EXECUTED 4263a: 3140 0032 movew %d0,%a0@(50) <== NOT EXECUTED IMFS_update_ctime( node->info.hard_link.link_node ); 4263e: 42a7 clrl %sp@- <== NOT EXECUTED 42640: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 42644: 4eb9 0004 2d8c jsr 42d8c <== NOT EXECUTED 4264a: 206b 004c moveal %a3@(76),%a0 <== NOT EXECUTED 4264e: 508f addql #8,%sp <== NOT EXECUTED 42650: 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 ); 42656: 2f0a movel %a2,%sp@- <== NOT EXECUTED 42658: 206a 0008 moveal %a2@(8),%a0 <== NOT EXECUTED 4265c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4265e: 2068 0034 moveal %a0@(52),%a0 <== NOT EXECUTED 42662: 4e90 jsr %a0@ <== NOT EXECUTED return result; 42664: 508f addql #8,%sp <== NOT EXECUTED 42666: 6082 bras 425ea <== NOT EXECUTED * to remove the node that is a link and the node itself. */ if ( node->info.hard_link.link_node->st_nlink == 1) { result = (*the_link.handlers->rmnod_h)( parentloc, &the_link ); 42668: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4266a: 206e ffec moveal %fp@(-20),%a0 <== NOT EXECUTED 4266e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 42670: 2068 0034 moveal %a0@(52),%a0 <== NOT EXECUTED 42674: 4e90 jsr %a0@ <== NOT EXECUTED if ( result != 0 ) 42676: 508f addql #8,%sp <== NOT EXECUTED 42678: 4a80 tstl %d0 <== NOT EXECUTED 4267a: 6700 ff5e beqw 425da <== NOT EXECUTED return -1; 4267e: 70ff moveq #-1,%d0 <== NOT EXECUTED */ result = (*loc->handlers->rmnod_h)( parentloc, loc ); return result; } 42680: 4cee 0c1c ffd0 moveml %fp@(-48),%d2-%d4/%a2-%a3 <== NOT EXECUTED 42686: 4e5e unlk %fp <== NOT EXECUTED 42688: 4e75 rts <== NOT EXECUTED */ if ( node->type == IMFS_HARD_LINK ) { if ( !node->info.hard_link.link_node ) rtems_set_errno_and_return_minus_one( EINVAL ); 4268a: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED 42690: 7216 moveq #22,%d1 <== NOT EXECUTED 42692: 2040 moveal %d0,%a0 <== NOT EXECUTED 42694: 70ff moveq #-1,%d0 <== NOT EXECUTED */ result = (*loc->handlers->rmnod_h)( parentloc, loc ); return result; } 42696: 4cee 0c1c ffd0 moveml %fp@(-48),%d2-%d4/%a2-%a3 <== NOT EXECUTED */ if ( node->type == IMFS_HARD_LINK ) { if ( !node->info.hard_link.link_node ) rtems_set_errno_and_return_minus_one( EINVAL ); 4269c: 2081 movel %d1,%a0@ <== NOT EXECUTED */ result = (*loc->handlers->rmnod_h)( parentloc, loc ); return result; } 4269e: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000426a4 : /* * Is the node that we are mounting onto a directory node ? */ if ( node->type != IMFS_DIRECTORY ) 426a4: 7001 moveq #1,%d0 <== NOT EXECUTED #include int IMFS_unmount( rtems_filesystem_mount_table_entry_t *mt_entry ) { 426a6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 426aa: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED IMFS_jnode_t *node; node = mt_entry->mt_point_node.node_access; 426ae: 2068 0008 moveal %a0@(8),%a0 <== NOT EXECUTED /* * Is the node that we are mounting onto a directory node ? */ if ( node->type != IMFS_DIRECTORY ) 426b2: b0a8 0048 cmpl %a0@(72),%d0 <== NOT EXECUTED 426b6: 6610 bnes 426c8 <== NOT EXECUTED /* * Did the node indicate that there was a directory mounted here? */ if ( node->info.directory.mt_fs == NULL ) 426b8: 4aa8 0058 tstl %a0@(88) <== NOT EXECUTED 426bc: 671c beqs 426da <== 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; 426be: 42a8 0058 clrl %a0@(88) <== NOT EXECUTED return 0; 426c2: 4280 clrl %d0 <== NOT EXECUTED } 426c4: 4e5e unlk %fp <== NOT EXECUTED 426c6: 4e75 rts <== NOT EXECUTED /* * Is the node that we are mounting onto a directory node ? */ if ( node->type != IMFS_DIRECTORY ) rtems_set_errno_and_return_minus_one( ENOTDIR ); 426c8: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED 426ce: 7214 moveq #20,%d1 <== NOT EXECUTED 426d0: 2040 moveal %d0,%a0 <== NOT EXECUTED 426d2: 70ff moveq #-1,%d0 <== NOT EXECUTED */ node->info.directory.mt_fs = NULL; return 0; } 426d4: 4e5e unlk %fp <== NOT EXECUTED /* * Is the node that we are mounting onto a directory node ? */ if ( node->type != IMFS_DIRECTORY ) rtems_set_errno_and_return_minus_one( ENOTDIR ); 426d6: 2081 movel %d1,%a0@ <== NOT EXECUTED */ node->info.directory.mt_fs = NULL; return 0; } 426d8: 4e75 rts <== NOT EXECUTED /* * Did the node indicate that there was a directory mounted here? */ if ( node->info.directory.mt_fs == NULL ) rtems_set_errno_and_return_minus_one( EINVAL ); /* XXX */ 426da: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED 426e0: 7216 moveq #22,%d1 <== NOT EXECUTED 426e2: 2040 moveal %d0,%a0 <== NOT EXECUTED 426e4: 70ff moveq #-1,%d0 <== NOT EXECUTED */ node->info.directory.mt_fs = NULL; return 0; } 426e6: 4e5e unlk %fp <== NOT EXECUTED /* * Did the node indicate that there was a directory mounted here? */ if ( node->info.directory.mt_fs == NULL ) rtems_set_errno_and_return_minus_one( EINVAL ); /* XXX */ 426e8: 2081 movel %d1,%a0@ <== NOT EXECUTED */ node->info.directory.mt_fs = NULL; return 0; } =============================================================================== 000426ec : int IMFS_utime( rtems_filesystem_location_info_t *pathloc, /* IN */ time_t actime, /* IN */ time_t modtime /* IN */ ) { 426ec: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 426f0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 426f4: 2f0a movel %a2,%sp@- <== NOT EXECUTED IMFS_jnode_t *the_jnode; the_jnode = (IMFS_jnode_t *) pathloc->node_access; 426f6: 2450 moveal %a0@,%a2 <== NOT EXECUTED the_jnode->stat_atime = actime; 426f8: 256e 000c 003c movel %fp@(12),%a2@(60) <== NOT EXECUTED the_jnode->stat_mtime = modtime; 426fe: 256e 0010 0040 movel %fp@(16),%a2@(64) <== NOT EXECUTED the_jnode->stat_ctime = time( NULL ); 42704: 42a7 clrl %sp@- <== NOT EXECUTED 42706: 4eb9 0005 135c jsr 5135c