Re: Linux 2.0.31-pre2 + Buffer /Swap patch Jul21

Larry M. Augustin (
Thu, 24 Jul 1997 14:44:13 -0700

>I think this whole thing should be a compile-time option. It assumes that BIOSes
>actually do what they are supposed to. I know from experience that they don't.
>They're usually buggy to one extent or another and there's no guarantee that the
>writer understood the specs.

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.

>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.