cvs commit: src/sys/boot/i386 bootasmdef.c bootasm.h src/sys/boot/i386/boot0 Makefile boot0.S src/sys/boot/i386/boot2 Makefile boot1.S boot2.c src/sys/boot/i386/btx/btx btx.S src/sys/boot/i386/btx/btxldr Makefile btxldr.S ...
Matthew Dillon
dillon at crater.dragonflybsd.org
Mon Jul 19 16:31:23 PDT 2004
dillon 2004/07/19 16:30:38 PDT
DragonFly src repository
Modified files:
sys/boot/i386 bootasm.h
sys/boot/i386/boot0 Makefile boot0.S
sys/boot/i386/boot2 Makefile boot1.S boot2.c
sys/boot/i386/btx/btx btx.S
sys/boot/i386/btx/btxldr Makefile btxldr.S
sys/boot/i386/btx/lib btxcsu.S
sys/boot/i386/cdboot cdboot.S
sys/boot/i386/libi386 amd64_tramp.S
sys/boot/i386/loader Makefile main.c
Added files:
sys/boot/i386 bootasmdef.c
Log:
MAJOR BOOT CODE REVAMP / 30 hour+ hacking session (50 if you include the
attempt I made last month).
* Document the code wherever possible. The previous code had lots of
basically useless comments.
* Consolidate constants and calculations into a single header file. The
previous code separately defined the constants, did not document the
relationships (which is why it took 30+ hours to fix), and often used
unrelated numerical optimizations to get from one constant def to another.
* Most address ORG values can now be modified in one place (bootasm.h) and
the boot code will actually still work. Note, however, that many ORG
values must still be < 0x10000 due to the lack of segment register use in
16 bit code. This can be fixed with additional work, but not in this
commit.
* Provide two alternative address ORG relocations for experimentation
purposes.
* Fix what I believe to be a bug in boot2/boot2.c. Boot2.c was accessing
the drive/slice data stored by boot1 using the base-offset-0 linear address
instead of the btx-client-user address. Additionally, boot1 was storing
the data at a location that the btx client could not access.
(see MEM_BTX_USR_ARG)
* Fix a heap/stack collision in the loader. The loader was setting the end
of the heap to the end of BIOS memory without taking into account the
fact that its stack was likely growing downward starting at the end of
BIOS memory.
* Fix a heap calculation error in the loader. The loader was using the
physical address representation of the end of BIOS memory instead of the
virtual address representatino, which can result in the loader pushing into
BIOS memory.
Revision Changes Path
1.3 +141 -16 src/sys/boot/i386/bootasm.h
1.5 +9 -7 src/sys/boot/i386/boot0/Makefile
1.6 +49 -9 src/sys/boot/i386/boot0/boot0.S
1.9 +15 -7 src/sys/boot/i386/boot2/Makefile
1.7 +47 -8 src/sys/boot/i386/boot2/boot1.S
1.12 +35 -3 src/sys/boot/i386/boot2/boot2.c
1.7 +68 -6 src/sys/boot/i386/btx/btx/btx.S
1.5 +1 -0 src/sys/boot/i386/btx/btxldr/Makefile
1.3 +81 -14 src/sys/boot/i386/btx/btxldr/btxldr.S
1.5 +2 -1 src/sys/boot/i386/btx/lib/btxcsu.S
1.6 +1 -1 src/sys/boot/i386/cdboot/cdboot.S
1.3 +3 -2 src/sys/boot/i386/libi386/amd64_tramp.S
1.6 +10 -1 src/sys/boot/i386/loader/Makefile
1.7 +57 -9 src/sys/boot/i386/loader/main.c
http://www.dragonflybsd.org/cvsweb/src/sys/boot/i386/bootasm.h.diff?r1=1.2&r2=1.3&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/boot/i386/boot0/Makefile.diff?r1=1.4&r2=1.5&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/boot/i386/boot0/boot0.S.diff?r1=1.5&r2=1.6&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/boot/i386/boot2/Makefile.diff?r1=1.8&r2=1.9&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/boot/i386/boot2/boot1.S.diff?r1=1.6&r2=1.7&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/boot/i386/boot2/boot2.c.diff?r1=1.11&r2=1.12&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/boot/i386/btx/btx/btx.S.diff?r1=1.6&r2=1.7&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/boot/i386/btx/btxldr/Makefile.diff?r1=1.4&r2=1.5&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/boot/i386/btx/btxldr/btxldr.S.diff?r1=1.2&r2=1.3&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/boot/i386/btx/lib/btxcsu.S.diff?r1=1.4&r2=1.5&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/boot/i386/cdboot/cdboot.S.diff?r1=1.5&r2=1.6&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/boot/i386/libi386/amd64_tramp.S.diff?r1=1.2&r2=1.3&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/boot/i386/loader/Makefile.diff?r1=1.5&r2=1.6&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/boot/i386/loader/main.c.diff?r1=1.6&r2=1.7&f=u
More information about the Commits
mailing list