=============================================================================== 000433e0 : #include static void CPU_usage_Per_thread_handler( Thread_Control *the_thread ) { 433e0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 433e4: 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 } 433e8: 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 ); 433ea: 42a8 0082 clrl %a0@(130) <== NOT EXECUTED 433ee: 42a8 0086 clrl %a0@(134) <== NOT EXECUTED #else the_thread->cpu_time_used = 0; #endif } =============================================================================== 0004a190 : { IMFS_jnode_t *node = loc->node_access; IMFS_fs_info_t *fs_info; fs_info = loc->mt_entry->fs_info; switch( node->type ) { 4a190: 7007 moveq #7,%d0 #define MAXSYMLINK 5 int IMFS_Set_handlers( rtems_filesystem_location_info_t *loc ) { 4a192: 4e56 0000 linkw %fp,#0 4a196: 206e 0008 moveal %fp@(8),%a0 4a19a: 2f0a movel %a2,%sp@- IMFS_jnode_t *node = loc->node_access; IMFS_fs_info_t *fs_info; fs_info = loc->mt_entry->fs_info; 4a19c: 2468 0010 moveal %a0@(16),%a2 switch( node->type ) { 4a1a0: 2250 moveal %a0@,%a1 ) { IMFS_jnode_t *node = loc->node_access; IMFS_fs_info_t *fs_info; fs_info = loc->mt_entry->fs_info; 4a1a2: 246a 0034 moveal %a2@(52),%a2 switch( node->type ) { 4a1a6: b0a9 0048 cmpl %a1@(72),%d0 4a1aa: 6526 bcss 4a1d2 <== NEVER TAKEN 4a1ac: 2029 0048 movel %a1@(72),%d0 4a1b0: d080 addl %d0,%d0 4a1b2: 303b 0808 movew %pc@(4a1bc ,%d0:l),%d0 4a1b6: 48c0 extl %d0 4a1b8: 4efb 0802 jmp %pc@(4a1bc ,%d0:l) 4a1bc: 0016 026 <== NOT EXECUTED 4a1be: 0010 020 <== NOT EXECUTED 4a1c0: 004c 0114 <== NOT EXECUTED 4a1c2: 002c 054 <== NOT EXECUTED 4a1c4: 002c 054 <== NOT EXECUTED 4a1c6: 001e 036 <== NOT EXECUTED 4a1c8: 001e 036 <== NOT EXECUTED 4a1ca: 003e 076 <== NOT EXECUTED case IMFS_DIRECTORY: loc->handlers = fs_info->directory_handlers; 4a1cc: 216a 000c 0008 movel %a2@(12),%a0@(8) loc->handlers = fs_info->fifo_handlers; break; } return 0; } 4a1d2: 245f moveal %sp@+,%a2 4a1d4: 4280 clrl %d0 4a1d6: 4e5e unlk %fp 4a1d8: 4e75 rts 4a1da: 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; 4a1dc: 216a 0008 0008 movel %a2@(8),%a0@(8) <== NOT EXECUTED loc->handlers = fs_info->fifo_handlers; break; } return 0; } 4a1e2: 245f moveal %sp@+,%a2 <== NOT EXECUTED 4a1e4: 4e5e unlk %fp <== NOT EXECUTED 4a1e6: 4e75 rts <== NOT EXECUTED 4a1e8: 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; 4a1ea: 203c 0005 d6ea movel #382698,%d0 <== NOT EXECUTED loc->handlers = fs_info->fifo_handlers; break; } return 0; } 4a1f0: 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; 4a1f2: 2140 0008 movel %d0,%a0@(8) <== NOT EXECUTED loc->handlers = fs_info->fifo_handlers; break; } return 0; } 4a1f6: 4280 clrl %d0 <== NOT EXECUTED 4a1f8: 4e75 rts <== NOT EXECUTED 4a1fa: 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; 4a1fc: 216a 0010 0008 movel %a2@(16),%a0@(8) <== NOT EXECUTED break; } return 0; } 4a202: 245f moveal %sp@+,%a2 <== NOT EXECUTED 4a204: 4e5e unlk %fp <== NOT EXECUTED 4a206: 4e75 rts <== NOT EXECUTED 4a208: 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; 4a20a: 203c 0005 d67a movel #382586,%d0 loc->handlers = fs_info->fifo_handlers; break; } return 0; } 4a210: 4e5e unlk %fp switch( node->type ) { case IMFS_DIRECTORY: loc->handlers = fs_info->directory_handlers; break; case IMFS_DEVICE: loc->handlers = &IMFS_device_handlers; 4a212: 2140 0008 movel %d0,%a0@(8) loc->handlers = fs_info->fifo_handlers; break; } return 0; } 4a216: 4280 clrl %d0 <== NOT EXECUTED =============================================================================== 00049ee0 : IMFS_jnode_t *IMFS_allocate_node( IMFS_jnode_types_t type, const char *name, mode_t mode ) { 49ee0: 4e56 fff8 linkw %fp,#-8 49ee4: 2f0a movel %a2,%sp@- struct timeval tv; /* * Allocate an IMFS jnode */ node = calloc( 1, sizeof( IMFS_jnode_t ) ); 49ee6: 4878 0060 pea 60 49eea: 4878 0001 pea 1 49eee: 4eb9 0004 28f0 jsr 428f0 if ( !node ) 49ef4: 508f addql #8,%sp struct timeval tv; /* * Allocate an IMFS jnode */ node = calloc( 1, sizeof( IMFS_jnode_t ) ); 49ef6: 2440 moveal %d0,%a2 if ( !node ) 49ef8: 4a80 tstl %d0 49efa: 6758 beqs 49f54 <== NEVER TAKEN /* * Fill in the basic information */ node->st_nlink = 1; node->type = type; strncpy( node->name, name, IMFS_NAME_MAX ); 49efc: 4878 0020 pea 20 49f00: 2f2e 000c movel %fp@(12),%sp@- /* * Fill in the basic information */ node->st_nlink = 1; node->type = type; 49f04: 256e 0008 0048 movel %fp@(8),%a2@(72) strncpy( node->name, name, IMFS_NAME_MAX ); 49f0a: 486a 000c pea %a2@(12) return NULL; /* * Fill in the basic information */ node->st_nlink = 1; 49f0e: 7001 moveq #1,%d0 49f10: 3540 0032 movew %d0,%a2@(50) node->type = type; strncpy( node->name, name, IMFS_NAME_MAX ); 49f14: 4eb9 0004 fd7c jsr 4fd7c /* * Fill in the mode and permission information for the jnode structure. */ node->st_mode = mode; 49f1a: 256e 0010 002e movel %fp@(16),%a2@(46) #if defined(RTEMS_POSIX_API) node->st_uid = geteuid(); 49f20: 4eb9 0004 b06c jsr 4b06c 49f26: 3540 0038 movew %d0,%a2@(56) node->st_gid = getegid(); 49f2a: 4eb9 0004 b058 jsr 4b058 #endif /* * Now set all the times. */ gettimeofday( &tv, 0 ); 49f30: 42a7 clrl %sp@- 49f32: 486e fff8 pea %fp@(-8) * Fill in the mode and permission information for the jnode structure. */ node->st_mode = mode; #if defined(RTEMS_POSIX_API) node->st_uid = geteuid(); node->st_gid = getegid(); 49f36: 3540 003a movew %d0,%a2@(58) #endif /* * Now set all the times. */ gettimeofday( &tv, 0 ); 49f3a: 4eb9 0004 2d8c jsr 42d8c node->stat_atime = (time_t) tv.tv_sec; 49f40: 202e fff8 movel %fp@(-8),%d0 node->stat_mtime = (time_t) tv.tv_sec; node->stat_ctime = (time_t) tv.tv_sec; return node; 49f44: 4fef 0014 lea %sp@(20),%sp /* * Now set all the times. */ gettimeofday( &tv, 0 ); node->stat_atime = (time_t) tv.tv_sec; 49f48: 2540 003c movel %d0,%a2@(60) node->stat_mtime = (time_t) tv.tv_sec; 49f4c: 2540 0040 movel %d0,%a2@(64) node->stat_ctime = (time_t) tv.tv_sec; 49f50: 2540 0044 movel %d0,%a2@(68) return node; } 49f54: 200a movel %a2,%d0 49f56: 246e fff4 moveal %fp@(-12),%a2 49f5a: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004abb8 : void IMFS_check_node_remove( IMFS_jnode_t *jnode ) { 4abb8: 4e56 0000 linkw %fp,#0 4abbc: 2f0a movel %a2,%sp@- 4abbe: 246e 0008 moveal %fp@(8),%a2 if ( !rtems_libio_is_file_open( jnode ) && jnode->st_nlink < 1 ) { 4abc2: 2f0a movel %a2,%sp@- 4abc4: 4eb9 0004 b2de jsr 4b2de 4abca: 588f addql #4,%sp 4abcc: 4a80 tstl %d0 4abce: 6634 bnes 4ac04 <== ALWAYS TAKEN 4abd0: 4a6a 0032 tstw %a2@(50) <== NOT EXECUTED 4abd4: 662e bnes 4ac04 <== NOT EXECUTED if ( rtems_filesystem_current.node_access == jnode ) 4abd6: 2079 0005 e54c moveal 5e54c ,%a0 <== NOT EXECUTED 4abdc: b5e8 0004 cmpal %a0@(4),%a2 <== NOT EXECUTED 4abe0: 6744 beqs 4ac26 <== NOT EXECUTED rtems_filesystem_current.node_access = NULL; switch ( jnode->type ) { 4abe2: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED 4abe6: 7204 moveq #4,%d1 <== NOT EXECUTED 4abe8: b280 cmpl %d0,%d1 <== NOT EXECUTED 4abea: 6748 beqs 4ac34 <== NOT EXECUTED 4abec: 123c 0005 moveb #5,%d1 <== NOT EXECUTED 4abf0: b280 cmpl %d0,%d1 <== NOT EXECUTED 4abf2: 6718 beqs 4ac0c <== NOT EXECUTED break; default: break; } free( jnode ); 4abf4: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED } } 4abf8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4abfc: 4e5e unlk %fp <== NOT EXECUTED break; default: break; } free( jnode ); 4abfe: 4ef9 0004 2cfc jmp 42cfc <== NOT EXECUTED } } 4ac04: 246e fffc moveal %fp@(-4),%a2 4ac08: 4e5e unlk %fp 4ac0a: 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 ); 4ac0c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4ac0e: 4eb9 0004 d334 jsr 4d334 <== NOT EXECUTED break; 4ac14: 588f addql #4,%sp <== NOT EXECUTED break; default: break; } free( jnode ); 4ac16: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED } } 4ac1a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4ac1e: 4e5e unlk %fp <== NOT EXECUTED break; default: break; } free( jnode ); 4ac20: 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 ) { 4ac26: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED 4ac2a: 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; 4ac2c: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED switch ( jnode->type ) { 4ac30: b280 cmpl %d0,%d1 <== NOT EXECUTED 4ac32: 66b8 bnes 4abec <== NOT EXECUTED case IMFS_MEMORY_FILE: IMFS_memfile_remove( jnode ); break; case IMFS_SYM_LINK: free( jnode->info.sym_link.name ); 4ac34: 2f2a 004c movel %a2@(76),%sp@- <== NOT EXECUTED 4ac38: 4eb9 0004 2cfc jsr 42cfc <== NOT EXECUTED break; 4ac3e: 588f addql #4,%sp <== NOT EXECUTED default: break; } free( jnode ); 4ac40: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED } } 4ac44: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4ac48: 4e5e unlk %fp <== NOT EXECUTED break; default: break; } free( jnode ); 4ac4a: 4ef9 0004 2cfc jmp 42cfc <== NOT EXECUTED =============================================================================== 00049e70 : int IMFS_chown( rtems_filesystem_location_info_t *pathloc, /* IN */ uid_t owner, /* IN */ gid_t group /* IN */ ) { 49e70: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED 49e74: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 49e78: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED IMFS_jnode_t *jnode; #if defined(RTEMS_POSIX_API) uid_t st_uid; #endif jnode = (IMFS_jnode_t *) pathloc->node_access; 49e7c: 2450 moveal %a0@,%a2 <== NOT EXECUTED */ #if defined(RTEMS_POSIX_API) st_uid = geteuid(); if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) ) 49e7e: 4284 clrl %d4 <== NOT EXECUTED int IMFS_chown( rtems_filesystem_location_info_t *pathloc, /* IN */ uid_t owner, /* IN */ gid_t group /* IN */ ) { 49e80: 362e 000e movew %fp@(14),%d3 <== NOT EXECUTED 49e84: 342e 0012 movew %fp@(18),%d2 <== NOT EXECUTED /* * Verify I am the owner of the node or the super user. */ #if defined(RTEMS_POSIX_API) st_uid = geteuid(); 49e88: 4eb9 0004 b06c jsr 4b06c <== NOT EXECUTED if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) ) 49e8e: 4281 clrl %d1 <== NOT EXECUTED 49e90: 382a 0038 movew %a2@(56),%d4 <== NOT EXECUTED 49e94: 3200 movew %d0,%d1 <== NOT EXECUTED 49e96: b284 cmpl %d4,%d1 <== NOT EXECUTED 49e98: 6704 beqs 49e9e <== NOT EXECUTED 49e9a: 4a40 tstw %d0 <== NOT EXECUTED 49e9c: 6628 bnes 49ec6 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EPERM ); #endif jnode->st_uid = owner; 49e9e: 3543 0038 movew %d3,%a2@(56) <== NOT EXECUTED jnode->st_gid = group; 49ea2: 3542 003a movew %d2,%a2@(58) <== NOT EXECUTED IMFS_update_ctime( jnode ); 49ea6: 42a7 clrl %sp@- <== NOT EXECUTED 49ea8: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 49eac: 4eb9 0004 2d8c jsr 42d8c <== NOT EXECUTED 49eb2: 256e fff8 0044 movel %fp@(-8),%a2@(68) <== NOT EXECUTED return 0; 49eb8: 508f addql #8,%sp <== NOT EXECUTED 49eba: 4280 clrl %d0 <== NOT EXECUTED } 49ebc: 4cee 041c ffe8 moveml %fp@(-24),%d2-%d4/%a2 <== NOT EXECUTED 49ec2: 4e5e unlk %fp <== NOT EXECUTED 49ec4: 4e75 rts <== NOT EXECUTED #if defined(RTEMS_POSIX_API) st_uid = geteuid(); if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) ) rtems_set_errno_and_return_minus_one( EPERM ); 49ec6: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 49ecc: 7201 moveq #1,%d1 <== NOT EXECUTED 49ece: 2040 moveal %d0,%a0 <== NOT EXECUTED 49ed0: 70ff moveq #-1,%d0 <== NOT EXECUTED jnode->st_gid = group; IMFS_update_ctime( jnode ); return 0; } 49ed2: 4cee 041c ffe8 moveml %fp@(-24),%d2-%d4/%a2 <== NOT EXECUTED #if defined(RTEMS_POSIX_API) st_uid = geteuid(); if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) ) rtems_set_errno_and_return_minus_one( EPERM ); 49ed8: 2081 movel %d1,%a0@ <== NOT EXECUTED jnode->st_gid = group; IMFS_update_ctime( jnode ); return 0; } 49eda: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00049f5e : IMFS_jnode_types_t type, const char *name, mode_t mode, const IMFS_types_union *info ) { 49f5e: 4e56 ffec linkw %fp,#-20 49f62: 206e 0008 moveal %fp@(8),%a0 49f66: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ 49f6a: 242e 000c movel %fp@(12),%d2 49f6e: 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 ) 49f72: 4a88 tstl %a0 49f74: 6700 00ac beqw 4a022 return NULL; parent = parent_loc->node_access; fs_info = parent_loc->mt_entry->fs_info; 49f78: 2268 0010 moveal %a0@(16),%a1 /* * Reject creation of FIFOs if support is disabled. */ if ( type == IMFS_FIFO && 49f7c: 7007 moveq #7,%d0 * MUST have a parent node to call this routine. */ if ( parent_loc == NULL ) return NULL; parent = parent_loc->node_access; 49f7e: 2650 moveal %a0@,%a3 fs_info = parent_loc->mt_entry->fs_info; 49f80: 2469 0034 moveal %a1@(52),%a2 /* * Reject creation of FIFOs if support is disabled. */ if ( type == IMFS_FIFO && 49f84: b082 cmpl %d2,%d0 49f86: 6700 008c beqw 4a014 return NULL; /* * Allocate filesystem node and fill in basic information */ node = IMFS_allocate_node( type, name, mode & ~rtems_filesystem_umask ); 49f8a: 2079 0005 e54c moveal 5e54c ,%a0 49f90: 2028 002c movel %a0@(44),%d0 49f94: 4680 notl %d0 49f96: c0ae 0014 andl %fp@(20),%d0 49f9a: 2f00 movel %d0,%sp@- 49f9c: 2f2e 0010 movel %fp@(16),%sp@- 49fa0: 2f02 movel %d2,%sp@- 49fa2: 4eb9 0004 9ee0 jsr 49ee0 if ( !node ) 49fa8: 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 ); 49fac: 2a40 moveal %d0,%a5 if ( !node ) 49fae: 4a80 tstl %d0 49fb0: 6756 beqs 4a008 <== NEVER TAKEN return NULL; /* * Set the type specific information */ if ( type == IMFS_DIRECTORY ) { 49fb2: 7001 moveq #1,%d0 49fb4: b082 cmpl %d2,%d0 49fb6: 6778 beqs 4a030 rtems_chain_initialize_empty(&node->info.directory.Entries); } else if ( type == IMFS_HARD_LINK ) { 49fb8: 7003 moveq #3,%d0 49fba: b082 cmpl %d2,%d0 49fbc: 6700 00d6 beqw 4a094 node->info.hard_link.link_node = info->hard_link.link_node; } else if ( type == IMFS_SYM_LINK ) { 49fc0: 7204 moveq #4,%d1 49fc2: b282 cmpl %d2,%d1 49fc4: 6700 00ce beqw 4a094 node->info.sym_link.name = info->sym_link.name; } else if ( type == IMFS_DEVICE ) { 49fc8: 7002 moveq #2,%d0 49fca: b082 cmpl %d2,%d0 49fcc: 6700 0098 beqw 4a066 node->info.device.major = info->device.major; node->info.device.minor = info->device.minor; } else if ( type == IMFS_LINEAR_FILE ) { 49fd0: 7206 moveq #6,%d1 <== NOT EXECUTED 49fd2: b282 cmpl %d2,%d1 <== NOT EXECUTED 49fd4: 6700 010e beqw 4a0e4 <== NOT EXECUTED node->info.linearfile.size = 0; node->info.linearfile.direct = 0; } else if ( type == IMFS_MEMORY_FILE ) { 49fd8: 7205 moveq #5,%d1 <== NOT EXECUTED 49fda: b282 cmpl %d2,%d1 <== NOT EXECUTED 49fdc: 6700 013a beqw 4a118 <== 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 ) { 49fe0: 7207 moveq #7,%d1 <== NOT EXECUTED 49fe2: b282 cmpl %d2,%d1 <== NOT EXECUTED 49fe4: 6700 00d6 beqw 4a0bc <== 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; 49fe8: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 49fec: 5280 addql #1,%d0 <== NOT EXECUTED } /* * This node MUST have a parent, so put it in that directory list. */ node->Parent = parent; 49fee: 2b4b 0008 movel %a3,%a5@(8) <== NOT EXECUTED node->st_ino = ++fs_info->ino_count; 49ff2: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED 49ff6: 2b40 0034 movel %d0,%a5@(52) <== NOT EXECUTED 49ffa: 2f0d movel %a5,%sp@- <== NOT EXECUTED 49ffc: 486b 004c pea %a3@(76) <== NOT EXECUTED 4a000: 4eb9 0004 6ee4 jsr 46ee4 <_Chain_Append> <== NOT EXECUTED rtems_chain_append( &parent->info.directory.Entries, &node->Node ); return node; 4a006: 508f addql #8,%sp <== NOT EXECUTED } 4a008: 200d movel %a5,%d0 4a00a: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 4a010: 4e5e unlk %fp 4a012: 4e75 rts fs_info = parent_loc->mt_entry->fs_info; /* * Reject creation of FIFOs if support is disabled. */ if ( type == IMFS_FIFO && 4a014: 223c 0005 d60a movel #382474,%d1 <== NOT EXECUTED 4a01a: b2aa 0010 cmpl %a2@(16),%d1 <== NOT EXECUTED 4a01e: 6600 ff6a bnew 49f8a <== NOT EXECUTED fs_info->fifo_handlers == &rtems_filesystem_handlers_default ) return NULL; 4a022: 9bcd subal %a5,%a5 <== NOT EXECUTED node->st_ino = ++fs_info->ino_count; rtems_chain_append( &parent->info.directory.Entries, &node->Node ); return node; } 4a024: 200d movel %a5,%d0 <== NOT EXECUTED 4a026: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED 4a02c: 4e5e unlk %fp <== NOT EXECUTED 4a02e: 4e75 rts <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail( Chain_Control *the_chain ) { return (Chain_Node *) &the_chain->permanent_null; 4a030: 41ed 0050 lea %a5@(80),%a0 4a034: 2b48 004c movel %a0,%a5@(76) /* * Set the type specific information */ if ( type == IMFS_DIRECTORY ) { rtems_chain_initialize_empty(&node->info.directory.Entries); 4a038: 41ed 004c lea %a5@(76),%a0 RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); the_chain->permanent_null = NULL; 4a03c: 42ad 0050 clrl %a5@(80) 4a040: 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; 4a044: 202a 0004 movel %a2@(4),%d0 4a048: 5280 addql #1,%d0 } /* * This node MUST have a parent, so put it in that directory list. */ node->Parent = parent; 4a04a: 2b4b 0008 movel %a3,%a5@(8) node->st_ino = ++fs_info->ino_count; 4a04e: 2540 0004 movel %d0,%a2@(4) 4a052: 2b40 0034 movel %d0,%a5@(52) 4a056: 2f0d movel %a5,%sp@- 4a058: 486b 004c pea %a3@(76) 4a05c: 4eb9 0004 6ee4 jsr 46ee4 <_Chain_Append> rtems_chain_append( &parent->info.directory.Entries, &node->Node ); return node; 4a062: 508f addql #8,%sp 4a064: 60a2 bras 4a008 } 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; 4a066: 2b54 004c movel %a4@,%a5@(76) node->info.device.minor = info->device.minor; 4a06a: 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; 4a070: 202a 0004 movel %a2@(4),%d0 4a074: 5280 addql #1,%d0 } /* * This node MUST have a parent, so put it in that directory list. */ node->Parent = parent; 4a076: 2b4b 0008 movel %a3,%a5@(8) node->st_ino = ++fs_info->ino_count; 4a07a: 2540 0004 movel %d0,%a2@(4) 4a07e: 2b40 0034 movel %d0,%a5@(52) 4a082: 2f0d movel %a5,%sp@- 4a084: 486b 004c pea %a3@(76) 4a088: 4eb9 0004 6ee4 jsr 46ee4 <_Chain_Append> rtems_chain_append( &parent->info.directory.Entries, &node->Node ); return node; 4a08e: 508f addql #8,%sp 4a090: 6000 ff76 braw 4a008 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; 4a094: 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; 4a098: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 4a09c: 5280 addql #1,%d0 <== NOT EXECUTED } /* * This node MUST have a parent, so put it in that directory list. */ node->Parent = parent; 4a09e: 2b4b 0008 movel %a3,%a5@(8) <== NOT EXECUTED node->st_ino = ++fs_info->ino_count; 4a0a2: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED 4a0a6: 2b40 0034 movel %d0,%a5@(52) <== NOT EXECUTED 4a0aa: 2f0d movel %a5,%sp@- <== NOT EXECUTED 4a0ac: 486b 004c pea %a3@(76) <== NOT EXECUTED 4a0b0: 4eb9 0004 6ee4 jsr 46ee4 <_Chain_Append> <== NOT EXECUTED rtems_chain_append( &parent->info.directory.Entries, &node->Node ); return node; 4a0b6: 508f addql #8,%sp <== NOT EXECUTED 4a0b8: 6000 ff4e braw 4a008 <== 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; 4a0bc: 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; 4a0c0: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED } /* * This node MUST have a parent, so put it in that directory list. */ node->Parent = parent; 4a0c4: 2b4b 0008 movel %a3,%a5@(8) <== NOT EXECUTED node->st_ino = ++fs_info->ino_count; 4a0c8: 5280 addql #1,%d0 <== NOT EXECUTED 4a0ca: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED 4a0ce: 2b40 0034 movel %d0,%a5@(52) <== NOT EXECUTED 4a0d2: 2f0d movel %a5,%sp@- <== NOT EXECUTED 4a0d4: 486b 004c pea %a3@(76) <== NOT EXECUTED 4a0d8: 4eb9 0004 6ee4 jsr 46ee4 <_Chain_Append> <== NOT EXECUTED rtems_chain_append( &parent->info.directory.Entries, &node->Node ); return node; 4a0de: 508f addql #8,%sp <== NOT EXECUTED 4a0e0: 6000 ff26 braw 4a008 <== 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; 4a0e4: 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; 4a0e8: 4280 clrl %d0 <== NOT EXECUTED 4a0ea: 4281 clrl %d1 <== NOT EXECUTED } /* * This node MUST have a parent, so put it in that directory list. */ node->Parent = parent; 4a0ec: 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; 4a0f0: 2b40 004c movel %d0,%a5@(76) <== NOT EXECUTED 4a0f4: 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; 4a0f8: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 4a0fc: 5280 addql #1,%d0 <== NOT EXECUTED 4a0fe: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED 4a102: 2b40 0034 movel %d0,%a5@(52) <== NOT EXECUTED 4a106: 2f0d movel %a5,%sp@- <== NOT EXECUTED 4a108: 486b 004c pea %a3@(76) <== NOT EXECUTED 4a10c: 4eb9 0004 6ee4 jsr 46ee4 <_Chain_Append> <== NOT EXECUTED rtems_chain_append( &parent->info.directory.Entries, &node->Node ); return node; 4a112: 508f addql #8,%sp <== NOT EXECUTED 4a114: 6000 fef2 braw 4a008 <== 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; 4a118: 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; 4a11c: 4280 clrl %d0 <== NOT EXECUTED 4a11e: 4281 clrl %d1 <== NOT EXECUTED node->info.file.indirect = 0; node->info.file.doubly_indirect = 0; 4a120: 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; 4a124: 2b40 004c movel %d0,%a5@(76) <== NOT EXECUTED 4a128: 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; 4a12c: 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; 4a130: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 4a134: 5280 addql #1,%d0 <== NOT EXECUTED } /* * This node MUST have a parent, so put it in that directory list. */ node->Parent = parent; 4a136: 2b4b 0008 movel %a3,%a5@(8) <== NOT EXECUTED node->st_ino = ++fs_info->ino_count; 4a13a: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED 4a13e: 2b40 0034 movel %d0,%a5@(52) <== NOT EXECUTED 4a142: 2f0d movel %a5,%sp@- <== NOT EXECUTED 4a144: 486b 004c pea %a3@(76) <== NOT EXECUTED 4a148: 4eb9 0004 6ee4 jsr 46ee4 <_Chain_Append> <== NOT EXECUTED rtems_chain_append( &parent->info.directory.Entries, &node->Node ); return node; 4a14e: 508f addql #8,%sp <== NOT EXECUTED 4a150: 6000 feb6 braw 4a008 <== NOT EXECUTED =============================================================================== 0004ab74 : #include #include "imfs.h" void IMFS_create_orphan( IMFS_jnode_t *jnode ) { 4ab74: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 4ab78: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4ab7a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED if ( jnode->Parent != NULL ) { 4ab7e: 4aaa 0008 tstl %a2@(8) <== NOT EXECUTED 4ab82: 670e beqs 4ab92 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void rtems_chain_extract( rtems_chain_node *the_node ) { _Chain_Extract( the_node ); 4ab84: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4ab86: 4eb9 0004 6f1c jsr 46f1c <_Chain_Extract> <== NOT EXECUTED rtems_chain_extract( &jnode->Node ); jnode->Parent = NULL; 4ab8c: 588f addql #4,%sp <== NOT EXECUTED 4ab8e: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED } --jnode->st_nlink; IMFS_update_ctime( jnode ); 4ab92: 42a7 clrl %sp@- <== NOT EXECUTED 4ab94: 486e fff8 pea %fp@(-8) <== NOT EXECUTED if ( jnode->Parent != NULL ) { rtems_chain_extract( &jnode->Node ); jnode->Parent = NULL; } --jnode->st_nlink; 4ab98: 302a 0032 movew %a2@(50),%d0 <== NOT EXECUTED 4ab9c: 5380 subql #1,%d0 <== NOT EXECUTED 4ab9e: 3540 0032 movew %d0,%a2@(50) <== NOT EXECUTED IMFS_update_ctime( jnode ); 4aba2: 4eb9 0004 2d8c jsr 42d8c <== NOT EXECUTED 4aba8: 256e fff8 0044 movel %fp@(-8),%a2@(68) <== NOT EXECUTED 4abae: 508f addql #8,%sp <== NOT EXECUTED } 4abb0: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 4abb4: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004a154 : return node; } IMFS_jnode_t *IMFS_create_root_node(void) { 4a154: 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) ); 4a158: 4878 41ed pea 41ed 4a15c: 4879 0005 d468 pea 5d468 4a162: 4878 0001 pea 1 4a166: 4eb9 0004 9ee0 jsr 49ee0 if ( !node ) 4a16c: 4fef 000c lea %sp@(12),%sp 4a170: 4a80 tstl %d0 4a172: 6716 beqs 4a18a <== NEVER TAKEN */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail( Chain_Control *the_chain ) { return (Chain_Node *) &the_chain->permanent_null; 4a174: 2240 moveal %d0,%a1 RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); the_chain->permanent_null = NULL; 4a176: 2040 moveal %d0,%a0 */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail( Chain_Control *the_chain ) { return (Chain_Node *) &the_chain->permanent_null; 4a178: 43e9 0050 lea %a1@(80),%a1 4a17c: 2149 004c movel %a1,%a0@(76) /* * Set the type specific information * * NOTE: Root node is always a directory. */ rtems_chain_initialize_empty(&node->info.directory.Entries); 4a180: 5989 subql #4,%a1 RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { the_chain->first = _Chain_Tail(the_chain); the_chain->permanent_null = NULL; 4a182: 42a8 0050 clrl %a0@(80) 4a186: 2149 0054 movel %a1,%a0@(84) return node; } 4a18a: 4e5e unlk %fp ... =============================================================================== 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 48a0 moveal 648a0 <_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 3f54 lea 53f54 ,%a2 <== NOT EXECUTED 44fd0: 4878 0034 pea 34 <== NOT EXECUTED 44fd4: 4878 0001 pea 1 <== NOT EXECUTED 44fd8: 4879 0006 2f7e pea 62f7e <== NOT EXECUTED 44fde: 4e92 jsr %a2@ <== NOT EXECUTED fprintf(stdout, "/\n" ); 44fe0: 2079 0006 48a0 moveal 648a0 <_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 2fb3 pea 62fb3 <== 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 47dc moveal 647dc ,%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 48a0 moveal 648a0 <_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 2fb6 pea 62fb6 <== 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 Chain_Node *_Chain_Tail( Chain_Control *the_chain ) { return (Chain_Node *) &the_chain->permanent_null; 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 IMFS_assert( level >= 0 ); IMFS_assert( the_directory->type == IMFS_DIRECTORY ); the_chain = &the_directory->info.directory.Entries; for ( the_node = the_chain->first; 44f44: 2668 004c moveal %a0@(76),%a3 <== NOT EXECUTED 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 3f54 lea 53f54 ,%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 48a0 moveal 648a0 <_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 2f79 pea 62f79 <== 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 = the_chain->first; !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 = the_chain->first; 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 = the_chain->first; !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 = the_chain->first; 44fb4: b88b cmpl %a3,%d4 <== NOT EXECUTED 44fb6: 66aa bnes 44f62 <== NOT EXECUTED 44fb8: 60e6 bras 44fa0 <== NOT EXECUTED =============================================================================== 0004a300 : 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 ) ) { 4a300: 70f8 moveq #-8,%d0 const char *pathname, /* IN */ size_t pathnamelen, /* IN */ int flags, /* IN */ rtems_filesystem_location_info_t *pathloc /* IN/OUT */ ) { 4a302: 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 ) ) { 4a306: 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 */ ) { 4a30a: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ 4a30e: 2a6e 0008 moveal %fp@(8),%a5 4a312: 246e 000c moveal %fp@(12),%a2 4a316: 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 ) ) { 4a31a: 4a80 tstl %d0 4a31c: 6600 0238 bnew 4a556 4a320: 2c0e movel %fp,%d6 4a322: 280e movel %fp,%d4 size_t pathnamelen, /* IN */ int flags, /* IN */ rtems_filesystem_location_info_t *pathloc /* IN/OUT */ ) { int i = 0; 4a324: 4282 clrl %d2 4a326: 5986 subql #4,%d6 4a328: 0684 ffff ffdb addil #-37,%d4 4a32e: 2a3c 0004 aa94 movel #305812,%d5 } /* * Otherwise find the token name in the present location. */ node = IMFS_find_match_in_dir( node, token ); 4a334: 2e3c 0004 aa10 movel #305680,%d7 /* * This was filled in by the caller and is valid in the * mount table. */ node = pathloc->node_access; 4a33a: 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 ); 4a33c: 2f06 movel %d6,%sp@- 4a33e: 2045 moveal %d5,%a0 4a340: 2f04 movel %d4,%sp@- 4a342: 2f0a movel %a2,%sp@- 4a344: 4875 2800 pea %a5@(00000000,%d2:l) 4a348: 4e90 jsr %a0@ pathnamelen -= len; i += len; if ( !pathloc->node_access ) 4a34a: 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 ); 4a34c: 2600 movel %d0,%d3 pathnamelen -= len; i += len; if ( !pathloc->node_access ) 4a34e: 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; 4a352: 202e fffc movel %fp@(-4),%d0 i += len; if ( !pathloc->node_access ) 4a356: 4a88 tstl %a0 4a358: 6700 00f8 beqw 4a452 */ while( (type != IMFS_NO_MORE_PATH) && (type != IMFS_INVALID_TOKEN) ) { type = IMFS_get_token( &pathname[i], pathnamelen, token, &len ); pathnamelen -= len; 4a35c: 95c0 subal %d0,%a2 i += len; 4a35e: 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 ) 4a360: 4a83 tstl %d3 4a362: 6662 bnes 4a3c6 * 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 ) { 4a364: 7201 moveq #1,%d1 4a366: b2a8 0048 cmpl %a0@(72),%d1 4a36a: 6600 0132 bnew 4a49e if ( node->info.directory.mt_fs != NULL ) { 4a36e: 2068 0058 moveal %a0@(88),%a0 4a372: 4a88 tstl %a0 4a374: 6700 0128 beqw 4a49e 4a378: 28a8 001c movel %a0@(28),%a4@ <== NOT EXECUTED 4a37c: 2268 0028 moveal %a0@(40),%a1 <== NOT EXECUTED 4a380: 2628 0020 movel %a0@(32),%d3 <== NOT EXECUTED 4a384: 2228 0024 movel %a0@(36),%d1 <== NOT EXECUTED 4a388: 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], 4a38c: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4a38e: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4a392: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED 4a396: 4872 8800 pea %a2@(00000000,%a0:l) <== NOT EXECUTED 4a39a: 9488 subl %a0,%d2 <== NOT EXECUTED 4a39c: 4875 2800 pea %a5@(00000000,%d2:l) <== NOT EXECUTED 4a3a0: 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 ) { 4a3a2: 2943 0004 movel %d3,%a4@(4) <== NOT EXECUTED 4a3a6: 2941 0008 movel %d1,%a4@(8) <== NOT EXECUTED 4a3aa: 2949 000c movel %a1,%a4@(12) <== NOT EXECUTED 4a3ae: 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], 4a3b2: 4e90 jsr %a0@ <== NOT EXECUTED 4a3b4: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4a3b8: 2600 movel %d0,%d3 <== NOT EXECUTED if ( !IMFS_evaluate_permission( pathloc, flags ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a3ba: 2003 movel %d3,%d0 4a3bc: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 4a3c2: 4e5e unlk %fp 4a3c4: 4e75 rts /* * I cannot move out of this directory without execute permission. */ if ( type != IMFS_NO_MORE_PATH ) if ( node->type == IMFS_DIRECTORY ) 4a3c6: 7001 moveq #1,%d0 4a3c8: b0ab 0048 cmpl %a3@(72),%d0 4a3cc: 6700 00b8 beqw 4a486 if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_SEARCH ) ) rtems_set_errno_and_return_minus_one( EACCES ); node = pathloc->node_access; 4a3d0: 2648 moveal %a0,%a3 switch( type ) { 4a3d2: 7003 moveq #3,%d0 4a3d4: b083 cmpl %d3,%d0 4a3d6: 671c beqs 4a3f4 4a3d8: 7204 moveq #4,%d1 4a3da: b283 cmpl %d3,%d1 4a3dc: 6700 008e beqw 4a46c 4a3e0: 103c 0002 moveb #2,%d0 4a3e4: b083 cmpl %d3,%d0 4a3e6: 6748 beqs 4a430 <== NEVER TAKEN /* * Evaluate all tokens until we are done or an error occurs. */ while( (type != IMFS_NO_MORE_PATH) && (type != IMFS_INVALID_TOKEN) ) { 4a3e8: 7004 moveq #4,%d0 4a3ea: b083 cmpl %d3,%d0 4a3ec: 6600 ff4e bnew 4a33c 4a3f0: 6000 ff72 braw 4a364 <== NOT EXECUTED case IMFS_NAME: /* * If we are at a link follow it. */ if ( node->type == IMFS_HARD_LINK ) { 4a3f4: 2028 0048 movel %a0@(72),%d0 4a3f8: 7203 moveq #3,%d1 4a3fa: b280 cmpl %d0,%d1 4a3fc: 6700 00d8 beqw 4a4d6 * It would be a design error if we evaluated the link and * was broken. */ IMFS_assert( node ); } else if ( node->type == IMFS_SYM_LINK ) { 4a400: 7204 moveq #4,%d1 4a402: b280 cmpl %d0,%d1 4a404: 6700 0134 beqw 4a53a } /* * Only a directory can be decended into. */ if ( node->type != IMFS_DIRECTORY ) 4a408: 7201 moveq #1,%d1 4a40a: b280 cmpl %d0,%d1 4a40c: 6600 0162 bnew 4a570 /* * 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 ) { 4a410: 206b 0058 moveal %a3@(88),%a0 4a414: 4a88 tstl %a0 4a416: 6600 ff60 bnew 4a378 } /* * Otherwise find the token name in the present location. */ node = IMFS_find_match_in_dir( node, token ); 4a41a: 2f04 movel %d4,%sp@- 4a41c: 2047 moveal %d7,%a0 4a41e: 2f0b movel %a3,%sp@- 4a420: 4e90 jsr %a0@ if ( !node ) 4a422: 508f addql #8,%sp } /* * Otherwise find the token name in the present location. */ node = IMFS_find_match_in_dir( node, token ); 4a424: 2640 moveal %d0,%a3 if ( !node ) 4a426: 4a80 tstl %d0 4a428: 6728 beqs 4a452 /* * Set the node access to the point we have found. */ pathloc->node_access = node; 4a42a: 288b movel %a3,%a4@ 4a42c: 6000 ff0e braw 4a33c case IMFS_UP_DIR: /* * Am I at the root of all filesystems? (chroot'ed?) */ if ( pathloc->node_access == rtems_filesystem_root.node_access ) 4a430: 2279 0005 e54c moveal 5e54c ,%a1 <== NOT EXECUTED 4a436: b1e9 0018 cmpal %a1@(24),%a0 <== NOT EXECUTED 4a43a: 6700 ff00 beqw 4a33c <== NOT EXECUTED /* * Am I at the root of this mounted filesystem? */ if (pathloc->node_access == pathloc->mt_entry->mt_fs_root.node_access) { 4a43e: 226c 0010 moveal %a4@(16),%a1 <== NOT EXECUTED /* * Am I at the root of this mounted filesystem? */ if (pathloc->node_access == 4a442: b1e9 001c cmpal %a1@(28),%a0 <== NOT EXECUTED 4a446: 6700 00a4 beqw 4a4ec <== NOT EXECUTED pathnamelen+len, flags,pathloc); } } else { if ( !node->Parent ) 4a44a: 2668 0008 moveal %a0@(8),%a3 <== NOT EXECUTED 4a44e: 4a8b tstl %a3 <== NOT EXECUTED 4a450: 66d8 bnes 4a42a <== 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 ); 4a452: 4eb9 0004 e90c jsr 4e90c <__errno> 4a458: 76ff moveq #-1,%d3 4a45a: 7a02 moveq #2,%d5 4a45c: 2040 moveal %d0,%a0 if ( !IMFS_evaluate_permission( pathloc, flags ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a45e: 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 ); 4a460: 2085 movel %d5,%a0@ if ( !IMFS_evaluate_permission( pathloc, flags ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a462: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 4a468: 4e5e unlk %fp 4a46a: 4e75 rts case IMFS_NO_MORE_PATH: case IMFS_CURRENT_DIR: break; case IMFS_INVALID_TOKEN: rtems_set_errno_and_return_minus_one( ENAMETOOLONG ); 4a46c: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 4a472: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a474: 785b moveq #91,%d4 <== NOT EXECUTED 4a476: 2040 moveal %d0,%a0 <== NOT EXECUTED if ( !IMFS_evaluate_permission( pathloc, flags ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a478: 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 ); 4a47a: 2084 movel %d4,%a0@ <== NOT EXECUTED if ( !IMFS_evaluate_permission( pathloc, flags ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a47c: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a482: 4e5e unlk %fp <== NOT EXECUTED 4a484: 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 ) ) 4a486: 4878 0001 pea 1 4a48a: 2f0c movel %a4,%sp@- 4a48c: 4eb9 0004 a21a jsr 4a21a 4a492: 508f addql #8,%sp 4a494: 4a80 tstl %d0 4a496: 6724 beqs 4a4bc <== NEVER TAKEN 4a498: 2054 moveal %a4@,%a0 4a49a: 6000 ff34 braw 4a3d0 flags, pathloc ); } else { result = IMFS_Set_handlers( pathloc ); } } else { result = IMFS_Set_handlers( pathloc ); 4a49e: 2f0c movel %a4,%sp@- 4a4a0: 4eb9 0004 a190 jsr 4a190 /* * Verify we have the correct permissions for this node. */ if ( !IMFS_evaluate_permission( pathloc, flags ) ) 4a4a6: 2eae 0010 movel %fp@(16),%sp@ flags, pathloc ); } else { result = IMFS_Set_handlers( pathloc ); } } else { result = IMFS_Set_handlers( pathloc ); 4a4aa: 2600 movel %d0,%d3 /* * Verify we have the correct permissions for this node. */ if ( !IMFS_evaluate_permission( pathloc, flags ) ) 4a4ac: 2f0c movel %a4,%sp@- 4a4ae: 4eb9 0004 a21a jsr 4a21a 4a4b4: 508f addql #8,%sp 4a4b6: 4a80 tstl %d0 4a4b8: 6600 ff00 bnew 4a3ba rtems_set_errno_and_return_minus_one( EACCES ); 4a4bc: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 4a4c2: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a4c4: 740d moveq #13,%d2 <== NOT EXECUTED 4a4c6: 2040 moveal %d0,%a0 <== NOT EXECUTED return result; } 4a4c8: 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 ); 4a4ca: 2082 movel %d2,%a0@ <== NOT EXECUTED return result; } 4a4cc: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a4d2: 4e5e unlk %fp <== NOT EXECUTED 4a4d4: 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 ); 4a4d6: 42a7 clrl %sp@- <== NOT EXECUTED 4a4d8: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4a4da: 4eb9 0004 a2b4 jsr 4a2b4 <== NOT EXECUTED node = pathloc->node_access; 4a4e0: 2654 moveal %a4@,%a3 <== NOT EXECUTED 4a4e2: 508f addql #8,%sp <== NOT EXECUTED 4a4e4: 202b 0048 movel %a3@(72),%d0 <== NOT EXECUTED 4a4e8: 6000 ff1e braw 4a408 <== NOT EXECUTED /* * Am I at the root of this mounted filesystem? */ if (pathloc->node_access == 4a4ec: 28a9 0008 movel %a1@(8),%a4@ <== NOT EXECUTED 4a4f0: 2069 0014 moveal %a1@(20),%a0 <== NOT EXECUTED 4a4f4: 2629 000c movel %a1@(12),%d3 <== NOT EXECUTED 4a4f8: 2229 0010 movel %a1@(16),%d1 <== NOT EXECUTED 4a4fc: 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]), 4a500: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4a502: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4a506: 226e fffc moveal %fp@(-4),%a1 <== NOT EXECUTED 4a50a: 4872 9800 pea %a2@(00000000,%a1:l) <== NOT EXECUTED 4a50e: 9489 subl %a1,%d2 <== NOT EXECUTED 4a510: 4875 2800 pea %a5@(00000000,%d2:l) <== NOT EXECUTED 4a514: 2250 moveal %a0@,%a1 <== NOT EXECUTED /* * Am I at the root of this mounted filesystem? */ if (pathloc->node_access == 4a516: 2943 0004 movel %d3,%a4@(4) <== NOT EXECUTED 4a51a: 2941 0008 movel %d1,%a4@(8) <== NOT EXECUTED 4a51e: 2948 000c movel %a0,%a4@(12) <== NOT EXECUTED 4a522: 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]), 4a526: 4e91 jsr %a1@ <== NOT EXECUTED 4a528: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4a52c: 2600 movel %d0,%d3 <== NOT EXECUTED if ( !IMFS_evaluate_permission( pathloc, flags ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a52e: 2003 movel %d3,%d0 <== NOT EXECUTED 4a530: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a536: 4e5e unlk %fp <== NOT EXECUTED 4a538: 4e75 rts <== NOT EXECUTED * was broken. */ IMFS_assert( node ); } else if ( node->type == IMFS_SYM_LINK ) { result = IMFS_evaluate_sym_link( pathloc, 0 ); 4a53a: 42a7 clrl %sp@- <== NOT EXECUTED 4a53c: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4a53e: 4eb9 0004 a598 jsr 4a598 <== NOT EXECUTED /* * In contrast to a hard link, it is possible to have a broken * symbolic link. */ node = pathloc->node_access; 4a544: 2654 moveal %a4@,%a3 <== NOT EXECUTED if ( result == -1 ) 4a546: 508f addql #8,%sp <== NOT EXECUTED 4a548: 72ff moveq #-1,%d1 <== NOT EXECUTED 4a54a: b280 cmpl %d0,%d1 <== NOT EXECUTED 4a54c: 673c beqs 4a58a <== NOT EXECUTED /* * In contrast to a hard link, it is possible to have a broken * symbolic link. */ node = pathloc->node_access; 4a54e: 202b 0048 movel %a3@(72),%d0 <== NOT EXECUTED 4a552: 6000 feb4 braw 4a408 <== 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 ); 4a556: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 4a55c: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a55e: 7e05 moveq #5,%d7 <== NOT EXECUTED 4a560: 2040 moveal %d0,%a0 <== NOT EXECUTED if ( !IMFS_evaluate_permission( pathloc, flags ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a562: 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 ); 4a564: 2087 movel %d7,%a0@ <== NOT EXECUTED if ( !IMFS_evaluate_permission( pathloc, flags ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a566: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a56c: 4e5e unlk %fp <== NOT EXECUTED 4a56e: 4e75 rts <== NOT EXECUTED /* * Only a directory can be decended into. */ if ( node->type != IMFS_DIRECTORY ) rtems_set_errno_and_return_minus_one( ENOTDIR ); 4a570: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 4a576: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a578: 7c14 moveq #20,%d6 <== NOT EXECUTED 4a57a: 2040 moveal %d0,%a0 <== NOT EXECUTED if ( !IMFS_evaluate_permission( pathloc, flags ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a57c: 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 ); 4a57e: 2086 movel %d6,%a0@ <== NOT EXECUTED if ( !IMFS_evaluate_permission( pathloc, flags ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a580: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a586: 4e5e unlk %fp <== NOT EXECUTED 4a588: 4e75 rts <== NOT EXECUTED 4a58a: 2600 movel %d0,%d3 <== NOT EXECUTED 4a58c: 2003 movel %d3,%d0 <== NOT EXECUTED 4a58e: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a594: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004a6da : int IMFS_evaluate_for_make( const char *path, /* IN */ rtems_filesystem_location_info_t *pathloc, /* IN/OUT */ const char **name /* OUT */ ) { 4a6da: 4e56 ffb0 linkw %fp,#-80 4a6de: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ 4a6e2: 286e 0008 moveal %fp@(8),%a4 4a6e6: 2e0e movel %fp,%d7 4a6e8: 2c0e movel %fp,%d6 int i = 0; 4a6ea: 4284 clrl %d4 4a6ec: 5987 subql #4,%d7 4a6ee: 0686 ffff ffdb addil #-37,%d6 4a6f4: 4bf9 0004 aa94 lea 4aa94 ,%a5 node = pathloc->node_access; /* * Get the path length. */ pathlen = strlen( path ); 4a6fa: 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 */ ) { 4a6fc: 266e 000c moveal %fp@(12),%a3 node = pathloc->node_access; /* * Get the path length. */ pathlen = strlen( path ); 4a700: 4eb9 0004 fd64 jsr 4fd64 /* * This was filled in by the caller and is valid in the * mount table. */ node = pathloc->node_access; 4a706: 2453 moveal %a3@,%a2 /* * Get the path length. */ pathlen = strlen( path ); 4a708: 588f addql #4,%sp 4a70a: 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 ); 4a70c: 2f07 movel %d7,%sp@- 4a70e: 2f06 movel %d6,%sp@- 4a710: 2f02 movel %d2,%sp@- 4a712: 4874 4800 pea %a4@(00000000,%d4:l) 4a716: 4e95 jsr %a5@ pathlen -= len; 4a718: 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 ); 4a71c: 2600 movel %d0,%d3 pathlen -= len; i += len; if ( !pathloc->node_access ) 4a71e: 4fef 0010 lea %sp@(16),%sp */ while( !done ) { type = IMFS_get_token( &path[i], pathlen, token, &len ); pathlen -= len; 4a722: 9485 subl %d5,%d2 i += len; if ( !pathloc->node_access ) 4a724: 2053 moveal %a3@,%a0 4a726: 4a88 tstl %a0 4a728: 6700 00ca beqw 4a7f4 /* * I cannot move out of this directory without execute permission. */ if ( type != IMFS_NO_MORE_PATH ) 4a72c: 4a80 tstl %d0 4a72e: 6742 beqs 4a772 if ( node->type == IMFS_DIRECTORY ) 4a730: 7001 moveq #1,%d0 4a732: b0aa 0048 cmpl %a2@(72),%d0 4a736: 6700 00d6 beqw 4a80e while( !done ) { type = IMFS_get_token( &path[i], pathlen, token, &len ); pathlen -= len; i += len; 4a73a: 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; 4a73c: 2448 moveal %a0,%a2 switch( type ) { 4a73e: 7002 moveq #2,%d0 4a740: b083 cmpl %d3,%d0 4a742: 6700 008e beqw 4a7d2 4a746: 6426 bccs 4a76e 4a748: 7203 moveq #3,%d1 4a74a: b283 cmpl %d3,%d1 4a74c: 673e beqs 4a78c <== ALWAYS TAKEN 4a74e: 7004 moveq #4,%d0 <== NOT EXECUTED 4a750: b083 cmpl %d3,%d0 <== NOT EXECUTED 4a752: 66b8 bnes 4a70c <== 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 ); 4a754: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 4a75a: 7c5b moveq #91,%d6 <== NOT EXECUTED 4a75c: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a75e: 2040 moveal %d0,%a0 <== NOT EXECUTED 4a760: 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; } 4a762: 2003 movel %d3,%d0 4a764: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 4a76a: 4e5e unlk %fp 4a76c: 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 ) { 4a76e: 4a83 tstl %d3 4a770: 669a bnes 4a70c <== ALWAYS TAKEN pathloc->node_access = node; break; case IMFS_NO_MORE_PATH: rtems_set_errno_and_return_minus_one( EEXIST ); 4a772: 4eb9 0004 e90c jsr 4e90c <__errno> 4a778: 76ff moveq #-1,%d3 4a77a: 7e11 moveq #17,%d7 4a77c: 2040 moveal %d0,%a0 if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_WX ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a77e: 2003 movel %d3,%d0 pathloc->node_access = node; break; case IMFS_NO_MORE_PATH: rtems_set_errno_and_return_minus_one( EEXIST ); 4a780: 2087 movel %d7,%a0@ if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_WX ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a782: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 4a788: 4e5e unlk %fp 4a78a: 4e75 rts pathloc->node_access = node; break; case IMFS_NAME: if ( node->type == IMFS_HARD_LINK ) { 4a78c: 2028 0048 movel %a0@(72),%d0 4a790: 7203 moveq #3,%d1 4a792: b280 cmpl %d0,%d1 4a794: 6700 014e beqw 4a8e4 result = IMFS_evaluate_link( pathloc, 0 ); if ( result == -1 ) return -1; } else if ( node->type == IMFS_SYM_LINK ) { 4a798: 7204 moveq #4,%d1 4a79a: b280 cmpl %d0,%d1 4a79c: 6700 0146 beqw 4a8e4 if ( result == -1 ) return -1; } node = pathloc->node_access; if ( !node ) 4a7a0: 4a8a tstl %a2 4a7a2: 6700 015c beqw 4a900 /* * Only a directory can be decended into. */ if ( node->type != IMFS_DIRECTORY ) 4a7a6: 7001 moveq #1,%d0 4a7a8: b0aa 0048 cmpl %a2@(72),%d0 4a7ac: 6600 0152 bnew 4a900 /* * 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 ) { 4a7b0: 206a 0058 moveal %a2@(88),%a0 4a7b4: 4a88 tstl %a0 4a7b6: 6600 0162 bnew 4a91a /* * Otherwise find the token name in the present location. */ node = IMFS_find_match_in_dir( node, token ); 4a7ba: 2f06 movel %d6,%sp@- 4a7bc: 2f0a movel %a2,%sp@- 4a7be: 4eb9 0004 aa10 jsr 4aa10 /* * If there is no node we have found the name of the node we * wish to create. */ if ( ! node ) 4a7c4: 508f addql #8,%sp /* * Otherwise find the token name in the present location. */ node = IMFS_find_match_in_dir( node, token ); 4a7c6: 2440 moveal %d0,%a2 /* * If there is no node we have found the name of the node we * wish to create. */ if ( ! node ) 4a7c8: 4a80 tstl %d0 4a7ca: 675a beqs 4a826 done = true; else pathloc->node_access = node; 4a7cc: 268a movel %a2,%a3@ 4a7ce: 6000 ff3c braw 4a70c case IMFS_UP_DIR: /* * Am I at the root of all filesystems? (chroot'ed?) */ if ( pathloc->node_access == rtems_filesystem_root.node_access ) 4a7d2: 2279 0005 e54c moveal 5e54c ,%a1 <== NOT EXECUTED 4a7d8: b1e9 0018 cmpal %a1@(24),%a0 <== NOT EXECUTED 4a7dc: 6700 ff2e beqw 4a70c <== NOT EXECUTED /* * Am I at the root of this mounted filesystem? */ if (pathloc->node_access == pathloc->mt_entry->mt_fs_root.node_access){ 4a7e0: 226b 0010 moveal %a3@(16),%a1 <== NOT EXECUTED 4a7e4: b1e9 001c cmpal %a1@(28),%a0 <== NOT EXECUTED 4a7e8: 6700 00b0 beqw 4a89a <== NOT EXECUTED *pathloc = newloc; return (*pathloc->ops->evalformake_h)( &path[i-len], pathloc, name ); } } else { if ( !node->Parent ) 4a7ec: 2468 0008 moveal %a0@(8),%a2 <== NOT EXECUTED 4a7f0: 4a8a tstl %a2 <== NOT EXECUTED 4a7f2: 66d8 bnes 4a7cc <== 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 ); 4a7f4: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 4a7fa: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a7fc: 7a02 moveq #2,%d5 <== NOT EXECUTED 4a7fe: 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; } 4a800: 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 ); 4a802: 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; } 4a804: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a80a: 4e5e unlk %fp <== NOT EXECUTED 4a80c: 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 ) ) 4a80e: 4878 0001 pea 1 4a812: 2f0b movel %a3,%sp@- 4a814: 4eb9 0004 a21a jsr 4a21a 4a81a: 508f addql #8,%sp 4a81c: 4a80 tstl %d0 4a81e: 6760 beqs 4a880 <== NEVER TAKEN 4a820: 2053 moveal %a3@,%a0 4a822: 6000 ff16 braw 4a73a case IMFS_CURRENT_DIR: break; } } *name = &path[ i - len ]; 4a826: 2004 movel %d4,%d0 4a828: 90ae fffc subl %fp@(-4),%d0 4a82c: d08c addl %a4,%d0 4a82e: 206e 0010 moveal %fp@(16),%a0 4a832: 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++) { 4a834: 1034 4800 moveb %a4@(00000000,%d4:l),%d0 4a838: 671a beqs 4a854 <== ALWAYS TAKEN 4a83a: 4bf9 0004 3c28 lea 43c28 ,%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( 4a840: 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 ] ) ) 4a844: 49c0 extbl %d0 <== NOT EXECUTED 4a846: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4a848: 4e95 jsr %a5@ <== NOT EXECUTED 4a84a: 588f addql #4,%sp <== NOT EXECUTED 4a84c: 4a80 tstl %d0 <== NOT EXECUTED 4a84e: 67a4 beqs 4a7f4 <== 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++) { 4a850: 101a moveb %a2@+,%d0 <== NOT EXECUTED 4a852: 66f0 bnes 4a844 <== NOT EXECUTED /* * Verify we can execute and write to this directory. */ result = IMFS_Set_handlers( pathloc ); 4a854: 2f0b movel %a3,%sp@- 4a856: 4eb9 0004 a190 jsr 4a190 /* * The returned node must be a directory */ node = pathloc->node_access; if ( node->type != IMFS_DIRECTORY ) 4a85c: 2053 moveal %a3@,%a0 /* * Verify we can execute and write to this directory. */ result = IMFS_Set_handlers( pathloc ); 4a85e: 2600 movel %d0,%d3 /* * The returned node must be a directory */ node = pathloc->node_access; if ( node->type != IMFS_DIRECTORY ) 4a860: 588f addql #4,%sp 4a862: 7001 moveq #1,%d0 4a864: b0a8 0048 cmpl %a0@(72),%d0 4a868: 6600 0096 bnew 4a900 /* * We must have Write and execute permission on the returned node. */ if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_WX ) ) 4a86c: 4878 0003 pea 3 4a870: 2f0b movel %a3,%sp@- 4a872: 4eb9 0004 a21a jsr 4a21a 4a878: 508f addql #8,%sp 4a87a: 4a80 tstl %d0 4a87c: 6600 fee4 bnew 4a762 rtems_set_errno_and_return_minus_one( EACCES ); 4a880: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 4a886: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a888: 740d moveq #13,%d2 <== NOT EXECUTED 4a88a: 2040 moveal %d0,%a0 <== NOT EXECUTED return result; } 4a88c: 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 ); 4a88e: 2082 movel %d2,%a0@ <== NOT EXECUTED return result; } 4a890: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a896: 4e5e unlk %fp <== NOT EXECUTED 4a898: 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){ 4a89a: 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 ); 4a89e: 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){ 4a8a2: 26a9 0008 movel %a1@(8),%a3@ <== NOT EXECUTED 4a8a6: 2069 0014 moveal %a1@(20),%a0 <== NOT EXECUTED 4a8aa: 2229 0010 movel %a1@(16),%d1 <== NOT EXECUTED 4a8ae: 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 ); 4a8b2: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4a8b6: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4a8b8: 4874 4800 pea %a4@(00000000,%d4:l) <== NOT EXECUTED 4a8bc: 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){ 4a8c0: 2742 0004 movel %d2,%a3@(4) <== NOT EXECUTED 4a8c4: 2741 0008 movel %d1,%a3@(8) <== NOT EXECUTED 4a8c8: 2748 000c movel %a0,%a3@(12) <== NOT EXECUTED 4a8cc: 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 ); 4a8d0: 4e91 jsr %a1@ <== NOT EXECUTED 4a8d2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4a8d6: 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; } 4a8d8: 2003 movel %d3,%d0 <== NOT EXECUTED 4a8da: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a8e0: 4e5e unlk %fp <== NOT EXECUTED 4a8e2: 4e75 rts <== NOT EXECUTED if ( result == -1 ) return -1; } else if ( node->type == IMFS_SYM_LINK ) { result = IMFS_evaluate_link( pathloc, 0 ); 4a8e4: 42a7 clrl %sp@- <== NOT EXECUTED 4a8e6: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4a8e8: 4eb9 0004 a620 jsr 4a620 <== NOT EXECUTED if ( result == -1 ) 4a8ee: 508f addql #8,%sp <== NOT EXECUTED if ( result == -1 ) return -1; } else if ( node->type == IMFS_SYM_LINK ) { result = IMFS_evaluate_link( pathloc, 0 ); 4a8f0: 2600 movel %d0,%d3 <== NOT EXECUTED if ( result == -1 ) 4a8f2: 70ff moveq #-1,%d0 <== NOT EXECUTED 4a8f4: b083 cmpl %d3,%d0 <== NOT EXECUTED 4a8f6: 6700 fe6a beqw 4a762 <== NOT EXECUTED 4a8fa: 2453 moveal %a3@,%a2 <== NOT EXECUTED 4a8fc: 6000 fea2 braw 4a7a0 <== 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 ); 4a900: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 4a906: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a908: 7814 moveq #20,%d4 <== NOT EXECUTED 4a90a: 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; } 4a90c: 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 ); 4a90e: 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; } 4a910: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a916: 4e5e unlk %fp <== NOT EXECUTED 4a918: 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 ) { 4a91a: 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 ); 4a91e: 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 ) { 4a922: 26a8 001c movel %a0@(28),%a3@ <== NOT EXECUTED 4a926: 2268 0028 moveal %a0@(40),%a1 <== NOT EXECUTED 4a92a: 2228 0024 movel %a0@(36),%d1 <== NOT EXECUTED 4a92e: 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 ); 4a932: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4a936: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4a938: 4874 4800 pea %a4@(00000000,%d4:l) <== NOT EXECUTED 4a93c: 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 ) { 4a940: 2742 0004 movel %d2,%a3@(4) <== NOT EXECUTED 4a944: 2741 0008 movel %d1,%a3@(8) <== NOT EXECUTED 4a948: 2749 000c movel %a1,%a3@(12) <== NOT EXECUTED 4a94c: 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 ); 4a950: 4e90 jsr %a0@ <== NOT EXECUTED 4a952: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4a956: 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; } 4a958: 2003 movel %d3,%d0 <== NOT EXECUTED 4a95a: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a960: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004a2b4 : int IMFS_evaluate_hard_link( rtems_filesystem_location_info_t *node, /* IN/OUT */ int flags /* IN */ ) { 4a2b4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a2b8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a2ba: 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; 4a2be: 2052 moveal %a2@,%a0 <== NOT EXECUTED 4a2c0: 24a8 004c movel %a0@(76),%a2@ <== NOT EXECUTED IMFS_Set_handlers( node ); 4a2c4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a2c6: 4eb9 0004 a190 jsr 4a190 <== NOT EXECUTED /* * Verify we have the correct permissions for this node. */ if ( !IMFS_evaluate_permission( node, flags ) ) 4a2cc: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4a2d0: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a2d2: 4eb9 0004 a21a jsr 4a21a <== NOT EXECUTED 4a2d8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4a2dc: 4a80 tstl %d0 <== NOT EXECUTED 4a2de: 670a beqs 4a2ea <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a2e0: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED */ if ( !IMFS_evaluate_permission( node, flags ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; 4a2e4: 4280 clrl %d0 <== NOT EXECUTED } 4a2e6: 4e5e unlk %fp <== NOT EXECUTED 4a2e8: 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 ); 4a2ea: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED return result; } 4a2f0: 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 ); 4a2f4: 2040 moveal %d0,%a0 <== NOT EXECUTED 4a2f6: 720d moveq #13,%d1 <== NOT EXECUTED 4a2f8: 70ff moveq #-1,%d0 <== NOT EXECUTED return result; } 4a2fa: 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 ); 4a2fc: 2081 movel %d1,%a0@ <== NOT EXECUTED return result; } =============================================================================== 0004a620 : */ int IMFS_evaluate_link( rtems_filesystem_location_info_t *node, /* IN/OUT */ int flags /* IN */ ) { 4a620: 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 ); 4a624: 2079 0005 e54c moveal 5e54c ,%a0 <== NOT EXECUTED */ int IMFS_evaluate_link( rtems_filesystem_location_info_t *node, /* IN/OUT */ int flags /* IN */ ) { 4a62a: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ <== NOT EXECUTED 4a62e: 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 ); 4a632: 4bf9 0004 a598 lea 4a598 ,%a5 <== NOT EXECUTED /* * Follow the Link node. */ if ( jnode->type == IMFS_HARD_LINK ) result = IMFS_evaluate_hard_link( node, flags ); 4a638: 49f9 0004 a2b4 lea 4a2b4 ,%a4 <== NOT EXECUTED */ int IMFS_evaluate_link( rtems_filesystem_location_info_t *node, /* IN/OUT */ int flags /* IN */ ) { 4a63e: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED IMFS_jnode_t *jnode; int result = 0; do { jnode = node->node_access; 4a642: 2453 moveal %a3@,%a2 <== NOT EXECUTED /* * Increment and check the link counter. */ rtems_filesystem_link_counts ++; if ( rtems_filesystem_link_counts > MAXSYMLINK ) { 4a644: 4281 clrl %d1 <== NOT EXECUTED /* * Increment and check the link counter. */ rtems_filesystem_link_counts ++; 4a646: 3028 0030 movew %a0@(48),%d0 <== NOT EXECUTED 4a64a: 5280 addql #1,%d0 <== NOT EXECUTED if ( rtems_filesystem_link_counts > MAXSYMLINK ) { 4a64c: 3200 movew %d0,%d1 <== NOT EXECUTED /* * Increment and check the link counter. */ rtems_filesystem_link_counts ++; 4a64e: 3140 0030 movew %d0,%a0@(48) <== NOT EXECUTED if ( rtems_filesystem_link_counts > MAXSYMLINK ) { 4a652: 7005 moveq #5,%d0 <== NOT EXECUTED 4a654: b081 cmpl %d1,%d0 <== NOT EXECUTED 4a656: 6564 bcss 4a6bc <== NOT EXECUTED /* * Follow the Link node. */ if ( jnode->type == IMFS_HARD_LINK ) 4a658: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED 4a65c: 7203 moveq #3,%d1 <== NOT EXECUTED 4a65e: b280 cmpl %d0,%d1 <== NOT EXECUTED 4a660: 6740 beqs 4a6a2 <== NOT EXECUTED result = IMFS_evaluate_hard_link( node, flags ); else if (jnode->type == IMFS_SYM_LINK ) 4a662: 7204 moveq #4,%d1 <== NOT EXECUTED 4a664: b280 cmpl %d0,%d1 <== NOT EXECUTED 4a666: 671a beqs 4a682 <== NOT EXECUTED result = IMFS_evaluate_sym_link( node, flags ); } while ( ( result == 0 ) && ( ( jnode->type == IMFS_SYM_LINK ) || 4a668: 5780 subql #3,%d0 <== NOT EXECUTED 4a66a: 7201 moveq #1,%d1 <== NOT EXECUTED 4a66c: b280 cmpl %d0,%d1 <== NOT EXECUTED 4a66e: 64d2 bccs 4a642 <== NOT EXECUTED 4a670: 4280 clrl %d0 <== NOT EXECUTED /* * Clear link counter. */ rtems_filesystem_link_counts = 0; 4a672: 4241 clrw %d1 <== NOT EXECUTED 4a674: 3141 0030 movew %d1,%a0@(48) <== NOT EXECUTED return result; } 4a678: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED 4a67e: 4e5e unlk %fp <== NOT EXECUTED 4a680: 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 ); 4a682: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4a684: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4a686: 4e95 jsr %a5@ <== NOT EXECUTED 4a688: 508f addql #8,%sp <== NOT EXECUTED } while ( ( result == 0 ) && ( ( jnode->type == IMFS_SYM_LINK ) || ( jnode->type == IMFS_HARD_LINK ) ) ); 4a68a: 4a80 tstl %d0 <== NOT EXECUTED 4a68c: 6620 bnes 4a6ae <== NOT EXECUTED 4a68e: 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 ) || 4a692: 7201 moveq #1,%d1 <== NOT EXECUTED 4a694: 5780 subql #3,%d0 <== NOT EXECUTED ( jnode->type == IMFS_HARD_LINK ) ) ); 4a696: 2079 0005 e54c moveal 5e54c ,%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 ) || 4a69c: b280 cmpl %d0,%d1 <== NOT EXECUTED 4a69e: 64a2 bccs 4a642 <== NOT EXECUTED 4a6a0: 60ce bras 4a670 <== NOT EXECUTED /* * Follow the Link node. */ if ( jnode->type == IMFS_HARD_LINK ) result = IMFS_evaluate_hard_link( node, flags ); 4a6a2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4a6a4: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4a6a6: 4e94 jsr %a4@ <== NOT EXECUTED 4a6a8: 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 ) ) ); 4a6aa: 4a80 tstl %d0 <== NOT EXECUTED 4a6ac: 67e0 beqs 4a68e <== NOT EXECUTED 4a6ae: 2079 0005 e54c moveal 5e54c ,%a0 <== NOT EXECUTED /* * Clear link counter. */ rtems_filesystem_link_counts = 0; 4a6b4: 4241 clrw %d1 <== NOT EXECUTED 4a6b6: 3141 0030 movew %d1,%a0@(48) <== NOT EXECUTED 4a6ba: 60bc bras 4a678 <== NOT EXECUTED * Increment and check the link counter. */ rtems_filesystem_link_counts ++; if ( rtems_filesystem_link_counts > MAXSYMLINK ) { rtems_filesystem_link_counts = 0; 4a6bc: 4241 clrw %d1 <== NOT EXECUTED 4a6be: 3141 0030 movew %d1,%a0@(48) <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ELOOP ); 4a6c2: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 4a6c8: 725c moveq #92,%d1 <== NOT EXECUTED 4a6ca: 2040 moveal %d0,%a0 <== NOT EXECUTED 4a6cc: 70ff moveq #-1,%d0 <== NOT EXECUTED */ rtems_filesystem_link_counts = 0; return result; } 4a6ce: 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 ); 4a6d4: 2081 movel %d1,%a0@ <== NOT EXECUTED */ rtems_filesystem_link_counts = 0; return result; } 4a6d6: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004a21a : uid_t st_uid; gid_t st_gid; IMFS_jnode_t *jnode; int flags_to_test; if ( !rtems_libio_is_valid_perms( flags ) ) 4a21a: 70f8 moveq #-8,%d0 */ int IMFS_evaluate_permission( rtems_filesystem_location_info_t *node, int flags ) { 4a21c: 4e56 fff4 linkw %fp,#-12 4a220: 48d7 040c moveml %d2-%d3/%a2,%sp@ 4a224: 242e 000c movel %fp@(12),%d2 uid_t st_uid; gid_t st_gid; IMFS_jnode_t *jnode; int flags_to_test; if ( !rtems_libio_is_valid_perms( flags ) ) 4a228: c082 andl %d2,%d0 4a22a: 6670 bnes 4a29c <== NEVER TAKEN rtems_set_errno_and_return_minus_one( EPERM ); jnode = node->node_access; 4a22c: 206e 0008 moveal %fp@(8),%a0 4a230: 2450 moveal %a0@,%a2 #if defined(RTEMS_POSIX_API) st_uid = geteuid(); 4a232: 4eb9 0004 b06c jsr 4b06c 4a238: 3600 movew %d0,%d3 st_gid = getegid(); 4a23a: 4eb9 0004 b058 jsr 4b058 * Check if I am owner or a group member or someone else. */ flags_to_test = flags; if ( st_uid == jnode->st_uid ) 4a240: 4281 clrl %d1 4a242: 0283 0000 ffff andil #65535,%d3 4a248: 322a 0038 movew %a2@(56),%d1 4a24c: b681 cmpl %d1,%d3 4a24e: 6728 beqs 4a278 <== ALWAYS TAKEN flags_to_test <<= 6; else if ( st_gid == jnode->st_gid ) 4a250: 4281 clrl %d1 <== NOT EXECUTED 4a252: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED 4a258: 322a 003a movew %a2@(58),%d1 <== NOT EXECUTED 4a25c: b081 cmpl %d1,%d0 <== NOT EXECUTED 4a25e: 672a beqs 4a28a <== NOT EXECUTED /* * If all of the flags are set we have permission * to do this. */ if ( ( flags_to_test & jnode->st_mode) == flags_to_test ) 4a260: 2002 movel %d2,%d0 <== NOT EXECUTED 4a262: c0aa 002e andl %a2@(46),%d0 <== 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 ); 4a266: b082 cmpl %d2,%d0 <== NOT EXECUTED 4a268: 57c0 seq %d0 <== NOT EXECUTED 4a26a: 49c0 extbl %d0 <== NOT EXECUTED 4a26c: 4480 negl %d0 <== NOT EXECUTED */ if ( ( flags_to_test & jnode->st_mode) == flags_to_test ) return 1; return 0; } 4a26e: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 4a274: 4e5e unlk %fp 4a276: 4e75 rts */ flags_to_test = flags; if ( st_uid == jnode->st_uid ) flags_to_test <<= 6; 4a278: ed8a lsll #6,%d2 /* * If all of the flags are set we have permission * to do this. */ if ( ( flags_to_test & jnode->st_mode) == flags_to_test ) 4a27a: 2002 movel %d2,%d0 4a27c: c0aa 002e andl %a2@(46),%d0 gid_t st_gid; IMFS_jnode_t *jnode; int flags_to_test; if ( !rtems_libio_is_valid_perms( flags ) ) rtems_set_errno_and_return_minus_one( EPERM ); 4a280: b082 cmpl %d2,%d0 4a282: 57c0 seq %d0 4a284: 49c0 extbl %d0 4a286: 4480 negl %d0 4a288: 60e4 bras 4a26e flags_to_test = flags; if ( st_uid == jnode->st_uid ) flags_to_test <<= 6; else if ( st_gid == jnode->st_gid ) flags_to_test <<= 3; 4a28a: e78a lsll #3,%d2 <== NOT EXECUTED /* * If all of the flags are set we have permission * to do this. */ if ( ( flags_to_test & jnode->st_mode) == flags_to_test ) 4a28c: 2002 movel %d2,%d0 <== NOT EXECUTED 4a28e: c0aa 002e andl %a2@(46),%d0 <== 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 ); 4a292: b082 cmpl %d2,%d0 <== NOT EXECUTED 4a294: 57c0 seq %d0 <== NOT EXECUTED 4a296: 49c0 extbl %d0 <== NOT EXECUTED 4a298: 4480 negl %d0 <== NOT EXECUTED 4a29a: 60d2 bras 4a26e <== NOT EXECUTED 4a29c: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 4a2a2: 7201 moveq #1,%d1 <== NOT EXECUTED 4a2a4: 2040 moveal %d0,%a0 <== NOT EXECUTED 4a2a6: 70ff moveq #-1,%d0 <== NOT EXECUTED */ if ( ( flags_to_test & jnode->st_mode) == flags_to_test ) return 1; return 0; } 4a2a8: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== 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 ); 4a2ae: 2081 movel %d1,%a0@ <== NOT EXECUTED */ if ( ( flags_to_test & jnode->st_mode) == flags_to_test ) return 1; return 0; } 4a2b0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004a598 : int IMFS_evaluate_sym_link( rtems_filesystem_location_info_t *node, /* IN/OUT */ int flags /* IN */ ) { 4a598: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 4a59c: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED 4a5a0: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED IMFS_jnode_t *jnode = node->node_access; 4a5a4: 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; 4a5a6: 24ab 0008 movel %a3@(8),%a2@ <== NOT EXECUTED int IMFS_evaluate_sym_link( rtems_filesystem_location_info_t *node, /* IN/OUT */ int flags /* IN */ ) { 4a5aa: 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( 4a5ae: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a5b0: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4a5b4: 2f2b 004c movel %a3@(76),%sp@- <== NOT EXECUTED 4a5b8: 4eb9 0004 b610 jsr 4b610 <== NOT EXECUTED ); /* * Use eval path to evaluate the path of the symbolic link. */ result = IMFS_eval_path( 4a5be: 262b 004c movel %a3@(76),%d3 <== NOT EXECUTED 4a5c2: d6ae fffc addl %fp@(-4),%d3 <== NOT EXECUTED 4a5c6: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4a5c8: 4eb9 0004 fd64 jsr 4fd64 <== NOT EXECUTED 4a5ce: 2e8a movel %a2,%sp@ <== NOT EXECUTED 4a5d0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4a5d2: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4a5d4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4a5d6: 4eb9 0004 a300 jsr 4a300 <== NOT EXECUTED 4a5dc: 2600 movel %d0,%d3 <== NOT EXECUTED strlen( &jnode->info.sym_link.name[i] ), flags, node ); IMFS_Set_handlers( node ); 4a5de: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a5e0: 4eb9 0004 a190 jsr 4a190 <== NOT EXECUTED /* * Verify we have the correct permissions for this node. */ if ( !IMFS_evaluate_permission( node, flags ) ) 4a5e6: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 4a5ea: 2e82 movel %d2,%sp@ <== NOT EXECUTED 4a5ec: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a5ee: 4eb9 0004 a21a jsr 4a21a <== NOT EXECUTED 4a5f4: 508f addql #8,%sp <== NOT EXECUTED 4a5f6: 4a80 tstl %d0 <== NOT EXECUTED 4a5f8: 670c beqs 4a606 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a5fa: 2003 movel %d3,%d0 <== NOT EXECUTED 4a5fc: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4a602: 4e5e unlk %fp <== NOT EXECUTED 4a604: 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 ); 4a606: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 4a60c: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a60e: 2040 moveal %d0,%a0 <== NOT EXECUTED 4a610: 700d moveq #13,%d0 <== NOT EXECUTED 4a612: 2080 movel %d0,%a0@ <== NOT EXECUTED return result; } 4a614: 2003 movel %d3,%d0 <== NOT EXECUTED 4a616: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4a61c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004de88 : int IMFS_fchmod( rtems_filesystem_location_info_t *loc, mode_t mode ) { 4de88: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 4de8c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4de90: 2f0a movel %a2,%sp@- <== NOT EXECUTED IMFS_jnode_t *jnode; #if defined(RTEMS_POSIX_API) uid_t st_uid; #endif jnode = loc->node_access; 4de92: 2450 moveal %a0@,%a2 <== NOT EXECUTED int IMFS_fchmod( rtems_filesystem_location_info_t *loc, mode_t mode ) { 4de94: 2f02 movel %d2,%sp@- <== NOT EXECUTED * Verify I am the owner of the node or the super user. */ #if defined(RTEMS_POSIX_API) st_uid = geteuid(); if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) ) 4de96: 4282 clrl %d2 <== NOT EXECUTED /* * Verify I am the owner of the node or the super user. */ #if defined(RTEMS_POSIX_API) st_uid = geteuid(); 4de98: 4eb9 0004 b06c jsr 4b06c <== NOT EXECUTED if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) ) 4de9e: 4281 clrl %d1 <== NOT EXECUTED 4dea0: 342a 0038 movew %a2@(56),%d2 <== NOT EXECUTED 4dea4: 3200 movew %d0,%d1 <== NOT EXECUTED 4dea6: b282 cmpl %d2,%d1 <== NOT EXECUTED 4dea8: 6704 beqs 4deae <== NOT EXECUTED 4deaa: 4a40 tstw %d0 <== NOT EXECUTED 4deac: 663c bnes 4deea <== 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); 4deae: 202a 002e movel %a2@(46),%d0 <== NOT EXECUTED jnode->st_mode |= mode & (S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX); 4deb2: 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); 4deb6: 0280 ffff f000 andil #-4096,%d0 <== NOT EXECUTED jnode->st_mode |= mode & (S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX); 4debc: 0281 0000 0fff andil #4095,%d1 <== NOT EXECUTED 4dec2: 8280 orl %d0,%d1 <== NOT EXECUTED 4dec4: 2541 002e movel %d1,%a2@(46) <== NOT EXECUTED IMFS_update_ctime( jnode ); 4dec8: 42a7 clrl %sp@- <== NOT EXECUTED 4deca: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4dece: 4eb9 0004 2d8c jsr 42d8c <== NOT EXECUTED 4ded4: 256e fff8 0044 movel %fp@(-8),%a2@(68) <== NOT EXECUTED return 0; 4deda: 508f addql #8,%sp <== NOT EXECUTED 4dedc: 4280 clrl %d0 <== NOT EXECUTED } 4dede: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 4dee2: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 4dee6: 4e5e unlk %fp <== NOT EXECUTED 4dee8: 4e75 rts <== NOT EXECUTED */ #if defined(RTEMS_POSIX_API) st_uid = geteuid(); if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) ) rtems_set_errno_and_return_minus_one( EPERM ); 4deea: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED jnode->st_mode |= mode & (S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX); IMFS_update_ctime( jnode ); return 0; } 4def0: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED */ #if defined(RTEMS_POSIX_API) st_uid = geteuid(); if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) ) rtems_set_errno_and_return_minus_one( EPERM ); 4def4: 2040 moveal %d0,%a0 <== NOT EXECUTED 4def6: 7201 moveq #1,%d1 <== NOT EXECUTED 4def8: 70ff moveq #-1,%d0 <== NOT EXECUTED jnode->st_mode |= mode & (S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX); IMFS_update_ctime( jnode ); return 0; } 4defa: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 4defe: 4e5e unlk %fp <== NOT EXECUTED */ #if defined(RTEMS_POSIX_API) st_uid = geteuid(); if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) ) rtems_set_errno_and_return_minus_one( EPERM ); 4df00: 2081 movel %d1,%a0@ <== NOT EXECUTED jnode->st_mode |= mode & (S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX); IMFS_update_ctime( jnode ); return 0; } =============================================================================== 0004df04 : int IMFS_fdatasync( rtems_libio_t *iop ) { return 0; } 4df04: 4280 clrl %d0 <== NOT EXECUTED #include "imfs.h" int IMFS_fdatasync( rtems_libio_t *iop ) { 4df06: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return 0; } 4df0a: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 000437f0 : } int IMFS_fifo_close( rtems_libio_t *iop ) { 437f0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 437f4: 2f0b movel %a3,%sp@- <== NOT EXECUTED 437f6: 2f0a movel %a2,%sp@- <== NOT EXECUTED 437f8: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED int err = 0; IMFS_jnode_t *jnode = iop->pathinfo.node_access; 437fc: 266a 0018 moveal %a2@(24),%a3 <== NOT EXECUTED pipe_release(&JNODE2PIPE(jnode), iop); 43800: 2f0a movel %a2,%sp@- <== NOT EXECUTED 43802: 486b 004c pea %a3@(76) <== NOT EXECUTED 43806: 4eb9 0004 cefa jsr 4cefa <== NOT EXECUTED iop->flags &= ~LIBIO_FLAGS_OPEN; 4380c: 203c ffff feff movel #-257,%d0 <== NOT EXECUTED 43812: c1aa 0014 andl %d0,%a2@(20) <== NOT EXECUTED IMFS_check_node_remove(jnode); 43816: 2f0b movel %a3,%sp@- <== NOT EXECUTED 43818: 4eb9 0004 3e98 jsr 43e98 <== NOT EXECUTED IMFS_FIFO_RETURN(err); } 4381e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 43822: 4280 clrl %d0 <== NOT EXECUTED 43824: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 43828: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00043680 : int IMFS_fifo_ioctl( rtems_libio_t *iop, uint32_t command, void *buffer ) { 43680: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 43684: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 43688: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED 4368c: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED 43690: 2f02 movel %d2,%sp@- <== NOT EXECUTED int err; if (command == FIONBIO) { 43692: 0c80 8004 667e cmpil #-2147195266,%d0 <== NOT EXECUTED 43698: 6724 beqs 436be <== NOT EXECUTED iop->flags &= ~LIBIO_FLAGS_NO_DELAY; return 0; } } else err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop); 4369a: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4369c: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED 436a0: 2f09 movel %a1,%sp@- <== NOT EXECUTED 436a2: 2f00 movel %d0,%sp@- <== NOT EXECUTED 436a4: 2f28 004c movel %a0@(76),%sp@- <== NOT EXECUTED 436a8: 4eb9 0004 d884 jsr 4d884 <== NOT EXECUTED IMFS_FIFO_RETURN(err); 436ae: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 436b2: 4a80 tstl %d0 <== NOT EXECUTED 436b4: 6d46 blts 436fc <== NOT EXECUTED } 436b6: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 436ba: 4e5e unlk %fp <== NOT EXECUTED 436bc: 4e75 rts <== NOT EXECUTED ) { int err; if (command == FIONBIO) { if (buffer == NULL) 436be: 4a89 tstl %a1 <== NOT EXECUTED 436c0: 6724 beqs 436e6 <== NOT EXECUTED err = -EFAULT; else { if (*(int *)buffer) 436c2: 4a91 tstl %a1@ <== NOT EXECUTED 436c4: 6710 beqs 436d6 <== NOT EXECUTED iop->flags |= LIBIO_FLAGS_NO_DELAY; 436c6: 7201 moveq #1,%d1 <== NOT EXECUTED else iop->flags &= ~LIBIO_FLAGS_NO_DELAY; return 0; 436c8: 4280 clrl %d0 <== NOT EXECUTED } else err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop); IMFS_FIFO_RETURN(err); } 436ca: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 436ce: 4e5e unlk %fp <== NOT EXECUTED if (command == FIONBIO) { if (buffer == NULL) err = -EFAULT; else { if (*(int *)buffer) iop->flags |= LIBIO_FLAGS_NO_DELAY; 436d0: 83a8 0014 orl %d1,%a0@(20) <== NOT EXECUTED } else err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop); IMFS_FIFO_RETURN(err); } 436d4: 4e75 rts <== NOT EXECUTED err = -EFAULT; else { if (*(int *)buffer) iop->flags |= LIBIO_FLAGS_NO_DELAY; else iop->flags &= ~LIBIO_FLAGS_NO_DELAY; 436d6: 72fe moveq #-2,%d1 <== NOT EXECUTED return 0; 436d8: 4280 clrl %d0 <== NOT EXECUTED } else err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop); IMFS_FIFO_RETURN(err); } 436da: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 436de: 4e5e unlk %fp <== NOT EXECUTED err = -EFAULT; else { if (*(int *)buffer) iop->flags |= LIBIO_FLAGS_NO_DELAY; else iop->flags &= ~LIBIO_FLAGS_NO_DELAY; 436e0: c3a8 0014 andl %d1,%a0@(20) <== NOT EXECUTED } else err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop); IMFS_FIFO_RETURN(err); } 436e4: 4e75 rts <== NOT EXECUTED } } else err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop); IMFS_FIFO_RETURN(err); 436e6: 4eb9 0005 0ed8 jsr 50ed8 <__errno> <== NOT EXECUTED ) { int err; if (command == FIONBIO) { if (buffer == NULL) 436ec: 740e moveq #14,%d2 <== NOT EXECUTED } } else err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop); IMFS_FIFO_RETURN(err); 436ee: 2040 moveal %d0,%a0 <== NOT EXECUTED 436f0: 70ff moveq #-1,%d0 <== NOT EXECUTED 436f2: 2082 movel %d2,%a0@ <== NOT EXECUTED } 436f4: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 436f8: 4e5e unlk %fp <== NOT EXECUTED 436fa: 4e75 rts <== NOT EXECUTED } } else err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop); IMFS_FIFO_RETURN(err); 436fc: 2400 movel %d0,%d2 <== NOT EXECUTED 436fe: 4482 negl %d2 <== NOT EXECUTED 43700: 4eb9 0005 0ed8 jsr 50ed8 <__errno> <== NOT EXECUTED 43706: 2040 moveal %d0,%a0 <== NOT EXECUTED 43708: 70ff moveq #-1,%d0 <== NOT EXECUTED 4370a: 2082 movel %d2,%a0@ <== NOT EXECUTED 4370c: 60e6 bras 436f4 <== NOT EXECUTED =============================================================================== 00043618 : rtems_off64_t IMFS_fifo_lseek( rtems_libio_t *iop, rtems_off64_t offset, int whence ) { 43618: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4361c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 43620: 2f03 movel %d3,%sp@- <== NOT EXECUTED 43622: 2f02 movel %d2,%sp@- <== NOT EXECUTED off_t err = pipe_lseek(LIBIO2PIPE(iop), offset, whence, iop); 43624: 2f08 movel %a0,%sp@- <== NOT EXECUTED 43626: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 4362a: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED 4362e: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 43632: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 43636: 2f28 004c movel %a0@(76),%sp@- <== NOT EXECUTED 4363a: 4eb9 0004 d8e4 jsr 4d8e4 <== NOT EXECUTED IMFS_FIFO_RETURN(err); 43640: 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); 43644: 2600 movel %d0,%d3 <== NOT EXECUTED 43646: 2400 movel %d0,%d2 <== NOT EXECUTED 43648: 5bc1 smi %d1 <== NOT EXECUTED 4364a: 49c1 extbl %d1 <== NOT EXECUTED IMFS_FIFO_RETURN(err); 4364c: 4a81 tstl %d1 <== NOT EXECUTED 4364e: 6b10 bmis 43660 <== NOT EXECUTED } 43650: 2001 movel %d1,%d0 <== NOT EXECUTED 43652: 2202 movel %d2,%d1 <== NOT EXECUTED 43654: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 43658: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 4365c: 4e5e unlk %fp <== NOT EXECUTED 4365e: 4e75 rts <== NOT EXECUTED rtems_off64_t offset, int whence ) { off_t err = pipe_lseek(LIBIO2PIPE(iop), offset, whence, iop); IMFS_FIFO_RETURN(err); 43660: 4eb9 0005 0ed8 jsr 50ed8 <__errno> <== NOT EXECUTED 43666: 4483 negl %d3 <== NOT EXECUTED 43668: 2040 moveal %d0,%a0 <== NOT EXECUTED 4366a: 72ff moveq #-1,%d1 <== NOT EXECUTED 4366c: 74ff moveq #-1,%d2 <== NOT EXECUTED 4366e: 2083 movel %d3,%a0@ <== NOT EXECUTED } 43670: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 43674: 2001 movel %d1,%d0 <== NOT EXECUTED 43676: 2202 movel %d2,%d1 <== NOT EXECUTED 43678: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 4367c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004382c : rtems_libio_t *iop, const char *pathname, uint32_t flag, uint32_t mode ) { 4382c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 43830: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 43834: 2f02 movel %d2,%sp@- <== NOT EXECUTED IMFS_jnode_t *jnode = iop->pathinfo.node_access; int err = fifo_open(&JNODE2PIPE(jnode), iop); 43836: 2f08 movel %a0,%sp@- <== NOT EXECUTED 43838: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED 4383c: 41e8 004c lea %a0@(76),%a0 <== NOT EXECUTED 43840: 2f08 movel %a0,%sp@- <== NOT EXECUTED 43842: 4eb9 0004 cfc8 jsr 4cfc8 <== NOT EXECUTED IMFS_FIFO_RETURN(err); 43848: 508f addql #8,%sp <== NOT EXECUTED uint32_t mode ) { IMFS_jnode_t *jnode = iop->pathinfo.node_access; int err = fifo_open(&JNODE2PIPE(jnode), iop); 4384a: 2400 movel %d0,%d2 <== NOT EXECUTED IMFS_FIFO_RETURN(err); 4384c: 6d0a blts 43858 <== NOT EXECUTED } 4384e: 2002 movel %d2,%d0 <== NOT EXECUTED 43850: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 43854: 4e5e unlk %fp <== NOT EXECUTED 43856: 4e75 rts <== NOT EXECUTED ) { IMFS_jnode_t *jnode = iop->pathinfo.node_access; int err = fifo_open(&JNODE2PIPE(jnode), iop); IMFS_FIFO_RETURN(err); 43858: 4eb9 0005 0ed8 jsr 50ed8 <__errno> <== NOT EXECUTED 4385e: 4482 negl %d2 <== NOT EXECUTED 43860: 2040 moveal %d0,%a0 <== NOT EXECUTED 43862: 2082 movel %d2,%a0@ <== NOT EXECUTED 43864: 74ff moveq #-1,%d2 <== NOT EXECUTED } 43866: 2002 movel %d2,%d0 <== NOT EXECUTED 43868: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 4386c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00043782 : ssize_t IMFS_fifo_read( rtems_libio_t *iop, void *buffer, size_t count ) { 43782: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 43786: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4378a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4378c: 2f02 movel %d2,%sp@- <== NOT EXECUTED IMFS_jnode_t *jnode = iop->pathinfo.node_access; int err = pipe_read(JNODE2PIPE(jnode), buffer, count, iop); 4378e: 2f08 movel %a0,%sp@- <== NOT EXECUTED 43790: 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; 43794: 2468 0018 moveal %a0@(24),%a2 <== NOT EXECUTED int err = pipe_read(JNODE2PIPE(jnode), buffer, count, iop); 43798: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4379c: 2f2a 004c movel %a2@(76),%sp@- <== NOT EXECUTED 437a0: 4eb9 0004 d470 jsr 4d470 <== NOT EXECUTED if (err > 0) 437a6: 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); 437aa: 2400 movel %d0,%d2 <== NOT EXECUTED if (err > 0) 437ac: 6f22 bles 437d0 <== NOT EXECUTED IMFS_update_atime(jnode); 437ae: 42a7 clrl %sp@- <== NOT EXECUTED 437b0: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 437b4: 4eb9 0004 4b48 jsr 44b48 <== NOT EXECUTED 437ba: 256e fff8 003c movel %fp@(-8),%a2@(60) <== NOT EXECUTED 437c0: 508f addql #8,%sp <== NOT EXECUTED IMFS_FIFO_RETURN(err); } 437c2: 2002 movel %d2,%d0 <== NOT EXECUTED 437c4: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 437c8: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 437cc: 4e5e unlk %fp <== NOT EXECUTED 437ce: 4e75 rts <== NOT EXECUTED int err = pipe_read(JNODE2PIPE(jnode), buffer, count, iop); if (err > 0) IMFS_update_atime(jnode); IMFS_FIFO_RETURN(err); 437d0: 4a80 tstl %d0 <== NOT EXECUTED 437d2: 67ee beqs 437c2 <== NOT EXECUTED 437d4: 4eb9 0005 0ed8 jsr 50ed8 <__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 fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 437e8: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 437ec: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004370e : ssize_t IMFS_fifo_write( rtems_libio_t *iop, const void *buffer, size_t count ) { 4370e: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 43712: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 43716: 2f0a movel %a2,%sp@- <== NOT EXECUTED 43718: 2f02 movel %d2,%sp@- <== NOT EXECUTED IMFS_jnode_t *jnode = iop->pathinfo.node_access; int err = pipe_write(JNODE2PIPE(jnode), buffer, count, iop); 4371a: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4371c: 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; 43720: 2468 0018 moveal %a0@(24),%a2 <== NOT EXECUTED int err = pipe_write(JNODE2PIPE(jnode), buffer, count, iop); 43724: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 43728: 2f2a 004c movel %a2@(76),%sp@- <== NOT EXECUTED 4372c: 4eb9 0004 d666 jsr 4d666 <== NOT EXECUTED if (err > 0) { 43732: 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); 43736: 2400 movel %d0,%d2 <== NOT EXECUTED if (err > 0) { 43738: 6f28 bles 43762 <== NOT EXECUTED IMFS_mtime_ctime_update(jnode); 4373a: 42a7 clrl %sp@- <== NOT EXECUTED 4373c: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 43740: 4eb9 0004 4b48 jsr 44b48 <== NOT EXECUTED 43746: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 4374a: 508f addql #8,%sp <== NOT EXECUTED 4374c: 2540 0040 movel %d0,%a2@(64) <== NOT EXECUTED 43750: 2540 0044 movel %d0,%a2@(68) <== NOT EXECUTED } IMFS_FIFO_RETURN(err); } 43754: 2002 movel %d2,%d0 <== NOT EXECUTED 43756: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 4375a: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 4375e: 4e5e unlk %fp <== NOT EXECUTED 43760: 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); 43762: 4a80 tstl %d0 <== NOT EXECUTED 43764: 67ee beqs 43754 <== NOT EXECUTED 43766: 4eb9 0005 0ed8 jsr 50ed8 <__errno> <== NOT EXECUTED 4376c: 4482 negl %d2 <== NOT EXECUTED 4376e: 2040 moveal %d0,%a0 <== NOT EXECUTED 43770: 2082 movel %d2,%a0@ <== NOT EXECUTED 43772: 74ff moveq #-1,%d2 <== NOT EXECUTED } 43774: 2002 movel %d2,%d0 <== NOT EXECUTED 43776: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 4377a: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 4377e: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004aa10 : IMFS_jnode_t *IMFS_find_match_in_dir( IMFS_jnode_t *directory, char *name ) { 4aa10: 4e56 fff0 linkw %fp,#-16 4aa14: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ /* * Check for "." and ".." */ if ( !strcmp( name, dotname ) ) 4aa18: 4879 0005 d672 pea 5d672 4aa1e: 47f9 0004 f80c lea 4f80c ,%a3 IMFS_jnode_t *IMFS_find_match_in_dir( IMFS_jnode_t *directory, char *name ) { 4aa24: 242e 000c movel %fp@(12),%d2 /* * Check for "." and ".." */ if ( !strcmp( name, dotname ) ) 4aa28: 2f02 movel %d2,%sp@- IMFS_jnode_t *IMFS_find_match_in_dir( IMFS_jnode_t *directory, char *name ) { 4aa2a: 246e 0008 moveal %fp@(8),%a2 /* * Check for "." and ".." */ if ( !strcmp( name, dotname ) ) 4aa2e: 4e93 jsr %a3@ 4aa30: 508f addql #8,%sp 4aa32: 4a80 tstl %d0 4aa34: 6714 beqs 4aa4a <== NEVER TAKEN return directory; if ( !strcmp( name, dotdotname ) ) 4aa36: 4879 0005 d674 pea 5d674 4aa3c: 2f02 movel %d2,%sp@- 4aa3e: 4e93 jsr %a3@ 4aa40: 508f addql #8,%sp 4aa42: 4a80 tstl %d0 4aa44: 6610 bnes 4aa56 <== ALWAYS TAKEN return directory->Parent; 4aa46: 246a 0008 moveal %a2@(8),%a2 <== NOT EXECUTED if ( !strcmp( name, the_jnode->name ) ) return the_jnode; } return 0; } 4aa4a: 200a movel %a2,%d0 <== NOT EXECUTED 4aa4c: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED 4aa52: 4e5e unlk %fp <== NOT EXECUTED 4aa54: 4e75 rts <== NOT EXECUTED if ( !strcmp( name, dotdotname ) ) return directory->Parent; the_chain = &directory->info.directory.Entries; for ( the_node = the_chain->first; 4aa56: 286a 004c moveal %a2@(76),%a4 4aa5a: 45ea 0050 lea %a2@(80),%a2 4aa5e: b5cc cmpal %a4,%a2 4aa60: 6714 beqs 4aa76 !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 ) ) 4aa62: 486c 000c pea %a4@(12) 4aa66: 2f02 movel %d2,%sp@- 4aa68: 4e93 jsr %a3@ 4aa6a: 508f addql #8,%sp 4aa6c: 4a80 tstl %d0 4aa6e: 6714 beqs 4aa84 the_chain = &directory->info.directory.Entries; for ( the_node = the_chain->first; !rtems_chain_is_tail( the_chain, the_node ); the_node = the_node->next ) { 4aa70: 2854 moveal %a4@,%a4 if ( !strcmp( name, dotdotname ) ) return directory->Parent; the_chain = &directory->info.directory.Entries; for ( the_node = the_chain->first; 4aa72: b5cc cmpal %a4,%a2 4aa74: 66ec bnes 4aa62 if ( !strcmp( name, the_jnode->name ) ) return the_jnode; } return 0; 4aa76: 95ca subal %a2,%a2 } 4aa78: 200a movel %a2,%d0 4aa7a: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 4aa80: 4e5e unlk %fp 4aa82: 4e75 rts for ( the_node = the_chain->first; !rtems_chain_is_tail( the_chain, the_node ); the_node = the_node->next ) { the_jnode = (IMFS_jnode_t *) the_node; 4aa84: 244c moveal %a4,%a2 if ( !strcmp( name, the_jnode->name ) ) return the_jnode; } return 0; } 4aa86: 200a movel %a2,%d0 4aa88: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 4aa8e: 4e5e unlk %fp ... =============================================================================== 0004a964 : ((IMFS_jnode_t *)( rtems_chain_head( jnode_get_control( jnode ) )->next)) int IMFS_fsunmount( rtems_filesystem_mount_table_entry_t *temp_mt_entry ) { 4a964: 4e56 ffd8 linkw %fp,#-40 <== NOT EXECUTED 4a968: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4a96c: 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; 4a970: 47ee ffec lea %fp@(-20),%a3 <== NOT EXECUTED 4a974: 49f9 0004 a190 lea 4a190 ,%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 ); 4a97a: 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; 4a980: 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; 4a984: 2468 001c moveal %a0@(28),%a2 <== NOT EXECUTED loc = temp_mt_entry->mt_fs_root; 4a988: 2d68 0020 fff0 movel %a0@(32),%fp@(-16) <== NOT EXECUTED 4a98e: 2d68 0024 fff4 movel %a0@(36),%fp@(-12) <== NOT EXECUTED 4a994: 2d68 0028 fff8 movel %a0@(40),%fp@(-8) <== NOT EXECUTED 4a99a: 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; 4a9a0: 42a8 001c clrl %a0@(28) <== NOT EXECUTED do { next = jnode->Parent; 4a9a4: 242a 0008 movel %a2@(8),%d2 <== NOT EXECUTED loc.node_access = (void *)jnode; 4a9a8: 2d4a ffec movel %a2,%fp@(-20) <== NOT EXECUTED IMFS_Set_handlers( &loc ); 4a9ac: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4a9ae: 4e94 jsr %a4@ <== NOT EXECUTED if ( jnode->type != IMFS_DIRECTORY ) { 4a9b0: 588f addql #4,%sp <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail( Chain_Control *the_chain ) { return (Chain_Node *) &the_chain->permanent_null; 4a9b2: 200a movel %a2,%d0 <== NOT EXECUTED 4a9b4: 0680 0000 0050 addil #80,%d0 <== NOT EXECUTED 4a9ba: 7201 moveq #1,%d1 <== NOT EXECUTED 4a9bc: b2aa 0048 cmpl %a2@(72),%d1 <== NOT EXECUTED 4a9c0: 6634 bnes 4a9f6 <== NOT EXECUTED result = IMFS_unlink( NULL, &loc ); if (result != 0) return -1; jnode = next; } else if ( jnode_has_no_children( jnode ) ) { 4a9c2: b0aa 004c cmpl %a2@(76),%d0 <== NOT EXECUTED 4a9c6: 672e beqs 4a9f6 <== NOT EXECUTED result = IMFS_unlink( NULL, &loc ); if (result != 0) return -1; jnode = next; } if ( jnode != NULL ) { 4a9c8: 4a8a tstl %a2 <== NOT EXECUTED 4a9ca: 671e beqs 4a9ea <== NOT EXECUTED if ( jnode->type == IMFS_DIRECTORY ) { 4a9cc: 7001 moveq #1,%d0 <== NOT EXECUTED 4a9ce: b0aa 0048 cmpl %a2@(72),%d0 <== NOT EXECUTED 4a9d2: 66d0 bnes 4a9a4 <== NOT EXECUTED 4a9d4: 200a movel %a2,%d0 <== NOT EXECUTED 4a9d6: 0680 0000 0050 addil #80,%d0 <== NOT EXECUTED if ( jnode_has_children( jnode ) ) 4a9dc: b0aa 004c cmpl %a2@(76),%d0 <== NOT EXECUTED 4a9e0: 67c2 beqs 4a9a4 <== NOT EXECUTED jnode = jnode_get_first_child( jnode ); 4a9e2: 246a 004c moveal %a2@(76),%a2 <== NOT EXECUTED } } } while (jnode != NULL); 4a9e6: 4a8a tstl %a2 <== NOT EXECUTED 4a9e8: 66ba bnes 4a9a4 <== NOT EXECUTED return 0; 4a9ea: 4280 clrl %d0 <== NOT EXECUTED } 4a9ec: 4cee 3c04 ffd8 moveml %fp@(-40),%d2/%a2-%a5 <== NOT EXECUTED 4a9f2: 4e5e unlk %fp <== NOT EXECUTED 4a9f4: 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 ); 4a9f6: 2f0b movel %a3,%sp@- <== NOT EXECUTED if (result != 0) return -1; jnode = next; 4a9f8: 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 ); 4a9fa: 42a7 clrl %sp@- <== NOT EXECUTED 4a9fc: 4e95 jsr %a5@ <== NOT EXECUTED if (result != 0) 4a9fe: 508f addql #8,%sp <== NOT EXECUTED 4aa00: 4a80 tstl %d0 <== NOT EXECUTED 4aa02: 67c4 beqs 4a9c8 <== NOT EXECUTED return -1; 4aa04: 70ff moveq #-1,%d0 <== NOT EXECUTED } } } while (jnode != NULL); return 0; } 4aa06: 4cee 3c04 ffd8 moveml %fp@(-40),%d2/%a2-%a5 <== NOT EXECUTED 4aa0c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004aa94 : const char *path, int pathlen, char *token, int *token_len ) { 4aa94: 4e56 ffe4 linkw %fp,#-28 4aa98: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@ register char c; /* * Copy a name into token. (Remember NULL is a token.) */ c = path[i]; 4aa9c: 246e 0008 moveal %fp@(8),%a2 4aaa0: 49f9 0004 3c28 lea 43c28 ,%a4 int pathlen, char *token, int *token_len ) { register int i = 0; 4aaa6: 4282 clrl %d2 register char c; /* * Copy a name into token. (Remember NULL is a token.) */ c = path[i]; 4aaa8: 161a moveb %a2@+,%d3 const char *path, int pathlen, char *token, int *token_len ) { 4aaaa: 2a6e 0010 moveal %fp@(16),%a5 register char c; /* * Copy a name into token. (Remember NULL is a token.) */ c = path[i]; 4aaae: 264d moveal %a5,%a3 while ( (!IMFS_is_separator(c)) && (i < pathlen) && (i <= IMFS_NAME_MAX) ) { 4aab0: 1003 moveb %d3,%d0 const char *path, int pathlen, char *token, int *token_len ) { 4aab2: 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) ) { 4aab6: 49c0 extbl %d0 4aab8: 2f00 movel %d0,%sp@- 4aaba: 4e94 jsr %a4@ 4aabc: 588f addql #4,%sp 4aabe: 4a80 tstl %d0 4aac0: 6620 bnes 4aae2 4aac2: b882 cmpl %d2,%d4 4aac4: 6f1c bles 4aae2 <== NEVER TAKEN token[i] = c; if ( i == IMFS_NAME_MAX ) 4aac6: 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; 4aac8: 16c3 moveb %d3,%a3@+ if ( i == IMFS_NAME_MAX ) 4aaca: b082 cmpl %d2,%d0 4aacc: 6700 0082 beqw 4ab50 return IMFS_INVALID_TOKEN; if ( !IMFS_is_valid_name_char(c) ) type = IMFS_INVALID_TOKEN; c = path [++i]; 4aad0: 5282 addql #1,%d2 4aad2: 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) ) { 4aad4: 1003 moveb %d3,%d0 4aad6: 49c0 extbl %d0 4aad8: 2f00 movel %d0,%sp@- 4aada: 4e94 jsr %a4@ 4aadc: 588f addql #4,%sp 4aade: 4a80 tstl %d0 4aae0: 67e0 beqs 4aac2 /* * Copy a seperator into token. */ if ( i == 0 ) { 4aae2: 4a82 tstl %d2 4aae4: 6626 bnes 4ab0c token[i] = c; 4aae6: 1a83 moveb %d3,%a5@ if ( (token[i] != '\0') && pathlen ) { 4aae8: 6718 beqs 4ab02 4aaea: 4a84 tstl %d4 4aaec: 6714 beqs 4ab02 <== NEVER TAKEN /* * Set token_len to the number of characters copied. */ *token_len = i; 4aaee: 206e 0014 moveal %fp@(20),%a0 if ( i == 0 ) { token[i] = c; if ( (token[i] != '\0') && pathlen ) { i++; 4aaf2: 7401 moveq #1,%d2 type = IMFS_CURRENT_DIR; 4aaf4: 7001 moveq #1,%d0 /* * Set token_len to the number of characters copied. */ *token_len = i; 4aaf6: 2082 movel %d2,%a0@ else if ( strcmp( token, "." ) == 0 ) type = IMFS_CURRENT_DIR; } return type; } 4aaf8: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 4aafe: 4e5e unlk %fp 4ab00: 4e75 rts /* * Set token_len to the number of characters copied. */ *token_len = i; 4ab02: 206e 0014 moveal %fp@(20),%a0 if ( (token[i] != '\0') && pathlen ) { i++; type = IMFS_CURRENT_DIR; } else { type = IMFS_NO_MORE_PATH; 4ab06: 4280 clrl %d0 /* * Set token_len to the number of characters copied. */ *token_len = i; 4ab08: 2082 movel %d2,%a0@ 4ab0a: 60ec bras 4aaf8 i++; type = IMFS_CURRENT_DIR; } else { type = IMFS_NO_MORE_PATH; } } else if (token[ i-1 ] != '\0') { 4ab0c: 4a35 28ff tstb %a5@(ffffffff,%d2:l) 4ab10: 6706 beqs 4ab18 <== NEVER TAKEN token[i] = '\0'; 4ab12: 4200 clrb %d0 4ab14: 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 ) 4ab18: 4879 0005 d677 pea 5d677 4ab1e: 45f9 0004 f80c lea 4f80c ,%a2 /* * Set token_len to the number of characters copied. */ *token_len = i; 4ab24: 206e 0014 moveal %fp@(20),%a0 4ab28: 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 ) 4ab2a: 2f0d movel %a5,%sp@- 4ab2c: 4e92 jsr %a2@ 4ab2e: 508f addql #8,%sp 4ab30: 4a80 tstl %d0 4ab32: 6728 beqs 4ab5c <== NEVER TAKEN type = IMFS_UP_DIR; else if ( strcmp( token, "." ) == 0 ) 4ab34: 4879 0005 d678 pea 5d678 4ab3a: 2f0d movel %a5,%sp@- 4ab3c: 4e92 jsr %a2@ 4ab3e: 508f addql #8,%sp 4ab40: 4a80 tstl %d0 4ab42: 6724 beqs 4ab68 <== NEVER TAKEN 4ab44: 7003 moveq #3,%d0 type = IMFS_CURRENT_DIR; } return type; } 4ab46: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 4ab4c: 4e5e unlk %fp 4ab4e: 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; 4ab50: 7004 moveq #4,%d0 <== NOT EXECUTED else if ( strcmp( token, "." ) == 0 ) type = IMFS_CURRENT_DIR; } return type; } 4ab52: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 <== NOT EXECUTED 4ab58: 4e5e unlk %fp <== NOT EXECUTED 4ab5a: 4e75 rts <== NOT EXECUTED * it was a special name. */ if ( type == IMFS_NAME ) { if ( strcmp( token, "..") == 0 ) type = IMFS_UP_DIR; 4ab5c: 7002 moveq #2,%d0 <== NOT EXECUTED else if ( strcmp( token, "." ) == 0 ) type = IMFS_CURRENT_DIR; } return type; } 4ab5e: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 <== NOT EXECUTED 4ab64: 4e5e unlk %fp <== NOT EXECUTED 4ab66: 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; 4ab68: 7001 moveq #1,%d0 <== NOT EXECUTED } return type; } 4ab6a: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 <== NOT EXECUTED 4ab70: 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 e338 movel 5e338 ,%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 f334 movel %d1,5f334 /* * 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 a154 jsr 4a154 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 d642 lea 5d642 ,%a0 4218e: 43f9 0005 d646 lea 5d646 ,%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 d64a lea 5d64a ,%a0 421a0: 2551 003c movel %a1@,%a2@(60) 421a4: 43f9 0005 d64e lea 5d64e ,%a1 421aa: 2550 0040 movel %a0@,%a2@(64) 421ae: 41f9 0005 d652 lea 5d652 ,%a0 421b4: 2551 0044 movel %a1@,%a2@(68) 421b8: 43f9 0005 d656 lea 5d656 ,%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 d65a lea 5d65a ,%a0 421cc: 2551 004c movel %a1@,%a2@(76) 421d0: 43f9 0005 d65e lea 5d65e ,%a1 421d6: 2550 0050 movel %a0@,%a2@(80) 421da: 41f9 0005 d662 lea 5d662 ,%a0 421e0: 2551 0054 movel %a1@,%a2@(84) 421e4: 43f9 0005 d666 lea 5d666 ,%a1 421ea: 2550 0058 movel %a0@,%a2@(88) 421ee: 41f9 0005 d66a lea 5d66a ,%a0 421f4: 2551 005c movel %a1@,%a2@(92) 421f8: 43f9 0005 d66e lea 5d66e ,%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 f338 movel 5f338 ,%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 f338 movel %a1,5f338 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 e90c jsr 4e90c <__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 fd64 jsr 4fd64 <== 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 aa94 jsr 4aa94 <== 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 9f5e jsr 49f5e <== 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 e90c jsr 4e90c <__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 e90c jsr 4e90c <__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; } ... =============================================================================== 0004d288 : */ MEMFILE_STATIC int IMFS_memfile_addblock( IMFS_jnode_t *the_jnode, unsigned int block ) { 4d288: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4d28c: 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 ); 4d28e: 4878 0001 pea 1 <== NOT EXECUTED 4d292: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4d296: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4d29a: 4eb9 0004 ce5c jsr 4ce5c <== NOT EXECUTED if ( *block_entry_ptr ) 4d2a0: 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 ); 4d2a4: 2440 moveal %d0,%a2 <== NOT EXECUTED if ( *block_entry_ptr ) 4d2a6: 4a92 tstl %a2@ <== NOT EXECUTED 4d2a8: 670a beqs 4d2b4 <== NOT EXECUTED if ( !memory ) return 1; *block_entry_ptr = memory; return 0; } 4d2aa: 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; 4d2ae: 4280 clrl %d0 <== NOT EXECUTED if ( !memory ) return 1; *block_entry_ptr = memory; return 0; } 4d2b0: 4e5e unlk %fp <== NOT EXECUTED 4d2b2: 4e75 rts <== NOT EXECUTED return 0; /* * There is no memory for this block number so allocate it. */ memory = memfile_alloc_block(); 4d2b4: 4eb9 0004 ce38 jsr 4ce38 <== NOT EXECUTED if ( !memory ) 4d2ba: 4a80 tstl %d0 <== NOT EXECUTED 4d2bc: 670c beqs 4d2ca <== NOT EXECUTED return 1; *block_entry_ptr = memory; 4d2be: 2480 movel %d0,%a2@ <== NOT EXECUTED return 0; } 4d2c0: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED memory = memfile_alloc_block(); if ( !memory ) return 1; *block_entry_ptr = memory; return 0; 4d2c4: 4280 clrl %d0 <== NOT EXECUTED } 4d2c6: 4e5e unlk %fp <== NOT EXECUTED 4d2c8: 4e75 rts <== NOT EXECUTED 4d2ca: 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; 4d2ce: 7001 moveq #1,%d0 <== NOT EXECUTED *block_entry_ptr = memory; return 0; } 4d2d0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004d476 : IMFS_assert( the_jnode->type == IMFS_MEMORY_FILE ); /* * Verify new file size is supported */ if ( new_length >= IMFS_MEMFILE_MAXIMUM_SIZE ) 4d476: 4280 clrl %d0 <== NOT EXECUTED */ MEMFILE_STATIC int IMFS_memfile_extend( IMFS_jnode_t *the_jnode, off_t new_length ) { 4d478: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED 4d47c: 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 ) 4d480: 2c39 0005 f334 movel 5f334 ,%d6<== NOT EXECUTED 4d486: 2406 movel %d6,%d2 <== NOT EXECUTED 4d488: e48a lsrl #2,%d2 <== NOT EXECUTED 4d48a: 2802 movel %d2,%d4 <== NOT EXECUTED 4d48c: 5284 addql #1,%d4 <== NOT EXECUTED 4d48e: 4c02 4800 mulsl %d2,%d4 <== NOT EXECUTED */ MEMFILE_STATIC int IMFS_memfile_extend( IMFS_jnode_t *the_jnode, off_t new_length ) { 4d492: 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 ) 4d496: 5284 addql #1,%d4 <== NOT EXECUTED 4d498: 4c02 4800 mulsl %d2,%d4 <== NOT EXECUTED */ MEMFILE_STATIC int IMFS_memfile_extend( IMFS_jnode_t *the_jnode, off_t new_length ) { 4d49c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4d4a0: 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 ) 4d4a4: 5384 subql #1,%d4 <== NOT EXECUTED 4d4a6: 4c06 4800 mulsl %d6,%d4 <== NOT EXECUTED 4d4aa: 2204 movel %d4,%d1 <== NOT EXECUTED 4d4ac: 2800 movel %d0,%d4 <== NOT EXECUTED 4d4ae: 2a01 movel %d1,%d5 <== NOT EXECUTED 4d4b0: 9a83 subl %d3,%d5 <== NOT EXECUTED 4d4b2: 9982 subxl %d2,%d4 <== NOT EXECUTED 4d4b4: 6f00 00ae blew 4d564 <== 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 ) 4d4b8: 282a 004c movel %a2@(76),%d4 <== NOT EXECUTED 4d4bc: 2a2a 0050 movel %a2@(80),%d5 <== NOT EXECUTED 4d4c0: 2002 movel %d2,%d0 <== NOT EXECUTED 4d4c2: 2203 movel %d3,%d1 <== NOT EXECUTED 4d4c4: 9285 subl %d5,%d1 <== NOT EXECUTED 4d4c6: 9184 subxl %d4,%d0 <== NOT EXECUTED 4d4c8: 6f5e bles 4d528 <== NOT EXECUTED return 0; /* * Calculate the number of range of blocks to allocate */ new_blocks = new_length / IMFS_MEMFILE_BYTES_PER_BLOCK; 4d4ca: 49f9 0005 a7a4 lea 5a7a4 <__divdi3>,%a4 <== NOT EXECUTED 4d4d0: 2e06 movel %d6,%d7 <== NOT EXECUTED 4d4d2: 5bc6 smi %d6 <== NOT EXECUTED 4d4d4: 49c6 extbl %d6 <== NOT EXECUTED 4d4d6: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4d4d8: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4d4da: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4d4dc: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d4de: 4e94 jsr %a4@ <== NOT EXECUTED 4d4e0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4d4e4: 2641 moveal %d1,%a3 <== NOT EXECUTED old_blocks = the_jnode->info.file.size / IMFS_MEMFILE_BYTES_PER_BLOCK; 4d4e6: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4d4e8: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4d4ea: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4d4ec: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d4ee: 4e94 jsr %a4@ <== NOT EXECUTED 4d4f0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4d4f4: 2c01 movel %d1,%d6 <== NOT EXECUTED /* * Now allocate each of those blocks. */ for ( block=old_blocks ; block<=new_blocks ; block++ ) { 4d4f6: b28b cmpl %a3,%d1 <== NOT EXECUTED 4d4f8: 621a bhis 4d514 <== NOT EXECUTED 4d4fa: 2801 movel %d1,%d4 <== NOT EXECUTED 4d4fc: 49f9 0004 d288 lea 4d288 ,%a4 <== NOT EXECUTED if ( IMFS_memfile_addblock( the_jnode, block ) ) { 4d502: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d504: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d506: 4e94 jsr %a4@ <== NOT EXECUTED 4d508: 508f addql #8,%sp <== NOT EXECUTED 4d50a: 4a80 tstl %d0 <== NOT EXECUTED 4d50c: 6626 bnes 4d534 <== 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++ ) { 4d50e: 5284 addql #1,%d4 <== NOT EXECUTED 4d510: b88b cmpl %a3,%d4 <== NOT EXECUTED 4d512: 63ee blss 4d502 <== NOT EXECUTED /* * Set the new length of the file. */ the_jnode->info.file.size = new_length; return 0; 4d514: 4280 clrl %d0 <== NOT EXECUTED } /* * Set the new length of the file. */ the_jnode->info.file.size = new_length; 4d516: 2542 004c movel %d2,%a2@(76) <== NOT EXECUTED 4d51a: 2543 0050 movel %d3,%a2@(80) <== NOT EXECUTED return 0; } 4d51e: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4 <== NOT EXECUTED 4d524: 4e5e unlk %fp <== NOT EXECUTED 4d526: 4e75 rts <== NOT EXECUTED /* * Verify new file size is actually larger than current size */ if ( new_length <= the_jnode->info.file.size ) return 0; 4d528: 4280 clrl %d0 <== NOT EXECUTED /* * Set the new length of the file. */ the_jnode->info.file.size = new_length; return 0; } 4d52a: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4 <== NOT EXECUTED 4d530: 4e5e unlk %fp <== NOT EXECUTED 4d532: 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-- ) { 4d534: b886 cmpl %d6,%d4 <== NOT EXECUTED 4d536: 6514 bcss 4d54c <== NOT EXECUTED 4d538: 47f9 0004 d44e lea 4d44e ,%a3 <== NOT EXECUTED IMFS_memfile_remove_block( the_jnode, block ); 4d53e: 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-- ) { 4d540: 5384 subql #1,%d4 <== NOT EXECUTED IMFS_memfile_remove_block( the_jnode, block ); 4d542: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d544: 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-- ) { 4d546: 508f addql #8,%sp <== NOT EXECUTED 4d548: b886 cmpl %d6,%d4 <== NOT EXECUTED 4d54a: 64f2 bccs 4d53e <== NOT EXECUTED IMFS_memfile_remove_block( the_jnode, block ); } rtems_set_errno_and_return_minus_one( ENOSPC ); 4d54c: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 4d552: 721c moveq #28,%d1 <== NOT EXECUTED 4d554: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d556: 70ff moveq #-1,%d0 <== NOT EXECUTED /* * Set the new length of the file. */ the_jnode->info.file.size = new_length; return 0; } 4d558: 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 ); 4d55e: 2081 movel %d1,%a0@ <== NOT EXECUTED /* * Set the new length of the file. */ the_jnode->info.file.size = new_length; return 0; } 4d560: 4e5e unlk %fp <== NOT EXECUTED 4d562: 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 ); 4d564: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 4d56a: 7416 moveq #22,%d2 <== NOT EXECUTED 4d56c: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d56e: 70ff moveq #-1,%d0 <== NOT EXECUTED 4d570: 2082 movel %d2,%a0@ <== NOT EXECUTED /* * Set the new length of the file. */ the_jnode->info.file.size = new_length; return 0; } 4d572: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4 <== NOT EXECUTED 4d578: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004ce5c : #endif IMFS_jnode_t *the_jnode, unsigned int block, int malloc_it ) { 4ce5c: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED my_block = block; /* * Is the block number in the simple indirect portion? */ if ( my_block <= LAST_INDIRECT ) { 4ce60: 2239 0005 f334 movel 5f334 ,%d1<== NOT EXECUTED 4ce66: e489 lsrl #2,%d1 <== NOT EXECUTED 4ce68: 2001 movel %d1,%d0 <== NOT EXECUTED 4ce6a: 5380 subql #1,%d0 <== NOT EXECUTED #endif IMFS_jnode_t *the_jnode, unsigned int block, int malloc_it ) { 4ce6c: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED 4ce70: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4ce74: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4ce78: 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 ) { 4ce7c: b082 cmpl %d2,%d0 <== NOT EXECUTED 4ce7e: 651e bcss 4ce9e <== NOT EXECUTED p = info->indirect; 4ce80: 226a 0054 moveal %a2@(84),%a1 <== NOT EXECUTED if ( malloc_it ) { 4ce84: 4a88 tstl %a0 <== NOT EXECUTED 4ce86: 675a beqs 4cee2 <== NOT EXECUTED if ( !p ) { 4ce88: 4a89 tstl %a1 <== NOT EXECUTED 4ce8a: 6700 00c0 beqw 4cf4c <== NOT EXECUTED } if ( !p ) return 0; return &info->indirect[ my_block ]; 4ce8e: 43f1 2c00 lea %a1@(00000000,%d2:l:4),%a1 <== NOT EXECUTED 4ce92: 2009 movel %a1,%d0 <== NOT EXECUTED /* * This means the requested block number is out of range. */ return 0; } 4ce94: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 4ce9a: 4e5e unlk %fp <== NOT EXECUTED 4ce9c: 4e75 rts <== NOT EXECUTED /* * Is the block number in the doubly indirect portion? */ if ( my_block <= LAST_DOUBLY_INDIRECT ) { 4ce9e: 2001 movel %d1,%d0 <== NOT EXECUTED 4cea0: 5280 addql #1,%d0 <== NOT EXECUTED 4cea2: 4c01 0800 mulsl %d1,%d0 <== NOT EXECUTED 4cea6: 2240 moveal %d0,%a1 <== NOT EXECUTED 4cea8: 5389 subql #1,%a1 <== NOT EXECUTED 4ceaa: b3c2 cmpal %d2,%a1 <== NOT EXECUTED 4ceac: 6544 bcss 4cef2 <== NOT EXECUTED my_block -= FIRST_DOUBLY_INDIRECT; 4ceae: 9481 subl %d1,%d2 <== NOT EXECUTED singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS; doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS; p = info->doubly_indirect; 4ceb0: 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; 4ceb4: 4c41 2003 remul %d1,%d3,%d2 <== NOT EXECUTED 4ceb8: 4c41 2002 remul %d1,%d2,%d2 <== NOT EXECUTED doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS; p = info->doubly_indirect; if ( malloc_it ) { 4cebc: 4a88 tstl %a0 <== NOT EXECUTED 4cebe: 6700 0104 beqw 4cfc4 <== NOT EXECUTED if ( !p ) { 4cec2: 4a89 tstl %a1 <== NOT EXECUTED 4cec4: 6700 00a0 beqw 4cf66 <== NOT EXECUTED if ( !p ) return 0; info->doubly_indirect = p; } p1 = (block_p *)p[ doubly ]; 4cec8: 45f1 2c00 lea %a1@(00000000,%d2:l:4),%a2 <== NOT EXECUTED 4cecc: 2052 moveal %a2@,%a0 <== NOT EXECUTED if ( !p1 ) { 4cece: 4a88 tstl %a0 <== NOT EXECUTED 4ced0: 6764 beqs 4cf36 <== NOT EXECUTED p2 = (block_p *)p1[ doubly ]; if ( !p2 ) return 0; return (block_p *)&p2[ singly ]; 4ced2: 41f0 3c00 lea %a0@(00000000,%d3:l:4),%a0 <== NOT EXECUTED 4ced6: 2008 movel %a0,%d0 <== NOT EXECUTED /* * This means the requested block number is out of range. */ return 0; } 4ced8: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 4cede: 4e5e unlk %fp <== NOT EXECUTED 4cee0: 4e75 rts <== NOT EXECUTED info->indirect = p; } return &info->indirect[ my_block ]; } if ( !p ) 4cee2: 4a89 tstl %a1 <== NOT EXECUTED 4cee4: 66a8 bnes 4ce8e <== NOT EXECUTED if ( !p1 ) return 0; p2 = (block_p *)p1[ doubly ]; if ( !p2 ) return 0; 4cee6: 4280 clrl %d0 <== NOT EXECUTED /* * This means the requested block number is out of range. */ return 0; } 4cee8: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 4ceee: 4e5e unlk %fp <== NOT EXECUTED 4cef0: 4e75 rts <== NOT EXECUTED } /* * Is the block number in the triply indirect portion? */ if ( my_block <= LAST_TRIPLY_INDIRECT ) { 4cef2: 2600 movel %d0,%d3 <== NOT EXECUTED 4cef4: 5283 addql #1,%d3 <== NOT EXECUTED 4cef6: 4c01 3800 mulsl %d1,%d3 <== NOT EXECUTED 4cefa: 5383 subql #1,%d3 <== NOT EXECUTED 4cefc: b682 cmpl %d2,%d3 <== NOT EXECUTED 4cefe: 65e6 bcss 4cee6 <== NOT EXECUTED my_block -= FIRST_TRIPLY_INDIRECT; 4cf00: 9480 subl %d0,%d2 <== NOT EXECUTED singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS; 4cf02: 4c41 2003 remul %d1,%d3,%d2 <== NOT EXECUTED 4cf06: 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; 4cf0a: 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; 4cf0e: 4c41 2004 remul %d1,%d4,%d2 <== NOT EXECUTED 4cf12: 4c41 2002 remul %d1,%d2,%d2 <== NOT EXECUTED doubly %= IMFS_MEMFILE_BLOCK_SLOTS; p = info->triply_indirect; if ( malloc_it ) { 4cf16: 4a88 tstl %a0 <== NOT EXECUTED 4cf18: 6700 00c4 beqw 4cfde <== NOT EXECUTED if ( !p ) { 4cf1c: 4a89 tstl %a1 <== NOT EXECUTED 4cf1e: 6700 0084 beqw 4cfa4 <== NOT EXECUTED if ( !p ) return 0; info->triply_indirect = p; } p1 = (block_p *) p[ triply ]; 4cf22: 45f1 2c00 lea %a1@(00000000,%d2:l:4),%a2 <== NOT EXECUTED 4cf26: 2052 moveal %a2@,%a0 <== NOT EXECUTED if ( !p1 ) { 4cf28: 4a88 tstl %a0 <== NOT EXECUTED 4cf2a: 675a beqs 4cf86 <== NOT EXECUTED if ( !p1 ) return 0; p[ triply ] = (block_p) p1; } p2 = (block_p *)p1[ doubly ]; 4cf2c: 45f0 4c00 lea %a0@(00000000,%d4:l:4),%a2 <== NOT EXECUTED 4cf30: 2052 moveal %a2@,%a0 <== NOT EXECUTED if ( !p2 ) { 4cf32: 4a88 tstl %a0 <== NOT EXECUTED 4cf34: 669c bnes 4ced2 <== NOT EXECUTED p2 = memfile_alloc_block(); 4cf36: 4eb9 0004 ce38 jsr 4ce38 <== NOT EXECUTED 4cf3c: 2040 moveal %d0,%a0 <== NOT EXECUTED if ( !p2 ) 4cf3e: 4a80 tstl %d0 <== NOT EXECUTED 4cf40: 67a4 beqs 4cee6 <== NOT EXECUTED return 0; p1[ doubly ] = (block_p) p2; 4cf42: 2480 movel %d0,%a2@ <== NOT EXECUTED p2 = (block_p *)p1[ doubly ]; if ( !p2 ) return 0; return (block_p *)&p2[ singly ]; 4cf44: 41f0 3c00 lea %a0@(00000000,%d3:l:4),%a0 <== NOT EXECUTED 4cf48: 2008 movel %a0,%d0 <== NOT EXECUTED 4cf4a: 608c bras 4ced8 <== NOT EXECUTED p = info->indirect; if ( malloc_it ) { if ( !p ) { p = memfile_alloc_block(); 4cf4c: 4eb9 0004 ce38 jsr 4ce38 <== NOT EXECUTED 4cf52: 2240 moveal %d0,%a1 <== NOT EXECUTED if ( !p ) 4cf54: 4a80 tstl %d0 <== NOT EXECUTED 4cf56: 678e beqs 4cee6 <== NOT EXECUTED return 0; info->indirect = p; 4cf58: 2540 0054 movel %d0,%a2@(84) <== NOT EXECUTED } if ( !p ) return 0; return &info->indirect[ my_block ]; 4cf5c: 43f1 2c00 lea %a1@(00000000,%d2:l:4),%a1 <== NOT EXECUTED 4cf60: 2009 movel %a1,%d0 <== NOT EXECUTED 4cf62: 6000 ff30 braw 4ce94 <== NOT EXECUTED p = info->doubly_indirect; if ( malloc_it ) { if ( !p ) { p = memfile_alloc_block(); 4cf66: 4eb9 0004 ce38 jsr 4ce38 <== NOT EXECUTED 4cf6c: 2240 moveal %d0,%a1 <== NOT EXECUTED if ( !p ) 4cf6e: 4a80 tstl %d0 <== NOT EXECUTED 4cf70: 6700 ff74 beqw 4cee6 <== NOT EXECUTED return 0; info->doubly_indirect = p; 4cf74: 2540 0058 movel %d0,%a2@(88) <== NOT EXECUTED } p1 = (block_p *)p[ doubly ]; 4cf78: 45f1 2c00 lea %a1@(00000000,%d2:l:4),%a2 <== NOT EXECUTED 4cf7c: 2052 moveal %a2@,%a0 <== NOT EXECUTED if ( !p1 ) { 4cf7e: 4a88 tstl %a0 <== NOT EXECUTED 4cf80: 6600 ff50 bnew 4ced2 <== NOT EXECUTED 4cf84: 60b0 bras 4cf36 <== NOT EXECUTED info->triply_indirect = p; } p1 = (block_p *) p[ triply ]; if ( !p1 ) { p1 = memfile_alloc_block(); 4cf86: 4eb9 0004 ce38 jsr 4ce38 <== NOT EXECUTED 4cf8c: 2040 moveal %d0,%a0 <== NOT EXECUTED if ( !p1 ) 4cf8e: 4a80 tstl %d0 <== NOT EXECUTED 4cf90: 6700 ff54 beqw 4cee6 <== NOT EXECUTED return 0; p[ triply ] = (block_p) p1; 4cf94: 2480 movel %d0,%a2@ <== NOT EXECUTED } p2 = (block_p *)p1[ doubly ]; 4cf96: 45f0 4c00 lea %a0@(00000000,%d4:l:4),%a2 <== NOT EXECUTED 4cf9a: 2052 moveal %a2@,%a0 <== NOT EXECUTED if ( !p2 ) { 4cf9c: 4a88 tstl %a0 <== NOT EXECUTED 4cf9e: 6600 ff32 bnew 4ced2 <== NOT EXECUTED 4cfa2: 6092 bras 4cf36 <== NOT EXECUTED p = info->triply_indirect; if ( malloc_it ) { if ( !p ) { p = memfile_alloc_block(); 4cfa4: 4eb9 0004 ce38 jsr 4ce38 <== NOT EXECUTED 4cfaa: 2240 moveal %d0,%a1 <== NOT EXECUTED if ( !p ) 4cfac: 4a80 tstl %d0 <== NOT EXECUTED 4cfae: 6700 ff36 beqw 4cee6 <== NOT EXECUTED return 0; info->triply_indirect = p; 4cfb2: 2540 005c movel %d0,%a2@(92) <== NOT EXECUTED } p1 = (block_p *) p[ triply ]; 4cfb6: 45f1 2c00 lea %a1@(00000000,%d2:l:4),%a2 <== NOT EXECUTED 4cfba: 2052 moveal %a2@,%a0 <== NOT EXECUTED if ( !p1 ) { 4cfbc: 4a88 tstl %a0 <== NOT EXECUTED 4cfbe: 6600 ff6c bnew 4cf2c <== NOT EXECUTED 4cfc2: 60c2 bras 4cf86 <== NOT EXECUTED } return (block_p *)&p1[ singly ]; } if ( !p ) 4cfc4: 4a89 tstl %a1 <== NOT EXECUTED 4cfc6: 6700 ff1e beqw 4cee6 <== NOT EXECUTED return 0; p = (block_p *)p[ doubly ]; 4cfca: 2071 2c00 moveal %a1@(00000000,%d2:l:4),%a0 <== NOT EXECUTED if ( !p ) 4cfce: 4a88 tstl %a0 <== NOT EXECUTED 4cfd0: 6700 ff14 beqw 4cee6 <== NOT EXECUTED p2 = (block_p *)p1[ doubly ]; if ( !p2 ) return 0; return (block_p *)&p2[ singly ]; 4cfd4: 41f0 3c00 lea %a0@(00000000,%d3:l:4),%a0 <== NOT EXECUTED 4cfd8: 2008 movel %a0,%d0 <== NOT EXECUTED 4cfda: 6000 fefc braw 4ced8 <== NOT EXECUTED p1[ doubly ] = (block_p) p2; } return (block_p *)&p2[ singly ]; } if ( !p ) 4cfde: 4a89 tstl %a1 <== NOT EXECUTED 4cfe0: 6700 ff04 beqw 4cee6 <== NOT EXECUTED return 0; p1 = (block_p *) p[ triply ]; 4cfe4: 2071 2c00 moveal %a1@(00000000,%d2:l:4),%a0 <== NOT EXECUTED if ( !p1 ) 4cfe8: 4a88 tstl %a0 <== NOT EXECUTED 4cfea: 6700 fefa beqw 4cee6 <== NOT EXECUTED return 0; p2 = (block_p *)p1[ doubly ]; 4cfee: 2070 4c00 moveal %a0@(00000000,%d4:l:4),%a0 <== NOT EXECUTED if ( !p2 ) 4cff2: 4a88 tstl %a0 <== NOT EXECUTED 4cff4: 6700 fef0 beqw 4cee6 <== NOT EXECUTED return 0; return (block_p *)&p2[ singly ]; 4cff8: 41f0 3c00 lea %a0@(00000000,%d3:l:4),%a0 <== NOT EXECUTED 4cffc: 2008 movel %a0,%d0 <== NOT EXECUTED 4cffe: 6000 fed8 braw 4ced8 <== 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 5614 movel 65614 ,%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 =============================================================================== 0004d002 : IMFS_jnode_t *the_jnode, off_t start, unsigned char *destination, unsigned int length ) { 4d002: 4e56 ffc8 linkw %fp,#-56 <== NOT EXECUTED 4d006: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED 4d00a: 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) { 4d00e: 7806 moveq #6,%d4 <== NOT EXECUTED IMFS_jnode_t *the_jnode, off_t start, unsigned char *destination, unsigned int length ) { 4d010: 266e 0014 moveal %fp@(20),%a3 <== NOT EXECUTED 4d014: 2a6e 0018 moveal %fp@(24),%a5 <== NOT EXECUTED 4d018: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4d01c: 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) { 4d020: b8aa 0048 cmpl %a2@(72),%d4 <== NOT EXECUTED 4d024: 6700 017c beqw 4d1a2 <== 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; 4d028: 43f5 3800 lea %a5@(00000000,%d3:l),%a1 <== NOT EXECUTED if ( last_byte > the_jnode->info.file.size ) 4d02c: 4280 clrl %d0 <== NOT EXECUTED 4d02e: 2209 movel %a1,%d1 <== NOT EXECUTED 4d030: 282a 004c movel %a2@(76),%d4 <== NOT EXECUTED 4d034: 2a2a 0050 movel %a2@(80),%d5 <== NOT EXECUTED 4d038: 2c00 movel %d0,%d6 <== NOT EXECUTED 4d03a: 2e01 movel %d1,%d7 <== NOT EXECUTED 4d03c: 9e85 subl %d5,%d7 <== NOT EXECUTED 4d03e: 9d84 subxl %d4,%d6 <== NOT EXECUTED 4d040: 6f00 0110 blew 4d152 <== NOT EXECUTED */ /* * Phase 1: possibly the last part of one block */ start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK; 4d044: 2c39 0005 f334 movel 5f334 ,%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; 4d04a: 2e05 movel %d5,%d7 <== NOT EXECUTED 4d04c: 9e83 subl %d3,%d7 <== NOT EXECUTED */ /* * Phase 1: possibly the last part of one block */ start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK; 4d04e: 2a06 movel %d6,%d5 <== NOT EXECUTED 4d050: 5bc4 smi %d4 <== NOT EXECUTED 4d052: 49c4 extbl %d4 <== NOT EXECUTED 4d054: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4d056: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d058: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4d05a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d05c: 4eb9 0005 ab58 jsr 5ab58 <__moddi3> <== NOT EXECUTED 4d062: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4d066: 2841 moveal %d1,%a4 <== NOT EXECUTED block = start / IMFS_MEMFILE_BYTES_PER_BLOCK; 4d068: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4d06a: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d06c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4d06e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d070: 4eb9 0005 a7a4 jsr 5a7a4 <__divdi3> <== NOT EXECUTED 4d076: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4d07a: 2401 movel %d1,%d2 <== NOT EXECUTED if ( start_offset ) { 4d07c: 4a8c tstl %a4 <== NOT EXECUTED 4d07e: 6700 010e beqw 4d18e <== 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 ); 4d082: 42a7 clrl %sp@- <== NOT EXECUTED 4d084: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4d086: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d088: 4eb9 0004 ce5c jsr 4ce5c <== NOT EXECUTED if ( !block_ptr ) 4d08e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d092: 4a80 tstl %d0 <== NOT EXECUTED 4d094: 6700 01c0 beqw 4d256 <== 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; 4d098: 9c8c subl %a4,%d6 <== NOT EXECUTED 4d09a: 2207 movel %d7,%d1 <== NOT EXECUTED 4d09c: bc87 cmpl %d7,%d6 <== NOT EXECUTED 4d09e: 6500 0162 bcsw 4d202 <== 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 ); 4d0a2: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4d0a4: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d0a6: d9d0 addal %a0@,%a4 <== NOT EXECUTED dest += to_copy; 4d0a8: 280b movel %a3,%d4 <== NOT EXECUTED 4d0aa: d881 addl %d1,%d4 <== NOT EXECUTED block++; my_length -= to_copy; 4d0ac: 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++; 4d0ae: 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 ); 4d0b0: 2f0c movel %a4,%sp@- <== NOT EXECUTED dest += to_copy; block++; my_length -= to_copy; copied += to_copy; 4d0b2: 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 ); 4d0b4: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4d0b6: 4eb9 0004 f1b8 jsr 4f1b8 <== NOT EXECUTED dest += to_copy; block++; my_length -= to_copy; 4d0bc: 2c39 0005 f334 movel 5f334 ,%d6<== NOT EXECUTED 4d0c2: 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 ) { 4d0c6: bc87 cmpl %d7,%d6 <== NOT EXECUTED 4d0c8: 623c bhis 4d106 <== NOT EXECUTED 4d0ca: 47f9 0004 ce5c lea 4ce5c ,%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 ); 4d0d0: 4bf9 0004 f1b8 lea 4f1b8 ,%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 ); 4d0d6: 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; 4d0d8: 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 ); 4d0da: 2f02 movel %d2,%sp@- <== NOT EXECUTED if ( !block_ptr ) return copied; memcpy( dest, &(*block_ptr)[ 0 ], to_copy ); dest += to_copy; block++; 4d0dc: 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 ); 4d0de: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d0e0: 4e93 jsr %a3@ <== NOT EXECUTED if ( !block_ptr ) 4d0e2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d0e6: 4a80 tstl %d0 <== NOT EXECUTED 4d0e8: 6700 00ac beqw 4d196 <== NOT EXECUTED return copied; memcpy( dest, &(*block_ptr)[ 0 ], to_copy ); 4d0ec: 2040 moveal %d0,%a0 <== NOT EXECUTED dest += to_copy; block++; my_length -= to_copy; copied += to_copy; 4d0ee: 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 ); 4d0f0: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4d0f2: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4d0f4: 2f04 movel %d4,%sp@- <== NOT EXECUTED dest += to_copy; 4d0f6: 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 ); 4d0f8: 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 ) { 4d0fa: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d0fe: beb9 0005 f334 cmpl 5f334 ,%d7<== NOT EXECUTED 4d104: 64d0 bccs 4d0d6 <== NOT EXECUTED /* * Phase 3: possibly the first part of one block */ IMFS_assert( my_length < IMFS_MEMFILE_BYTES_PER_BLOCK ); if ( my_length ) { 4d106: 4a87 tstl %d7 <== NOT EXECUTED 4d108: 6728 beqs 4d132 <== NOT EXECUTED block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 ); 4d10a: 42a7 clrl %sp@- <== NOT EXECUTED 4d10c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d10e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d110: 4eb9 0004 ce5c jsr 4ce5c <== NOT EXECUTED if ( !block_ptr ) 4d116: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d11a: 4a80 tstl %d0 <== NOT EXECUTED 4d11c: 6778 beqs 4d196 <== NOT EXECUTED return copied; memcpy( dest, &(*block_ptr)[ 0 ], my_length ); 4d11e: 2040 moveal %d0,%a0 <== NOT EXECUTED copied += my_length; 4d120: 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 ); 4d122: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4d124: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4d126: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d128: 4eb9 0004 f1b8 jsr 4f1b8 <== NOT EXECUTED copied += my_length; 4d12e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED } IMFS_update_atime( the_jnode ); 4d132: 42a7 clrl %sp@- <== NOT EXECUTED 4d134: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4d138: 4eb9 0004 2d8c jsr 42d8c <== NOT EXECUTED 4d13e: 256e fff8 003c movel %fp@(-8),%a2@(60) <== NOT EXECUTED return copied; 4d144: 200c movel %a4,%d0 <== NOT EXECUTED 4d146: 508f addql #8,%sp <== NOT EXECUTED } 4d148: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4d14e: 4e5e unlk %fp <== NOT EXECUTED 4d150: 4e75 rts <== NOT EXECUTED */ /* * Phase 1: possibly the last part of one block */ start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK; 4d152: 2c39 0005 f334 movel 5f334 ,%d6<== NOT EXECUTED /* * Linear files (as created from a tar file are easier to handle * than block files). */ my_length = length; 4d158: 2e0d movel %a5,%d7 <== NOT EXECUTED */ /* * Phase 1: possibly the last part of one block */ start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK; 4d15a: 2a06 movel %d6,%d5 <== NOT EXECUTED 4d15c: 5bc4 smi %d4 <== NOT EXECUTED 4d15e: 49c4 extbl %d4 <== NOT EXECUTED 4d160: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4d162: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d164: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4d166: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d168: 4eb9 0005 ab58 jsr 5ab58 <__moddi3> <== NOT EXECUTED 4d16e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4d172: 2841 moveal %d1,%a4 <== NOT EXECUTED block = start / IMFS_MEMFILE_BYTES_PER_BLOCK; 4d174: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4d176: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d178: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4d17a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d17c: 4eb9 0005 a7a4 jsr 5a7a4 <__divdi3> <== NOT EXECUTED 4d182: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4d186: 2401 movel %d1,%d2 <== NOT EXECUTED if ( start_offset ) { 4d188: 4a8c tstl %a4 <== NOT EXECUTED 4d18a: 6600 fef6 bnew 4d082 <== NOT EXECUTED unsigned int last_byte; unsigned int copied; unsigned int start_offset; unsigned char *dest; dest = destination; 4d18e: 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; 4d190: 99cc subal %a4,%a4 <== NOT EXECUTED 4d192: 6000 ff32 braw 4d0c6 <== 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; 4d196: 200c movel %a4,%d0 <== NOT EXECUTED } IMFS_update_atime( the_jnode ); return copied; } 4d198: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4d19e: 4e5e unlk %fp <== NOT EXECUTED 4d1a0: 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)) 4d1a2: 91c8 subal %a0,%a0 <== NOT EXECUTED 4d1a4: 202a 004c movel %a2@(76),%d0 <== NOT EXECUTED 4d1a8: 222a 0050 movel %a2@(80),%d1 <== NOT EXECUTED 4d1ac: 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; 4d1b0: 286a 0054 moveal %a2@(84),%a4 <== NOT EXECUTED if (my_length > (the_jnode->info.linearfile.size - start)) 4d1b4: 2800 movel %d0,%d4 <== NOT EXECUTED 4d1b6: 2a01 movel %d1,%d5 <== NOT EXECUTED 4d1b8: 2d48 fff0 movel %a0,%fp@(-16) <== NOT EXECUTED 4d1bc: 9a83 subl %d3,%d5 <== NOT EXECUTED 4d1be: 9982 subxl %d2,%d4 <== NOT EXECUTED 4d1c0: 2c2e fff0 movel %fp@(-16),%d6 <== NOT EXECUTED 4d1c4: 2e2e fff4 movel %fp@(-12),%d7 <== NOT EXECUTED 4d1c8: 9e85 subl %d5,%d7 <== NOT EXECUTED 4d1ca: 9d84 subxl %d4,%d6 <== NOT EXECUTED 4d1cc: 6f5e bles 4d22c <== NOT EXECUTED my_length = the_jnode->info.linearfile.size - start; 4d1ce: 2e01 movel %d1,%d7 <== NOT EXECUTED 4d1d0: 9e83 subl %d3,%d7 <== NOT EXECUTED memcpy(dest, &file_ptr[start], my_length); 4d1d2: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4d1d4: 4874 3800 pea %a4@(00000000,%d3:l) <== NOT EXECUTED 4d1d8: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4d1da: 4eb9 0004 f1b8 jsr 4f1b8 <== NOT EXECUTED IMFS_update_atime( the_jnode ); 4d1e0: 42a7 clrl %sp@- <== NOT EXECUTED 4d1e2: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4d1e6: 4eb9 0004 2d8c jsr 42d8c <== NOT EXECUTED 4d1ec: 256e fff8 003c movel %fp@(-8),%a2@(60) <== NOT EXECUTED return my_length; 4d1f2: 2007 movel %d7,%d0 <== NOT EXECUTED 4d1f4: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED } IMFS_update_atime( the_jnode ); return copied; } 4d1f8: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4d1fe: 4e5e unlk %fp <== NOT EXECUTED 4d200: 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; 4d202: 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 ); 4d204: 2040 moveal %d0,%a0 <== NOT EXECUTED dest += to_copy; 4d206: 280b movel %a3,%d4 <== NOT EXECUTED 4d208: d881 addl %d1,%d4 <== NOT EXECUTED block++; my_length -= to_copy; 4d20a: 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++; 4d20c: 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 ); 4d20e: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4d210: d9d0 addal %a0@,%a4 <== NOT EXECUTED 4d212: 2f0c movel %a4,%sp@- <== NOT EXECUTED dest += to_copy; block++; my_length -= to_copy; copied += to_copy; 4d214: 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 ); 4d216: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4d218: 4eb9 0004 f1b8 jsr 4f1b8 <== NOT EXECUTED dest += to_copy; block++; my_length -= to_copy; 4d21e: 2c39 0005 f334 movel 5f334 ,%d6<== NOT EXECUTED 4d224: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d228: 6000 fe9c braw 4d0c6 <== NOT EXECUTED /* * Linear files (as created from a tar file are easier to handle * than block files). */ my_length = length; 4d22c: 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); 4d22e: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4d230: 4874 3800 pea %a4@(00000000,%d3:l) <== NOT EXECUTED 4d234: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4d236: 4eb9 0004 f1b8 jsr 4f1b8 <== NOT EXECUTED IMFS_update_atime( the_jnode ); 4d23c: 42a7 clrl %sp@- <== NOT EXECUTED 4d23e: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4d242: 4eb9 0004 2d8c jsr 42d8c <== NOT EXECUTED 4d248: 256e fff8 003c movel %fp@(-8),%a2@(60) <== NOT EXECUTED return my_length; 4d24e: 2007 movel %d7,%d0 <== NOT EXECUTED 4d250: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4d254: 60a2 bras 4d1f8 <== 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; 4d256: 4280 clrl %d0 <== NOT EXECUTED } IMFS_update_atime( the_jnode ); return copied; } 4d258: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4d25e: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004d334 : * is better to stick to simple, easy to understand algorithms. */ int IMFS_memfile_remove( IMFS_jnode_t *the_jnode ) { 4d334: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 4d338: 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; 4d33c: 2839 0005 f334 movel 5f334 ,%d4<== NOT EXECUTED 4d342: 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 ) { 4d344: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED * + doubly indirect * + triply indirect */ info = &the_jnode->info.file; if ( info->indirect ) { 4d348: 4aac 0054 tstl %a4@(84) <== NOT EXECUTED 4d34c: 670e beqs 4d35c <== NOT EXECUTED memfile_free_blocks_in_table( &info->indirect, to_free ); 4d34e: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d350: 486c 0054 pea %a4@(84) <== NOT EXECUTED 4d354: 4eb9 0004 d2ee jsr 4d2ee <== NOT EXECUTED 4d35a: 508f addql #8,%sp <== NOT EXECUTED } if ( info->doubly_indirect ) { 4d35c: 206c 0058 moveal %a4@(88),%a0 <== NOT EXECUTED 4d360: 4a88 tstl %a0 <== NOT EXECUTED 4d362: 6750 beqs 4d3b4 <== NOT EXECUTED for ( i=0 ; i,%d1<== NOT EXECUTED 4d36a: 2001 movel %d1,%d0 <== NOT EXECUTED 4d36c: e488 lsrl #2,%d0 <== NOT EXECUTED 4d36e: 47f9 0004 d2ee lea 4d2ee ,%a3<== NOT EXECUTED 4d374: 6734 beqs 4d3aa <== NOT EXECUTED 4d376: 4280 clrl %d0 <== NOT EXECUTED 4d378: 4282 clrl %d2 <== NOT EXECUTED 4d37a: 47f9 0004 d2ee lea 4d2ee ,%a3<== NOT EXECUTED 4d380: 5282 addql #1,%d2 <== NOT EXECUTED if ( info->doubly_indirect[i] ) { 4d382: e588 lsll #2,%d0 <== NOT EXECUTED 4d384: 4ab0 0800 tstl %a0@(00000000,%d0:l) <== NOT EXECUTED 4d388: 6710 beqs 4d39a <== NOT EXECUTED memfile_free_blocks_in_table( 4d38a: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d38c: 4870 0800 pea %a0@(00000000,%d0:l) <== NOT EXECUTED 4d390: 4e93 jsr %a3@ <== NOT EXECUTED 4d392: 2239 0005 f334 movel 5f334 ,%d1<== NOT EXECUTED 4d398: 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 4d3a4: 206c 0058 moveal %a4@(88),%a0 <== NOT EXECUTED 4d3a8: 60d6 bras 4d380 <== 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 ); 4d3aa: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d3ac: 486c 0058 pea %a4@(88) <== NOT EXECUTED 4d3b0: 4e93 jsr %a3@ <== NOT EXECUTED 4d3b2: 508f addql #8,%sp <== NOT EXECUTED } if ( info->triply_indirect ) { 4d3b4: 206c 005c moveal %a4@(92),%a0 <== NOT EXECUTED 4d3b8: 4a88 tstl %a0 <== NOT EXECUTED 4d3ba: 6700 0086 beqw 4d442 <== NOT EXECUTED for ( i=0 ; i,%d1<== NOT EXECUTED 4d3c4: 2001 movel %d1,%d0 <== NOT EXECUTED 4d3c6: e488 lsrl #2,%d0 <== NOT EXECUTED 4d3c8: 47f9 0004 d2ee lea 4d2ee ,%a3<== NOT EXECUTED 4d3ce: 6768 beqs 4d438 <== NOT EXECUTED p = (block_p *) info->triply_indirect[i]; 4d3d0: 2450 moveal %a0@,%a2 <== NOT EXECUTED 4d3d2: 47f9 0004 d2ee lea 4d2ee ,%a3<== NOT EXECUTED if ( !p ) /* ensure we have a valid pointer */ 4d3d8: 4a8a tstl %a2 <== NOT EXECUTED 4d3da: 675c beqs 4d438 <== NOT EXECUTED } if ( info->triply_indirect ) { for ( i=0 ; itriply_indirect[i]; 4d3dc: 4286 clrl %d6 <== NOT EXECUTED if ( !p ) /* ensure we have a valid pointer */ 4d3de: 4285 clrl %d5 <== NOT EXECUTED break; for ( j=0 ; j <== NOT EXECUTED 4d3e4: 4280 clrl %d0 <== NOT EXECUTED 4d3e6: 4282 clrl %d2 <== NOT EXECUTED 4d3e8: 5282 addql #1,%d2 <== NOT EXECUTED if ( p[j] ) { 4d3ea: e588 lsll #2,%d0 <== NOT EXECUTED 4d3ec: 4ab2 0800 tstl %a2@(00000000,%d0:l) <== NOT EXECUTED 4d3f0: 6710 beqs 4d402 <== NOT EXECUTED memfile_free_blocks_in_table( (block_p **)&p[j], to_free); 4d3f2: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d3f4: 4872 0800 pea %a2@(00000000,%d0:l) <== NOT EXECUTED 4d3f8: 4e93 jsr %a3@ <== NOT EXECUTED 4d3fa: 2239 0005 f334 movel 5f334 ,%d1<== NOT EXECUTED 4d400: 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( 4d40c: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d40e: 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 4d41e: 2001 movel %d1,%d0 <== NOT EXECUTED 4d420: 508f addql #8,%sp <== NOT EXECUTED 4d422: e488 lsrl #2,%d0 <== NOT EXECUTED 4d424: ba80 cmpl %d0,%d5 <== NOT EXECUTED 4d426: 6410 bccs 4d438 <== NOT EXECUTED p = (block_p *) info->triply_indirect[i]; if ( !p ) /* ensure we have a valid pointer */ 4d428: 2c05 movel %d5,%d6 <== NOT EXECUTED } if ( info->triply_indirect ) { for ( i=0 ; itriply_indirect[i]; 4d42a: 206c 005c moveal %a4@(92),%a0 <== NOT EXECUTED if ( !p ) /* ensure we have a valid pointer */ 4d42e: e58e lsll #2,%d6 <== NOT EXECUTED } if ( info->triply_indirect ) { for ( i=0 ; itriply_indirect[i]; 4d430: 2470 6800 moveal %a0@(00000000,%d6:l),%a2 <== NOT EXECUTED if ( !p ) /* ensure we have a valid pointer */ 4d434: 4a8a tstl %a2 <== NOT EXECUTED 4d436: 66a8 bnes 4d3e0 <== NOT EXECUTED } } memfile_free_blocks_in_table( (block_p **)&info->triply_indirect[i], to_free ); } memfile_free_blocks_in_table( 4d438: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d43a: 486c 005c pea %a4@(92) <== NOT EXECUTED 4d43e: 4e93 jsr %a3@ <== NOT EXECUTED 4d440: 508f addql #8,%sp <== NOT EXECUTED (block_p **)&info->triply_indirect, to_free ); } return 0; } 4d442: 4280 clrl %d0 <== NOT EXECUTED 4d444: 4cee 1c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a4 <== NOT EXECUTED 4d44a: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004d44e : */ MEMFILE_STATIC int IMFS_memfile_remove_block( IMFS_jnode_t *the_jnode, unsigned int block ) { 4d44e: 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 ); 4d452: 42a7 clrl %sp@- <== NOT EXECUTED 4d454: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4d458: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4d45c: 4eb9 0004 ce5c jsr 4ce5c <== NOT EXECUTED IMFS_assert( block_ptr ); ptr = *block_ptr; 4d462: 2040 moveal %d0,%a0 <== NOT EXECUTED 4d464: 2210 movel %a0@,%d1 <== NOT EXECUTED *block_ptr = 0; 4d466: 4290 clrl %a0@ <== NOT EXECUTED memfile_free_block( ptr ); 4d468: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4d46a: 4eb9 0004 d2d4 jsr 4d2d4 <== NOT EXECUTED return 1; } 4d470: 7001 moveq #1,%d0 <== NOT EXECUTED 4d472: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004d57c : * 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 ) { 4d57c: 4280 clrl %d0 <== NOT EXECUTED IMFS_jnode_t *the_jnode, off_t start, const unsigned char *source, unsigned int length ) { 4d57e: 4e56 ffd4 linkw %fp,#-44 <== NOT EXECUTED 4d582: 48d7 1cfc moveml %d2-%d7/%a2-%a4,%sp@ <== NOT EXECUTED 4d586: 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; 4d58a: 2047 moveal %d7,%a0 <== NOT EXECUTED IMFS_jnode_t *the_jnode, off_t start, const unsigned char *source, unsigned int length ) { 4d58c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4d590: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED 4d594: 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; 4d598: d1c3 addal %d3,%a0 <== NOT EXECUTED if ( last_byte > the_jnode->info.file.size ) { 4d59a: 2208 movel %a0,%d1 <== NOT EXECUTED IMFS_jnode_t *the_jnode, off_t start, const unsigned char *source, unsigned int length ) { 4d59c: 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 ) { 4d5a0: 282a 004c movel %a2@(76),%d4 <== NOT EXECUTED 4d5a4: 2a2a 0050 movel %a2@(80),%d5 <== NOT EXECUTED 4d5a8: 9a81 subl %d1,%d5 <== NOT EXECUTED 4d5aa: 9980 subxl %d0,%d4 <== NOT EXECUTED 4d5ac: 6d00 0116 bltw 4d6c4 <== NOT EXECUTED */ /* * Phase 1: possibly the last part of one block */ start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK; 4d5b0: 2c39 0005 f334 movel 5f334 ,%d6<== NOT EXECUTED 4d5b6: 2a06 movel %d6,%d5 <== NOT EXECUTED 4d5b8: 5bc4 smi %d4 <== NOT EXECUTED 4d5ba: 49c4 extbl %d4 <== NOT EXECUTED 4d5bc: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4d5be: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d5c0: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4d5c2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d5c4: 4eb9 0005 ab58 jsr 5ab58 <__moddi3> <== NOT EXECUTED 4d5ca: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4d5ce: 2641 moveal %d1,%a3 <== NOT EXECUTED block = start / IMFS_MEMFILE_BYTES_PER_BLOCK; 4d5d0: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4d5d2: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d5d4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4d5d6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d5d8: 4eb9 0005 a7a4 jsr 5a7a4 <__divdi3> <== NOT EXECUTED 4d5de: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4d5e2: 2401 movel %d1,%d2 <== NOT EXECUTED if ( start_offset ) { 4d5e4: 4a8b tstl %a3 <== NOT EXECUTED 4d5e6: 6700 00d4 beqw 4d6bc <== 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 ); 4d5ea: 42a7 clrl %sp@- <== NOT EXECUTED 4d5ec: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4d5ee: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d5f0: 4eb9 0004 ce5c jsr 4ce5c <== NOT EXECUTED if ( !block_ptr ) 4d5f6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d5fa: 4a80 tstl %d0 <== NOT EXECUTED 4d5fc: 6700 0120 beqw 4d71e <== 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; 4d600: 9c8b subl %a3,%d6 <== NOT EXECUTED 4d602: be86 cmpl %d6,%d7 <== NOT EXECUTED 4d604: 6500 00ee bcsw 4d6f4 <== NOT EXECUTED block, to_copy, src ); #endif memcpy( &(*block_ptr)[ start_offset ], src, to_copy ); 4d608: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4d60a: 2040 moveal %d0,%a0 <== NOT EXECUTED src += to_copy; 4d60c: 280c movel %a4,%d4 <== NOT EXECUTED 4d60e: d886 addl %d6,%d4 <== NOT EXECUTED block++; my_length -= to_copy; 4d610: 9e86 subl %d6,%d7 <== NOT EXECUTED copied += to_copy; 4d612: 2606 movel %d6,%d3 <== NOT EXECUTED src ); #endif memcpy( &(*block_ptr)[ start_offset ], src, to_copy ); src += to_copy; block++; 4d614: 5282 addql #1,%d2 <== NOT EXECUTED block, to_copy, src ); #endif memcpy( &(*block_ptr)[ start_offset ], src, to_copy ); 4d616: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4d618: d7d0 addal %a0@,%a3 <== NOT EXECUTED 4d61a: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4d61c: 4eb9 0004 f1b8 jsr 4f1b8 <== NOT EXECUTED src += to_copy; block++; my_length -= to_copy; copied += to_copy; 4d622: 2c39 0005 f334 movel 5f334 ,%d6<== NOT EXECUTED 4d628: 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 ) { 4d62c: bc87 cmpl %d7,%d6 <== NOT EXECUTED 4d62e: 623a bhis 4d66a <== NOT EXECUTED 4d630: 47f9 0004 ce5c lea 4ce5c ,%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 ); 4d636: 49f9 0004 f1b8 lea 4f1b8 ,%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 ); 4d63c: 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; 4d63e: 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 ); 4d640: 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++; 4d642: 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 ); 4d644: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d646: 4e93 jsr %a3@ <== NOT EXECUTED if ( !block_ptr ) 4d648: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d64c: 4a80 tstl %d0 <== NOT EXECUTED 4d64e: 6760 beqs 4d6b0 <== 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 ); 4d650: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4d652: 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( 4d654: 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 ); 4d656: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d658: 2f10 movel %a0@,%sp@- <== NOT EXECUTED src += to_copy; 4d65a: 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 ); 4d65c: 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 ) { 4d65e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d662: beb9 0005 f334 cmpl 5f334 ,%d7<== NOT EXECUTED 4d668: 64d2 bccs 4d63c <== 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 ) { 4d66a: 4a87 tstl %d7 <== NOT EXECUTED 4d66c: 6728 beqs 4d696 <== NOT EXECUTED block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 ); 4d66e: 42a7 clrl %sp@- <== NOT EXECUTED 4d670: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4d672: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d674: 4eb9 0004 ce5c jsr 4ce5c <== NOT EXECUTED if ( !block_ptr ) 4d67a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d67e: 4a80 tstl %d0 <== NOT EXECUTED 4d680: 672e beqs 4d6b0 <== 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 ); 4d682: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4d684: 2040 moveal %d0,%a0 <== NOT EXECUTED my_length = 0; copied += to_copy; 4d686: 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 ); 4d688: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4d68a: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4d68c: 4eb9 0004 f1b8 jsr 4f1b8 <== NOT EXECUTED my_length = 0; copied += to_copy; 4d692: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED } IMFS_mtime_ctime_update( the_jnode ); 4d696: 42a7 clrl %sp@- <== NOT EXECUTED 4d698: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4d69c: 4eb9 0004 2d8c jsr 42d8c <== NOT EXECUTED 4d6a2: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED return copied; 4d6a6: 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 ); 4d6a8: 2540 0040 movel %d0,%a2@(64) <== NOT EXECUTED 4d6ac: 2540 0044 movel %d0,%a2@(68) <== NOT EXECUTED return copied; } 4d6b0: 2003 movel %d3,%d0 <== NOT EXECUTED 4d6b2: 4cee 1cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a4 <== NOT EXECUTED 4d6b8: 4e5e unlk %fp <== NOT EXECUTED 4d6ba: 4e75 rts <== NOT EXECUTED unsigned int last_byte; unsigned int start_offset; int copied; const unsigned char *src; src = source; 4d6bc: 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; 4d6be: 4283 clrl %d3 <== NOT EXECUTED 4d6c0: 6000 ff6a braw 4d62c <== 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 ); 4d6c4: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4d6c6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4d6c8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4d6ca: 4eb9 0004 d476 jsr 4d476 <== NOT EXECUTED if ( status ) 4d6d0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d6d4: 4a80 tstl %d0 <== NOT EXECUTED 4d6d6: 6700 fed8 beqw 4d5b0 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSPC ); 4d6da: 4eb9 0004 e90c jsr 4e90c <__errno> <== NOT EXECUTED 4d6e0: 76ff moveq #-1,%d3 <== NOT EXECUTED 4d6e2: 781c moveq #28,%d4 <== NOT EXECUTED 4d6e4: 2040 moveal %d0,%a0 <== NOT EXECUTED } IMFS_mtime_ctime_update( the_jnode ); return copied; } 4d6e6: 2003 movel %d3,%d0 <== NOT EXECUTED last_byte = start + my_length; if ( last_byte > the_jnode->info.file.size ) { status = IMFS_memfile_extend( the_jnode, last_byte ); if ( status ) rtems_set_errno_and_return_minus_one( ENOSPC ); 4d6e8: 2084 movel %d4,%a0@ <== NOT EXECUTED } IMFS_mtime_ctime_update( the_jnode ); return copied; } 4d6ea: 4cee 1cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a4 <== NOT EXECUTED 4d6f0: 4e5e unlk %fp <== NOT EXECUTED 4d6f2: 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; 4d6f4: 2c07 movel %d7,%d6 <== NOT EXECUTED block, to_copy, src ); #endif memcpy( &(*block_ptr)[ start_offset ], src, to_copy ); 4d6f6: 2040 moveal %d0,%a0 <== NOT EXECUTED src += to_copy; 4d6f8: 280c movel %a4,%d4 <== NOT EXECUTED 4d6fa: d886 addl %d6,%d4 <== NOT EXECUTED block++; my_length -= to_copy; 4d6fc: 9e86 subl %d6,%d7 <== NOT EXECUTED copied += to_copy; 4d6fe: 2606 movel %d6,%d3 <== NOT EXECUTED src ); #endif memcpy( &(*block_ptr)[ start_offset ], src, to_copy ); src += to_copy; block++; 4d700: 5282 addql #1,%d2 <== NOT EXECUTED block, to_copy, src ); #endif memcpy( &(*block_ptr)[ start_offset ], src, to_copy ); 4d702: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4d704: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4d706: d7d0 addal %a0@,%a3 <== NOT EXECUTED 4d708: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4d70a: 4eb9 0004 f1b8 jsr 4f1b8 <== NOT EXECUTED src += to_copy; block++; my_length -= to_copy; copied += to_copy; 4d710: 2c39 0005 f334 movel 5f334 ,%d6<== NOT EXECUTED 4d716: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4d71a: 6000 ff10 braw 4d62c <== 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; 4d71e: 4283 clrl %d3 <== NOT EXECUTED } IMFS_mtime_ctime_update( the_jnode ); return copied; } 4d720: 2003 movel %d3,%d0 <== NOT EXECUTED 4d722: 4cee 1cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a4 <== NOT EXECUTED 4d728: 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 fd64 jsr 4fd64 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 aa94 jsr 4aa94 /* * 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 9f5e jsr 49f5e 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 e90c jsr 4e90c <__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 e90c jsr 4e90c <__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 48a0 moveal 648a0 <_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 33e4 jsr 533e4 <== 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 2f6b pea 62f6b <== NOT EXECUTED 44dd2: 2079 0006 48a0 moveal 648a0 <_impure_ptr>,%a0 <== NOT EXECUTED 44dd8: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44ddc: 4eb9 0005 3296 jsr 53296 <== 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 0177722 <== NOT EXECUTED 44dfa: 003a 072 <== NOT EXECUTED 44dfc: 0066 0146 <== NOT EXECUTED 44dfe: 0010 020 <== NOT EXECUTED 44e00: 0010 020 <== 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 48a0 moveal 648a0 <_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 2f44 pea 62f44 <== NOT EXECUTED 44e20: 4eb9 0005 3f54 jsr 53f54 <== 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 48a0 moveal 648a0 <_impure_ptr>,%a0 <== NOT EXECUTED 44e38: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44e3c: 4878 002f pea 2f <== NOT EXECUTED 44e40: 4eb9 0005 3314 jsr 53314 <== 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 361e movel #407070,%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 4c76 jmp 54c76 <== 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 48a0 moveal 648a0 <_impure_ptr>,%a0 <== NOT EXECUTED 44e6c: 4879 0006 2f16 pea 62f16 <== NOT EXECUTED 44e72: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44e76: 4eb9 0005 3296 jsr 53296 <== 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 361e movel #407070,%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 4c76 jmp 54c76 <== 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 48a0 moveal 648a0 <_impure_ptr>,%a0 <== NOT EXECUTED 44ea0: 4879 0006 2f38 pea 62f38 <== NOT EXECUTED 44ea6: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44eaa: 4eb9 0005 3296 jsr 53296 <== 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 361e movel #407070,%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 4c76 jmp 54c76 <== 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 48a0 moveal 648a0 <_impure_ptr>,%a0 <== NOT EXECUTED 44ed8: 4879 0006 2f29 pea 62f29 <== NOT EXECUTED 44ede: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44ee2: 4eb9 0005 3296 jsr 53296 <== 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 361e movel #407070,%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 4c76 jmp 54c76 <== 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 48a0 moveal 648a0 <_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 2f58 pea 62f58 <== NOT EXECUTED 44f1a: 4eb9 0005 3f54 jsr 53f54 <== 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 : int 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; int i; node = loc->node_access; 42460: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED int 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; int 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 fd7c jsr 4fd7c <== 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 6f1c jsr 46f1c <_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 6ee4 jsr 46ee4 <_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 =============================================================================== 0004ac50 : int IMFS_rmnod( rtems_filesystem_location_info_t *parent_pathloc, /* IN */ rtems_filesystem_location_info_t *pathloc /* IN */ ) { 4ac50: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4ac54: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 4ac58: 2f02 movel %d2,%sp@- <== NOT EXECUTED IMFS_jnode_t *jnode = (IMFS_jnode_t *) pathloc->node_access; 4ac5a: 2410 movel %a0@,%d2 <== NOT EXECUTED IMFS_create_orphan( jnode ); 4ac5c: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4ac5e: 4eb9 0004 ab74 jsr 4ab74 <== NOT EXECUTED IMFS_check_node_remove( jnode ); 4ac64: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4ac66: 4eb9 0004 abb8 jsr 4abb8 <== NOT EXECUTED return 0; } 4ac6c: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 4ac70: 4280 clrl %d0 <== NOT EXECUTED 4ac72: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004ac78 : IMFS_device_t *io; the_jnode = loc->node_access; switch ( the_jnode->type ) { 4ac78: 7007 moveq #7,%d0 int IMFS_stat( rtems_filesystem_location_info_t *loc, struct stat *buf ) { 4ac7a: 4e56 0000 linkw %fp,#0 4ac7e: 206e 000c moveal %fp@(12),%a0 4ac82: 2f0a movel %a2,%sp@- 4ac84: 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; 4ac88: 2252 moveal %a2@,%a1 switch ( the_jnode->type ) { 4ac8a: b0a9 0048 cmpl %a1@(72),%d0 4ac8e: 6418 bccs 4aca8 <== ALWAYS TAKEN case IMFS_FIFO: buf->st_size = 0; break; default: rtems_set_errno_and_return_minus_one( ENOTSUP ); 4ac90: 4eb9 0004 e90c jsr 4e90c <__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; } 4ac96: 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 ); 4ac9a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4ac9c: 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; } 4ac9e: 4e5e unlk %fp <== NOT EXECUTED case IMFS_FIFO: buf->st_size = 0; break; default: rtems_set_errno_and_return_minus_one( ENOTSUP ); 4aca0: 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; } 4aca6: 4e75 rts <== NOT EXECUTED IMFS_device_t *io; the_jnode = loc->node_access; switch ( the_jnode->type ) { 4aca8: 2029 0048 movel %a1@(72),%d0 4acac: d080 addl %d0,%d0 4acae: 303b 0808 movew %pc@(4acb8 ,%d0:l),%d0 4acb2: 48c0 extl %d0 4acb4: 4efb 0802 jmp %pc@(4acb8 ,%d0:l) 4acb8: ffd8 0177730 <== NOT EXECUTED 4acba: ffd8 0177730 <== NOT EXECUTED 4acbc: 00c2 bitrev %d2 <== NOT EXECUTED 4acbe: ffd8 0177730 <== NOT EXECUTED 4acc0: 0010 020 <== NOT EXECUTED 4acc2: 006a 0152 <== NOT EXECUTED 4acc4: 006a 0152 <== NOT EXECUTED 4acc6: 0010 020 <== 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; 4acc8: 246a 0010 moveal %a2@(16),%a2 <== NOT EXECUTED case IMFS_SYM_LINK: buf->st_size = 0; break; case IMFS_FIFO: buf->st_size = 0; 4accc: 4280 clrl %d0 <== NOT EXECUTED 4acce: 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 ); 4acd0: 246a 0034 moveal %a2@(52),%a2 <== NOT EXECUTED case IMFS_SYM_LINK: buf->st_size = 0; break; case IMFS_FIFO: buf->st_size = 0; 4acd4: 2140 001e movel %d0,%a0@(30) <== NOT EXECUTED 4acd8: 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 ); 4acdc: 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; 4acde: 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; 4ace0: 2169 002e 000c movel %a1@(46),%a0@(12) <== NOT EXECUTED buf->st_nlink = the_jnode->st_nlink; 4ace6: 3169 0032 0010 movew %a1@(50),%a0@(16) <== NOT EXECUTED buf->st_ino = the_jnode->st_ino; 4acec: 2169 0034 0008 movel %a1@(52),%a0@(8) <== NOT EXECUTED buf->st_uid = the_jnode->st_uid; 4acf2: 3169 0038 0012 movew %a1@(56),%a0@(18) <== NOT EXECUTED buf->st_gid = the_jnode->st_gid; 4acf8: 3169 003a 0014 movew %a1@(58),%a0@(20) <== NOT EXECUTED buf->st_atime = the_jnode->stat_atime; 4acfe: 2169 003c 0026 movel %a1@(60),%a0@(38) <== NOT EXECUTED buf->st_mtime = the_jnode->stat_mtime; 4ad04: 2169 0040 002e movel %a1@(64),%a0@(46) <== NOT EXECUTED buf->st_ctime = the_jnode->stat_ctime; 4ad0a: 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 = 4ad10: 20bc 0000 fffe movel #65534,%a0@ <== NOT EXECUTED 4ad16: 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; } 4ad1a: 246e fffc moveal %fp@(-4),%a2 4ad1e: 4e5e unlk %fp 4ad20: 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; 4ad22: 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; 4ad26: 2029 004c movel %a1@(76),%d0 <== NOT EXECUTED 4ad2a: 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 ); 4ad2e: 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; 4ad32: 2140 001e movel %d0,%a0@(30) <== NOT EXECUTED 4ad36: 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 ); 4ad3a: 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; 4ad3c: 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; 4ad3e: 2169 002e 000c movel %a1@(46),%a0@(12) <== NOT EXECUTED buf->st_nlink = the_jnode->st_nlink; 4ad44: 3169 0032 0010 movew %a1@(50),%a0@(16) <== NOT EXECUTED buf->st_ino = the_jnode->st_ino; 4ad4a: 2169 0034 0008 movel %a1@(52),%a0@(8) <== NOT EXECUTED buf->st_uid = the_jnode->st_uid; 4ad50: 3169 0038 0012 movew %a1@(56),%a0@(18) <== NOT EXECUTED buf->st_gid = the_jnode->st_gid; 4ad56: 3169 003a 0014 movew %a1@(58),%a0@(20) <== NOT EXECUTED buf->st_atime = the_jnode->stat_atime; 4ad5c: 2169 003c 0026 movel %a1@(60),%a0@(38) <== NOT EXECUTED buf->st_mtime = the_jnode->stat_mtime; 4ad62: 2169 0040 002e movel %a1@(64),%a0@(46) <== NOT EXECUTED buf->st_ctime = the_jnode->stat_ctime; 4ad68: 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 = 4ad6e: 20bc 0000 fffe movel #65534,%a0@ <== NOT EXECUTED 4ad74: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED 4ad78: 60a0 bras 4ad1a <== 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; 4ad7a: 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 ); 4ad7e: 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 ); 4ad82: 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 ); 4ad86: 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 ); 4ad8c: 2212 movel %a2@,%d1 buf->st_mode = the_jnode->st_mode; 4ad8e: 2169 002e 000c movel %a1@(46),%a0@(12) buf->st_nlink = the_jnode->st_nlink; 4ad94: 3169 0032 0010 movew %a1@(50),%a0@(16) buf->st_ino = the_jnode->st_ino; 4ad9a: 2169 0034 0008 movel %a1@(52),%a0@(8) buf->st_uid = the_jnode->st_uid; 4ada0: 3169 0038 0012 movew %a1@(56),%a0@(18) buf->st_gid = the_jnode->st_gid; 4ada6: 3169 003a 0014 movew %a1@(58),%a0@(20) buf->st_atime = the_jnode->stat_atime; 4adac: 2169 003c 0026 movel %a1@(60),%a0@(38) buf->st_mtime = the_jnode->stat_mtime; 4adb2: 2169 0040 002e movel %a1@(64),%a0@(46) buf->st_ctime = the_jnode->stat_ctime; 4adb8: 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 ); 4adbe: 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; 4adc2: 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 = 4adc4: 20bc 0000 fffe movel #65534,%a0@ 4adca: 2141 0004 movel %d1,%a0@(4) 4adce: 6000 ff4a braw 4ad1a ... =============================================================================== 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 fd64 jsr 4fd64 <== 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 aa94 jsr 4aa94 <== NOT EXECUTED /* * Duplicate link name */ info.sym_link.name = strdup(link_name); 4253a: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4253e: 4eb9 0004 f8d4 jsr 4f8d4 <== 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 9f5e jsr 49f5e <== 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 e90c jsr 4e90c <__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 e90c jsr 4e90c <__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 a190 jsr 4a190 <== 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 e90c jsr 4e90c <__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 e90c jsr 4e90c <__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 e90c jsr 4e90c <__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 202c jsr 5202c