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
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 
  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
  * Provide two alternative address ORG relocations for experimentation
  * 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

More information about the Commits mailing list