> > void romcc_fail(void) {<br>> 
> int dimm03 = 0;<br>> 
> int dimm47 = 0;<br>> 
> char mbsc[5];<br>> 
> char mbfs[3];<br>
> <br>> 
This is already putting some pressure on register allocation. Can you<br>> 
help romcc by making dimm03 and dimm47 into char also? Consistently<br>> 
using unsigned may also help.<br>
> <br>> 
> mbfs and mbsc are meant to be an array of bytes that make up the<br>> 
> MBFS and MBSC registers in the 440BX, to be written out to it once<br>> 
> they're all set.<br>> 
<br>> 
Would it be possible to not store, and instead write out to registers<br>> 
as soon as possible? This will also help romcc.<br>
> <br>> //Peter<br><br>I feel good being able to push romcc to the limit, and probably off the cliff given what happened. :-P<br><br>Two of the MBSC bytes are common, at least for now. I'll try eliminating the variables for them.<br>
<br>On further tries the problem seems to be with the use of |= operator on an array item. Elsewhere in the original raminit code uses |= with a simple variable and it doesn't seem to segfault.<br><br>But other than that, there are three conditions to check for, and the registers cannot be finalized and written out until all three are done.<br>
<br>Thanks<br>Keith<br>