I've discovered a bug in the as86 assembler which was causing my
attempts to make the ix86 boot code correctly handle kernels larger
than 1M to play havoc with my system. Since I've now isolated the
effects of the bug, I'm reporting it for those interested therein.
The problem is with as86's handling of the .org directive, and
specifically with the case where the directive specifies an address
lower than what would be used in the absence of the .org directive.
When this occurs, as86 does one of two things, with there being no
apparent pattern to its choice of which it does:
1. Most of the time, it inserts lots of garbage at the point
the directive occurs. I would presume it's trying to insert
4G of garbage, but my partitions aren't that large so it
stops when it reaches the "Disk full" condition, producing
an "Out of memory" error (yes, that is correct).
2. Occasionally, it sets the location to the correct one, but
in the process overwrites the first two bytes of the code
with 0x5a, 0x7f and thus trashes the resulting code. There
is no error message generated in this case.
Since I was tweaking the i386 boot sector when this bug hit me, I was
less than amused...
Best wishes from Riley.
+----------------------------------------------------------------------+
| There is something frustrating about the quality and speed of Linux |
| development, ie., the quality is too high and the speed is too high, |
| in other words, I can implement this XXXX feature, but I bet someone |
| else has already done so and is just about to release their patch. |
+----------------------------------------------------------------------+
* ftp://ftp.MemAlpha.cx/pub/rhw/Linux
* http://www.MemAlpha.cx/Linux/
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/