static segment_id AddSeg( const char *segname, const char *class_name, int segtype ) { seg_name *seg; user_seg *useg, **lnk; hw_reg_set reg; const char *p; size_t len; len = strlen( segname ) + 1; for( seg = &Predefined_Segs[0]; seg->name != NULL; seg++ ) { if( memcmp( segname, seg->name, len ) == 0 ) { return( seg->segid ); } } HW_CAsgn( reg, HW_EMPTY ); for( p = segname; *p != '\0'; ++p ) { if( *p == ':' ) { reg = PragRegName( segname, p - segname ); segname = p + 1; len = strlen( segname ) + 1; break; } } for( lnk = &userSegments; (useg = *lnk) != NULL; lnk = &useg->next ) { if( memcmp( segname, useg->name, len ) == 0 ) { return( useg->segid ); /* was return( segment ) */ } } useg = AllocUserSeg( segname, class_name, segtype ); useg->next = *lnk; useg->pegged_register = reg; *lnk = useg; return( useg->segid ); }
static segment_id AddSeg( const char *segname, const char *class_name, int segtype ) { int i; user_seg *useg, **lnk; #if _INTEL_CPU hw_reg_set reg; const char *p; #endif size_t len; len = strlen( segname ) + 1; for( i = 0; i < CArraySize( Predefined_Segs ); i++ ) { if( memcmp( segname, Predefined_Segs[i].name, len ) == 0 ) { return( Predefined_Segs[i].segid ); } } #if _INTEL_CPU HW_CAsgn( reg, HW_EMPTY ); for( p = segname; *p != '\0'; ++p ) { if( *p == ':' ) { reg = PragRegName( segname, p - segname ); segname = p + 1; len = strlen( segname ) + 1; break; } } #endif for( lnk = &userSegments; (useg = *lnk) != NULL; lnk = &useg->next ) { if( memcmp( segname, useg->name, len ) == 0 ) { return( useg->segid ); /* was return( segment ) */ } } useg = AllocUserSeg( segname, class_name, segtype ); useg->next = *lnk; #if _INTEL_CPU useg->pegged_register = reg; #endif *lnk = useg; return( useg->segid ); }
static int AddSeg( char *segname, char *class_name, int segtype ) { struct seg_name *seg; struct user_seg *useg, **lnk; hw_reg_set reg; char *p; for( seg = &Predefined_Segs[0]; seg->name; seg++ ) { if( strcmp( segname, seg->name ) == 0 ) { return( seg->segment ); } } HW_CAsgn( reg, HW_EMPTY ); p = segname; for( ;; ) { if( *p == '\0' ) break; if( *p == ':' ) { *p = '\0'; reg = PragRegName( segname ); *p = ':'; segname = p + 1; break; } ++p; } lnk = &UserSegments; while( (useg = *lnk) != NULL ) { if( strcmp( segname, useg->name ) == 0 ) { return( useg->segment ); /* 11-mar-93 - was return( segment ) */ } lnk = &useg->next; } useg = AllocUserSeg( segname, class_name, segtype ); useg->next = *lnk; useg->pegged_register = reg; *lnk = useg; return( useg->segment ); }