diff options
author | Eric Biederman <ebiederm@xmission.com> | 2003-10-11 06:20:25 +0000 |
---|---|---|
committer | Eric Biederman <ebiederm@xmission.com> | 2003-10-11 06:20:25 +0000 |
commit | 83b991afff40e12a8b6756af06a472842edb1a66 (patch) | |
tree | a441ff0d88afcb0a07cf22dc3653db3e07a05c98 /util/options | |
parent | 080038bfbd8fdf08bac12476a3789495e6f705ca (diff) |
- O2, enums, and switch statements work in romcc
- Support for compiling romcc on non x86 platforms
- new romc options -msse and -mmmx for specifying extra registers to use
- Bug fixes to device the device disable/enable framework and an amd8111 implementation
- Move the link specification to the chip specification instead of the path
- Allow specifying devices with internal bridges.
- Initial via epia support
- Opteron errata fixes
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@1200 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'util/options')
-rw-r--r-- | util/options/build_opt_tbl.c | 40 |
1 files changed, 20 insertions, 20 deletions
diff --git a/util/options/build_opt_tbl.c b/util/options/build_opt_tbl.c index 982e01b136..183aeab1bd 100644 --- a/util/options/build_opt_tbl.c +++ b/util/options/build_opt_tbl.c @@ -23,9 +23,10 @@ static unsigned char clip[9]={0,1,3,7,0x0f,0x1f,0x3f,0x7f,0xff}; output none if there is an overlap, the routine exits, other wise it returns. */ -void test_for_entry_overlaps(int entry_start,int entry_end) +void test_for_entry_overlaps(void *entry_start, void *entry_end) { - long ptr; + int ptr; + char *cptr; int buffer_bit_size; int offset; int byte; @@ -37,11 +38,12 @@ void test_for_entry_overlaps(int entry_start,int entry_end) /* calculate the size of the cmos buffer in bits */ buffer_bit_size=(CMOS_IMAGE_BUFFER_SIZE*8); /* clear the temporary test buffer */ - for(ptr=0;ptr<CMOS_IMAGE_BUFFER_SIZE;ptr++) + for(ptr=0; ptr < CMOS_IMAGE_BUFFER_SIZE; ptr++) test[ptr]=0; + /* loop through each entry in the table testing for errors */ - for(ptr=entry_start;ptr<entry_end;ptr+=ce->size) { - ce=(struct cmos_entries *)ptr; + for(cptr = entry_start; cptr < (char *)entry_end; cptr += ce->size) { + ce=(struct cmos_entries *)cptr; /* test if entry goes past the end of the buffer */ if((ce->bit+ce->length)>buffer_bit_size) { printf("Error - Entry %s start bit + length must be less than %d\n", @@ -66,16 +68,17 @@ void test_for_entry_overlaps(int entry_start,int entry_end) /* test if any of the bits have been previously used */ for(;byte_length;byte_length--,byte++) { if(test[byte]) { - printf("Error - Entry %s uses same bits previously used\n", + printf("Error - Entry %s uses same bits previously used\n", ce->name); - exit(1); + exit(1); } test[byte]=clip[8]; /* set the bits defined in test */ } } else { /* test if bits overlap byte boundaries */ if(ce->length>(8-offset)) { - printf("Error - Entry %s length overlaps a byte boundry\n", ce->name); + printf("Error - Entry %s length overlaps a byte boundry\n", + ce->name); exit(1); } /* test for bits previously used */ @@ -158,8 +161,7 @@ int main(int argc, char **argv) long ptr; int cnt; char *cptr; - long offset; - int entry_start; + void *entry_start, *entry_end; int entries_length; int enum_length; int len; @@ -268,21 +270,19 @@ int main(int argc, char **argv) len+=(4-(len%4)); ce->size=sizeof(struct cmos_entries)-32+len; cptr = (char*)ce; - cptr+=ce->size; /* increment to the next table position */ + cptr += ce->size; /* increment to the next table position */ ce = (struct cmos_entries*) cptr; } /* put the length of the entries into the header section */ - entries_length=(long)cptr; - entries_length-=(long)(cmos_table+ct->header_length); + entries_length = (cptr - (char *)&cmos_table) - ct->header_length; /* compute the start of the enumerations section */ - entry_start=(int)cmos_table; - entry_start+=ct->header_length; - offset=entry_start+entries_length; - c_enums_start=c_enums=(struct cmos_enums*)offset; + entry_start = ((char*)&cmos_table) + ct->header_length; + entry_end = ((char *)entry_start) + entries_length; + c_enums_start = c_enums = (struct cmos_enums*)entry_end; /* test for overlaps in the entry records */ - test_for_entry_overlaps(entry_start,offset); + test_for_entry_overlaps(entry_start, entry_end); for(;enum_mode;){ /* loop to build the enumerations section */ if(fgets(line,INPUT_LINE_MAX,fp)==NULL) @@ -315,14 +315,14 @@ int main(int argc, char **argv) if(cnt%4) cnt+=4-(cnt%4); /* store the record length */ - c_enums->size=((long)&c_enums->text[cnt])-(long)c_enums; + c_enums->size=((char *)&c_enums->text[cnt]) - (char *)c_enums; /* store the record type */ c_enums->tag=LB_TAG_OPTION_ENUM; /* increment to the next record */ c_enums=(struct cmos_enums*)&c_enums->text[cnt]; } /* save the enumerations length */ - enum_length=(long)c_enums-(long)c_enums_start; + enum_length= (char *)c_enums - (char *)c_enums_start; ct->size=ct->header_length+enum_length+entries_length; /* Get the checksum records */ |