=============================================================================== 000433e4 : #include static void CPU_usage_Per_thread_handler( Thread_Control *the_thread ) { 433e4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 433e8: 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 } 433ec: 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 ); 433ee: 42a8 0082 clrl %a0@(130) <== NOT EXECUTED 433f2: 42a8 0086 clrl %a0@(134) <== NOT EXECUTED #else the_thread->cpu_time_used = 0; #endif } =============================================================================== 0004a060 : { IMFS_jnode_t *node = loc->node_access; IMFS_fs_info_t *fs_info; fs_info = loc->mt_entry->fs_info; switch( node->type ) { 4a060: 7007 moveq #7,%d0 #define MAXSYMLINK 5 int IMFS_Set_handlers( rtems_filesystem_location_info_t *loc ) { 4a062: 4e56 0000 linkw %fp,#0 4a066: 206e 0008 moveal %fp@(8),%a0 4a06a: 2f0a movel %a2,%sp@- IMFS_jnode_t *node = loc->node_access; IMFS_fs_info_t *fs_info; fs_info = loc->mt_entry->fs_info; 4a06c: 2468 0010 moveal %a0@(16),%a2 switch( node->type ) { 4a070: 2250 moveal %a0@,%a1 ) { IMFS_jnode_t *node = loc->node_access; IMFS_fs_info_t *fs_info; fs_info = loc->mt_entry->fs_info; 4a072: 246a 0034 moveal %a2@(52),%a2 switch( node->type ) { 4a076: b0a9 0048 cmpl %a1@(72),%d0 4a07a: 6526 bcss 4a0a2 <== NEVER TAKEN 4a07c: 2029 0048 movel %a1@(72),%d0 4a080: d080 addl %d0,%d0 4a082: 303b 0808 movew %pc@(4a08c ,%d0:l),%d0 4a086: 48c0 extl %d0 4a088: 4efb 0802 jmp %pc@(4a08c ,%d0:l) 4a08c: 0016 .short 0x0016 <== NOT EXECUTED 4a08e: 0010 .short 0x0010 <== NOT EXECUTED 4a090: 004c .short 0x004c <== NOT EXECUTED 4a092: 002c .short 0x002c <== NOT EXECUTED 4a094: 002c .short 0x002c <== NOT EXECUTED 4a096: 001e .short 0x001e <== NOT EXECUTED 4a098: 001e .short 0x001e <== NOT EXECUTED 4a09a: 003e .short 0x003e <== NOT EXECUTED case IMFS_DIRECTORY: loc->handlers = fs_info->directory_handlers; 4a09c: 216a 000c 0008 movel %a2@(12),%a0@(8) loc->handlers = fs_info->fifo_handlers; break; } return 0; } 4a0a2: 245f moveal %sp@+,%a2 4a0a4: 4280 clrl %d0 4a0a6: 4e5e unlk %fp 4a0a8: 4e75 rts 4a0aa: 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; 4a0ac: 216a 0008 0008 movel %a2@(8),%a0@(8) <== NOT EXECUTED loc->handlers = fs_info->fifo_handlers; break; } return 0; } 4a0b2: 245f moveal %sp@+,%a2 <== NOT EXECUTED 4a0b4: 4e5e unlk %fp <== NOT EXECUTED 4a0b6: 4e75 rts <== NOT EXECUTED 4a0b8: 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; 4a0ba: 203c 0005 c1e2 movel #377314,%d0 <== NOT EXECUTED loc->handlers = fs_info->fifo_handlers; break; } return 0; } 4a0c0: 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; 4a0c2: 2140 0008 movel %d0,%a0@(8) <== NOT EXECUTED loc->handlers = fs_info->fifo_handlers; break; } return 0; } 4a0c6: 4280 clrl %d0 <== NOT EXECUTED 4a0c8: 4e75 rts <== NOT EXECUTED 4a0ca: 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; 4a0cc: 216a 0010 0008 movel %a2@(16),%a0@(8) <== NOT EXECUTED break; } return 0; } 4a0d2: 245f moveal %sp@+,%a2 <== NOT EXECUTED 4a0d4: 4e5e unlk %fp <== NOT EXECUTED 4a0d6: 4e75 rts <== NOT EXECUTED 4a0d8: 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; 4a0da: 203c 0005 c172 movel #377202,%d0 loc->handlers = fs_info->fifo_handlers; break; } return 0; } 4a0e0: 4e5e unlk %fp switch( node->type ) { case IMFS_DIRECTORY: loc->handlers = fs_info->directory_handlers; break; case IMFS_DEVICE: loc->handlers = &IMFS_device_handlers; 4a0e2: 2140 0008 movel %d0,%a0@(8) loc->handlers = fs_info->fifo_handlers; break; } return 0; } 4a0e6: 4280 clrl %d0 <== NOT EXECUTED =============================================================================== 00049dbc : IMFS_jnode_t *IMFS_allocate_node( IMFS_jnode_types_t type, const char *name, mode_t mode ) { 49dbc: 4e56 fff8 linkw %fp,#-8 49dc0: 2f0a movel %a2,%sp@- struct timeval tv; /* * Allocate an IMFS jnode */ node = calloc( 1, sizeof( IMFS_jnode_t ) ); 49dc2: 4878 0060 pea 60 49dc6: 4878 0001 pea 1 49dca: 4eb9 0004 28f0 jsr 428f0 if ( !node ) 49dd0: 508f addql #8,%sp struct timeval tv; /* * Allocate an IMFS jnode */ node = calloc( 1, sizeof( IMFS_jnode_t ) ); 49dd2: 2440 moveal %d0,%a2 if ( !node ) 49dd4: 4a80 tstl %d0 49dd6: 674e beqs 49e26 <== NEVER TAKEN /* * Fill in the basic information */ node->st_nlink = 1; node->type = type; strncpy( node->name, name, IMFS_NAME_MAX ); 49dd8: 4878 0020 pea 20 49ddc: 2f2e 000c movel %fp@(12),%sp@- /* * Fill in the basic information */ node->st_nlink = 1; node->type = type; 49de0: 256e 0008 0048 movel %fp@(8),%a2@(72) strncpy( node->name, name, IMFS_NAME_MAX ); 49de6: 486a 000c pea %a2@(12) return NULL; /* * Fill in the basic information */ node->st_nlink = 1; 49dea: 7001 moveq #1,%d0 49dec: 3540 0032 movew %d0,%a2@(50) node->type = type; strncpy( node->name, name, IMFS_NAME_MAX ); 49df0: 4eb9 0004 ed54 jsr 4ed54 /* * Fill in the mode and permission information for the jnode structure. */ node->st_mode = mode; 49df6: 256e 0010 002e movel %fp@(16),%a2@(46) #endif /* * Now set all the times. */ gettimeofday( &tv, 0 ); 49dfc: 42a7 clrl %sp@- 49dfe: 486e fff8 pea %fp@(-8) node->st_mode = mode; #if defined(RTEMS_POSIX_API) node->st_uid = geteuid(); node->st_gid = getegid(); #else node->st_uid = 0; 49e02: 4240 clrw %d0 49e04: 3540 0038 movew %d0,%a2@(56) node->st_gid = 0; 49e08: 3540 003a movew %d0,%a2@(58) #endif /* * Now set all the times. */ gettimeofday( &tv, 0 ); 49e0c: 4eb9 0004 2d8c jsr 42d8c node->stat_atime = (time_t) tv.tv_sec; 49e12: 202e fff8 movel %fp@(-8),%d0 node->stat_mtime = (time_t) tv.tv_sec; node->stat_ctime = (time_t) tv.tv_sec; return node; 49e16: 4fef 0014 lea %sp@(20),%sp /* * Now set all the times. */ gettimeofday( &tv, 0 ); node->stat_atime = (time_t) tv.tv_sec; 49e1a: 2540 003c movel %d0,%a2@(60) node->stat_mtime = (time_t) tv.tv_sec; 49e1e: 2540 0040 movel %d0,%a2@(64) node->stat_ctime = (time_t) tv.tv_sec; 49e22: 2540 0044 movel %d0,%a2@(68) return node; } 49e26: 200a movel %a2,%d0 49e28: 246e fff4 moveal %fp@(-12),%a2 49e2c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004aa28 : void IMFS_check_node_remove( IMFS_jnode_t *jnode ) { 4aa28: 4e56 0000 linkw %fp,#0 4aa2c: 2f0a movel %a2,%sp@- 4aa2e: 246e 0008 moveal %fp@(8),%a2 if ( !rtems_libio_is_file_open( jnode ) && jnode->st_nlink < 1 ) { 4aa32: 2f0a movel %a2,%sp@- 4aa34: 4eb9 0004 b126 jsr 4b126 4aa3a: 588f addql #4,%sp 4aa3c: 4a80 tstl %d0 4aa3e: 6634 bnes 4aa74 <== ALWAYS TAKEN 4aa40: 4a6a 0032 tstw %a2@(50) <== NOT EXECUTED 4aa44: 662e bnes 4aa74 <== NOT EXECUTED if ( rtems_filesystem_current.node_access == jnode ) 4aa46: 2079 0005 ce80 moveal 5ce80 ,%a0 <== NOT EXECUTED 4aa4c: b5e8 0004 cmpal %a0@(4),%a2 <== NOT EXECUTED 4aa50: 6744 beqs 4aa96 <== NOT EXECUTED rtems_filesystem_current.node_access = NULL; switch ( jnode->type ) { 4aa52: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED 4aa56: 7204 moveq #4,%d1 <== NOT EXECUTED 4aa58: b280 cmpl %d0,%d1 <== NOT EXECUTED 4aa5a: 6748 beqs 4aaa4 <== NOT EXECUTED 4aa5c: 123c 0005 moveb #5,%d1 <== NOT EXECUTED 4aa60: b280 cmpl %d0,%d1 <== NOT EXECUTED 4aa62: 6718 beqs 4aa7c <== NOT EXECUTED break; default: break; } free( jnode ); 4aa64: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED } } 4aa68: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4aa6c: 4e5e unlk %fp <== NOT EXECUTED break; default: break; } free( jnode ); 4aa6e: 4ef9 0004 2cfc jmp 42cfc <== NOT EXECUTED } } 4aa74: 246e fffc moveal %fp@(-4),%a2 4aa78: 4e5e unlk %fp 4aa7a: 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 ); 4aa7c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4aa7e: 4eb9 0004 c838 jsr 4c838 <== NOT EXECUTED break; 4aa84: 588f addql #4,%sp <== NOT EXECUTED break; default: break; } free( jnode ); 4aa86: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED } } 4aa8a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4aa8e: 4e5e unlk %fp <== NOT EXECUTED break; default: break; } free( jnode ); 4aa90: 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 ) { 4aa96: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED 4aa9a: 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; 4aa9c: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED switch ( jnode->type ) { 4aaa0: b280 cmpl %d0,%d1 <== NOT EXECUTED 4aaa2: 66b8 bnes 4aa5c <== NOT EXECUTED case IMFS_MEMORY_FILE: IMFS_memfile_remove( jnode ); break; case IMFS_SYM_LINK: free( jnode->info.sym_link.name ); 4aaa4: 2f2a 004c movel %a2@(76),%sp@- <== NOT EXECUTED 4aaa8: 4eb9 0004 2cfc jsr 42cfc <== NOT EXECUTED break; 4aaae: 588f addql #4,%sp <== NOT EXECUTED default: break; } free( jnode ); 4aab0: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED } } 4aab4: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED 4aab8: 4e5e unlk %fp <== NOT EXECUTED break; default: break; } free( jnode ); 4aaba: 4ef9 0004 2cfc jmp 42cfc <== NOT EXECUTED =============================================================================== 00049d88 : int IMFS_chown( rtems_filesystem_location_info_t *pathloc, /* IN */ uid_t owner, /* IN */ gid_t group /* IN */ ) { 49d88: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 49d8c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 49d90: 2f0a movel %a2,%sp@- <== NOT EXECUTED IMFS_jnode_t *jnode; #if defined(RTEMS_POSIX_API) uid_t st_uid; #endif jnode = (IMFS_jnode_t *) pathloc->node_access; 49d92: 2450 moveal %a0@,%a2 <== NOT EXECUTED if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) ) rtems_set_errno_and_return_minus_one( EPERM ); #endif jnode->st_uid = owner; 49d94: 356e 000e 0038 movew %fp@(14),%a2@(56) <== NOT EXECUTED jnode->st_gid = group; 49d9a: 356e 0012 003a movew %fp@(18),%a2@(58) <== NOT EXECUTED IMFS_update_ctime( jnode ); 49da0: 42a7 clrl %sp@- <== NOT EXECUTED 49da2: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 49da6: 4eb9 0004 2d8c jsr 42d8c <== NOT EXECUTED 49dac: 256e fff8 0044 movel %fp@(-8),%a2@(68) <== NOT EXECUTED return 0; } 49db2: 4280 clrl %d0 <== NOT EXECUTED 49db4: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 49db8: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00049e30 : IMFS_jnode_types_t type, const char *name, mode_t mode, const IMFS_types_union *info ) { 49e30: 4e56 ffec linkw %fp,#-20 49e34: 206e 0008 moveal %fp@(8),%a0 49e38: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ 49e3c: 242e 000c movel %fp@(12),%d2 49e40: 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 ) 49e44: 4a88 tstl %a0 49e46: 6700 00ac beqw 49ef4 return NULL; parent = parent_loc->node_access; fs_info = parent_loc->mt_entry->fs_info; 49e4a: 2268 0010 moveal %a0@(16),%a1 /* * Reject creation of FIFOs if support is disabled. */ if ( type == IMFS_FIFO && 49e4e: 7007 moveq #7,%d0 * MUST have a parent node to call this routine. */ if ( parent_loc == NULL ) return NULL; parent = parent_loc->node_access; 49e50: 2650 moveal %a0@,%a3 fs_info = parent_loc->mt_entry->fs_info; 49e52: 2469 0034 moveal %a1@(52),%a2 /* * Reject creation of FIFOs if support is disabled. */ if ( type == IMFS_FIFO && 49e56: b082 cmpl %d2,%d0 49e58: 6700 008c beqw 49ee6 return NULL; /* * Allocate filesystem node and fill in basic information */ node = IMFS_allocate_node( type, name, mode & ~rtems_filesystem_umask ); 49e5c: 2079 0005 ce80 moveal 5ce80 ,%a0 49e62: 2028 002c movel %a0@(44),%d0 49e66: 4680 notl %d0 49e68: c0ae 0014 andl %fp@(20),%d0 49e6c: 2f00 movel %d0,%sp@- 49e6e: 2f2e 0010 movel %fp@(16),%sp@- 49e72: 2f02 movel %d2,%sp@- 49e74: 4eb9 0004 9dbc jsr 49dbc if ( !node ) 49e7a: 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 ); 49e7e: 2a40 moveal %d0,%a5 if ( !node ) 49e80: 4a80 tstl %d0 49e82: 6756 beqs 49eda <== NEVER TAKEN return NULL; /* * Set the type specific information */ if ( type == IMFS_DIRECTORY ) { 49e84: 7001 moveq #1,%d0 49e86: b082 cmpl %d2,%d0 49e88: 6778 beqs 49f02 rtems_chain_initialize_empty(&node->info.directory.Entries); } else if ( type == IMFS_HARD_LINK ) { 49e8a: 7003 moveq #3,%d0 49e8c: b082 cmpl %d2,%d0 49e8e: 6700 00d6 beqw 49f66 node->info.hard_link.link_node = info->hard_link.link_node; } else if ( type == IMFS_SYM_LINK ) { 49e92: 7204 moveq #4,%d1 49e94: b282 cmpl %d2,%d1 49e96: 6700 00ce beqw 49f66 node->info.sym_link.name = info->sym_link.name; } else if ( type == IMFS_DEVICE ) { 49e9a: 7002 moveq #2,%d0 49e9c: b082 cmpl %d2,%d0 49e9e: 6700 0098 beqw 49f38 node->info.device.major = info->device.major; node->info.device.minor = info->device.minor; } else if ( type == IMFS_LINEAR_FILE ) { 49ea2: 7206 moveq #6,%d1 <== NOT EXECUTED 49ea4: b282 cmpl %d2,%d1 <== NOT EXECUTED 49ea6: 6700 010e beqw 49fb6 <== NOT EXECUTED node->info.linearfile.size = 0; node->info.linearfile.direct = 0; } else if ( type == IMFS_MEMORY_FILE ) { 49eaa: 7205 moveq #5,%d1 <== NOT EXECUTED 49eac: b282 cmpl %d2,%d1 <== NOT EXECUTED 49eae: 6700 013a beqw 49fea <== 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 ) { 49eb2: 7207 moveq #7,%d1 <== NOT EXECUTED 49eb4: b282 cmpl %d2,%d1 <== NOT EXECUTED 49eb6: 6700 00d6 beqw 49f8e <== 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; 49eba: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 49ebe: 5280 addql #1,%d0 <== NOT EXECUTED } /* * This node MUST have a parent, so put it in that directory list. */ node->Parent = parent; 49ec0: 2b4b 0008 movel %a3,%a5@(8) <== NOT EXECUTED node->st_ino = ++fs_info->ino_count; 49ec4: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED 49ec8: 2b40 0034 movel %d0,%a5@(52) <== NOT EXECUTED 49ecc: 2f0d movel %a5,%sp@- <== NOT EXECUTED 49ece: 486b 004c pea %a3@(76) <== NOT EXECUTED 49ed2: 4eb9 0004 6e98 jsr 46e98 <_Chain_Append> <== NOT EXECUTED rtems_chain_append( &parent->info.directory.Entries, &node->Node ); return node; 49ed8: 508f addql #8,%sp <== NOT EXECUTED } 49eda: 200d movel %a5,%d0 49edc: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 49ee2: 4e5e unlk %fp 49ee4: 4e75 rts fs_info = parent_loc->mt_entry->fs_info; /* * Reject creation of FIFOs if support is disabled. */ if ( type == IMFS_FIFO && 49ee6: 223c 0005 c102 movel #377090,%d1 <== NOT EXECUTED 49eec: b2aa 0010 cmpl %a2@(16),%d1 <== NOT EXECUTED 49ef0: 6600 ff6a bnew 49e5c <== NOT EXECUTED fs_info->fifo_handlers == &rtems_filesystem_handlers_default ) return NULL; 49ef4: 9bcd subal %a5,%a5 <== NOT EXECUTED node->st_ino = ++fs_info->ino_count; rtems_chain_append( &parent->info.directory.Entries, &node->Node ); return node; } 49ef6: 200d movel %a5,%d0 <== NOT EXECUTED 49ef8: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED 49efe: 4e5e unlk %fp <== NOT EXECUTED 49f00: 4e75 rts <== NOT EXECUTED RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); 49f02: 41ed 0050 lea %a5@(80),%a0 49f06: 2b48 004c movel %a0,%a5@(76) */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); 49f0a: 41ed 004c lea %a5@(76),%a0 Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; head->previous = NULL; 49f0e: 42ad 0050 clrl %a5@(80) */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); 49f12: 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; 49f16: 202a 0004 movel %a2@(4),%d0 49f1a: 5280 addql #1,%d0 } /* * This node MUST have a parent, so put it in that directory list. */ node->Parent = parent; 49f1c: 2b4b 0008 movel %a3,%a5@(8) node->st_ino = ++fs_info->ino_count; 49f20: 2540 0004 movel %d0,%a2@(4) 49f24: 2b40 0034 movel %d0,%a5@(52) 49f28: 2f0d movel %a5,%sp@- 49f2a: 486b 004c pea %a3@(76) 49f2e: 4eb9 0004 6e98 jsr 46e98 <_Chain_Append> rtems_chain_append( &parent->info.directory.Entries, &node->Node ); return node; 49f34: 508f addql #8,%sp 49f36: 60a2 bras 49eda } 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; 49f38: 2b54 004c movel %a4@,%a5@(76) node->info.device.minor = info->device.minor; 49f3c: 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; 49f42: 202a 0004 movel %a2@(4),%d0 49f46: 5280 addql #1,%d0 } /* * This node MUST have a parent, so put it in that directory list. */ node->Parent = parent; 49f48: 2b4b 0008 movel %a3,%a5@(8) node->st_ino = ++fs_info->ino_count; 49f4c: 2540 0004 movel %d0,%a2@(4) 49f50: 2b40 0034 movel %d0,%a5@(52) 49f54: 2f0d movel %a5,%sp@- 49f56: 486b 004c pea %a3@(76) 49f5a: 4eb9 0004 6e98 jsr 46e98 <_Chain_Append> rtems_chain_append( &parent->info.directory.Entries, &node->Node ); return node; 49f60: 508f addql #8,%sp 49f62: 6000 ff76 braw 49eda 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; 49f66: 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; 49f6a: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 49f6e: 5280 addql #1,%d0 <== NOT EXECUTED } /* * This node MUST have a parent, so put it in that directory list. */ node->Parent = parent; 49f70: 2b4b 0008 movel %a3,%a5@(8) <== NOT EXECUTED node->st_ino = ++fs_info->ino_count; 49f74: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED 49f78: 2b40 0034 movel %d0,%a5@(52) <== NOT EXECUTED 49f7c: 2f0d movel %a5,%sp@- <== NOT EXECUTED 49f7e: 486b 004c pea %a3@(76) <== NOT EXECUTED 49f82: 4eb9 0004 6e98 jsr 46e98 <_Chain_Append> <== NOT EXECUTED rtems_chain_append( &parent->info.directory.Entries, &node->Node ); return node; 49f88: 508f addql #8,%sp <== NOT EXECUTED 49f8a: 6000 ff4e braw 49eda <== 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; 49f8e: 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; 49f92: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED } /* * This node MUST have a parent, so put it in that directory list. */ node->Parent = parent; 49f96: 2b4b 0008 movel %a3,%a5@(8) <== NOT EXECUTED node->st_ino = ++fs_info->ino_count; 49f9a: 5280 addql #1,%d0 <== NOT EXECUTED 49f9c: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED 49fa0: 2b40 0034 movel %d0,%a5@(52) <== NOT EXECUTED 49fa4: 2f0d movel %a5,%sp@- <== NOT EXECUTED 49fa6: 486b 004c pea %a3@(76) <== NOT EXECUTED 49faa: 4eb9 0004 6e98 jsr 46e98 <_Chain_Append> <== NOT EXECUTED rtems_chain_append( &parent->info.directory.Entries, &node->Node ); return node; 49fb0: 508f addql #8,%sp <== NOT EXECUTED 49fb2: 6000 ff26 braw 49eda <== 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; 49fb6: 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; 49fba: 4280 clrl %d0 <== NOT EXECUTED 49fbc: 4281 clrl %d1 <== NOT EXECUTED } /* * This node MUST have a parent, so put it in that directory list. */ node->Parent = parent; 49fbe: 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; 49fc2: 2b40 004c movel %d0,%a5@(76) <== NOT EXECUTED 49fc6: 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; 49fca: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 49fce: 5280 addql #1,%d0 <== NOT EXECUTED 49fd0: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED 49fd4: 2b40 0034 movel %d0,%a5@(52) <== NOT EXECUTED 49fd8: 2f0d movel %a5,%sp@- <== NOT EXECUTED 49fda: 486b 004c pea %a3@(76) <== NOT EXECUTED 49fde: 4eb9 0004 6e98 jsr 46e98 <_Chain_Append> <== NOT EXECUTED rtems_chain_append( &parent->info.directory.Entries, &node->Node ); return node; 49fe4: 508f addql #8,%sp <== NOT EXECUTED 49fe6: 6000 fef2 braw 49eda <== 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; 49fea: 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; 49fee: 4280 clrl %d0 <== NOT EXECUTED 49ff0: 4281 clrl %d1 <== NOT EXECUTED node->info.file.indirect = 0; node->info.file.doubly_indirect = 0; 49ff2: 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; 49ff6: 2b40 004c movel %d0,%a5@(76) <== NOT EXECUTED 49ffa: 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; 49ffe: 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; 4a002: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED 4a006: 5280 addql #1,%d0 <== NOT EXECUTED } /* * This node MUST have a parent, so put it in that directory list. */ node->Parent = parent; 4a008: 2b4b 0008 movel %a3,%a5@(8) <== NOT EXECUTED node->st_ino = ++fs_info->ino_count; 4a00c: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED 4a010: 2b40 0034 movel %d0,%a5@(52) <== NOT EXECUTED 4a014: 2f0d movel %a5,%sp@- <== NOT EXECUTED 4a016: 486b 004c pea %a3@(76) <== NOT EXECUTED 4a01a: 4eb9 0004 6e98 jsr 46e98 <_Chain_Append> <== NOT EXECUTED rtems_chain_append( &parent->info.directory.Entries, &node->Node ); return node; 4a020: 508f addql #8,%sp <== NOT EXECUTED 4a022: 6000 feb6 braw 49eda <== NOT EXECUTED =============================================================================== 0004a9e4 : #include #include "imfs.h" void IMFS_create_orphan( IMFS_jnode_t *jnode ) { 4a9e4: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 4a9e8: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a9ea: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED if ( jnode->Parent != NULL ) { 4a9ee: 4aaa 0008 tstl %a2@(8) <== NOT EXECUTED 4a9f2: 670e beqs 4aa02 <== NOT EXECUTED */ RTEMS_INLINE_ROUTINE void rtems_chain_extract( rtems_chain_node *the_node ) { _Chain_Extract( the_node ); 4a9f4: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a9f6: 4eb9 0004 6ed0 jsr 46ed0 <_Chain_Extract> <== NOT EXECUTED rtems_chain_extract( &jnode->Node ); jnode->Parent = NULL; 4a9fc: 588f addql #4,%sp <== NOT EXECUTED 4a9fe: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED } --jnode->st_nlink; IMFS_update_ctime( jnode ); 4aa02: 42a7 clrl %sp@- <== NOT EXECUTED 4aa04: 486e fff8 pea %fp@(-8) <== NOT EXECUTED if ( jnode->Parent != NULL ) { rtems_chain_extract( &jnode->Node ); jnode->Parent = NULL; } --jnode->st_nlink; 4aa08: 302a 0032 movew %a2@(50),%d0 <== NOT EXECUTED 4aa0c: 5380 subql #1,%d0 <== NOT EXECUTED 4aa0e: 3540 0032 movew %d0,%a2@(50) <== NOT EXECUTED IMFS_update_ctime( jnode ); 4aa12: 4eb9 0004 2d8c jsr 42d8c <== NOT EXECUTED 4aa18: 256e fff8 0044 movel %fp@(-8),%a2@(68) <== NOT EXECUTED 4aa1e: 508f addql #8,%sp <== NOT EXECUTED } 4aa20: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 4aa24: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004a026 : return node; } IMFS_jnode_t *IMFS_create_root_node(void) { 4a026: 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) ); 4a02a: 4878 41ed pea 41ed 4a02e: 4879 0005 bf60 pea 5bf60 4a034: 4878 0001 pea 1 4a038: 4eb9 0004 9dbc jsr 49dbc if ( !node ) 4a03e: 4fef 000c lea %sp@(12),%sp 4a042: 4a80 tstl %d0 4a044: 6716 beqs 4a05c <== NEVER TAKEN Chain_Node *tail = _Chain_Tail( the_chain ); 4a046: 2240 moveal %d0,%a1 head->next = tail; head->previous = NULL; 4a048: 2040 moveal %d0,%a0 RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); Chain_Node *tail = _Chain_Tail( the_chain ); 4a04a: 43e9 0050 lea %a1@(80),%a1 4a04e: 2149 004c movel %a1,%a0@(76) */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); 4a052: 5989 subql #4,%a1 Chain_Node *tail = _Chain_Tail( the_chain ); head->next = tail; head->previous = NULL; 4a054: 42a8 0050 clrl %a0@(80) */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain ) { Chain_Node *head = _Chain_Head( the_chain ); 4a058: 2149 0054 movel %a1,%a0@(84) * NOTE: Root node is always a directory. */ rtems_chain_initialize_empty(&node->info.directory.Entries); return node; } 4a05c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00044fba : * NOTE: Assuming the "/" directory is bad. * Not checking that the starting directory is in an IMFS is bad. */ void IMFS_dump( void ) { 44fba: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED fprintf(stdout, "*************** Dump of Entire IMFS ***************\n" ); 44fbe: 2079 0006 31a0 moveal 631a0 <_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 2f2c lea 52f2c ,%a2 <== NOT EXECUTED 44fd0: 4878 0034 pea 34 <== NOT EXECUTED 44fd4: 4878 0001 pea 1 <== NOT EXECUTED 44fd8: 4879 0006 1a76 pea 61a76 <== NOT EXECUTED 44fde: 4e92 jsr %a2@ <== NOT EXECUTED fprintf(stdout, "/\n" ); 44fe0: 2079 0006 31a0 moveal 631a0 <_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 1aab pea 61aab <== 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 3120 moveal 63120 ,%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 31a0 moveal 631a0 <_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 1aae pea 61aae <== NOT EXECUTED 45028: 4e92 jsr %a2@ <== NOT EXECUTED } 4502a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED void IMFS_dump( void ) { fprintf(stdout, "*************** Dump of Entire IMFS ***************\n" ); fprintf(stdout, "/\n" ); IMFS_dump_directory( rtems_filesystem_root.node_access, 0 ); fprintf(stdout, "*************** End of Dump ***************\n" ); 4502e: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED } 45032: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00044f2c : */ void IMFS_dump_directory( IMFS_jnode_t *the_directory, int level ) { 44f2c: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 44f30: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 44f34: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@ <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Chain_Is_tail( Chain_Control *the_chain, const Chain_Node *the_node ) { return (the_node == _Chain_Tail(the_chain)); 44f38: 2808 movel %a0,%d4 <== NOT EXECUTED 44f3a: 0684 0000 0050 addil #80,%d4 <== NOT EXECUTED 44f40: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED * */ int IMFS_memfile_maximum_size( void ) { return IMFS_MEMFILE_MAXIMUM_SIZE; } 44f44: 2668 004c moveal %a0@(76),%a3 <== NOT EXECUTED IMFS_assert( level >= 0 ); IMFS_assert( the_directory->type == IMFS_DIRECTORY ); the_chain = &the_directory->info.directory.Entries; for ( the_node = rtems_chain_first( the_chain ); 44f48: b88b cmpl %a3,%d4 <== NOT EXECUTED 44f4a: 6754 beqs 44fa0 <== NOT EXECUTED for ( i=0 ; i<=level ; i++ ) fprintf(stdout, "...." ); IMFS_print_jnode( the_jnode ); if ( the_jnode->type == IMFS_DIRECTORY ) IMFS_dump_directory( the_jnode, level + 1 ); 44f4c: 2a03 movel %d3,%d5 <== NOT EXECUTED 44f4e: 49f9 0004 4da0 lea 44da0 ,%a4 <== NOT EXECUTED 44f54: 45f9 0005 2f2c lea 52f2c ,%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 31a0 moveal 631a0 <_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 1a71 pea 61a71 <== NOT EXECUTED 44f82: 4e92 jsr %a2@ <== NOT EXECUTED !rtems_chain_is_tail( the_chain, the_node ); the_node = the_node->next ) { the_jnode = (IMFS_jnode_t *) the_node; for ( i=0 ; i<=level ; i++ ) 44f84: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 44f88: b483 cmpl %d3,%d2 <== NOT EXECUTED 44f8a: 6fdc bles 44f68 <== NOT EXECUTED fprintf(stdout, "...." ); IMFS_print_jnode( the_jnode ); 44f8c: 2f0b movel %a3,%sp@- <== NOT EXECUTED 44f8e: 4e94 jsr %a4@ <== NOT EXECUTED if ( the_jnode->type == IMFS_DIRECTORY ) 44f90: 588f addql #4,%sp <== NOT EXECUTED 44f92: 7001 moveq #1,%d0 <== NOT EXECUTED 44f94: b0ab 0048 cmpl %a3@(72),%d0 <== NOT EXECUTED 44f98: 6710 beqs 44faa <== NOT EXECUTED the_chain = &the_directory->info.directory.Entries; for ( the_node = rtems_chain_first( the_chain ); !rtems_chain_is_tail( the_chain, the_node ); the_node = the_node->next ) { 44f9a: 2653 moveal %a3@,%a3 <== NOT EXECUTED IMFS_assert( level >= 0 ); IMFS_assert( the_directory->type == IMFS_DIRECTORY ); the_chain = &the_directory->info.directory.Entries; for ( the_node = rtems_chain_first( the_chain ); 44f9c: b88b cmpl %a3,%d4 <== NOT EXECUTED 44f9e: 66c2 bnes 44f62 <== NOT EXECUTED fprintf(stdout, "...." ); IMFS_print_jnode( the_jnode ); if ( the_jnode->type == IMFS_DIRECTORY ) IMFS_dump_directory( the_jnode, level + 1 ); } } 44fa0: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED 44fa6: 4e5e unlk %fp <== NOT EXECUTED 44fa8: 4e75 rts <== NOT EXECUTED for ( i=0 ; i<=level ; i++ ) fprintf(stdout, "...." ); IMFS_print_jnode( the_jnode ); if ( the_jnode->type == IMFS_DIRECTORY ) IMFS_dump_directory( the_jnode, level + 1 ); 44faa: 2f05 movel %d5,%sp@- <== NOT EXECUTED 44fac: 2f0b movel %a3,%sp@- <== NOT EXECUTED 44fae: 4e95 jsr %a5@ <== NOT EXECUTED the_chain = &the_directory->info.directory.Entries; for ( the_node = rtems_chain_first( the_chain ); !rtems_chain_is_tail( the_chain, the_node ); the_node = the_node->next ) { 44fb0: 2653 moveal %a3@,%a3 <== NOT EXECUTED for ( i=0 ; i<=level ; i++ ) fprintf(stdout, "...." ); IMFS_print_jnode( the_jnode ); if ( the_jnode->type == IMFS_DIRECTORY ) IMFS_dump_directory( the_jnode, level + 1 ); 44fb2: 508f addql #8,%sp <== NOT EXECUTED IMFS_assert( level >= 0 ); IMFS_assert( the_directory->type == IMFS_DIRECTORY ); the_chain = &the_directory->info.directory.Entries; for ( the_node = rtems_chain_first( the_chain ); 44fb4: b88b cmpl %a3,%d4 <== NOT EXECUTED 44fb6: 66aa bnes 44f62 <== NOT EXECUTED 44fb8: 60e6 bras 44fa0 <== NOT EXECUTED =============================================================================== 0004a170 : 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 ) ) { 4a170: 70f8 moveq #-8,%d0 const char *pathname, /* IN */ size_t pathnamelen, /* IN */ int flags, /* IN */ rtems_filesystem_location_info_t *pathloc /* IN/OUT */ ) { 4a172: 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 ) ) { 4a176: 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 */ ) { 4a17a: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ 4a17e: 2a6e 0008 moveal %fp@(8),%a5 4a182: 246e 000c moveal %fp@(12),%a2 4a186: 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 ) ) { 4a18a: 4a80 tstl %d0 4a18c: 6600 0238 bnew 4a3c6 4a190: 2c0e movel %fp,%d6 4a192: 280e movel %fp,%d4 size_t pathnamelen, /* IN */ int flags, /* IN */ rtems_filesystem_location_info_t *pathloc /* IN/OUT */ ) { int i = 0; 4a194: 4282 clrl %d2 4a196: 5986 subql #4,%d6 4a198: 0684 ffff ffdb addil #-37,%d4 4a19e: 2a3c 0004 a904 movel #305412,%d5 } /* * Otherwise find the token name in the present location. */ node = IMFS_find_match_in_dir( node, token ); 4a1a4: 2e3c 0004 a880 movel #305280,%d7 /* * This was filled in by the caller and is valid in the * mount table. */ node = pathloc->node_access; 4a1aa: 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 ); 4a1ac: 2f06 movel %d6,%sp@- 4a1ae: 2045 moveal %d5,%a0 4a1b0: 2f04 movel %d4,%sp@- 4a1b2: 2f0a movel %a2,%sp@- 4a1b4: 4875 2800 pea %a5@(00000000,%d2:l) 4a1b8: 4e90 jsr %a0@ pathnamelen -= len; i += len; if ( !pathloc->node_access ) 4a1ba: 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 ); 4a1bc: 2600 movel %d0,%d3 pathnamelen -= len; i += len; if ( !pathloc->node_access ) 4a1be: 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; 4a1c2: 202e fffc movel %fp@(-4),%d0 i += len; if ( !pathloc->node_access ) 4a1c6: 4a88 tstl %a0 4a1c8: 6700 00f8 beqw 4a2c2 */ while( (type != IMFS_NO_MORE_PATH) && (type != IMFS_INVALID_TOKEN) ) { type = IMFS_get_token( &pathname[i], pathnamelen, token, &len ); pathnamelen -= len; 4a1cc: 95c0 subal %d0,%a2 i += len; 4a1ce: 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 ) 4a1d0: 4a83 tstl %d3 4a1d2: 6662 bnes 4a236 * 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 ) { 4a1d4: 7201 moveq #1,%d1 4a1d6: b2a8 0048 cmpl %a0@(72),%d1 4a1da: 6600 0132 bnew 4a30e if ( node->info.directory.mt_fs != NULL ) { 4a1de: 2068 0058 moveal %a0@(88),%a0 4a1e2: 4a88 tstl %a0 4a1e4: 6700 0128 beqw 4a30e 4a1e8: 28a8 001c movel %a0@(28),%a4@ <== NOT EXECUTED 4a1ec: 2268 0028 moveal %a0@(40),%a1 <== NOT EXECUTED 4a1f0: 2628 0020 movel %a0@(32),%d3 <== NOT EXECUTED 4a1f4: 2228 0024 movel %a0@(36),%d1 <== NOT EXECUTED 4a1f8: 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], 4a1fc: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4a1fe: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4a202: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED 4a206: 4872 8800 pea %a2@(00000000,%a0:l) <== NOT EXECUTED 4a20a: 9488 subl %a0,%d2 <== NOT EXECUTED 4a20c: 4875 2800 pea %a5@(00000000,%d2:l) <== NOT EXECUTED 4a210: 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 ) { 4a212: 2943 0004 movel %d3,%a4@(4) <== NOT EXECUTED 4a216: 2941 0008 movel %d1,%a4@(8) <== NOT EXECUTED 4a21a: 2949 000c movel %a1,%a4@(12) <== NOT EXECUTED 4a21e: 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], 4a222: 4e90 jsr %a0@ <== NOT EXECUTED 4a224: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4a228: 2600 movel %d0,%d3 <== NOT EXECUTED if ( !IMFS_evaluate_permission( pathloc, flags ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a22a: 2003 movel %d3,%d0 4a22c: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 4a232: 4e5e unlk %fp 4a234: 4e75 rts /* * I cannot move out of this directory without execute permission. */ if ( type != IMFS_NO_MORE_PATH ) if ( node->type == IMFS_DIRECTORY ) 4a236: 7001 moveq #1,%d0 4a238: b0ab 0048 cmpl %a3@(72),%d0 4a23c: 6700 00b8 beqw 4a2f6 if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_SEARCH ) ) rtems_set_errno_and_return_minus_one( EACCES ); node = pathloc->node_access; 4a240: 2648 moveal %a0,%a3 switch( type ) { 4a242: 7003 moveq #3,%d0 4a244: b083 cmpl %d3,%d0 4a246: 671c beqs 4a264 4a248: 7204 moveq #4,%d1 4a24a: b283 cmpl %d3,%d1 4a24c: 6700 008e beqw 4a2dc 4a250: 103c 0002 moveb #2,%d0 4a254: b083 cmpl %d3,%d0 4a256: 6748 beqs 4a2a0 <== NEVER TAKEN /* * Evaluate all tokens until we are done or an error occurs. */ while( (type != IMFS_NO_MORE_PATH) && (type != IMFS_INVALID_TOKEN) ) { 4a258: 7004 moveq #4,%d0 4a25a: b083 cmpl %d3,%d0 4a25c: 6600 ff4e bnew 4a1ac 4a260: 6000 ff72 braw 4a1d4 <== NOT EXECUTED case IMFS_NAME: /* * If we are at a link follow it. */ if ( node->type == IMFS_HARD_LINK ) { 4a264: 2028 0048 movel %a0@(72),%d0 4a268: 7203 moveq #3,%d1 4a26a: b280 cmpl %d0,%d1 4a26c: 6700 00d8 beqw 4a346 * It would be a design error if we evaluated the link and * was broken. */ IMFS_assert( node ); } else if ( node->type == IMFS_SYM_LINK ) { 4a270: 7204 moveq #4,%d1 4a272: b280 cmpl %d0,%d1 4a274: 6700 0134 beqw 4a3aa } /* * Only a directory can be decended into. */ if ( node->type != IMFS_DIRECTORY ) 4a278: 7201 moveq #1,%d1 4a27a: b280 cmpl %d0,%d1 4a27c: 6600 0162 bnew 4a3e0 /* * 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 ) { 4a280: 206b 0058 moveal %a3@(88),%a0 4a284: 4a88 tstl %a0 4a286: 6600 ff60 bnew 4a1e8 } /* * Otherwise find the token name in the present location. */ node = IMFS_find_match_in_dir( node, token ); 4a28a: 2f04 movel %d4,%sp@- 4a28c: 2047 moveal %d7,%a0 4a28e: 2f0b movel %a3,%sp@- 4a290: 4e90 jsr %a0@ if ( !node ) 4a292: 508f addql #8,%sp } /* * Otherwise find the token name in the present location. */ node = IMFS_find_match_in_dir( node, token ); 4a294: 2640 moveal %d0,%a3 if ( !node ) 4a296: 4a80 tstl %d0 4a298: 6728 beqs 4a2c2 <== NEVER TAKEN /* * Set the node access to the point we have found. */ pathloc->node_access = node; 4a29a: 288b movel %a3,%a4@ 4a29c: 6000 ff0e braw 4a1ac case IMFS_UP_DIR: /* * Am I at the root of all filesystems? (chroot'ed?) */ if ( pathloc->node_access == rtems_filesystem_root.node_access ) 4a2a0: 2279 0005 ce80 moveal 5ce80 ,%a1 <== NOT EXECUTED 4a2a6: b1e9 0018 cmpal %a1@(24),%a0 <== NOT EXECUTED 4a2aa: 6700 ff00 beqw 4a1ac <== NOT EXECUTED /* * Am I at the root of this mounted filesystem? */ if (pathloc->node_access == pathloc->mt_entry->mt_fs_root.node_access) { 4a2ae: 226c 0010 moveal %a4@(16),%a1 <== NOT EXECUTED /* * Am I at the root of this mounted filesystem? */ if (pathloc->node_access == 4a2b2: b1e9 001c cmpal %a1@(28),%a0 <== NOT EXECUTED 4a2b6: 6700 00a4 beqw 4a35c <== NOT EXECUTED pathnamelen+len, flags,pathloc); } } else { if ( !node->Parent ) 4a2ba: 2668 0008 moveal %a0@(8),%a3 <== NOT EXECUTED 4a2be: 4a8b tstl %a3 <== NOT EXECUTED 4a2c0: 66d8 bnes 4a29a <== 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 ); 4a2c2: 4eb9 0004 d8e4 jsr 4d8e4 <__errno> 4a2c8: 76ff moveq #-1,%d3 4a2ca: 7a02 moveq #2,%d5 4a2cc: 2040 moveal %d0,%a0 if ( !IMFS_evaluate_permission( pathloc, flags ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a2ce: 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 ); 4a2d0: 2085 movel %d5,%a0@ if ( !IMFS_evaluate_permission( pathloc, flags ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a2d2: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 4a2d8: 4e5e unlk %fp 4a2da: 4e75 rts case IMFS_NO_MORE_PATH: case IMFS_CURRENT_DIR: break; case IMFS_INVALID_TOKEN: rtems_set_errno_and_return_minus_one( ENAMETOOLONG ); 4a2dc: 4eb9 0004 d8e4 jsr 4d8e4 <__errno> <== NOT EXECUTED 4a2e2: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a2e4: 785b moveq #91,%d4 <== NOT EXECUTED 4a2e6: 2040 moveal %d0,%a0 <== NOT EXECUTED if ( !IMFS_evaluate_permission( pathloc, flags ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a2e8: 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 ); 4a2ea: 2084 movel %d4,%a0@ <== NOT EXECUTED if ( !IMFS_evaluate_permission( pathloc, flags ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a2ec: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a2f2: 4e5e unlk %fp <== NOT EXECUTED 4a2f4: 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 ) ) 4a2f6: 4878 0001 pea 1 4a2fa: 2f0c movel %a4,%sp@- 4a2fc: 4eb9 0004 a0ea jsr 4a0ea 4a302: 508f addql #8,%sp 4a304: 4a80 tstl %d0 4a306: 6724 beqs 4a32c <== NEVER TAKEN 4a308: 2054 moveal %a4@,%a0 4a30a: 6000 ff34 braw 4a240 flags, pathloc ); } else { result = IMFS_Set_handlers( pathloc ); } } else { result = IMFS_Set_handlers( pathloc ); 4a30e: 2f0c movel %a4,%sp@- 4a310: 4eb9 0004 a060 jsr 4a060 /* * Verify we have the correct permissions for this node. */ if ( !IMFS_evaluate_permission( pathloc, flags ) ) 4a316: 2eae 0010 movel %fp@(16),%sp@ flags, pathloc ); } else { result = IMFS_Set_handlers( pathloc ); } } else { result = IMFS_Set_handlers( pathloc ); 4a31a: 2600 movel %d0,%d3 /* * Verify we have the correct permissions for this node. */ if ( !IMFS_evaluate_permission( pathloc, flags ) ) 4a31c: 2f0c movel %a4,%sp@- 4a31e: 4eb9 0004 a0ea jsr 4a0ea 4a324: 508f addql #8,%sp 4a326: 4a80 tstl %d0 4a328: 6600 ff00 bnew 4a22a rtems_set_errno_and_return_minus_one( EACCES ); 4a32c: 4eb9 0004 d8e4 jsr 4d8e4 <__errno> <== NOT EXECUTED 4a332: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a334: 740d moveq #13,%d2 <== NOT EXECUTED 4a336: 2040 moveal %d0,%a0 <== NOT EXECUTED return result; } 4a338: 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 ); 4a33a: 2082 movel %d2,%a0@ <== NOT EXECUTED return result; } 4a33c: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a342: 4e5e unlk %fp <== NOT EXECUTED 4a344: 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 ); 4a346: 42a7 clrl %sp@- <== NOT EXECUTED 4a348: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4a34a: 4eb9 0004 a124 jsr 4a124 <== NOT EXECUTED node = pathloc->node_access; 4a350: 2654 moveal %a4@,%a3 <== NOT EXECUTED 4a352: 508f addql #8,%sp <== NOT EXECUTED 4a354: 202b 0048 movel %a3@(72),%d0 <== NOT EXECUTED 4a358: 6000 ff1e braw 4a278 <== NOT EXECUTED /* * Am I at the root of this mounted filesystem? */ if (pathloc->node_access == 4a35c: 28a9 0008 movel %a1@(8),%a4@ <== NOT EXECUTED 4a360: 2069 0014 moveal %a1@(20),%a0 <== NOT EXECUTED 4a364: 2629 000c movel %a1@(12),%d3 <== NOT EXECUTED 4a368: 2229 0010 movel %a1@(16),%d1 <== NOT EXECUTED 4a36c: 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]), 4a370: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4a372: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4a376: 226e fffc moveal %fp@(-4),%a1 <== NOT EXECUTED 4a37a: 4872 9800 pea %a2@(00000000,%a1:l) <== NOT EXECUTED 4a37e: 9489 subl %a1,%d2 <== NOT EXECUTED 4a380: 4875 2800 pea %a5@(00000000,%d2:l) <== NOT EXECUTED 4a384: 2250 moveal %a0@,%a1 <== NOT EXECUTED /* * Am I at the root of this mounted filesystem? */ if (pathloc->node_access == 4a386: 2943 0004 movel %d3,%a4@(4) <== NOT EXECUTED 4a38a: 2941 0008 movel %d1,%a4@(8) <== NOT EXECUTED 4a38e: 2948 000c movel %a0,%a4@(12) <== NOT EXECUTED 4a392: 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]), 4a396: 4e91 jsr %a1@ <== NOT EXECUTED 4a398: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4a39c: 2600 movel %d0,%d3 <== NOT EXECUTED if ( !IMFS_evaluate_permission( pathloc, flags ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a39e: 2003 movel %d3,%d0 <== NOT EXECUTED 4a3a0: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a3a6: 4e5e unlk %fp <== NOT EXECUTED 4a3a8: 4e75 rts <== NOT EXECUTED * was broken. */ IMFS_assert( node ); } else if ( node->type == IMFS_SYM_LINK ) { result = IMFS_evaluate_sym_link( pathloc, 0 ); 4a3aa: 42a7 clrl %sp@- <== NOT EXECUTED 4a3ac: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4a3ae: 4eb9 0004 a408 jsr 4a408 <== NOT EXECUTED /* * In contrast to a hard link, it is possible to have a broken * symbolic link. */ node = pathloc->node_access; 4a3b4: 2654 moveal %a4@,%a3 <== NOT EXECUTED if ( result == -1 ) 4a3b6: 508f addql #8,%sp <== NOT EXECUTED 4a3b8: 72ff moveq #-1,%d1 <== NOT EXECUTED 4a3ba: b280 cmpl %d0,%d1 <== NOT EXECUTED 4a3bc: 673c beqs 4a3fa <== NOT EXECUTED /* * In contrast to a hard link, it is possible to have a broken * symbolic link. */ node = pathloc->node_access; 4a3be: 202b 0048 movel %a3@(72),%d0 <== NOT EXECUTED 4a3c2: 6000 feb4 braw 4a278 <== 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 ); 4a3c6: 4eb9 0004 d8e4 jsr 4d8e4 <__errno> <== NOT EXECUTED 4a3cc: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a3ce: 7e05 moveq #5,%d7 <== NOT EXECUTED 4a3d0: 2040 moveal %d0,%a0 <== NOT EXECUTED if ( !IMFS_evaluate_permission( pathloc, flags ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a3d2: 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 ); 4a3d4: 2087 movel %d7,%a0@ <== NOT EXECUTED if ( !IMFS_evaluate_permission( pathloc, flags ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a3d6: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a3dc: 4e5e unlk %fp <== NOT EXECUTED 4a3de: 4e75 rts <== NOT EXECUTED /* * Only a directory can be decended into. */ if ( node->type != IMFS_DIRECTORY ) rtems_set_errno_and_return_minus_one( ENOTDIR ); 4a3e0: 4eb9 0004 d8e4 jsr 4d8e4 <__errno> <== NOT EXECUTED 4a3e6: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a3e8: 7c14 moveq #20,%d6 <== NOT EXECUTED 4a3ea: 2040 moveal %d0,%a0 <== NOT EXECUTED if ( !IMFS_evaluate_permission( pathloc, flags ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a3ec: 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 ); 4a3ee: 2086 movel %d6,%a0@ <== NOT EXECUTED if ( !IMFS_evaluate_permission( pathloc, flags ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a3f0: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a3f6: 4e5e unlk %fp <== NOT EXECUTED 4a3f8: 4e75 rts <== NOT EXECUTED 4a3fa: 2600 movel %d0,%d3 <== NOT EXECUTED 4a3fc: 2003 movel %d3,%d0 <== NOT EXECUTED 4a3fe: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a404: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004a54a : int IMFS_evaluate_for_make( const char *path, /* IN */ rtems_filesystem_location_info_t *pathloc, /* IN/OUT */ const char **name /* OUT */ ) { 4a54a: 4e56 ffb0 linkw %fp,#-80 4a54e: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ 4a552: 286e 0008 moveal %fp@(8),%a4 4a556: 2e0e movel %fp,%d7 4a558: 2c0e movel %fp,%d6 int i = 0; 4a55a: 4284 clrl %d4 4a55c: 5987 subql #4,%d7 4a55e: 0686 ffff ffdb addil #-37,%d6 4a564: 4bf9 0004 a904 lea 4a904 ,%a5 node = pathloc->node_access; /* * Get the path length. */ pathlen = strlen( path ); 4a56a: 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 */ ) { 4a56c: 266e 000c moveal %fp@(12),%a3 node = pathloc->node_access; /* * Get the path length. */ pathlen = strlen( path ); 4a570: 4eb9 0004 ed3c jsr 4ed3c /* * This was filled in by the caller and is valid in the * mount table. */ node = pathloc->node_access; 4a576: 2453 moveal %a3@,%a2 /* * Get the path length. */ pathlen = strlen( path ); 4a578: 588f addql #4,%sp 4a57a: 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 ); 4a57c: 2f07 movel %d7,%sp@- 4a57e: 2f06 movel %d6,%sp@- 4a580: 2f02 movel %d2,%sp@- 4a582: 4874 4800 pea %a4@(00000000,%d4:l) 4a586: 4e95 jsr %a5@ pathlen -= len; 4a588: 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 ); 4a58c: 2600 movel %d0,%d3 pathlen -= len; i += len; if ( !pathloc->node_access ) 4a58e: 4fef 0010 lea %sp@(16),%sp */ while( !done ) { type = IMFS_get_token( &path[i], pathlen, token, &len ); pathlen -= len; 4a592: 9485 subl %d5,%d2 i += len; if ( !pathloc->node_access ) 4a594: 2053 moveal %a3@,%a0 4a596: 4a88 tstl %a0 4a598: 6700 00ca beqw 4a664 /* * I cannot move out of this directory without execute permission. */ if ( type != IMFS_NO_MORE_PATH ) 4a59c: 4a80 tstl %d0 4a59e: 6742 beqs 4a5e2 if ( node->type == IMFS_DIRECTORY ) 4a5a0: 7001 moveq #1,%d0 4a5a2: b0aa 0048 cmpl %a2@(72),%d0 4a5a6: 6700 00d6 beqw 4a67e while( !done ) { type = IMFS_get_token( &path[i], pathlen, token, &len ); pathlen -= len; i += len; 4a5aa: 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; 4a5ac: 2448 moveal %a0,%a2 switch( type ) { 4a5ae: 7002 moveq #2,%d0 4a5b0: b083 cmpl %d3,%d0 4a5b2: 6700 008e beqw 4a642 4a5b6: 6426 bccs 4a5de 4a5b8: 7203 moveq #3,%d1 4a5ba: b283 cmpl %d3,%d1 4a5bc: 673e beqs 4a5fc <== ALWAYS TAKEN 4a5be: 7004 moveq #4,%d0 <== NOT EXECUTED 4a5c0: b083 cmpl %d3,%d0 <== NOT EXECUTED 4a5c2: 66b8 bnes 4a57c <== 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 ); 4a5c4: 4eb9 0004 d8e4 jsr 4d8e4 <__errno> <== NOT EXECUTED 4a5ca: 7c5b moveq #91,%d6 <== NOT EXECUTED 4a5cc: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a5ce: 2040 moveal %d0,%a0 <== NOT EXECUTED 4a5d0: 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; } 4a5d2: 2003 movel %d3,%d0 4a5d4: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 4a5da: 4e5e unlk %fp 4a5dc: 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 ) { 4a5de: 4a83 tstl %d3 4a5e0: 669a bnes 4a57c <== ALWAYS TAKEN pathloc->node_access = node; break; case IMFS_NO_MORE_PATH: rtems_set_errno_and_return_minus_one( EEXIST ); 4a5e2: 4eb9 0004 d8e4 jsr 4d8e4 <__errno> 4a5e8: 76ff moveq #-1,%d3 4a5ea: 7e11 moveq #17,%d7 4a5ec: 2040 moveal %d0,%a0 if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_WX ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a5ee: 2003 movel %d3,%d0 pathloc->node_access = node; break; case IMFS_NO_MORE_PATH: rtems_set_errno_and_return_minus_one( EEXIST ); 4a5f0: 2087 movel %d7,%a0@ if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_WX ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a5f2: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 4a5f8: 4e5e unlk %fp 4a5fa: 4e75 rts pathloc->node_access = node; break; case IMFS_NAME: if ( node->type == IMFS_HARD_LINK ) { 4a5fc: 2028 0048 movel %a0@(72),%d0 4a600: 7203 moveq #3,%d1 4a602: b280 cmpl %d0,%d1 4a604: 6700 014e beqw 4a754 result = IMFS_evaluate_link( pathloc, 0 ); if ( result == -1 ) return -1; } else if ( node->type == IMFS_SYM_LINK ) { 4a608: 7204 moveq #4,%d1 4a60a: b280 cmpl %d0,%d1 4a60c: 6700 0146 beqw 4a754 if ( result == -1 ) return -1; } node = pathloc->node_access; if ( !node ) 4a610: 4a8a tstl %a2 4a612: 6700 015c beqw 4a770 /* * Only a directory can be decended into. */ if ( node->type != IMFS_DIRECTORY ) 4a616: 7001 moveq #1,%d0 4a618: b0aa 0048 cmpl %a2@(72),%d0 4a61c: 6600 0152 bnew 4a770 /* * 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 ) { 4a620: 206a 0058 moveal %a2@(88),%a0 4a624: 4a88 tstl %a0 4a626: 6600 0162 bnew 4a78a /* * Otherwise find the token name in the present location. */ node = IMFS_find_match_in_dir( node, token ); 4a62a: 2f06 movel %d6,%sp@- 4a62c: 2f0a movel %a2,%sp@- 4a62e: 4eb9 0004 a880 jsr 4a880 /* * If there is no node we have found the name of the node we * wish to create. */ if ( ! node ) 4a634: 508f addql #8,%sp /* * Otherwise find the token name in the present location. */ node = IMFS_find_match_in_dir( node, token ); 4a636: 2440 moveal %d0,%a2 /* * If there is no node we have found the name of the node we * wish to create. */ if ( ! node ) 4a638: 4a80 tstl %d0 4a63a: 675a beqs 4a696 done = true; else pathloc->node_access = node; 4a63c: 268a movel %a2,%a3@ 4a63e: 6000 ff3c braw 4a57c case IMFS_UP_DIR: /* * Am I at the root of all filesystems? (chroot'ed?) */ if ( pathloc->node_access == rtems_filesystem_root.node_access ) 4a642: 2279 0005 ce80 moveal 5ce80 ,%a1 <== NOT EXECUTED 4a648: b1e9 0018 cmpal %a1@(24),%a0 <== NOT EXECUTED 4a64c: 6700 ff2e beqw 4a57c <== NOT EXECUTED /* * Am I at the root of this mounted filesystem? */ if (pathloc->node_access == pathloc->mt_entry->mt_fs_root.node_access){ 4a650: 226b 0010 moveal %a3@(16),%a1 <== NOT EXECUTED 4a654: b1e9 001c cmpal %a1@(28),%a0 <== NOT EXECUTED 4a658: 6700 00b0 beqw 4a70a <== NOT EXECUTED *pathloc = newloc; return (*pathloc->ops->evalformake_h)( &path[i-len], pathloc, name ); } } else { if ( !node->Parent ) 4a65c: 2468 0008 moveal %a0@(8),%a2 <== NOT EXECUTED 4a660: 4a8a tstl %a2 <== NOT EXECUTED 4a662: 66d8 bnes 4a63c <== 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 ); 4a664: 4eb9 0004 d8e4 jsr 4d8e4 <__errno> <== NOT EXECUTED 4a66a: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a66c: 7a02 moveq #2,%d5 <== NOT EXECUTED 4a66e: 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; } 4a670: 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 ); 4a672: 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; } 4a674: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a67a: 4e5e unlk %fp <== NOT EXECUTED 4a67c: 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 ) ) 4a67e: 4878 0001 pea 1 4a682: 2f0b movel %a3,%sp@- 4a684: 4eb9 0004 a0ea jsr 4a0ea 4a68a: 508f addql #8,%sp 4a68c: 4a80 tstl %d0 4a68e: 6760 beqs 4a6f0 <== NEVER TAKEN 4a690: 2053 moveal %a3@,%a0 4a692: 6000 ff16 braw 4a5aa case IMFS_CURRENT_DIR: break; } } *name = &path[ i - len ]; 4a696: 2004 movel %d4,%d0 4a698: 90ae fffc subl %fp@(-4),%d0 4a69c: d08c addl %a4,%d0 4a69e: 206e 0010 moveal %fp@(16),%a0 4a6a2: 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++) { 4a6a4: 1034 4800 moveb %a4@(00000000,%d4:l),%d0 4a6a8: 671a beqs 4a6c4 <== ALWAYS TAKEN 4a6aa: 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( 4a6b0: 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 ] ) ) 4a6b4: 49c0 extbl %d0 <== NOT EXECUTED 4a6b6: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4a6b8: 4e95 jsr %a5@ <== NOT EXECUTED 4a6ba: 588f addql #4,%sp <== NOT EXECUTED 4a6bc: 4a80 tstl %d0 <== NOT EXECUTED 4a6be: 67a4 beqs 4a664 <== 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++) { 4a6c0: 101a moveb %a2@+,%d0 <== NOT EXECUTED 4a6c2: 66f0 bnes 4a6b4 <== NOT EXECUTED /* * Verify we can execute and write to this directory. */ result = IMFS_Set_handlers( pathloc ); 4a6c4: 2f0b movel %a3,%sp@- 4a6c6: 4eb9 0004 a060 jsr 4a060 /* * The returned node must be a directory */ node = pathloc->node_access; if ( node->type != IMFS_DIRECTORY ) 4a6cc: 2053 moveal %a3@,%a0 /* * Verify we can execute and write to this directory. */ result = IMFS_Set_handlers( pathloc ); 4a6ce: 2600 movel %d0,%d3 /* * The returned node must be a directory */ node = pathloc->node_access; if ( node->type != IMFS_DIRECTORY ) 4a6d0: 588f addql #4,%sp 4a6d2: 7001 moveq #1,%d0 4a6d4: b0a8 0048 cmpl %a0@(72),%d0 4a6d8: 6600 0096 bnew 4a770 /* * We must have Write and execute permission on the returned node. */ if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_WX ) ) 4a6dc: 4878 0003 pea 3 4a6e0: 2f0b movel %a3,%sp@- 4a6e2: 4eb9 0004 a0ea jsr 4a0ea 4a6e8: 508f addql #8,%sp 4a6ea: 4a80 tstl %d0 4a6ec: 6600 fee4 bnew 4a5d2 rtems_set_errno_and_return_minus_one( EACCES ); 4a6f0: 4eb9 0004 d8e4 jsr 4d8e4 <__errno> <== NOT EXECUTED 4a6f6: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a6f8: 740d moveq #13,%d2 <== NOT EXECUTED 4a6fa: 2040 moveal %d0,%a0 <== NOT EXECUTED return result; } 4a6fc: 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 ); 4a6fe: 2082 movel %d2,%a0@ <== NOT EXECUTED return result; } 4a700: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a706: 4e5e unlk %fp <== NOT EXECUTED 4a708: 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){ 4a70a: 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 ); 4a70e: 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){ 4a712: 26a9 0008 movel %a1@(8),%a3@ <== NOT EXECUTED 4a716: 2069 0014 moveal %a1@(20),%a0 <== NOT EXECUTED 4a71a: 2229 0010 movel %a1@(16),%d1 <== NOT EXECUTED 4a71e: 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 ); 4a722: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4a726: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4a728: 4874 4800 pea %a4@(00000000,%d4:l) <== NOT EXECUTED 4a72c: 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){ 4a730: 2742 0004 movel %d2,%a3@(4) <== NOT EXECUTED 4a734: 2741 0008 movel %d1,%a3@(8) <== NOT EXECUTED 4a738: 2748 000c movel %a0,%a3@(12) <== NOT EXECUTED 4a73c: 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 ); 4a740: 4e91 jsr %a1@ <== NOT EXECUTED 4a742: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4a746: 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; } 4a748: 2003 movel %d3,%d0 <== NOT EXECUTED 4a74a: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a750: 4e5e unlk %fp <== NOT EXECUTED 4a752: 4e75 rts <== NOT EXECUTED if ( result == -1 ) return -1; } else if ( node->type == IMFS_SYM_LINK ) { result = IMFS_evaluate_link( pathloc, 0 ); 4a754: 42a7 clrl %sp@- <== NOT EXECUTED 4a756: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4a758: 4eb9 0004 a490 jsr 4a490 <== NOT EXECUTED if ( result == -1 ) 4a75e: 508f addql #8,%sp <== NOT EXECUTED if ( result == -1 ) return -1; } else if ( node->type == IMFS_SYM_LINK ) { result = IMFS_evaluate_link( pathloc, 0 ); 4a760: 2600 movel %d0,%d3 <== NOT EXECUTED if ( result == -1 ) 4a762: 70ff moveq #-1,%d0 <== NOT EXECUTED 4a764: b083 cmpl %d3,%d0 <== NOT EXECUTED 4a766: 6700 fe6a beqw 4a5d2 <== NOT EXECUTED 4a76a: 2453 moveal %a3@,%a2 <== NOT EXECUTED 4a76c: 6000 fea2 braw 4a610 <== 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 ); 4a770: 4eb9 0004 d8e4 jsr 4d8e4 <__errno> <== NOT EXECUTED 4a776: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a778: 7814 moveq #20,%d4 <== NOT EXECUTED 4a77a: 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; } 4a77c: 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 ); 4a77e: 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; } 4a780: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a786: 4e5e unlk %fp <== NOT EXECUTED 4a788: 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 ) { 4a78a: 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 ); 4a78e: 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 ) { 4a792: 26a8 001c movel %a0@(28),%a3@ <== NOT EXECUTED 4a796: 2268 0028 moveal %a0@(40),%a1 <== NOT EXECUTED 4a79a: 2228 0024 movel %a0@(36),%d1 <== NOT EXECUTED 4a79e: 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 ); 4a7a2: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 4a7a6: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4a7a8: 4874 4800 pea %a4@(00000000,%d4:l) <== NOT EXECUTED 4a7ac: 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 ) { 4a7b0: 2742 0004 movel %d2,%a3@(4) <== NOT EXECUTED 4a7b4: 2741 0008 movel %d1,%a3@(8) <== NOT EXECUTED 4a7b8: 2749 000c movel %a1,%a3@(12) <== NOT EXECUTED 4a7bc: 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 ); 4a7c0: 4e90 jsr %a0@ <== NOT EXECUTED 4a7c2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4a7c6: 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; } 4a7c8: 2003 movel %d3,%d0 <== NOT EXECUTED 4a7ca: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4a7d0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004a124 : int IMFS_evaluate_hard_link( rtems_filesystem_location_info_t *node, /* IN/OUT */ int flags /* IN */ ) { 4a124: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4a128: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a12a: 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; 4a12e: 2052 moveal %a2@,%a0 <== NOT EXECUTED 4a130: 24a8 004c movel %a0@(76),%a2@ <== NOT EXECUTED IMFS_Set_handlers( node ); 4a134: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a136: 4eb9 0004 a060 jsr 4a060 <== NOT EXECUTED /* * Verify we have the correct permissions for this node. */ if ( !IMFS_evaluate_permission( node, flags ) ) 4a13c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4a140: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a142: 4eb9 0004 a0ea jsr 4a0ea <== NOT EXECUTED 4a148: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4a14c: 4a80 tstl %d0 <== NOT EXECUTED 4a14e: 670a beqs 4a15a <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a150: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED */ if ( !IMFS_evaluate_permission( node, flags ) ) rtems_set_errno_and_return_minus_one( EACCES ); return result; 4a154: 4280 clrl %d0 <== NOT EXECUTED } 4a156: 4e5e unlk %fp <== NOT EXECUTED 4a158: 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 ); 4a15a: 4eb9 0004 d8e4 jsr 4d8e4 <__errno> <== NOT EXECUTED return result; } 4a160: 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 ); 4a164: 2040 moveal %d0,%a0 <== NOT EXECUTED 4a166: 720d moveq #13,%d1 <== NOT EXECUTED 4a168: 70ff moveq #-1,%d0 <== NOT EXECUTED return result; } 4a16a: 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 ); 4a16c: 2081 movel %d1,%a0@ <== NOT EXECUTED return result; } =============================================================================== 0004a490 : */ int IMFS_evaluate_link( rtems_filesystem_location_info_t *node, /* IN/OUT */ int flags /* IN */ ) { 4a490: 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 ); 4a494: 2079 0005 ce80 moveal 5ce80 ,%a0 <== NOT EXECUTED */ int IMFS_evaluate_link( rtems_filesystem_location_info_t *node, /* IN/OUT */ int flags /* IN */ ) { 4a49a: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ <== NOT EXECUTED 4a49e: 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 ); 4a4a2: 4bf9 0004 a408 lea 4a408 ,%a5 <== NOT EXECUTED /* * Follow the Link node. */ if ( jnode->type == IMFS_HARD_LINK ) result = IMFS_evaluate_hard_link( node, flags ); 4a4a8: 49f9 0004 a124 lea 4a124 ,%a4 <== NOT EXECUTED */ int IMFS_evaluate_link( rtems_filesystem_location_info_t *node, /* IN/OUT */ int flags /* IN */ ) { 4a4ae: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED IMFS_jnode_t *jnode; int result = 0; do { jnode = node->node_access; 4a4b2: 2453 moveal %a3@,%a2 <== NOT EXECUTED /* * Increment and check the link counter. */ rtems_filesystem_link_counts ++; if ( rtems_filesystem_link_counts > MAXSYMLINK ) { 4a4b4: 4281 clrl %d1 <== NOT EXECUTED /* * Increment and check the link counter. */ rtems_filesystem_link_counts ++; 4a4b6: 3028 0030 movew %a0@(48),%d0 <== NOT EXECUTED 4a4ba: 5280 addql #1,%d0 <== NOT EXECUTED if ( rtems_filesystem_link_counts > MAXSYMLINK ) { 4a4bc: 3200 movew %d0,%d1 <== NOT EXECUTED /* * Increment and check the link counter. */ rtems_filesystem_link_counts ++; 4a4be: 3140 0030 movew %d0,%a0@(48) <== NOT EXECUTED if ( rtems_filesystem_link_counts > MAXSYMLINK ) { 4a4c2: 7005 moveq #5,%d0 <== NOT EXECUTED 4a4c4: b081 cmpl %d1,%d0 <== NOT EXECUTED 4a4c6: 6564 bcss 4a52c <== NOT EXECUTED /* * Follow the Link node. */ if ( jnode->type == IMFS_HARD_LINK ) 4a4c8: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED 4a4cc: 7203 moveq #3,%d1 <== NOT EXECUTED 4a4ce: b280 cmpl %d0,%d1 <== NOT EXECUTED 4a4d0: 6740 beqs 4a512 <== NOT EXECUTED result = IMFS_evaluate_hard_link( node, flags ); else if (jnode->type == IMFS_SYM_LINK ) 4a4d2: 7204 moveq #4,%d1 <== NOT EXECUTED 4a4d4: b280 cmpl %d0,%d1 <== NOT EXECUTED 4a4d6: 671a beqs 4a4f2 <== NOT EXECUTED result = IMFS_evaluate_sym_link( node, flags ); } while ( ( result == 0 ) && ( ( jnode->type == IMFS_SYM_LINK ) || 4a4d8: 5780 subql #3,%d0 <== NOT EXECUTED 4a4da: 7201 moveq #1,%d1 <== NOT EXECUTED 4a4dc: b280 cmpl %d0,%d1 <== NOT EXECUTED 4a4de: 64d2 bccs 4a4b2 <== NOT EXECUTED 4a4e0: 4280 clrl %d0 <== NOT EXECUTED /* * Clear link counter. */ rtems_filesystem_link_counts = 0; 4a4e2: 4241 clrw %d1 <== NOT EXECUTED 4a4e4: 3141 0030 movew %d1,%a0@(48) <== NOT EXECUTED return result; } 4a4e8: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED 4a4ee: 4e5e unlk %fp <== NOT EXECUTED 4a4f0: 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 ); 4a4f2: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4a4f4: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4a4f6: 4e95 jsr %a5@ <== NOT EXECUTED 4a4f8: 508f addql #8,%sp <== NOT EXECUTED } while ( ( result == 0 ) && ( ( jnode->type == IMFS_SYM_LINK ) || ( jnode->type == IMFS_HARD_LINK ) ) ); 4a4fa: 4a80 tstl %d0 <== NOT EXECUTED 4a4fc: 6620 bnes 4a51e <== NOT EXECUTED 4a4fe: 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 ) || 4a502: 7201 moveq #1,%d1 <== NOT EXECUTED 4a504: 5780 subql #3,%d0 <== NOT EXECUTED ( jnode->type == IMFS_HARD_LINK ) ) ); 4a506: 2079 0005 ce80 moveal 5ce80 ,%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 ) || 4a50c: b280 cmpl %d0,%d1 <== NOT EXECUTED 4a50e: 64a2 bccs 4a4b2 <== NOT EXECUTED 4a510: 60ce bras 4a4e0 <== NOT EXECUTED /* * Follow the Link node. */ if ( jnode->type == IMFS_HARD_LINK ) result = IMFS_evaluate_hard_link( node, flags ); 4a512: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4a514: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4a516: 4e94 jsr %a4@ <== NOT EXECUTED 4a518: 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 ) ) ); 4a51a: 4a80 tstl %d0 <== NOT EXECUTED 4a51c: 67e0 beqs 4a4fe <== NOT EXECUTED 4a51e: 2079 0005 ce80 moveal 5ce80 ,%a0 <== NOT EXECUTED /* * Clear link counter. */ rtems_filesystem_link_counts = 0; 4a524: 4241 clrw %d1 <== NOT EXECUTED 4a526: 3141 0030 movew %d1,%a0@(48) <== NOT EXECUTED 4a52a: 60bc bras 4a4e8 <== NOT EXECUTED * Increment and check the link counter. */ rtems_filesystem_link_counts ++; if ( rtems_filesystem_link_counts > MAXSYMLINK ) { rtems_filesystem_link_counts = 0; 4a52c: 4241 clrw %d1 <== NOT EXECUTED 4a52e: 3141 0030 movew %d1,%a0@(48) <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ELOOP ); 4a532: 4eb9 0004 d8e4 jsr 4d8e4 <__errno> <== NOT EXECUTED 4a538: 725c moveq #92,%d1 <== NOT EXECUTED 4a53a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4a53c: 70ff moveq #-1,%d0 <== NOT EXECUTED */ rtems_filesystem_link_counts = 0; return result; } 4a53e: 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 ); 4a544: 2081 movel %d1,%a0@ <== NOT EXECUTED */ rtems_filesystem_link_counts = 0; return result; } 4a546: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004a0ea : uid_t st_uid; gid_t st_gid; IMFS_jnode_t *jnode; int flags_to_test; if ( !rtems_libio_is_valid_perms( flags ) ) 4a0ea: 72f8 moveq #-8,%d1 */ int IMFS_evaluate_permission( rtems_filesystem_location_info_t *node, int flags ) { 4a0ec: 4e56 0000 linkw %fp,#0 4a0f0: 202e 000c movel %fp@(12),%d0 uid_t st_uid; gid_t st_gid; IMFS_jnode_t *jnode; int flags_to_test; if ( !rtems_libio_is_valid_perms( flags ) ) 4a0f4: c280 andl %d0,%d1 4a0f6: 661a bnes 4a112 <== NEVER TAKEN /* * If all of the flags are set we have permission * to do this. */ if ( ( flags_to_test & jnode->st_mode) == flags_to_test ) 4a0f8: 206e 0008 moveal %fp@(8),%a0 return 1; return 0; } 4a0fc: 4e5e unlk %fp */ flags_to_test = flags; if ( st_uid == jnode->st_uid ) flags_to_test <<= 6; 4a0fe: ed88 lsll #6,%d0 /* * If all of the flags are set we have permission * to do this. */ if ( ( flags_to_test & jnode->st_mode) == flags_to_test ) 4a100: 2050 moveal %a0@,%a0 4a102: 2200 movel %d0,%d1 4a104: c2a8 002e andl %a0@(46),%d1 gid_t st_gid; IMFS_jnode_t *jnode; int flags_to_test; if ( !rtems_libio_is_valid_perms( flags ) ) rtems_set_errno_and_return_minus_one( EPERM ); 4a108: b280 cmpl %d0,%d1 4a10a: 57c0 seq %d0 4a10c: 49c0 extbl %d0 4a10e: 4480 negl %d0 */ if ( ( flags_to_test & jnode->st_mode) == flags_to_test ) return 1; return 0; } 4a110: 4e75 rts gid_t st_gid; IMFS_jnode_t *jnode; int flags_to_test; if ( !rtems_libio_is_valid_perms( flags ) ) rtems_set_errno_and_return_minus_one( EPERM ); 4a112: 4eb9 0004 d8e4 jsr 4d8e4 <__errno> <== NOT EXECUTED 4a118: 7201 moveq #1,%d1 <== NOT EXECUTED 4a11a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4a11c: 70ff moveq #-1,%d0 <== NOT EXECUTED */ if ( ( flags_to_test & jnode->st_mode) == flags_to_test ) return 1; return 0; } 4a11e: 4e5e unlk %fp <== NOT EXECUTED gid_t st_gid; IMFS_jnode_t *jnode; int flags_to_test; if ( !rtems_libio_is_valid_perms( flags ) ) rtems_set_errno_and_return_minus_one( EPERM ); 4a120: 2081 movel %d1,%a0@ <== NOT EXECUTED */ if ( ( flags_to_test & jnode->st_mode) == flags_to_test ) return 1; return 0; } =============================================================================== 0004a408 : int IMFS_evaluate_sym_link( rtems_filesystem_location_info_t *node, /* IN/OUT */ int flags /* IN */ ) { 4a408: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED 4a40c: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED 4a410: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED IMFS_jnode_t *jnode = node->node_access; 4a414: 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; 4a416: 24ab 0008 movel %a3@(8),%a2@ <== NOT EXECUTED int IMFS_evaluate_sym_link( rtems_filesystem_location_info_t *node, /* IN/OUT */ int flags /* IN */ ) { 4a41a: 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( 4a41e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a420: 486e fffc pea %fp@(-4) <== NOT EXECUTED 4a424: 2f2b 004c movel %a3@(76),%sp@- <== NOT EXECUTED 4a428: 4eb9 0004 b458 jsr 4b458 <== NOT EXECUTED ); /* * Use eval path to evaluate the path of the symbolic link. */ result = IMFS_eval_path( 4a42e: 262b 004c movel %a3@(76),%d3 <== NOT EXECUTED 4a432: d6ae fffc addl %fp@(-4),%d3 <== NOT EXECUTED 4a436: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4a438: 4eb9 0004 ed3c jsr 4ed3c <== NOT EXECUTED 4a43e: 2e8a movel %a2,%sp@ <== NOT EXECUTED 4a440: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4a442: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4a444: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4a446: 4eb9 0004 a170 jsr 4a170 <== NOT EXECUTED 4a44c: 2600 movel %d0,%d3 <== NOT EXECUTED strlen( &jnode->info.sym_link.name[i] ), flags, node ); IMFS_Set_handlers( node ); 4a44e: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a450: 4eb9 0004 a060 jsr 4a060 <== NOT EXECUTED /* * Verify we have the correct permissions for this node. */ if ( !IMFS_evaluate_permission( node, flags ) ) 4a456: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED 4a45a: 2e82 movel %d2,%sp@ <== NOT EXECUTED 4a45c: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4a45e: 4eb9 0004 a0ea jsr 4a0ea <== NOT EXECUTED 4a464: 508f addql #8,%sp <== NOT EXECUTED 4a466: 4a80 tstl %d0 <== NOT EXECUTED 4a468: 670c beqs 4a476 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( EACCES ); return result; } 4a46a: 2003 movel %d3,%d0 <== NOT EXECUTED 4a46c: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4a472: 4e5e unlk %fp <== NOT EXECUTED 4a474: 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 ); 4a476: 4eb9 0004 d8e4 jsr 4d8e4 <__errno> <== NOT EXECUTED 4a47c: 76ff moveq #-1,%d3 <== NOT EXECUTED 4a47e: 2040 moveal %d0,%a0 <== NOT EXECUTED 4a480: 700d moveq #13,%d0 <== NOT EXECUTED 4a482: 2080 movel %d0,%a0@ <== NOT EXECUTED return result; } 4a484: 2003 movel %d3,%d0 <== NOT EXECUTED 4a486: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED 4a48c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004d38c : int IMFS_fchmod( rtems_filesystem_location_info_t *loc, mode_t mode ) { 4d38c: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 4d390: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4d394: 2f0a movel %a2,%sp@- <== NOT EXECUTED IMFS_jnode_t *jnode; #if defined(RTEMS_POSIX_API) uid_t st_uid; #endif jnode = loc->node_access; 4d396: 2450 moveal %a0@,%a2 <== NOT EXECUTED /* * Change only the RWX permissions on the jnode to mode. */ jnode->st_mode &= ~(S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX); jnode->st_mode |= mode & (S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX); 4d398: 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); 4d39c: 202a 002e movel %a2@(46),%d0 <== NOT EXECUTED jnode->st_mode |= mode & (S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX); 4d3a0: 0281 0000 0fff andil #4095,%d1 <== NOT EXECUTED /* * Change only the RWX permissions on the jnode to mode. */ jnode->st_mode &= ~(S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX); 4d3a6: 0280 ffff f000 andil #-4096,%d0 <== NOT EXECUTED jnode->st_mode |= mode & (S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX); 4d3ac: 8280 orl %d0,%d1 <== NOT EXECUTED 4d3ae: 2541 002e movel %d1,%a2@(46) <== NOT EXECUTED IMFS_update_ctime( jnode ); 4d3b2: 42a7 clrl %sp@- <== NOT EXECUTED 4d3b4: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4d3b8: 4eb9 0004 2d8c jsr 42d8c <== NOT EXECUTED 4d3be: 256e fff8 0044 movel %fp@(-8),%a2@(68) <== NOT EXECUTED return 0; } 4d3c4: 4280 clrl %d0 <== NOT EXECUTED 4d3c6: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 4d3ca: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004d3d0 : int IMFS_fdatasync( rtems_libio_t *iop ) { return 0; } 4d3d0: 4280 clrl %d0 <== NOT EXECUTED #include "imfs.h" int IMFS_fdatasync( rtems_libio_t *iop ) { 4d3d2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED return 0; } 4d3d6: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 00043754 : } int IMFS_fifo_close( rtems_libio_t *iop ) { 43754: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 43758: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4375a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4375c: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED int err = 0; IMFS_jnode_t *jnode = iop->pathinfo.node_access; 43760: 266a 0018 moveal %a2@(24),%a3 <== NOT EXECUTED pipe_release(&JNODE2PIPE(jnode), iop); 43764: 2f0a movel %a2,%sp@- <== NOT EXECUTED 43766: 486b 004c pea %a3@(76) <== NOT EXECUTED 4376a: 4eb9 0004 cd4e jsr 4cd4e <== NOT EXECUTED iop->flags &= ~LIBIO_FLAGS_OPEN; 43770: 203c ffff feff movel #-257,%d0 <== NOT EXECUTED 43776: c1aa 0014 andl %d0,%a2@(20) <== NOT EXECUTED IMFS_check_node_remove(jnode); 4377a: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4377c: 4eb9 0004 3dfc jsr 43dfc <== NOT EXECUTED IMFS_FIFO_RETURN(err); } 43782: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED 43786: 4280 clrl %d0 <== NOT EXECUTED 43788: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED 4378c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000435e4 : int IMFS_fifo_ioctl( rtems_libio_t *iop, uint32_t command, void *buffer ) { 435e4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 435e8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 435ec: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED 435f0: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED 435f4: 2f02 movel %d2,%sp@- <== NOT EXECUTED int err; if (command == FIONBIO) { 435f6: 0c80 8004 667e cmpil #-2147195266,%d0 <== NOT EXECUTED 435fc: 6724 beqs 43622 <== NOT EXECUTED iop->flags &= ~LIBIO_FLAGS_NO_DELAY; return 0; } } else err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop); 435fe: 2f08 movel %a0,%sp@- <== NOT EXECUTED 43600: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED 43604: 2f09 movel %a1,%sp@- <== NOT EXECUTED 43606: 2f00 movel %d0,%sp@- <== NOT EXECUTED 43608: 2f28 004c movel %a0@(76),%sp@- <== NOT EXECUTED 4360c: 4eb9 0004 d656 jsr 4d656 <== NOT EXECUTED IMFS_FIFO_RETURN(err); 43612: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 43616: 4a80 tstl %d0 <== NOT EXECUTED 43618: 6d46 blts 43660 <== NOT EXECUTED } 4361a: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 4361e: 4e5e unlk %fp <== NOT EXECUTED 43620: 4e75 rts <== NOT EXECUTED ) { int err; if (command == FIONBIO) { if (buffer == NULL) 43622: 4a89 tstl %a1 <== NOT EXECUTED 43624: 6724 beqs 4364a <== NOT EXECUTED err = -EFAULT; else { if (*(int *)buffer) 43626: 4a91 tstl %a1@ <== NOT EXECUTED 43628: 6710 beqs 4363a <== NOT EXECUTED iop->flags |= LIBIO_FLAGS_NO_DELAY; 4362a: 7201 moveq #1,%d1 <== NOT EXECUTED else iop->flags &= ~LIBIO_FLAGS_NO_DELAY; return 0; 4362c: 4280 clrl %d0 <== NOT EXECUTED } else err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop); IMFS_FIFO_RETURN(err); } 4362e: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 43632: 4e5e unlk %fp <== NOT EXECUTED if (command == FIONBIO) { if (buffer == NULL) err = -EFAULT; else { if (*(int *)buffer) iop->flags |= LIBIO_FLAGS_NO_DELAY; 43634: 83a8 0014 orl %d1,%a0@(20) <== NOT EXECUTED } else err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop); IMFS_FIFO_RETURN(err); } 43638: 4e75 rts <== NOT EXECUTED err = -EFAULT; else { if (*(int *)buffer) iop->flags |= LIBIO_FLAGS_NO_DELAY; else iop->flags &= ~LIBIO_FLAGS_NO_DELAY; 4363a: 72fe moveq #-2,%d1 <== NOT EXECUTED return 0; 4363c: 4280 clrl %d0 <== NOT EXECUTED } else err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop); IMFS_FIFO_RETURN(err); } 4363e: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 43642: 4e5e unlk %fp <== NOT EXECUTED err = -EFAULT; else { if (*(int *)buffer) iop->flags |= LIBIO_FLAGS_NO_DELAY; else iop->flags &= ~LIBIO_FLAGS_NO_DELAY; 43644: c3a8 0014 andl %d1,%a0@(20) <== NOT EXECUTED } else err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop); IMFS_FIFO_RETURN(err); } 43648: 4e75 rts <== NOT EXECUTED } } else err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop); IMFS_FIFO_RETURN(err); 4364a: 4eb9 0004 f918 jsr 4f918 <__errno> <== NOT EXECUTED ) { int err; if (command == FIONBIO) { if (buffer == NULL) 43650: 740e moveq #14,%d2 <== NOT EXECUTED } } else err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop); IMFS_FIFO_RETURN(err); 43652: 2040 moveal %d0,%a0 <== NOT EXECUTED 43654: 70ff moveq #-1,%d0 <== NOT EXECUTED 43656: 2082 movel %d2,%a0@ <== NOT EXECUTED } 43658: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 4365c: 4e5e unlk %fp <== NOT EXECUTED 4365e: 4e75 rts <== NOT EXECUTED } } else err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop); IMFS_FIFO_RETURN(err); 43660: 2400 movel %d0,%d2 <== NOT EXECUTED 43662: 4482 negl %d2 <== NOT EXECUTED 43664: 4eb9 0004 f918 jsr 4f918 <__errno> <== NOT EXECUTED 4366a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4366c: 70ff moveq #-1,%d0 <== NOT EXECUTED 4366e: 2082 movel %d2,%a0@ <== NOT EXECUTED 43670: 60e6 bras 43658 <== NOT EXECUTED =============================================================================== 0004357c : rtems_off64_t IMFS_fifo_lseek( rtems_libio_t *iop, rtems_off64_t offset, int whence ) { 4357c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 43580: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 43584: 2f03 movel %d3,%sp@- <== NOT EXECUTED 43586: 2f02 movel %d2,%sp@- <== NOT EXECUTED off_t err = pipe_lseek(LIBIO2PIPE(iop), offset, whence, iop); 43588: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4358a: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED 4358e: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED 43592: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED 43596: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4359a: 2f28 004c movel %a0@(76),%sp@- <== NOT EXECUTED 4359e: 4eb9 0004 d6b6 jsr 4d6b6 <== NOT EXECUTED IMFS_FIFO_RETURN(err); 435a4: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED rtems_libio_t *iop, rtems_off64_t offset, int whence ) { off_t err = pipe_lseek(LIBIO2PIPE(iop), offset, whence, iop); 435a8: 2600 movel %d0,%d3 <== NOT EXECUTED 435aa: 2400 movel %d0,%d2 <== NOT EXECUTED 435ac: 5bc1 smi %d1 <== NOT EXECUTED 435ae: 49c1 extbl %d1 <== NOT EXECUTED IMFS_FIFO_RETURN(err); 435b0: 4a81 tstl %d1 <== NOT EXECUTED 435b2: 6b10 bmis 435c4 <== NOT EXECUTED } 435b4: 2001 movel %d1,%d0 <== NOT EXECUTED 435b6: 2202 movel %d2,%d1 <== NOT EXECUTED 435b8: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 435bc: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 435c0: 4e5e unlk %fp <== NOT EXECUTED 435c2: 4e75 rts <== NOT EXECUTED rtems_off64_t offset, int whence ) { off_t err = pipe_lseek(LIBIO2PIPE(iop), offset, whence, iop); IMFS_FIFO_RETURN(err); 435c4: 4eb9 0004 f918 jsr 4f918 <__errno> <== NOT EXECUTED 435ca: 4483 negl %d3 <== NOT EXECUTED 435cc: 2040 moveal %d0,%a0 <== NOT EXECUTED 435ce: 72ff moveq #-1,%d1 <== NOT EXECUTED 435d0: 74ff moveq #-1,%d2 <== NOT EXECUTED 435d2: 2083 movel %d3,%a0@ <== NOT EXECUTED } 435d4: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED 435d8: 2001 movel %d1,%d0 <== NOT EXECUTED 435da: 2202 movel %d2,%d1 <== NOT EXECUTED 435dc: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED 435e0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00043790 : rtems_libio_t *iop, const char *pathname, uint32_t flag, uint32_t mode ) { 43790: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 43794: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 43798: 2f02 movel %d2,%sp@- <== NOT EXECUTED IMFS_jnode_t *jnode = iop->pathinfo.node_access; int err = fifo_open(&JNODE2PIPE(jnode), iop); 4379a: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4379c: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED 437a0: 41e8 004c lea %a0@(76),%a0 <== NOT EXECUTED 437a4: 2f08 movel %a0,%sp@- <== NOT EXECUTED 437a6: 4eb9 0004 ce1c jsr 4ce1c <== NOT EXECUTED IMFS_FIFO_RETURN(err); 437ac: 508f addql #8,%sp <== NOT EXECUTED uint32_t mode ) { IMFS_jnode_t *jnode = iop->pathinfo.node_access; int err = fifo_open(&JNODE2PIPE(jnode), iop); 437ae: 2400 movel %d0,%d2 <== NOT EXECUTED IMFS_FIFO_RETURN(err); 437b0: 6d0a blts 437bc <== NOT EXECUTED } 437b2: 2002 movel %d2,%d0 <== NOT EXECUTED 437b4: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 437b8: 4e5e unlk %fp <== NOT EXECUTED 437ba: 4e75 rts <== NOT EXECUTED ) { IMFS_jnode_t *jnode = iop->pathinfo.node_access; int err = fifo_open(&JNODE2PIPE(jnode), iop); IMFS_FIFO_RETURN(err); 437bc: 4eb9 0004 f918 jsr 4f918 <__errno> <== NOT EXECUTED 437c2: 4482 negl %d2 <== NOT EXECUTED 437c4: 2040 moveal %d0,%a0 <== NOT EXECUTED 437c6: 2082 movel %d2,%a0@ <== NOT EXECUTED 437c8: 74ff moveq #-1,%d2 <== NOT EXECUTED } 437ca: 2002 movel %d2,%d0 <== NOT EXECUTED 437cc: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 437d0: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 000436e6 : ssize_t IMFS_fifo_read( rtems_libio_t *iop, void *buffer, size_t count ) { 436e6: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 436ea: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 436ee: 2f0a movel %a2,%sp@- <== NOT EXECUTED 436f0: 2f02 movel %d2,%sp@- <== NOT EXECUTED IMFS_jnode_t *jnode = iop->pathinfo.node_access; int err = pipe_read(JNODE2PIPE(jnode), buffer, count, iop); 436f2: 2f08 movel %a0,%sp@- <== NOT EXECUTED 436f4: 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; 436f8: 2468 0018 moveal %a0@(24),%a2 <== NOT EXECUTED int err = pipe_read(JNODE2PIPE(jnode), buffer, count, iop); 436fc: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 43700: 2f2a 004c movel %a2@(76),%sp@- <== NOT EXECUTED 43704: 4eb9 0004 d274 jsr 4d274 <== NOT EXECUTED if (err > 0) 4370a: 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); 4370e: 2400 movel %d0,%d2 <== NOT EXECUTED if (err > 0) 43710: 6f22 bles 43734 <== NOT EXECUTED IMFS_update_atime(jnode); 43712: 42a7 clrl %sp@- <== NOT EXECUTED 43714: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 43718: 4eb9 0004 4a84 jsr 44a84 <== NOT EXECUTED 4371e: 256e fff8 003c movel %fp@(-8),%a2@(60) <== NOT EXECUTED 43724: 508f addql #8,%sp <== NOT EXECUTED IMFS_FIFO_RETURN(err); } 43726: 2002 movel %d2,%d0 <== NOT EXECUTED 43728: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 4372c: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 43730: 4e5e unlk %fp <== NOT EXECUTED 43732: 4e75 rts <== NOT EXECUTED int err = pipe_read(JNODE2PIPE(jnode), buffer, count, iop); if (err > 0) IMFS_update_atime(jnode); IMFS_FIFO_RETURN(err); 43734: 4a80 tstl %d0 <== NOT EXECUTED 43736: 67ee beqs 43726 <== NOT EXECUTED 43738: 4eb9 0004 f918 jsr 4f918 <__errno> <== NOT EXECUTED 4373e: 4482 negl %d2 <== NOT EXECUTED 43740: 2040 moveal %d0,%a0 <== NOT EXECUTED 43742: 2082 movel %d2,%a0@ <== NOT EXECUTED 43744: 74ff moveq #-1,%d2 <== NOT EXECUTED } 43746: 2002 movel %d2,%d0 <== NOT EXECUTED 43748: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 4374c: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 43750: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 00043672 : ssize_t IMFS_fifo_write( rtems_libio_t *iop, const void *buffer, size_t count ) { 43672: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED 43676: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4367a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4367c: 2f02 movel %d2,%sp@- <== NOT EXECUTED IMFS_jnode_t *jnode = iop->pathinfo.node_access; int err = pipe_write(JNODE2PIPE(jnode), buffer, count, iop); 4367e: 2f08 movel %a0,%sp@- <== NOT EXECUTED 43680: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED rtems_libio_t *iop, const void *buffer, size_t count ) { IMFS_jnode_t *jnode = iop->pathinfo.node_access; 43684: 2468 0018 moveal %a0@(24),%a2 <== NOT EXECUTED int err = pipe_write(JNODE2PIPE(jnode), buffer, count, iop); 43688: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4368c: 2f2a 004c movel %a2@(76),%sp@- <== NOT EXECUTED 43690: 4eb9 0004 d46a jsr 4d46a <== NOT EXECUTED if (err > 0) { 43696: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED size_t count ) { IMFS_jnode_t *jnode = iop->pathinfo.node_access; int err = pipe_write(JNODE2PIPE(jnode), buffer, count, iop); 4369a: 2400 movel %d0,%d2 <== NOT EXECUTED if (err > 0) { 4369c: 6f28 bles 436c6 <== NOT EXECUTED IMFS_mtime_ctime_update(jnode); 4369e: 42a7 clrl %sp@- <== NOT EXECUTED 436a0: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 436a4: 4eb9 0004 4a84 jsr 44a84 <== NOT EXECUTED 436aa: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED 436ae: 508f addql #8,%sp <== NOT EXECUTED 436b0: 2540 0040 movel %d0,%a2@(64) <== NOT EXECUTED 436b4: 2540 0044 movel %d0,%a2@(68) <== NOT EXECUTED } IMFS_FIFO_RETURN(err); } 436b8: 2002 movel %d2,%d0 <== NOT EXECUTED 436ba: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 436be: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 436c2: 4e5e unlk %fp <== NOT EXECUTED 436c4: 4e75 rts <== NOT EXECUTED int err = pipe_write(JNODE2PIPE(jnode), buffer, count, iop); if (err > 0) { IMFS_mtime_ctime_update(jnode); } IMFS_FIFO_RETURN(err); 436c6: 4a80 tstl %d0 <== NOT EXECUTED 436c8: 67ee beqs 436b8 <== NOT EXECUTED 436ca: 4eb9 0004 f918 jsr 4f918 <__errno> <== NOT EXECUTED 436d0: 4482 negl %d2 <== NOT EXECUTED 436d2: 2040 moveal %d0,%a0 <== NOT EXECUTED 436d4: 2082 movel %d2,%a0@ <== NOT EXECUTED 436d6: 74ff moveq #-1,%d2 <== NOT EXECUTED } 436d8: 2002 movel %d2,%d0 <== NOT EXECUTED 436da: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED 436de: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED 436e2: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004a880 : IMFS_jnode_t *IMFS_find_match_in_dir( IMFS_jnode_t *directory, char *name ) { 4a880: 4e56 fff0 linkw %fp,#-16 4a884: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ /* * Check for "." and ".." */ if ( !strcmp( name, dotname ) ) 4a888: 4879 0005 c16a pea 5c16a 4a88e: 47f9 0004 e7e4 lea 4e7e4 ,%a3 IMFS_jnode_t *IMFS_find_match_in_dir( IMFS_jnode_t *directory, char *name ) { 4a894: 242e 000c movel %fp@(12),%d2 /* * Check for "." and ".." */ if ( !strcmp( name, dotname ) ) 4a898: 2f02 movel %d2,%sp@- IMFS_jnode_t *IMFS_find_match_in_dir( IMFS_jnode_t *directory, char *name ) { 4a89a: 246e 0008 moveal %fp@(8),%a2 /* * Check for "." and ".." */ if ( !strcmp( name, dotname ) ) 4a89e: 4e93 jsr %a3@ 4a8a0: 508f addql #8,%sp 4a8a2: 4a80 tstl %d0 4a8a4: 6714 beqs 4a8ba <== NEVER TAKEN return directory; if ( !strcmp( name, dotdotname ) ) 4a8a6: 4879 0005 c16c pea 5c16c 4a8ac: 2f02 movel %d2,%sp@- 4a8ae: 4e93 jsr %a3@ 4a8b0: 508f addql #8,%sp 4a8b2: 4a80 tstl %d0 4a8b4: 6610 bnes 4a8c6 <== ALWAYS TAKEN return directory->Parent; 4a8b6: 246a 0008 moveal %a2@(8),%a2 <== NOT EXECUTED if ( !strcmp( name, the_jnode->name ) ) return the_jnode; } return 0; } 4a8ba: 200a movel %a2,%d0 <== NOT EXECUTED 4a8bc: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED 4a8c2: 4e5e unlk %fp <== NOT EXECUTED 4a8c4: 4e75 rts <== NOT EXECUTED 4a8c6: 286a 004c moveal %a2@(76),%a4 RTEMS_INLINE_ROUTINE bool _Chain_Is_tail( Chain_Control *the_chain, const Chain_Node *the_node ) { return (the_node == _Chain_Tail(the_chain)); 4a8ca: 45ea 0050 lea %a2@(80),%a2 if ( !strcmp( name, dotdotname ) ) return directory->Parent; the_chain = &directory->info.directory.Entries; for ( the_node = rtems_chain_first( the_chain ); 4a8ce: b5cc cmpal %a4,%a2 4a8d0: 6714 beqs 4a8e6 !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 ) ) 4a8d2: 486c 000c pea %a4@(12) 4a8d6: 2f02 movel %d2,%sp@- 4a8d8: 4e93 jsr %a3@ 4a8da: 508f addql #8,%sp 4a8dc: 4a80 tstl %d0 4a8de: 6714 beqs 4a8f4 the_chain = &directory->info.directory.Entries; for ( the_node = rtems_chain_first( the_chain ); !rtems_chain_is_tail( the_chain, the_node ); the_node = the_node->next ) { 4a8e0: 2854 moveal %a4@,%a4 if ( !strcmp( name, dotdotname ) ) return directory->Parent; the_chain = &directory->info.directory.Entries; for ( the_node = rtems_chain_first( the_chain ); 4a8e2: b5cc cmpal %a4,%a2 4a8e4: 66ec bnes 4a8d2 if ( !strcmp( name, the_jnode->name ) ) return the_jnode; } return 0; 4a8e6: 95ca subal %a2,%a2 } 4a8e8: 200a movel %a2,%d0 4a8ea: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 4a8f0: 4e5e unlk %fp 4a8f2: 4e75 rts for ( the_node = rtems_chain_first( the_chain ); !rtems_chain_is_tail( the_chain, the_node ); the_node = the_node->next ) { the_jnode = (IMFS_jnode_t *) the_node; 4a8f4: 244c moveal %a4,%a2 if ( !strcmp( name, the_jnode->name ) ) return the_jnode; } return 0; } 4a8f6: 200a movel %a2,%d0 4a8f8: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 4a8fe: 4e5e unlk %fp ... =============================================================================== 0004a7d4 : ((IMFS_jnode_t *)( rtems_chain_head( jnode_get_control( jnode ) )->next)) int IMFS_fsunmount( rtems_filesystem_mount_table_entry_t *temp_mt_entry ) { 4a7d4: 4e56 ffd8 linkw %fp,#-40 <== NOT EXECUTED 4a7d8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED 4a7dc: 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; 4a7e0: 47ee ffec lea %fp@(-20),%a3 <== NOT EXECUTED 4a7e4: 49f9 0004 a060 lea 4a060 ,%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 ); 4a7ea: 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; 4a7f0: 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; 4a7f4: 2468 001c moveal %a0@(28),%a2 <== NOT EXECUTED loc = temp_mt_entry->mt_fs_root; 4a7f8: 2d68 0020 fff0 movel %a0@(32),%fp@(-16) <== NOT EXECUTED 4a7fe: 2d68 0024 fff4 movel %a0@(36),%fp@(-12) <== NOT EXECUTED 4a804: 2d68 0028 fff8 movel %a0@(40),%fp@(-8) <== NOT EXECUTED 4a80a: 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; 4a810: 42a8 001c clrl %a0@(28) <== NOT EXECUTED do { next = jnode->Parent; 4a814: 242a 0008 movel %a2@(8),%d2 <== NOT EXECUTED loc.node_access = (void *)jnode; 4a818: 2d4a ffec movel %a2,%fp@(-20) <== NOT EXECUTED IMFS_Set_handlers( &loc ); 4a81c: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4a81e: 4e94 jsr %a4@ <== NOT EXECUTED if ( jnode->type != IMFS_DIRECTORY ) { 4a820: 588f addql #4,%sp <== NOT EXECUTED RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( const Chain_Control *the_chain ) { return _Chain_Immutable_first( the_chain ) == _Chain_Immutable_tail( the_chain ); 4a822: 200a movel %a2,%d0 <== NOT EXECUTED 4a824: 0680 0000 0050 addil #80,%d0 <== NOT EXECUTED 4a82a: 7201 moveq #1,%d1 <== NOT EXECUTED 4a82c: b2aa 0048 cmpl %a2@(72),%d1 <== NOT EXECUTED 4a830: 6634 bnes 4a866 <== NOT EXECUTED result = IMFS_unlink( NULL, &loc ); if (result != 0) return -1; jnode = next; } else if ( jnode_has_no_children( jnode ) ) { 4a832: b0aa 004c cmpl %a2@(76),%d0 <== NOT EXECUTED 4a836: 672e beqs 4a866 <== NOT EXECUTED result = IMFS_unlink( NULL, &loc ); if (result != 0) return -1; jnode = next; } if ( jnode != NULL ) { 4a838: 4a8a tstl %a2 <== NOT EXECUTED 4a83a: 671e beqs 4a85a <== NOT EXECUTED if ( jnode->type == IMFS_DIRECTORY ) { 4a83c: 7001 moveq #1,%d0 <== NOT EXECUTED 4a83e: b0aa 0048 cmpl %a2@(72),%d0 <== NOT EXECUTED 4a842: 66d0 bnes 4a814 <== NOT EXECUTED 4a844: 220a movel %a2,%d1 <== NOT EXECUTED 4a846: 0681 0000 0050 addil #80,%d1 <== NOT EXECUTED } } } while (jnode != NULL); return 0; } 4a84c: 202a 004c movel %a2@(76),%d0 <== NOT EXECUTED return -1; jnode = next; } if ( jnode != NULL ) { if ( jnode->type == IMFS_DIRECTORY ) { if ( jnode_has_children( jnode ) ) 4a850: b280 cmpl %d0,%d1 <== NOT EXECUTED 4a852: 67c0 beqs 4a814 <== NOT EXECUTED jnode = jnode_get_first_child( jnode ); 4a854: 2440 moveal %d0,%a2 <== NOT EXECUTED } } } while (jnode != NULL); 4a856: 4a80 tstl %d0 <== NOT EXECUTED 4a858: 66ba bnes 4a814 <== NOT EXECUTED return 0; 4a85a: 4280 clrl %d0 <== NOT EXECUTED } 4a85c: 4cee 3c04 ffd8 moveml %fp@(-40),%d2/%a2-%a5 <== NOT EXECUTED 4a862: 4e5e unlk %fp <== NOT EXECUTED 4a864: 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 ); 4a866: 2f0b movel %a3,%sp@- <== NOT EXECUTED if (result != 0) return -1; jnode = next; 4a868: 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 ); 4a86a: 42a7 clrl %sp@- <== NOT EXECUTED 4a86c: 4e95 jsr %a5@ <== NOT EXECUTED if (result != 0) 4a86e: 508f addql #8,%sp <== NOT EXECUTED 4a870: 4a80 tstl %d0 <== NOT EXECUTED 4a872: 67c4 beqs 4a838 <== NOT EXECUTED return -1; 4a874: 70ff moveq #-1,%d0 <== NOT EXECUTED } } } while (jnode != NULL); return 0; } 4a876: 4cee 3c04 ffd8 moveml %fp@(-40),%d2/%a2-%a5 <== NOT EXECUTED 4a87c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004a904 : const char *path, int pathlen, char *token, int *token_len ) { 4a904: 4e56 ffe4 linkw %fp,#-28 4a908: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@ register char c; /* * Copy a name into token. (Remember NULL is a token.) */ c = path[i]; 4a90c: 246e 0008 moveal %fp@(8),%a2 4a910: 49f9 0004 3c28 lea 43c28 ,%a4 int pathlen, char *token, int *token_len ) { register int i = 0; 4a916: 4282 clrl %d2 register char c; /* * Copy a name into token. (Remember NULL is a token.) */ c = path[i]; 4a918: 161a moveb %a2@+,%d3 const char *path, int pathlen, char *token, int *token_len ) { 4a91a: 2a6e 0010 moveal %fp@(16),%a5 register char c; /* * Copy a name into token. (Remember NULL is a token.) */ c = path[i]; 4a91e: 264d moveal %a5,%a3 while ( (!IMFS_is_separator(c)) && (i < pathlen) && (i <= IMFS_NAME_MAX) ) { 4a920: 1003 moveb %d3,%d0 const char *path, int pathlen, char *token, int *token_len ) { 4a922: 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) ) { 4a926: 49c0 extbl %d0 4a928: 2f00 movel %d0,%sp@- 4a92a: 4e94 jsr %a4@ 4a92c: 588f addql #4,%sp 4a92e: 4a80 tstl %d0 4a930: 6620 bnes 4a952 4a932: b882 cmpl %d2,%d4 4a934: 6f1c bles 4a952 <== NEVER TAKEN token[i] = c; if ( i == IMFS_NAME_MAX ) 4a936: 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; 4a938: 16c3 moveb %d3,%a3@+ if ( i == IMFS_NAME_MAX ) 4a93a: b082 cmpl %d2,%d0 4a93c: 6700 0082 beqw 4a9c0 return IMFS_INVALID_TOKEN; if ( !IMFS_is_valid_name_char(c) ) type = IMFS_INVALID_TOKEN; c = path [++i]; 4a940: 5282 addql #1,%d2 4a942: 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) ) { 4a944: 1003 moveb %d3,%d0 4a946: 49c0 extbl %d0 4a948: 2f00 movel %d0,%sp@- 4a94a: 4e94 jsr %a4@ 4a94c: 588f addql #4,%sp 4a94e: 4a80 tstl %d0 4a950: 67e0 beqs 4a932 /* * Copy a seperator into token. */ if ( i == 0 ) { 4a952: 4a82 tstl %d2 4a954: 6626 bnes 4a97c token[i] = c; 4a956: 1a83 moveb %d3,%a5@ if ( (token[i] != '\0') && pathlen ) { 4a958: 6718 beqs 4a972 4a95a: 4a84 tstl %d4 4a95c: 6714 beqs 4a972 <== NEVER TAKEN /* * Set token_len to the number of characters copied. */ *token_len = i; 4a95e: 206e 0014 moveal %fp@(20),%a0 if ( i == 0 ) { token[i] = c; if ( (token[i] != '\0') && pathlen ) { i++; 4a962: 7401 moveq #1,%d2 type = IMFS_CURRENT_DIR; 4a964: 7001 moveq #1,%d0 /* * Set token_len to the number of characters copied. */ *token_len = i; 4a966: 2082 movel %d2,%a0@ else if ( strcmp( token, "." ) == 0 ) type = IMFS_CURRENT_DIR; } return type; } 4a968: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 4a96e: 4e5e unlk %fp 4a970: 4e75 rts /* * Set token_len to the number of characters copied. */ *token_len = i; 4a972: 206e 0014 moveal %fp@(20),%a0 if ( (token[i] != '\0') && pathlen ) { i++; type = IMFS_CURRENT_DIR; } else { type = IMFS_NO_MORE_PATH; 4a976: 4280 clrl %d0 /* * Set token_len to the number of characters copied. */ *token_len = i; 4a978: 2082 movel %d2,%a0@ 4a97a: 60ec bras 4a968 i++; type = IMFS_CURRENT_DIR; } else { type = IMFS_NO_MORE_PATH; } } else if (token[ i-1 ] != '\0') { 4a97c: 4a35 28ff tstb %a5@(ffffffff,%d2:l) 4a980: 6706 beqs 4a988 <== NEVER TAKEN token[i] = '\0'; 4a982: 4200 clrb %d0 4a984: 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 ) 4a988: 4879 0005 c16f pea 5c16f 4a98e: 45f9 0004 e7e4 lea 4e7e4 ,%a2 /* * Set token_len to the number of characters copied. */ *token_len = i; 4a994: 206e 0014 moveal %fp@(20),%a0 4a998: 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 ) 4a99a: 2f0d movel %a5,%sp@- 4a99c: 4e92 jsr %a2@ 4a99e: 508f addql #8,%sp 4a9a0: 4a80 tstl %d0 4a9a2: 6728 beqs 4a9cc <== NEVER TAKEN type = IMFS_UP_DIR; else if ( strcmp( token, "." ) == 0 ) 4a9a4: 4879 0005 c170 pea 5c170 4a9aa: 2f0d movel %a5,%sp@- 4a9ac: 4e92 jsr %a2@ 4a9ae: 508f addql #8,%sp 4a9b0: 4a80 tstl %d0 4a9b2: 6724 beqs 4a9d8 <== NEVER TAKEN 4a9b4: 7003 moveq #3,%d0 type = IMFS_CURRENT_DIR; } return type; } 4a9b6: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 4a9bc: 4e5e unlk %fp 4a9be: 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; 4a9c0: 7004 moveq #4,%d0 <== NOT EXECUTED else if ( strcmp( token, "." ) == 0 ) type = IMFS_CURRENT_DIR; } return type; } 4a9c2: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 <== NOT EXECUTED 4a9c8: 4e5e unlk %fp <== NOT EXECUTED 4a9ca: 4e75 rts <== NOT EXECUTED * it was a special name. */ if ( type == IMFS_NAME ) { if ( strcmp( token, "..") == 0 ) type = IMFS_UP_DIR; 4a9cc: 7002 moveq #2,%d0 <== NOT EXECUTED else if ( strcmp( token, "." ) == 0 ) type = IMFS_CURRENT_DIR; } return type; } 4a9ce: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 <== NOT EXECUTED 4a9d4: 4e5e unlk %fp <== NOT EXECUTED 4a9d6: 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; 4a9d8: 7001 moveq #1,%d0 <== NOT EXECUTED } return type; } 4a9da: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 <== NOT EXECUTED 4a9e0: 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 cc68 movel 5cc68 ,%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 dbe8 movel %d1,5dbe8 /* * 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 a026 jsr 4a026 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 c13a lea 5c13a ,%a0 4218e: 43f9 0005 c13e lea 5c13e ,%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 c142 lea 5c142 ,%a0 421a0: 2551 003c movel %a1@,%a2@(60) 421a4: 43f9 0005 c146 lea 5c146 ,%a1 421aa: 2550 0040 movel %a0@,%a2@(64) 421ae: 41f9 0005 c14a lea 5c14a ,%a0 421b4: 2551 0044 movel %a1@,%a2@(68) 421b8: 43f9 0005 c14e lea 5c14e ,%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 c152 lea 5c152 ,%a0 421cc: 2551 004c movel %a1@,%a2@(76) 421d0: 43f9 0005 c156 lea 5c156 ,%a1 421d6: 2550 0050 movel %a0@,%a2@(80) 421da: 41f9 0005 c15a lea 5c15a ,%a0 421e0: 2551 0054 movel %a1@,%a2@(84) 421e4: 43f9 0005 c15e lea 5c15e ,%a1 421ea: 2550 0058 movel %a0@,%a2@(88) 421ee: 41f9 0005 c162 lea 5c162 ,%a0 421f4: 2551 005c movel %a1@,%a2@(92) 421f8: 43f9 0005 c166 lea 5c166 ,%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 dbec movel 5dbec ,%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 dbec movel %a1,5dbec 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 d8e4 jsr 4d8e4 <__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 ed3c jsr 4ed3c <== 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 a904 jsr 4a904 <== 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 9e30 jsr 49e30 <== 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 d8e4 jsr 4d8e4 <__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 d8e4 jsr 4d8e4 <__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; } ... =============================================================================== 0004c78c : */ MEMFILE_STATIC int IMFS_memfile_addblock( IMFS_jnode_t *the_jnode, unsigned int block ) { 4c78c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4c790: 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 ); 4c792: 4878 0001 pea 1 <== NOT EXECUTED 4c796: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4c79a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4c79e: 4eb9 0004 c360 jsr 4c360 <== NOT EXECUTED if ( *block_entry_ptr ) 4c7a4: 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 ); 4c7a8: 2440 moveal %d0,%a2 <== NOT EXECUTED if ( *block_entry_ptr ) 4c7aa: 4a92 tstl %a2@ <== NOT EXECUTED 4c7ac: 670a beqs 4c7b8 <== NOT EXECUTED if ( !memory ) return 1; *block_entry_ptr = memory; return 0; } 4c7ae: 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; 4c7b2: 4280 clrl %d0 <== NOT EXECUTED if ( !memory ) return 1; *block_entry_ptr = memory; return 0; } 4c7b4: 4e5e unlk %fp <== NOT EXECUTED 4c7b6: 4e75 rts <== NOT EXECUTED return 0; /* * There is no memory for this block number so allocate it. */ memory = memfile_alloc_block(); 4c7b8: 4eb9 0004 c33c jsr 4c33c <== NOT EXECUTED if ( !memory ) 4c7be: 4a80 tstl %d0 <== NOT EXECUTED 4c7c0: 670c beqs 4c7ce <== NOT EXECUTED return 1; *block_entry_ptr = memory; 4c7c2: 2480 movel %d0,%a2@ <== NOT EXECUTED return 0; } 4c7c4: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED memory = memfile_alloc_block(); if ( !memory ) return 1; *block_entry_ptr = memory; return 0; 4c7c8: 4280 clrl %d0 <== NOT EXECUTED } 4c7ca: 4e5e unlk %fp <== NOT EXECUTED 4c7cc: 4e75 rts <== NOT EXECUTED 4c7ce: 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; 4c7d2: 7001 moveq #1,%d0 <== NOT EXECUTED *block_entry_ptr = memory; return 0; } 4c7d4: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004c97a : IMFS_assert( the_jnode->type == IMFS_MEMORY_FILE ); /* * Verify new file size is supported */ if ( new_length >= IMFS_MEMFILE_MAXIMUM_SIZE ) 4c97a: 4280 clrl %d0 <== NOT EXECUTED */ MEMFILE_STATIC int IMFS_memfile_extend( IMFS_jnode_t *the_jnode, off_t new_length ) { 4c97c: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED 4c980: 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 ) 4c984: 2c39 0005 dbe8 movel 5dbe8 ,%d6<== NOT EXECUTED 4c98a: 2406 movel %d6,%d2 <== NOT EXECUTED 4c98c: e48a lsrl #2,%d2 <== NOT EXECUTED 4c98e: 2802 movel %d2,%d4 <== NOT EXECUTED 4c990: 5284 addql #1,%d4 <== NOT EXECUTED 4c992: 4c02 4800 mulsl %d2,%d4 <== NOT EXECUTED */ MEMFILE_STATIC int IMFS_memfile_extend( IMFS_jnode_t *the_jnode, off_t new_length ) { 4c996: 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 ) 4c99a: 5284 addql #1,%d4 <== NOT EXECUTED 4c99c: 4c02 4800 mulsl %d2,%d4 <== NOT EXECUTED */ MEMFILE_STATIC int IMFS_memfile_extend( IMFS_jnode_t *the_jnode, off_t new_length ) { 4c9a0: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4c9a4: 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 ) 4c9a8: 5384 subql #1,%d4 <== NOT EXECUTED 4c9aa: 4c06 4800 mulsl %d6,%d4 <== NOT EXECUTED 4c9ae: 2204 movel %d4,%d1 <== NOT EXECUTED 4c9b0: 2800 movel %d0,%d4 <== NOT EXECUTED 4c9b2: 2a01 movel %d1,%d5 <== NOT EXECUTED 4c9b4: 9a83 subl %d3,%d5 <== NOT EXECUTED 4c9b6: 9982 subxl %d2,%d4 <== NOT EXECUTED 4c9b8: 6f00 00ae blew 4ca68 <== 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 ) 4c9bc: 282a 004c movel %a2@(76),%d4 <== NOT EXECUTED 4c9c0: 2a2a 0050 movel %a2@(80),%d5 <== NOT EXECUTED 4c9c4: 2002 movel %d2,%d0 <== NOT EXECUTED 4c9c6: 2203 movel %d3,%d1 <== NOT EXECUTED 4c9c8: 9285 subl %d5,%d1 <== NOT EXECUTED 4c9ca: 9184 subxl %d4,%d0 <== NOT EXECUTED 4c9cc: 6f5e bles 4ca2c <== NOT EXECUTED return 0; /* * Calculate the number of range of blocks to allocate */ new_blocks = new_length / IMFS_MEMFILE_BYTES_PER_BLOCK; 4c9ce: 49f9 0005 977c lea 5977c <__divdi3>,%a4 <== NOT EXECUTED 4c9d4: 2e06 movel %d6,%d7 <== NOT EXECUTED 4c9d6: 5bc6 smi %d6 <== NOT EXECUTED 4c9d8: 49c6 extbl %d6 <== NOT EXECUTED 4c9da: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4c9dc: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4c9de: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4c9e0: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4c9e2: 4e94 jsr %a4@ <== NOT EXECUTED 4c9e4: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4c9e8: 2641 moveal %d1,%a3 <== NOT EXECUTED old_blocks = the_jnode->info.file.size / IMFS_MEMFILE_BYTES_PER_BLOCK; 4c9ea: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4c9ec: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4c9ee: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4c9f0: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4c9f2: 4e94 jsr %a4@ <== NOT EXECUTED 4c9f4: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4c9f8: 2c01 movel %d1,%d6 <== NOT EXECUTED /* * Now allocate each of those blocks. */ for ( block=old_blocks ; block<=new_blocks ; block++ ) { 4c9fa: b28b cmpl %a3,%d1 <== NOT EXECUTED 4c9fc: 621a bhis 4ca18 <== NOT EXECUTED 4c9fe: 2801 movel %d1,%d4 <== NOT EXECUTED 4ca00: 49f9 0004 c78c lea 4c78c ,%a4 <== NOT EXECUTED if ( IMFS_memfile_addblock( the_jnode, block ) ) { 4ca06: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4ca08: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4ca0a: 4e94 jsr %a4@ <== NOT EXECUTED 4ca0c: 508f addql #8,%sp <== NOT EXECUTED 4ca0e: 4a80 tstl %d0 <== NOT EXECUTED 4ca10: 6626 bnes 4ca38 <== 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++ ) { 4ca12: 5284 addql #1,%d4 <== NOT EXECUTED 4ca14: b88b cmpl %a3,%d4 <== NOT EXECUTED 4ca16: 63ee blss 4ca06 <== NOT EXECUTED /* * Set the new length of the file. */ the_jnode->info.file.size = new_length; return 0; 4ca18: 4280 clrl %d0 <== NOT EXECUTED } /* * Set the new length of the file. */ the_jnode->info.file.size = new_length; 4ca1a: 2542 004c movel %d2,%a2@(76) <== NOT EXECUTED 4ca1e: 2543 0050 movel %d3,%a2@(80) <== NOT EXECUTED return 0; } 4ca22: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4 <== NOT EXECUTED 4ca28: 4e5e unlk %fp <== NOT EXECUTED 4ca2a: 4e75 rts <== NOT EXECUTED /* * Verify new file size is actually larger than current size */ if ( new_length <= the_jnode->info.file.size ) return 0; 4ca2c: 4280 clrl %d0 <== NOT EXECUTED /* * Set the new length of the file. */ the_jnode->info.file.size = new_length; return 0; } 4ca2e: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4 <== NOT EXECUTED 4ca34: 4e5e unlk %fp <== NOT EXECUTED 4ca36: 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-- ) { 4ca38: b886 cmpl %d6,%d4 <== NOT EXECUTED 4ca3a: 6514 bcss 4ca50 <== NOT EXECUTED 4ca3c: 47f9 0004 c952 lea 4c952 ,%a3 <== NOT EXECUTED IMFS_memfile_remove_block( the_jnode, block ); 4ca42: 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-- ) { 4ca44: 5384 subql #1,%d4 <== NOT EXECUTED IMFS_memfile_remove_block( the_jnode, block ); 4ca46: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4ca48: 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-- ) { 4ca4a: 508f addql #8,%sp <== NOT EXECUTED 4ca4c: b886 cmpl %d6,%d4 <== NOT EXECUTED 4ca4e: 64f2 bccs 4ca42 <== NOT EXECUTED IMFS_memfile_remove_block( the_jnode, block ); } rtems_set_errno_and_return_minus_one( ENOSPC ); 4ca50: 4eb9 0004 d8e4 jsr 4d8e4 <__errno> <== NOT EXECUTED 4ca56: 721c moveq #28,%d1 <== NOT EXECUTED 4ca58: 2040 moveal %d0,%a0 <== NOT EXECUTED 4ca5a: 70ff moveq #-1,%d0 <== NOT EXECUTED /* * Set the new length of the file. */ the_jnode->info.file.size = new_length; return 0; } 4ca5c: 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 ); 4ca62: 2081 movel %d1,%a0@ <== NOT EXECUTED /* * Set the new length of the file. */ the_jnode->info.file.size = new_length; return 0; } 4ca64: 4e5e unlk %fp <== NOT EXECUTED 4ca66: 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 ); 4ca68: 4eb9 0004 d8e4 jsr 4d8e4 <__errno> <== NOT EXECUTED 4ca6e: 7416 moveq #22,%d2 <== NOT EXECUTED 4ca70: 2040 moveal %d0,%a0 <== NOT EXECUTED 4ca72: 70ff moveq #-1,%d0 <== NOT EXECUTED 4ca74: 2082 movel %d2,%a0@ <== NOT EXECUTED /* * Set the new length of the file. */ the_jnode->info.file.size = new_length; return 0; } 4ca76: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4 <== NOT EXECUTED 4ca7c: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004c360 : #endif IMFS_jnode_t *the_jnode, unsigned int block, int malloc_it ) { 4c360: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED my_block = block; /* * Is the block number in the simple indirect portion? */ if ( my_block <= LAST_INDIRECT ) { 4c364: 2239 0005 dbe8 movel 5dbe8 ,%d1<== NOT EXECUTED 4c36a: e489 lsrl #2,%d1 <== NOT EXECUTED 4c36c: 2001 movel %d1,%d0 <== NOT EXECUTED 4c36e: 5380 subql #1,%d0 <== NOT EXECUTED #endif IMFS_jnode_t *the_jnode, unsigned int block, int malloc_it ) { 4c370: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED 4c374: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED 4c378: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4c37c: 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 ) { 4c380: b082 cmpl %d2,%d0 <== NOT EXECUTED 4c382: 651e bcss 4c3a2 <== NOT EXECUTED p = info->indirect; 4c384: 226a 0054 moveal %a2@(84),%a1 <== NOT EXECUTED if ( malloc_it ) { 4c388: 4a88 tstl %a0 <== NOT EXECUTED 4c38a: 675a beqs 4c3e6 <== NOT EXECUTED if ( !p ) { 4c38c: 4a89 tstl %a1 <== NOT EXECUTED 4c38e: 6700 00c0 beqw 4c450 <== NOT EXECUTED } if ( !p ) return 0; return &info->indirect[ my_block ]; 4c392: 43f1 2c00 lea %a1@(00000000,%d2:l:4),%a1 <== NOT EXECUTED 4c396: 2009 movel %a1,%d0 <== NOT EXECUTED /* * This means the requested block number is out of range. */ return 0; } 4c398: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 4c39e: 4e5e unlk %fp <== NOT EXECUTED 4c3a0: 4e75 rts <== NOT EXECUTED /* * Is the block number in the doubly indirect portion? */ if ( my_block <= LAST_DOUBLY_INDIRECT ) { 4c3a2: 2001 movel %d1,%d0 <== NOT EXECUTED 4c3a4: 5280 addql #1,%d0 <== NOT EXECUTED 4c3a6: 4c01 0800 mulsl %d1,%d0 <== NOT EXECUTED 4c3aa: 2240 moveal %d0,%a1 <== NOT EXECUTED 4c3ac: 5389 subql #1,%a1 <== NOT EXECUTED 4c3ae: b3c2 cmpal %d2,%a1 <== NOT EXECUTED 4c3b0: 6544 bcss 4c3f6 <== NOT EXECUTED my_block -= FIRST_DOUBLY_INDIRECT; 4c3b2: 9481 subl %d1,%d2 <== NOT EXECUTED singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS; doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS; p = info->doubly_indirect; 4c3b4: 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; 4c3b8: 4c41 2003 remul %d1,%d3,%d2 <== NOT EXECUTED 4c3bc: 4c41 2002 remul %d1,%d2,%d2 <== NOT EXECUTED doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS; p = info->doubly_indirect; if ( malloc_it ) { 4c3c0: 4a88 tstl %a0 <== NOT EXECUTED 4c3c2: 6700 0104 beqw 4c4c8 <== NOT EXECUTED if ( !p ) { 4c3c6: 4a89 tstl %a1 <== NOT EXECUTED 4c3c8: 6700 00a0 beqw 4c46a <== NOT EXECUTED if ( !p ) return 0; info->doubly_indirect = p; } p1 = (block_p *)p[ doubly ]; 4c3cc: 45f1 2c00 lea %a1@(00000000,%d2:l:4),%a2 <== NOT EXECUTED 4c3d0: 2052 moveal %a2@,%a0 <== NOT EXECUTED if ( !p1 ) { 4c3d2: 4a88 tstl %a0 <== NOT EXECUTED 4c3d4: 6764 beqs 4c43a <== NOT EXECUTED p2 = (block_p *)p1[ doubly ]; if ( !p2 ) return 0; return (block_p *)&p2[ singly ]; 4c3d6: 41f0 3c00 lea %a0@(00000000,%d3:l:4),%a0 <== NOT EXECUTED 4c3da: 2008 movel %a0,%d0 <== NOT EXECUTED /* * This means the requested block number is out of range. */ return 0; } 4c3dc: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 4c3e2: 4e5e unlk %fp <== NOT EXECUTED 4c3e4: 4e75 rts <== NOT EXECUTED info->indirect = p; } return &info->indirect[ my_block ]; } if ( !p ) 4c3e6: 4a89 tstl %a1 <== NOT EXECUTED 4c3e8: 66a8 bnes 4c392 <== NOT EXECUTED if ( !p1 ) return 0; p2 = (block_p *)p1[ doubly ]; if ( !p2 ) return 0; 4c3ea: 4280 clrl %d0 <== NOT EXECUTED /* * This means the requested block number is out of range. */ return 0; } 4c3ec: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED 4c3f2: 4e5e unlk %fp <== NOT EXECUTED 4c3f4: 4e75 rts <== NOT EXECUTED } /* * Is the block number in the triply indirect portion? */ if ( my_block <= LAST_TRIPLY_INDIRECT ) { 4c3f6: 2600 movel %d0,%d3 <== NOT EXECUTED 4c3f8: 5283 addql #1,%d3 <== NOT EXECUTED 4c3fa: 4c01 3800 mulsl %d1,%d3 <== NOT EXECUTED 4c3fe: 5383 subql #1,%d3 <== NOT EXECUTED 4c400: b682 cmpl %d2,%d3 <== NOT EXECUTED 4c402: 65e6 bcss 4c3ea <== NOT EXECUTED my_block -= FIRST_TRIPLY_INDIRECT; 4c404: 9480 subl %d0,%d2 <== NOT EXECUTED singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS; 4c406: 4c41 2003 remul %d1,%d3,%d2 <== NOT EXECUTED 4c40a: 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; 4c40e: 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; 4c412: 4c41 2004 remul %d1,%d4,%d2 <== NOT EXECUTED 4c416: 4c41 2002 remul %d1,%d2,%d2 <== NOT EXECUTED doubly %= IMFS_MEMFILE_BLOCK_SLOTS; p = info->triply_indirect; if ( malloc_it ) { 4c41a: 4a88 tstl %a0 <== NOT EXECUTED 4c41c: 6700 00c4 beqw 4c4e2 <== NOT EXECUTED if ( !p ) { 4c420: 4a89 tstl %a1 <== NOT EXECUTED 4c422: 6700 0084 beqw 4c4a8 <== NOT EXECUTED if ( !p ) return 0; info->triply_indirect = p; } p1 = (block_p *) p[ triply ]; 4c426: 45f1 2c00 lea %a1@(00000000,%d2:l:4),%a2 <== NOT EXECUTED 4c42a: 2052 moveal %a2@,%a0 <== NOT EXECUTED if ( !p1 ) { 4c42c: 4a88 tstl %a0 <== NOT EXECUTED 4c42e: 675a beqs 4c48a <== NOT EXECUTED if ( !p1 ) return 0; p[ triply ] = (block_p) p1; } p2 = (block_p *)p1[ doubly ]; 4c430: 45f0 4c00 lea %a0@(00000000,%d4:l:4),%a2 <== NOT EXECUTED 4c434: 2052 moveal %a2@,%a0 <== NOT EXECUTED if ( !p2 ) { 4c436: 4a88 tstl %a0 <== NOT EXECUTED 4c438: 669c bnes 4c3d6 <== NOT EXECUTED p2 = memfile_alloc_block(); 4c43a: 4eb9 0004 c33c jsr 4c33c <== NOT EXECUTED 4c440: 2040 moveal %d0,%a0 <== NOT EXECUTED if ( !p2 ) 4c442: 4a80 tstl %d0 <== NOT EXECUTED 4c444: 67a4 beqs 4c3ea <== NOT EXECUTED return 0; p1[ doubly ] = (block_p) p2; 4c446: 2480 movel %d0,%a2@ <== NOT EXECUTED p2 = (block_p *)p1[ doubly ]; if ( !p2 ) return 0; return (block_p *)&p2[ singly ]; 4c448: 41f0 3c00 lea %a0@(00000000,%d3:l:4),%a0 <== NOT EXECUTED 4c44c: 2008 movel %a0,%d0 <== NOT EXECUTED 4c44e: 608c bras 4c3dc <== NOT EXECUTED p = info->indirect; if ( malloc_it ) { if ( !p ) { p = memfile_alloc_block(); 4c450: 4eb9 0004 c33c jsr 4c33c <== NOT EXECUTED 4c456: 2240 moveal %d0,%a1 <== NOT EXECUTED if ( !p ) 4c458: 4a80 tstl %d0 <== NOT EXECUTED 4c45a: 678e beqs 4c3ea <== NOT EXECUTED return 0; info->indirect = p; 4c45c: 2540 0054 movel %d0,%a2@(84) <== NOT EXECUTED } if ( !p ) return 0; return &info->indirect[ my_block ]; 4c460: 43f1 2c00 lea %a1@(00000000,%d2:l:4),%a1 <== NOT EXECUTED 4c464: 2009 movel %a1,%d0 <== NOT EXECUTED 4c466: 6000 ff30 braw 4c398 <== NOT EXECUTED p = info->doubly_indirect; if ( malloc_it ) { if ( !p ) { p = memfile_alloc_block(); 4c46a: 4eb9 0004 c33c jsr 4c33c <== NOT EXECUTED 4c470: 2240 moveal %d0,%a1 <== NOT EXECUTED if ( !p ) 4c472: 4a80 tstl %d0 <== NOT EXECUTED 4c474: 6700 ff74 beqw 4c3ea <== NOT EXECUTED return 0; info->doubly_indirect = p; 4c478: 2540 0058 movel %d0,%a2@(88) <== NOT EXECUTED } p1 = (block_p *)p[ doubly ]; 4c47c: 45f1 2c00 lea %a1@(00000000,%d2:l:4),%a2 <== NOT EXECUTED 4c480: 2052 moveal %a2@,%a0 <== NOT EXECUTED if ( !p1 ) { 4c482: 4a88 tstl %a0 <== NOT EXECUTED 4c484: 6600 ff50 bnew 4c3d6 <== NOT EXECUTED 4c488: 60b0 bras 4c43a <== NOT EXECUTED info->triply_indirect = p; } p1 = (block_p *) p[ triply ]; if ( !p1 ) { p1 = memfile_alloc_block(); 4c48a: 4eb9 0004 c33c jsr 4c33c <== NOT EXECUTED 4c490: 2040 moveal %d0,%a0 <== NOT EXECUTED if ( !p1 ) 4c492: 4a80 tstl %d0 <== NOT EXECUTED 4c494: 6700 ff54 beqw 4c3ea <== NOT EXECUTED return 0; p[ triply ] = (block_p) p1; 4c498: 2480 movel %d0,%a2@ <== NOT EXECUTED } p2 = (block_p *)p1[ doubly ]; 4c49a: 45f0 4c00 lea %a0@(00000000,%d4:l:4),%a2 <== NOT EXECUTED 4c49e: 2052 moveal %a2@,%a0 <== NOT EXECUTED if ( !p2 ) { 4c4a0: 4a88 tstl %a0 <== NOT EXECUTED 4c4a2: 6600 ff32 bnew 4c3d6 <== NOT EXECUTED 4c4a6: 6092 bras 4c43a <== NOT EXECUTED p = info->triply_indirect; if ( malloc_it ) { if ( !p ) { p = memfile_alloc_block(); 4c4a8: 4eb9 0004 c33c jsr 4c33c <== NOT EXECUTED 4c4ae: 2240 moveal %d0,%a1 <== NOT EXECUTED if ( !p ) 4c4b0: 4a80 tstl %d0 <== NOT EXECUTED 4c4b2: 6700 ff36 beqw 4c3ea <== NOT EXECUTED return 0; info->triply_indirect = p; 4c4b6: 2540 005c movel %d0,%a2@(92) <== NOT EXECUTED } p1 = (block_p *) p[ triply ]; 4c4ba: 45f1 2c00 lea %a1@(00000000,%d2:l:4),%a2 <== NOT EXECUTED 4c4be: 2052 moveal %a2@,%a0 <== NOT EXECUTED if ( !p1 ) { 4c4c0: 4a88 tstl %a0 <== NOT EXECUTED 4c4c2: 6600 ff6c bnew 4c430 <== NOT EXECUTED 4c4c6: 60c2 bras 4c48a <== NOT EXECUTED } return (block_p *)&p1[ singly ]; } if ( !p ) 4c4c8: 4a89 tstl %a1 <== NOT EXECUTED 4c4ca: 6700 ff1e beqw 4c3ea <== NOT EXECUTED return 0; p = (block_p *)p[ doubly ]; 4c4ce: 2071 2c00 moveal %a1@(00000000,%d2:l:4),%a0 <== NOT EXECUTED if ( !p ) 4c4d2: 4a88 tstl %a0 <== NOT EXECUTED 4c4d4: 6700 ff14 beqw 4c3ea <== NOT EXECUTED p2 = (block_p *)p1[ doubly ]; if ( !p2 ) return 0; return (block_p *)&p2[ singly ]; 4c4d8: 41f0 3c00 lea %a0@(00000000,%d3:l:4),%a0 <== NOT EXECUTED 4c4dc: 2008 movel %a0,%d0 <== NOT EXECUTED 4c4de: 6000 fefc braw 4c3dc <== NOT EXECUTED p1[ doubly ] = (block_p) p2; } return (block_p *)&p2[ singly ]; } if ( !p ) 4c4e2: 4a89 tstl %a1 <== NOT EXECUTED 4c4e4: 6700 ff04 beqw 4c3ea <== NOT EXECUTED return 0; p1 = (block_p *) p[ triply ]; 4c4e8: 2071 2c00 moveal %a1@(00000000,%d2:l:4),%a0 <== NOT EXECUTED if ( !p1 ) 4c4ec: 4a88 tstl %a0 <== NOT EXECUTED 4c4ee: 6700 fefa beqw 4c3ea <== NOT EXECUTED return 0; p2 = (block_p *)p1[ doubly ]; 4c4f2: 2070 4c00 moveal %a0@(00000000,%d4:l:4),%a0 <== NOT EXECUTED if ( !p2 ) 4c4f6: 4a88 tstl %a0 <== NOT EXECUTED 4c4f8: 6700 fef0 beqw 4c3ea <== NOT EXECUTED return 0; return (block_p *)&p2[ singly ]; 4c4fc: 41f0 3c00 lea %a0@(00000000,%d3:l:4),%a0 <== NOT EXECUTED 4c500: 2008 movel %a0,%d0 <== NOT EXECUTED 4c502: 6000 fed8 braw 4c3dc <== 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 3ed8 movel 63ed8 ,%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 =============================================================================== 0004c506 : IMFS_jnode_t *the_jnode, off_t start, unsigned char *destination, unsigned int length ) { 4c506: 4e56 ffc8 linkw %fp,#-56 <== NOT EXECUTED 4c50a: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED 4c50e: 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) { 4c512: 7806 moveq #6,%d4 <== NOT EXECUTED IMFS_jnode_t *the_jnode, off_t start, unsigned char *destination, unsigned int length ) { 4c514: 266e 0014 moveal %fp@(20),%a3 <== NOT EXECUTED 4c518: 2a6e 0018 moveal %fp@(24),%a5 <== NOT EXECUTED 4c51c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4c520: 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) { 4c524: b8aa 0048 cmpl %a2@(72),%d4 <== NOT EXECUTED 4c528: 6700 017c beqw 4c6a6 <== 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; 4c52c: 43f5 3800 lea %a5@(00000000,%d3:l),%a1 <== NOT EXECUTED if ( last_byte > the_jnode->info.file.size ) 4c530: 4280 clrl %d0 <== NOT EXECUTED 4c532: 2209 movel %a1,%d1 <== NOT EXECUTED 4c534: 282a 004c movel %a2@(76),%d4 <== NOT EXECUTED 4c538: 2a2a 0050 movel %a2@(80),%d5 <== NOT EXECUTED 4c53c: 2c00 movel %d0,%d6 <== NOT EXECUTED 4c53e: 2e01 movel %d1,%d7 <== NOT EXECUTED 4c540: 9e85 subl %d5,%d7 <== NOT EXECUTED 4c542: 9d84 subxl %d4,%d6 <== NOT EXECUTED 4c544: 6f00 0110 blew 4c656 <== NOT EXECUTED */ /* * Phase 1: possibly the last part of one block */ start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK; 4c548: 2c39 0005 dbe8 movel 5dbe8 ,%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; 4c54e: 2e05 movel %d5,%d7 <== NOT EXECUTED 4c550: 9e83 subl %d3,%d7 <== NOT EXECUTED */ /* * Phase 1: possibly the last part of one block */ start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK; 4c552: 2a06 movel %d6,%d5 <== NOT EXECUTED 4c554: 5bc4 smi %d4 <== NOT EXECUTED 4c556: 49c4 extbl %d4 <== NOT EXECUTED 4c558: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4c55a: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4c55c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4c55e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4c560: 4eb9 0005 9b30 jsr 59b30 <__moddi3> <== NOT EXECUTED 4c566: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4c56a: 2841 moveal %d1,%a4 <== NOT EXECUTED block = start / IMFS_MEMFILE_BYTES_PER_BLOCK; 4c56c: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4c56e: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4c570: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4c572: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4c574: 4eb9 0005 977c jsr 5977c <__divdi3> <== NOT EXECUTED 4c57a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4c57e: 2401 movel %d1,%d2 <== NOT EXECUTED if ( start_offset ) { 4c580: 4a8c tstl %a4 <== NOT EXECUTED 4c582: 6700 010e beqw 4c692 <== 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 ); 4c586: 42a7 clrl %sp@- <== NOT EXECUTED 4c588: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4c58a: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c58c: 4eb9 0004 c360 jsr 4c360 <== NOT EXECUTED if ( !block_ptr ) 4c592: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4c596: 4a80 tstl %d0 <== NOT EXECUTED 4c598: 6700 01c0 beqw 4c75a <== 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; 4c59c: 9c8c subl %a4,%d6 <== NOT EXECUTED 4c59e: 2207 movel %d7,%d1 <== NOT EXECUTED 4c5a0: bc87 cmpl %d7,%d6 <== NOT EXECUTED 4c5a2: 6500 0162 bcsw 4c706 <== 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 ); 4c5a6: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4c5a8: 2040 moveal %d0,%a0 <== NOT EXECUTED 4c5aa: d9d0 addal %a0@,%a4 <== NOT EXECUTED dest += to_copy; 4c5ac: 280b movel %a3,%d4 <== NOT EXECUTED 4c5ae: d881 addl %d1,%d4 <== NOT EXECUTED block++; my_length -= to_copy; 4c5b0: 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++; 4c5b2: 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 ); 4c5b4: 2f0c movel %a4,%sp@- <== NOT EXECUTED dest += to_copy; block++; my_length -= to_copy; copied += to_copy; 4c5b6: 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 ); 4c5b8: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4c5ba: 4eb9 0004 e190 jsr 4e190 <== NOT EXECUTED dest += to_copy; block++; my_length -= to_copy; 4c5c0: 2c39 0005 dbe8 movel 5dbe8 ,%d6<== NOT EXECUTED 4c5c6: 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 ) { 4c5ca: bc87 cmpl %d7,%d6 <== NOT EXECUTED 4c5cc: 623c bhis 4c60a <== NOT EXECUTED 4c5ce: 47f9 0004 c360 lea 4c360 ,%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 ); 4c5d4: 4bf9 0004 e190 lea 4e190 ,%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 ); 4c5da: 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; 4c5dc: 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 ); 4c5de: 2f02 movel %d2,%sp@- <== NOT EXECUTED if ( !block_ptr ) return copied; memcpy( dest, &(*block_ptr)[ 0 ], to_copy ); dest += to_copy; block++; 4c5e0: 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 ); 4c5e2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c5e4: 4e93 jsr %a3@ <== NOT EXECUTED if ( !block_ptr ) 4c5e6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4c5ea: 4a80 tstl %d0 <== NOT EXECUTED 4c5ec: 6700 00ac beqw 4c69a <== NOT EXECUTED return copied; memcpy( dest, &(*block_ptr)[ 0 ], to_copy ); 4c5f0: 2040 moveal %d0,%a0 <== NOT EXECUTED dest += to_copy; block++; my_length -= to_copy; copied += to_copy; 4c5f2: 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 ); 4c5f4: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4c5f6: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4c5f8: 2f04 movel %d4,%sp@- <== NOT EXECUTED dest += to_copy; 4c5fa: 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 ); 4c5fc: 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 ) { 4c5fe: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4c602: beb9 0005 dbe8 cmpl 5dbe8 ,%d7<== NOT EXECUTED 4c608: 64d0 bccs 4c5da <== NOT EXECUTED /* * Phase 3: possibly the first part of one block */ IMFS_assert( my_length < IMFS_MEMFILE_BYTES_PER_BLOCK ); if ( my_length ) { 4c60a: 4a87 tstl %d7 <== NOT EXECUTED 4c60c: 6728 beqs 4c636 <== NOT EXECUTED block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 ); 4c60e: 42a7 clrl %sp@- <== NOT EXECUTED 4c610: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4c612: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4c614: 4eb9 0004 c360 jsr 4c360 <== NOT EXECUTED if ( !block_ptr ) 4c61a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4c61e: 4a80 tstl %d0 <== NOT EXECUTED 4c620: 6778 beqs 4c69a <== NOT EXECUTED return copied; memcpy( dest, &(*block_ptr)[ 0 ], my_length ); 4c622: 2040 moveal %d0,%a0 <== NOT EXECUTED copied += my_length; 4c624: 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 ); 4c626: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4c628: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4c62a: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4c62c: 4eb9 0004 e190 jsr 4e190 <== NOT EXECUTED copied += my_length; 4c632: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED } IMFS_update_atime( the_jnode ); 4c636: 42a7 clrl %sp@- <== NOT EXECUTED 4c638: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4c63c: 4eb9 0004 2d8c jsr 42d8c <== NOT EXECUTED 4c642: 256e fff8 003c movel %fp@(-8),%a2@(60) <== NOT EXECUTED return copied; 4c648: 200c movel %a4,%d0 <== NOT EXECUTED 4c64a: 508f addql #8,%sp <== NOT EXECUTED } 4c64c: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4c652: 4e5e unlk %fp <== NOT EXECUTED 4c654: 4e75 rts <== NOT EXECUTED */ /* * Phase 1: possibly the last part of one block */ start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK; 4c656: 2c39 0005 dbe8 movel 5dbe8 ,%d6<== NOT EXECUTED /* * Linear files (as created from a tar file are easier to handle * than block files). */ my_length = length; 4c65c: 2e0d movel %a5,%d7 <== NOT EXECUTED */ /* * Phase 1: possibly the last part of one block */ start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK; 4c65e: 2a06 movel %d6,%d5 <== NOT EXECUTED 4c660: 5bc4 smi %d4 <== NOT EXECUTED 4c662: 49c4 extbl %d4 <== NOT EXECUTED 4c664: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4c666: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4c668: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4c66a: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4c66c: 4eb9 0005 9b30 jsr 59b30 <__moddi3> <== NOT EXECUTED 4c672: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4c676: 2841 moveal %d1,%a4 <== NOT EXECUTED block = start / IMFS_MEMFILE_BYTES_PER_BLOCK; 4c678: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4c67a: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4c67c: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4c67e: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4c680: 4eb9 0005 977c jsr 5977c <__divdi3> <== NOT EXECUTED 4c686: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4c68a: 2401 movel %d1,%d2 <== NOT EXECUTED if ( start_offset ) { 4c68c: 4a8c tstl %a4 <== NOT EXECUTED 4c68e: 6600 fef6 bnew 4c586 <== NOT EXECUTED unsigned int last_byte; unsigned int copied; unsigned int start_offset; unsigned char *dest; dest = destination; 4c692: 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; 4c694: 99cc subal %a4,%a4 <== NOT EXECUTED 4c696: 6000 ff32 braw 4c5ca <== 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; 4c69a: 200c movel %a4,%d0 <== NOT EXECUTED } IMFS_update_atime( the_jnode ); return copied; } 4c69c: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4c6a2: 4e5e unlk %fp <== NOT EXECUTED 4c6a4: 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)) 4c6a6: 91c8 subal %a0,%a0 <== NOT EXECUTED 4c6a8: 202a 004c movel %a2@(76),%d0 <== NOT EXECUTED 4c6ac: 222a 0050 movel %a2@(80),%d1 <== NOT EXECUTED 4c6b0: 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; 4c6b4: 286a 0054 moveal %a2@(84),%a4 <== NOT EXECUTED if (my_length > (the_jnode->info.linearfile.size - start)) 4c6b8: 2800 movel %d0,%d4 <== NOT EXECUTED 4c6ba: 2a01 movel %d1,%d5 <== NOT EXECUTED 4c6bc: 2d48 fff0 movel %a0,%fp@(-16) <== NOT EXECUTED 4c6c0: 9a83 subl %d3,%d5 <== NOT EXECUTED 4c6c2: 9982 subxl %d2,%d4 <== NOT EXECUTED 4c6c4: 2c2e fff0 movel %fp@(-16),%d6 <== NOT EXECUTED 4c6c8: 2e2e fff4 movel %fp@(-12),%d7 <== NOT EXECUTED 4c6cc: 9e85 subl %d5,%d7 <== NOT EXECUTED 4c6ce: 9d84 subxl %d4,%d6 <== NOT EXECUTED 4c6d0: 6f5e bles 4c730 <== NOT EXECUTED my_length = the_jnode->info.linearfile.size - start; 4c6d2: 2e01 movel %d1,%d7 <== NOT EXECUTED 4c6d4: 9e83 subl %d3,%d7 <== NOT EXECUTED memcpy(dest, &file_ptr[start], my_length); 4c6d6: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4c6d8: 4874 3800 pea %a4@(00000000,%d3:l) <== NOT EXECUTED 4c6dc: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4c6de: 4eb9 0004 e190 jsr 4e190 <== NOT EXECUTED IMFS_update_atime( the_jnode ); 4c6e4: 42a7 clrl %sp@- <== NOT EXECUTED 4c6e6: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4c6ea: 4eb9 0004 2d8c jsr 42d8c <== NOT EXECUTED 4c6f0: 256e fff8 003c movel %fp@(-8),%a2@(60) <== NOT EXECUTED return my_length; 4c6f6: 2007 movel %d7,%d0 <== NOT EXECUTED 4c6f8: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED } IMFS_update_atime( the_jnode ); return copied; } 4c6fc: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4c702: 4e5e unlk %fp <== NOT EXECUTED 4c704: 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; 4c706: 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 ); 4c708: 2040 moveal %d0,%a0 <== NOT EXECUTED dest += to_copy; 4c70a: 280b movel %a3,%d4 <== NOT EXECUTED 4c70c: d881 addl %d1,%d4 <== NOT EXECUTED block++; my_length -= to_copy; 4c70e: 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++; 4c710: 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 ); 4c712: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4c714: d9d0 addal %a0@,%a4 <== NOT EXECUTED 4c716: 2f0c movel %a4,%sp@- <== NOT EXECUTED dest += to_copy; block++; my_length -= to_copy; copied += to_copy; 4c718: 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 ); 4c71a: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4c71c: 4eb9 0004 e190 jsr 4e190 <== NOT EXECUTED dest += to_copy; block++; my_length -= to_copy; 4c722: 2c39 0005 dbe8 movel 5dbe8 ,%d6<== NOT EXECUTED 4c728: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4c72c: 6000 fe9c braw 4c5ca <== NOT EXECUTED /* * Linear files (as created from a tar file are easier to handle * than block files). */ my_length = length; 4c730: 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); 4c732: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4c734: 4874 3800 pea %a4@(00000000,%d3:l) <== NOT EXECUTED 4c738: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4c73a: 4eb9 0004 e190 jsr 4e190 <== NOT EXECUTED IMFS_update_atime( the_jnode ); 4c740: 42a7 clrl %sp@- <== NOT EXECUTED 4c742: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4c746: 4eb9 0004 2d8c jsr 42d8c <== NOT EXECUTED 4c74c: 256e fff8 003c movel %fp@(-8),%a2@(60) <== NOT EXECUTED return my_length; 4c752: 2007 movel %d7,%d0 <== NOT EXECUTED 4c754: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED 4c758: 60a2 bras 4c6fc <== 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; 4c75a: 4280 clrl %d0 <== NOT EXECUTED } IMFS_update_atime( the_jnode ); return copied; } 4c75c: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED 4c762: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004c838 : * is better to stick to simple, easy to understand algorithms. */ int IMFS_memfile_remove( IMFS_jnode_t *the_jnode ) { 4c838: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED 4c83c: 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; 4c840: 2839 0005 dbe8 movel 5dbe8 ,%d4<== NOT EXECUTED 4c846: 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 ) { 4c848: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED * + doubly indirect * + triply indirect */ info = &the_jnode->info.file; if ( info->indirect ) { 4c84c: 4aac 0054 tstl %a4@(84) <== NOT EXECUTED 4c850: 670e beqs 4c860 <== NOT EXECUTED memfile_free_blocks_in_table( &info->indirect, to_free ); 4c852: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4c854: 486c 0054 pea %a4@(84) <== NOT EXECUTED 4c858: 4eb9 0004 c7f2 jsr 4c7f2 <== NOT EXECUTED 4c85e: 508f addql #8,%sp <== NOT EXECUTED } if ( info->doubly_indirect ) { 4c860: 206c 0058 moveal %a4@(88),%a0 <== NOT EXECUTED 4c864: 4a88 tstl %a0 <== NOT EXECUTED 4c866: 6750 beqs 4c8b8 <== NOT EXECUTED for ( i=0 ; i,%d1<== NOT EXECUTED 4c86e: 2001 movel %d1,%d0 <== NOT EXECUTED 4c870: e488 lsrl #2,%d0 <== NOT EXECUTED 4c872: 47f9 0004 c7f2 lea 4c7f2 ,%a3<== NOT EXECUTED 4c878: 6734 beqs 4c8ae <== NOT EXECUTED 4c87a: 4280 clrl %d0 <== NOT EXECUTED 4c87c: 4282 clrl %d2 <== NOT EXECUTED 4c87e: 47f9 0004 c7f2 lea 4c7f2 ,%a3<== NOT EXECUTED 4c884: 5282 addql #1,%d2 <== NOT EXECUTED if ( info->doubly_indirect[i] ) { 4c886: e588 lsll #2,%d0 <== NOT EXECUTED 4c888: 4ab0 0800 tstl %a0@(00000000,%d0:l) <== NOT EXECUTED 4c88c: 6710 beqs 4c89e <== NOT EXECUTED memfile_free_blocks_in_table( 4c88e: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4c890: 4870 0800 pea %a0@(00000000,%d0:l) <== NOT EXECUTED 4c894: 4e93 jsr %a3@ <== NOT EXECUTED 4c896: 2239 0005 dbe8 movel 5dbe8 ,%d1<== NOT EXECUTED 4c89c: 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 4c8a8: 206c 0058 moveal %a4@(88),%a0 <== NOT EXECUTED 4c8ac: 60d6 bras 4c884 <== 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 ); 4c8ae: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4c8b0: 486c 0058 pea %a4@(88) <== NOT EXECUTED 4c8b4: 4e93 jsr %a3@ <== NOT EXECUTED 4c8b6: 508f addql #8,%sp <== NOT EXECUTED } if ( info->triply_indirect ) { 4c8b8: 206c 005c moveal %a4@(92),%a0 <== NOT EXECUTED 4c8bc: 4a88 tstl %a0 <== NOT EXECUTED 4c8be: 6700 0086 beqw 4c946 <== NOT EXECUTED for ( i=0 ; i,%d1<== NOT EXECUTED 4c8c8: 2001 movel %d1,%d0 <== NOT EXECUTED 4c8ca: e488 lsrl #2,%d0 <== NOT EXECUTED 4c8cc: 47f9 0004 c7f2 lea 4c7f2 ,%a3<== NOT EXECUTED 4c8d2: 6768 beqs 4c93c <== NOT EXECUTED p = (block_p *) info->triply_indirect[i]; 4c8d4: 2450 moveal %a0@,%a2 <== NOT EXECUTED 4c8d6: 47f9 0004 c7f2 lea 4c7f2 ,%a3<== NOT EXECUTED if ( !p ) /* ensure we have a valid pointer */ 4c8dc: 4a8a tstl %a2 <== NOT EXECUTED 4c8de: 675c beqs 4c93c <== NOT EXECUTED } if ( info->triply_indirect ) { for ( i=0 ; itriply_indirect[i]; 4c8e0: 4286 clrl %d6 <== NOT EXECUTED if ( !p ) /* ensure we have a valid pointer */ 4c8e2: 4285 clrl %d5 <== NOT EXECUTED break; for ( j=0 ; j <== NOT EXECUTED 4c8e8: 4280 clrl %d0 <== NOT EXECUTED 4c8ea: 4282 clrl %d2 <== NOT EXECUTED 4c8ec: 5282 addql #1,%d2 <== NOT EXECUTED if ( p[j] ) { 4c8ee: e588 lsll #2,%d0 <== NOT EXECUTED 4c8f0: 4ab2 0800 tstl %a2@(00000000,%d0:l) <== NOT EXECUTED 4c8f4: 6710 beqs 4c906 <== NOT EXECUTED memfile_free_blocks_in_table( (block_p **)&p[j], to_free); 4c8f6: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4c8f8: 4872 0800 pea %a2@(00000000,%d0:l) <== NOT EXECUTED 4c8fc: 4e93 jsr %a3@ <== NOT EXECUTED 4c8fe: 2239 0005 dbe8 movel 5dbe8 ,%d1<== NOT EXECUTED 4c904: 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( 4c910: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4c912: 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 4c922: 2001 movel %d1,%d0 <== NOT EXECUTED 4c924: 508f addql #8,%sp <== NOT EXECUTED 4c926: e488 lsrl #2,%d0 <== NOT EXECUTED 4c928: ba80 cmpl %d0,%d5 <== NOT EXECUTED 4c92a: 6410 bccs 4c93c <== NOT EXECUTED p = (block_p *) info->triply_indirect[i]; if ( !p ) /* ensure we have a valid pointer */ 4c92c: 2c05 movel %d5,%d6 <== NOT EXECUTED } if ( info->triply_indirect ) { for ( i=0 ; itriply_indirect[i]; 4c92e: 206c 005c moveal %a4@(92),%a0 <== NOT EXECUTED if ( !p ) /* ensure we have a valid pointer */ 4c932: e58e lsll #2,%d6 <== NOT EXECUTED } if ( info->triply_indirect ) { for ( i=0 ; itriply_indirect[i]; 4c934: 2470 6800 moveal %a0@(00000000,%d6:l),%a2 <== NOT EXECUTED if ( !p ) /* ensure we have a valid pointer */ 4c938: 4a8a tstl %a2 <== NOT EXECUTED 4c93a: 66a8 bnes 4c8e4 <== NOT EXECUTED } } memfile_free_blocks_in_table( (block_p **)&info->triply_indirect[i], to_free ); } memfile_free_blocks_in_table( 4c93c: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4c93e: 486c 005c pea %a4@(92) <== NOT EXECUTED 4c942: 4e93 jsr %a3@ <== NOT EXECUTED 4c944: 508f addql #8,%sp <== NOT EXECUTED (block_p **)&info->triply_indirect, to_free ); } return 0; } 4c946: 4280 clrl %d0 <== NOT EXECUTED 4c948: 4cee 1c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a4 <== NOT EXECUTED 4c94e: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004c952 : */ MEMFILE_STATIC int IMFS_memfile_remove_block( IMFS_jnode_t *the_jnode, unsigned int block ) { 4c952: 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 ); 4c956: 42a7 clrl %sp@- <== NOT EXECUTED 4c958: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4c95c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED 4c960: 4eb9 0004 c360 jsr 4c360 <== NOT EXECUTED IMFS_assert( block_ptr ); ptr = *block_ptr; 4c966: 2040 moveal %d0,%a0 <== NOT EXECUTED 4c968: 2210 movel %a0@,%d1 <== NOT EXECUTED *block_ptr = 0; 4c96a: 4290 clrl %a0@ <== NOT EXECUTED memfile_free_block( ptr ); 4c96c: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4c96e: 4eb9 0004 c7d8 jsr 4c7d8 <== NOT EXECUTED return 1; } 4c974: 7001 moveq #1,%d0 <== NOT EXECUTED 4c976: 4e5e unlk %fp <== NOT EXECUTED =============================================================================== 0004ca80 : * 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 ) { 4ca80: 4280 clrl %d0 <== NOT EXECUTED IMFS_jnode_t *the_jnode, off_t start, const unsigned char *source, unsigned int length ) { 4ca82: 4e56 ffd4 linkw %fp,#-44 <== NOT EXECUTED 4ca86: 48d7 1cfc moveml %d2-%d7/%a2-%a4,%sp@ <== NOT EXECUTED 4ca8a: 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; 4ca8e: 2047 moveal %d7,%a0 <== NOT EXECUTED IMFS_jnode_t *the_jnode, off_t start, const unsigned char *source, unsigned int length ) { 4ca90: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED 4ca94: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED 4ca98: 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; 4ca9c: d1c3 addal %d3,%a0 <== NOT EXECUTED if ( last_byte > the_jnode->info.file.size ) { 4ca9e: 2208 movel %a0,%d1 <== NOT EXECUTED IMFS_jnode_t *the_jnode, off_t start, const unsigned char *source, unsigned int length ) { 4caa0: 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 ) { 4caa4: 282a 004c movel %a2@(76),%d4 <== NOT EXECUTED 4caa8: 2a2a 0050 movel %a2@(80),%d5 <== NOT EXECUTED 4caac: 9a81 subl %d1,%d5 <== NOT EXECUTED 4caae: 9980 subxl %d0,%d4 <== NOT EXECUTED 4cab0: 6d00 0116 bltw 4cbc8 <== NOT EXECUTED */ /* * Phase 1: possibly the last part of one block */ start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK; 4cab4: 2c39 0005 dbe8 movel 5dbe8 ,%d6<== NOT EXECUTED 4caba: 2a06 movel %d6,%d5 <== NOT EXECUTED 4cabc: 5bc4 smi %d4 <== NOT EXECUTED 4cabe: 49c4 extbl %d4 <== NOT EXECUTED 4cac0: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4cac2: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4cac4: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4cac6: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4cac8: 4eb9 0005 9b30 jsr 59b30 <__moddi3> <== NOT EXECUTED 4cace: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4cad2: 2641 moveal %d1,%a3 <== NOT EXECUTED block = start / IMFS_MEMFILE_BYTES_PER_BLOCK; 4cad4: 2f05 movel %d5,%sp@- <== NOT EXECUTED 4cad6: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4cad8: 2f03 movel %d3,%sp@- <== NOT EXECUTED 4cada: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4cadc: 4eb9 0005 977c jsr 5977c <__divdi3> <== NOT EXECUTED 4cae2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED 4cae6: 2401 movel %d1,%d2 <== NOT EXECUTED if ( start_offset ) { 4cae8: 4a8b tstl %a3 <== NOT EXECUTED 4caea: 6700 00d4 beqw 4cbc0 <== 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 ); 4caee: 42a7 clrl %sp@- <== NOT EXECUTED 4caf0: 2f01 movel %d1,%sp@- <== NOT EXECUTED 4caf2: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4caf4: 4eb9 0004 c360 jsr 4c360 <== NOT EXECUTED if ( !block_ptr ) 4cafa: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4cafe: 4a80 tstl %d0 <== NOT EXECUTED 4cb00: 6700 0120 beqw 4cc22 <== 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; 4cb04: 9c8b subl %a3,%d6 <== NOT EXECUTED 4cb06: be86 cmpl %d6,%d7 <== NOT EXECUTED 4cb08: 6500 00ee bcsw 4cbf8 <== NOT EXECUTED block, to_copy, src ); #endif memcpy( &(*block_ptr)[ start_offset ], src, to_copy ); 4cb0c: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4cb0e: 2040 moveal %d0,%a0 <== NOT EXECUTED src += to_copy; 4cb10: 280c movel %a4,%d4 <== NOT EXECUTED 4cb12: d886 addl %d6,%d4 <== NOT EXECUTED block++; my_length -= to_copy; 4cb14: 9e86 subl %d6,%d7 <== NOT EXECUTED copied += to_copy; 4cb16: 2606 movel %d6,%d3 <== NOT EXECUTED src ); #endif memcpy( &(*block_ptr)[ start_offset ], src, to_copy ); src += to_copy; block++; 4cb18: 5282 addql #1,%d2 <== NOT EXECUTED block, to_copy, src ); #endif memcpy( &(*block_ptr)[ start_offset ], src, to_copy ); 4cb1a: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4cb1c: d7d0 addal %a0@,%a3 <== NOT EXECUTED 4cb1e: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4cb20: 4eb9 0004 e190 jsr 4e190 <== NOT EXECUTED src += to_copy; block++; my_length -= to_copy; copied += to_copy; 4cb26: 2c39 0005 dbe8 movel 5dbe8 ,%d6<== NOT EXECUTED 4cb2c: 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 ) { 4cb30: bc87 cmpl %d7,%d6 <== NOT EXECUTED 4cb32: 623a bhis 4cb6e <== NOT EXECUTED 4cb34: 47f9 0004 c360 lea 4c360 ,%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 ); 4cb3a: 49f9 0004 e190 lea 4e190 ,%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 ); 4cb40: 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; 4cb42: 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 ); 4cb44: 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++; 4cb46: 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 ); 4cb48: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4cb4a: 4e93 jsr %a3@ <== NOT EXECUTED if ( !block_ptr ) 4cb4c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4cb50: 4a80 tstl %d0 <== NOT EXECUTED 4cb52: 6760 beqs 4cbb4 <== 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 ); 4cb54: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4cb56: 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( 4cb58: 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 ); 4cb5a: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4cb5c: 2f10 movel %a0@,%sp@- <== NOT EXECUTED src += to_copy; 4cb5e: 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 ); 4cb60: 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 ) { 4cb62: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4cb66: beb9 0005 dbe8 cmpl 5dbe8 ,%d7<== NOT EXECUTED 4cb6c: 64d2 bccs 4cb40 <== 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 ) { 4cb6e: 4a87 tstl %d7 <== NOT EXECUTED 4cb70: 6728 beqs 4cb9a <== NOT EXECUTED block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 ); 4cb72: 42a7 clrl %sp@- <== NOT EXECUTED 4cb74: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4cb76: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4cb78: 4eb9 0004 c360 jsr 4c360 <== NOT EXECUTED if ( !block_ptr ) 4cb7e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4cb82: 4a80 tstl %d0 <== NOT EXECUTED 4cb84: 672e beqs 4cbb4 <== 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 ); 4cb86: 2f07 movel %d7,%sp@- <== NOT EXECUTED 4cb88: 2040 moveal %d0,%a0 <== NOT EXECUTED my_length = 0; copied += to_copy; 4cb8a: 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 ); 4cb8c: 2f04 movel %d4,%sp@- <== NOT EXECUTED 4cb8e: 2f10 movel %a0@,%sp@- <== NOT EXECUTED 4cb90: 4eb9 0004 e190 jsr 4e190 <== NOT EXECUTED my_length = 0; copied += to_copy; 4cb96: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED } IMFS_mtime_ctime_update( the_jnode ); 4cb9a: 42a7 clrl %sp@- <== NOT EXECUTED 4cb9c: 486e fff8 pea %fp@(-8) <== NOT EXECUTED 4cba0: 4eb9 0004 2d8c jsr 42d8c <== NOT EXECUTED 4cba6: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED return copied; 4cbaa: 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 ); 4cbac: 2540 0040 movel %d0,%a2@(64) <== NOT EXECUTED 4cbb0: 2540 0044 movel %d0,%a2@(68) <== NOT EXECUTED return copied; } 4cbb4: 2003 movel %d3,%d0 <== NOT EXECUTED 4cbb6: 4cee 1cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a4 <== NOT EXECUTED 4cbbc: 4e5e unlk %fp <== NOT EXECUTED 4cbbe: 4e75 rts <== NOT EXECUTED unsigned int last_byte; unsigned int start_offset; int copied; const unsigned char *src; src = source; 4cbc0: 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; 4cbc2: 4283 clrl %d3 <== NOT EXECUTED 4cbc4: 6000 ff6a braw 4cb30 <== 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 ); 4cbc8: 2f08 movel %a0,%sp@- <== NOT EXECUTED 4cbca: 2f00 movel %d0,%sp@- <== NOT EXECUTED 4cbcc: 2f0a movel %a2,%sp@- <== NOT EXECUTED 4cbce: 4eb9 0004 c97a jsr 4c97a <== NOT EXECUTED if ( status ) 4cbd4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4cbd8: 4a80 tstl %d0 <== NOT EXECUTED 4cbda: 6700 fed8 beqw 4cab4 <== NOT EXECUTED rtems_set_errno_and_return_minus_one( ENOSPC ); 4cbde: 4eb9 0004 d8e4 jsr 4d8e4 <__errno> <== NOT EXECUTED 4cbe4: 76ff moveq #-1,%d3 <== NOT EXECUTED 4cbe6: 781c moveq #28,%d4 <== NOT EXECUTED 4cbe8: 2040 moveal %d0,%a0 <== NOT EXECUTED } IMFS_mtime_ctime_update( the_jnode ); return copied; } 4cbea: 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 ); 4cbec: 2084 movel %d4,%a0@ <== NOT EXECUTED } IMFS_mtime_ctime_update( the_jnode ); return copied; } 4cbee: 4cee 1cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a4 <== NOT EXECUTED 4cbf4: 4e5e unlk %fp <== NOT EXECUTED 4cbf6: 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; 4cbf8: 2c07 movel %d7,%d6 <== NOT EXECUTED block, to_copy, src ); #endif memcpy( &(*block_ptr)[ start_offset ], src, to_copy ); 4cbfa: 2040 moveal %d0,%a0 <== NOT EXECUTED src += to_copy; 4cbfc: 280c movel %a4,%d4 <== NOT EXECUTED 4cbfe: d886 addl %d6,%d4 <== NOT EXECUTED block++; my_length -= to_copy; 4cc00: 9e86 subl %d6,%d7 <== NOT EXECUTED copied += to_copy; 4cc02: 2606 movel %d6,%d3 <== NOT EXECUTED src ); #endif memcpy( &(*block_ptr)[ start_offset ], src, to_copy ); src += to_copy; block++; 4cc04: 5282 addql #1,%d2 <== NOT EXECUTED block, to_copy, src ); #endif memcpy( &(*block_ptr)[ start_offset ], src, to_copy ); 4cc06: 2f06 movel %d6,%sp@- <== NOT EXECUTED 4cc08: 2f0c movel %a4,%sp@- <== NOT EXECUTED 4cc0a: d7d0 addal %a0@,%a3 <== NOT EXECUTED 4cc0c: 2f0b movel %a3,%sp@- <== NOT EXECUTED 4cc0e: 4eb9 0004 e190 jsr 4e190 <== NOT EXECUTED src += to_copy; block++; my_length -= to_copy; copied += to_copy; 4cc14: 2c39 0005 dbe8 movel 5dbe8 ,%d6<== NOT EXECUTED 4cc1a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED 4cc1e: 6000 ff10 braw 4cb30 <== 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; 4cc22: 4283 clrl %d3 <== NOT EXECUTED } IMFS_mtime_ctime_update( the_jnode ); return copied; } 4cc24: 2003 movel %d3,%d0 <== NOT EXECUTED 4cc26: 4cee 1cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a4 <== NOT EXECUTED 4cc2c: 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 ed3c jsr 4ed3c 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 a904 jsr 4a904 /* * 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 9e30 jsr 49e30 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 d8e4 jsr 4d8e4 <__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 d8e4 jsr 4d8e4 <__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 31a0 moveal 631a0 <_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 23bc jsr 523bc <== 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 1a63 pea 61a63 <== NOT EXECUTED 44dd2: 2079 0006 31a0 moveal 631a0 <_impure_ptr>,%a0 <== NOT EXECUTED 44dd8: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44ddc: 4eb9 0005 226e jsr 5226e <== NOT EXECUTED return; } puts(""); } 44de2: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED fprintf(stdout, " FIFO not printed\n" ); return; default: fprintf(stdout, " bad type %d\n", the_jnode->type ); return; 44de6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED } puts(""); } 44dea: 4e5e unlk %fp <== NOT EXECUTED 44dec: 4e75 rts <== NOT EXECUTED ) { IMFS_assert( the_jnode ); fprintf(stdout, "%s", the_jnode->name ); switch( the_jnode->type ) { 44dee: 323b 0a08 movew %pc@(44df8 ,%d0:l:2),%d1<== NOT EXECUTED 44df2: 48c1 extl %d1 <== NOT EXECUTED 44df4: 4efb 1802 jmp %pc@(44df8 ,%d1:l)<== NOT EXECUTED 44df8: ffd2 .short 0xffd2 <== NOT EXECUTED 44dfa: 003a .short 0x003a <== NOT EXECUTED 44dfc: 0066 .short 0x0066 <== NOT EXECUTED 44dfe: 0010 .short 0x0010 <== NOT EXECUTED 44e00: 0010 .short 0x0010 <== NOT EXECUTED 44e02: 009e 00d2 010a oril #13762826,%d6 <== NOT EXECUTED case IMFS_HARD_LINK: fprintf(stdout, " links not printed\n" ); return; case IMFS_SYM_LINK: fprintf(stdout, " links not printed\n" ); 44e08: 2079 0006 31a0 moveal 631a0 <_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 1a3c pea 61a3c <== NOT EXECUTED 44e20: 4eb9 0005 2f2c jsr 52f2c <== 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 31a0 moveal 631a0 <_impure_ptr>,%a0 <== NOT EXECUTED 44e38: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44e3c: 4878 002f pea 2f <== NOT EXECUTED 44e40: 4eb9 0005 22ec jsr 522ec <== 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 2116 movel #401686,%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 3c4e jmp 53c4e <== 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 31a0 moveal 631a0 <_impure_ptr>,%a0 <== NOT EXECUTED 44e6c: 4879 0006 1a0e pea 61a0e <== NOT EXECUTED 44e72: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44e76: 4eb9 0005 226e jsr 5226e <== 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 2116 movel #401686,%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 3c4e jmp 53c4e <== 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 31a0 moveal 631a0 <_impure_ptr>,%a0 <== NOT EXECUTED 44ea0: 4879 0006 1a30 pea 61a30 <== NOT EXECUTED 44ea6: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44eaa: 4eb9 0005 226e jsr 5226e <== 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 2116 movel #401686,%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 3c4e jmp 53c4e <== 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 31a0 moveal 631a0 <_impure_ptr>,%a0 <== NOT EXECUTED 44ed8: 4879 0006 1a21 pea 61a21 <== NOT EXECUTED 44ede: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED 44ee2: 4eb9 0005 226e jsr 5226e <== 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 2116 movel #401686,%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 3c4e jmp 53c4e <== 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 31a0 moveal 631a0 <_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 1a50 pea 61a50 <== NOT EXECUTED 44f1a: 4eb9 0005 2f2c jsr 52f2c <== 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 ed54 jsr 4ed54 <== 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 6ed0 jsr 46ed0 <_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 6e98 jsr 46e98 <_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 =============================================================================== 0004aac0 : int IMFS_rmnod( rtems_filesystem_location_info_t *parent_pathloc, /* IN */ rtems_filesystem_location_info_t *pathloc /* IN */ ) { 4aac0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED 4aac4: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED 4aac8: 2f02 movel %d2,%sp@- <== NOT EXECUTED IMFS_jnode_t *jnode = (IMFS_jnode_t *) pathloc->node_access; 4aaca: 2410 movel %a0@,%d2 <== NOT EXECUTED IMFS_create_orphan( jnode ); 4aacc: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4aace: 4eb9 0004 a9e4 jsr 4a9e4 <== NOT EXECUTED IMFS_check_node_remove( jnode ); 4aad4: 2f02 movel %d2,%sp@- <== NOT EXECUTED 4aad6: 4eb9 0004 aa28 jsr 4aa28 <== NOT EXECUTED return 0; } 4aadc: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED 4aae0: 4280 clrl %d0 <== NOT EXECUTED 4aae2: 4e5e unlk %fp <== NOT EXECUTED ... =============================================================================== 0004aae8 : IMFS_device_t *io; the_jnode = loc->node_access; switch ( the_jnode->type ) { 4aae8: 7007 moveq #7,%d0 int IMFS_stat( rtems_filesystem_location_info_t *loc, struct stat *buf ) { 4aaea: 4e56 0000 linkw %fp,#0 4aaee: 206e 000c moveal %fp@(12),%a0 4aaf2: 2f0a movel %a2,%sp@- 4aaf4: 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; 4aaf8: 2252 moveal %a2@,%a1 switch ( the_jnode->type ) { 4aafa: b0a9 0048 cmpl %a1@(72),%d0 4aafe: 6418 bccs 4ab18 <== ALWAYS TAKEN case IMFS_FIFO: buf->st_size = 0; break; default: rtems_set_errno_and_return_minus_one( ENOTSUP ); 4ab00: 4eb9 0004 d8e4 jsr 4d8e4 <__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; } 4ab06: 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 ); 4ab0a: 2040 moveal %d0,%a0 <== NOT EXECUTED 4ab0c: 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; } 4ab0e: 4e5e unlk %fp <== NOT EXECUTED case IMFS_FIFO: buf->st_size = 0; break; default: rtems_set_errno_and_return_minus_one( ENOTSUP ); 4ab10: 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; } 4ab16: 4e75 rts <== NOT EXECUTED IMFS_device_t *io; the_jnode = loc->node_access; switch ( the_jnode->type ) { 4ab18: 2029 0048 movel %a1@(72),%d0 4ab1c: d080 addl %d0,%d0 4ab1e: 303b 0808 movew %pc@(4ab28 ,%d0:l),%d0 4ab22: 48c0 extl %d0 4ab24: 4efb 0802 jmp %pc@(4ab28 ,%d0:l) 4ab28: ffd8 .short 0xffd8 <== NOT EXECUTED 4ab2a: ffd8 .short 0xffd8 <== NOT EXECUTED 4ab2c: 00c2 bitrev %d2 <== NOT EXECUTED 4ab2e: ffd8 .short 0xffd8 <== NOT EXECUTED 4ab30: 0010 .short 0x0010 <== NOT EXECUTED 4ab32: 006a .short 0x006a <== NOT EXECUTED 4ab34: 006a .short 0x006a <== NOT EXECUTED 4ab36: 0010 .short 0x0010 <== NOT EXECUTED /* * The device number of the IMFS is the major number and the minor is the * instance. */ fs_info = loc->mt_entry->fs_info; 4ab38: 246a 0010 moveal %a2@(16),%a2 <== NOT EXECUTED case IMFS_SYM_LINK: buf->st_size = 0; break; case IMFS_FIFO: buf->st_size = 0; 4ab3c: 4280 clrl %d0 <== NOT EXECUTED 4ab3e: 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 ); 4ab40: 246a 0034 moveal %a2@(52),%a2 <== NOT EXECUTED case IMFS_SYM_LINK: buf->st_size = 0; break; case IMFS_FIFO: buf->st_size = 0; 4ab44: 2140 001e movel %d0,%a0@(30) <== NOT EXECUTED 4ab48: 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 ); 4ab4c: 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; 4ab4e: 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; 4ab50: 2169 002e 000c movel %a1@(46),%a0@(12) <== NOT EXECUTED buf->st_nlink = the_jnode->st_nlink; 4ab56: 3169 0032 0010 movew %a1@(50),%a0@(16) <== NOT EXECUTED buf->st_ino = the_jnode->st_ino; 4ab5c: 2169 0034 0008 movel %a1@(52),%a0@(8) <== NOT EXECUTED buf->st_uid = the_jnode->st_uid; 4ab62: 3169 0038 0012 movew %a1@(56),%a0@(18) <== NOT EXECUTED buf->st_gid = the_jnode->st_gid; 4ab68: 3169 003a 0014 movew %a1@(58),%a0@(20) <== NOT EXECUTED buf->st_atime = the_jnode->stat_atime; 4ab6e: 2169 003c 0026 movel %a1@(60),%a0@(38) <== NOT EXECUTED buf->st_mtime = the_jnode->stat_mtime; 4ab74: 2169 0040 002e movel %a1@(64),%a0@(46) <== NOT EXECUTED buf->st_ctime = the_jnode->stat_ctime; 4ab7a: 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 = 4ab80: 20bc 0000 fffe movel #65534,%a0@ <== NOT EXECUTED 4ab86: 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; } 4ab8a: 246e fffc moveal %fp@(-4),%a2 4ab8e: 4e5e unlk %fp 4ab90: 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; 4ab92: 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; 4ab96: 2029 004c movel %a1@(76),%d0 <== NOT EXECUTED 4ab9a: 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 ); 4ab9e: 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; 4aba2: 2140 001e movel %d0,%a0@(30) <== NOT EXECUTED 4aba6: 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 ); 4abaa: 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; 4abac: 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; 4abae: 2169 002e 000c movel %a1@(46),%a0@(12) <== NOT EXECUTED buf->st_nlink = the_jnode->st_nlink; 4abb4: 3169 0032 0010 movew %a1@(50),%a0@(16) <== NOT EXECUTED buf->st_ino = the_jnode->st_ino; 4abba: 2169 0034 0008 movel %a1@(52),%a0@(8) <== NOT EXECUTED buf->st_uid = the_jnode->st_uid; 4abc0: 3169 0038 0012 movew %a1@(56),%a0@(18) <== NOT EXECUTED buf->st_gid = the_jnode->st_gid; 4abc6: 3169 003a 0014 movew %a1@(58),%a0@(20) <== NOT EXECUTED buf->st_atime = the_jnode->stat_atime; 4abcc: 2169 003c 0026 movel %a1@(60),%a0@(38) <== NOT EXECUTED buf->st_mtime = the_jnode->stat_mtime; 4abd2: 2169 0040 002e movel %a1@(64),%a0@(46) <== NOT EXECUTED buf->st_ctime = the_jnode->stat_ctime; 4abd8: 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 = 4abde: 20bc 0000 fffe movel #65534,%a0@ <== NOT EXECUTED 4abe4: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED 4abe8: 60a0 bras 4ab8a <== 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; 4abea: 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 ); 4abee: 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 ); 4abf2: 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 ); 4abf6: 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 ); 4abfc: 2212 movel %a2@,%d1 buf->st_mode = the_jnode->st_mode; 4abfe: 2169 002e 000c movel %a1@(46),%a0@(12) buf->st_nlink = the_jnode->st_nlink; 4ac04: 3169 0032 0010 movew %a1@(50),%a0@(16) buf->st_ino = the_jnode->st_ino; 4ac0a: 2169 0034 0008 movel %a1@(52),%a0@(8) buf->st_uid = the_jnode->st_uid; 4ac10: 3169 0038 0012 movew %a1@(56),%a0@(18) buf->st_gid = the_jnode->st_gid; 4ac16: 3169 003a 0014 movew %a1@(58),%a0@(20) buf->st_atime = the_jnode->stat_atime; 4ac1c: 2169 003c 0026 movel %a1@(60),%a0@(38) buf->st_mtime = the_jnode->stat_mtime; 4ac22: 2169 0040 002e movel %a1@(64),%a0@(46) buf->st_ctime = the_jnode->stat_ctime; 4ac28: 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 ); 4ac2e: 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; 4ac32: 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 = 4ac34: 20bc 0000 fffe movel #65534,%a0@ 4ac3a: 2141 0004 movel %d1,%a0@(4) 4ac3e: 6000 ff4a braw 4ab8a ... =============================================================================== 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 ed3c jsr 4ed3c <== 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 a904 jsr 4a904 <== NOT EXECUTED /* * Duplicate link name */ info.sym_link.name = strdup(link_name); 4253a: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED 4253e: 4eb9 0004 e8ac jsr 4e8ac <== 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 9e30 jsr 49e30 <== 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 d8e4 jsr 4d8e4 <__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 d8e4 jsr 4d8e4 <__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 a060 jsr 4a060 <== 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 d8e4 jsr 4d8e4 <__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 d8e4 jsr 4d8e4 <__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 d8e4 jsr 4d8e4 <__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 1004 jsr 51004