On Tue, 2007-08-14 at 17:21 -0500, Ryan Harper wrote: > * Ryan Harper <[EMAIL PROTECTED]> [2007-08-14 15:44]: > > * Izik Eidus <[EMAIL PROTECTED]> [2007-08-14 15:00]: > > > i am sorry, i wrote you message and it get messed. > > > > > > anyway you remember in the old patch the: > > > + if (ram_size > 0xf0000000) > > > > val = 640; /* base memory in K */ > > > i bet this is the problem :) > > > > I removed that now and I didn't help =( > > So, I don't think passing the structure as a pointer works. The 16-bit > compiler bcc has a number of quirks. I don't pretend to understand what > the issue is here, but, changing the signature of set_e820_range() to:
A pointer on the stack is not the same as a normal pointer in 16-bit mode (one is relative to the stack segment and the other is relative to data segment). It may be that when Linux and Windows make calls into e820, ds == ss but when memtest86 does, ds != ss. I suspect this is why the BOCHS bios code goes out of it's way to pass everything by value (and why there are so many functions with a huge number of arguments). I've had this issue myself with the SCSI boot ROM. Regards, Anthony Liguori > void set_e820_range(ES, DI, start, end, extra_start, extra_end, type) > Bit16u ES; > Bit16u DI; > Bit32u start; > Bit32u end; > Bit16u extra_start; > Bit8u extra_end; > Bit16u type; > { > > and the callers accordingly, fixes the issue with memtest iso. I can > still boot guests with more than 4G, and memtest sees the correct > amount, above and below 4G. > ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ _______________________________________________ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel