Re: Linux 2.0.31-pre2 + Buffer /Swap patch Jul21
Fri, 25 Jul 1997 00:25:47 GMT

On Thu, 24 Jul 1997 14:44:13 -0700, you wrote:

> I think this is a bit extreme. You depend on the BIOS heavily for
> many things. You do your best to check error codes, test on lots of
> versions, and work around any known bugs. Many OSes use these BIOS
> features already:
> From: "Kimon Berlin" <>
> NT uses e820h, or e801h if e820h does not exist.
> Win95 and OS/2 use 88h, then e801h if 88h returned a certain value (15MB for
> win95, 64MB-4KB for OS/2, I think).
> win 3.1 (ha!) only uses 88h, so there is no way to beyond 64MB.
> Once upon a time, certain unices used 8ah.
> As to whether or not these features should go in 2.0.31, that decision
> belongs to David/Linus. I think the only two known issues are:
> 1. compatibility with loadlin - this is understood and should now be fixed.
> 2. only detecting 16MB of RAM on Compaqs - this same issue existed with the original
> (int 88h) code. the code I wrote erred on the side of caution and
> behaved the same as the old code. since then fixes have been circulated
> to handle this case correctly as well.
> But memory size query is something I think is well enough understood
> that it doesn't need to be a kernel option. Also, you can always
> override the detected size with a lilo parameter.

I used to think the way you do but a few month ago I wrote code to better detect
BIOS hard drive parameters and found that there are modern BIOSes that violate
the standards for things like return values and setting the carry flag on error,
etc. And this was on BIOS calls used in the original AT. I guess I'm a little
gun-shy these days.

I also have a more global objection to putting any code into a production-series
kernel without extensive testing in the development series.

> >Also, please don't perpetuate the myth that as86 can't do 16-bit relative jumps.
> >The code
> > lea cx, end_memdetect ! gas can't do 16-bit offset jumps. very annoying.
> > jmp cx
> >can be replaced by
> > br end_memdetect
> Thanks for the info. I think I had seen the error message:
> 00392 00D1 EB CB jmp end_memdetect
> ^address out of bounds
> Combined with the gas info documentation:
> We do not support word (16-bit) displacement jumps
> That made me think I had to use the register indirect format.
> Larry

The "br" instruction is definitely less than well-documented. :-) As86 is the
only Intel assembler that can't automatically choose between an 8-bit and a
16-bit displacement.