| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
Remove a stay jmpw *%si which was a test instruction and wasn't meant
to have been checked in.
|
|
|
|
|
|
|
|
| |
Some, unknown, version of gas or ld miscompiles a relative jump to an
absolute symbol, resulting in a broken isohybrid. Implement a
workaround for it by using a far jmp, which is absolute. Fortunately,
the isohybrid prefix is one of the very few boot sectors we have which
isn't short on space.
|
|
|
|
|
|
|
|
| |
Using addw to restore the stack pointer clobbers CF. Use leaw
instead, even though this relies on the BIOS not clobbering %si.
Worst case we can add a mov %sp, %si or similar.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
|
|
|
|
|
|
| |
Save one byte in isohdpfx.S.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
|
|
|
|
|
|
|
| |
There is a reason other than stylistic for using macros like $@ in
explicit rules, and that is that they get copied and pasted around...
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
|
|
|
|
|
|
|
|
|
| |
We were incorrectly not passing the EBIOS flag in hybrid HDD mode;
also compute the EBIOS LBA correctly in hybrid HDD mode. Allow a
34-bit LBA for this, that way we still support up to 2^32 CD-ROM
sectors (8 TB).
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
|
|
|
|
|
|
| |
Still a work in progress.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
|
|
|
|
|
|
| |
Unify common pieces to "embedded" targets (those that produce code
that runs neither in the host nor in a com32 environment); this fixes
the broken sample/ directory Makefile.
|
|
|
|
|
| |
Cleanup and centralize the Makefile system even more.
Fix a gcc 4.3 incompatibility in memdisk (definition of strlen).
|
|
|
|
|
|
|
| |
Clean up the BSUBDIR/ISUBDIR separation further. Build _bin.c files,
which are an intermediate stage toward building the installers, in the
libinstaller directory, since that directory is used by all the
installers anyway. That also lets us get bin2c.pl out of the root.
|
| |
|
|
|
|
|
|
|
|
| |
Move source files out of the root directory; the root is a mess and
has become virtually unmaintainable. The Syslinux core now lives in
core/; the Linux and generic utilities has moved into utils/, and
copybs.com has moved into dos/; it had to go somewhere, and it seemed
as good a place as any.
|
|
|
|
|
|
| |
Document the GPT boot protocol; add additional assurance by
requiring that EAX contains "!GPT" for the GPT information
to be valid.
|
|\ |
|
| |
| |
| |
| |
| | |
Using cltq (cdq) to clear %edx when %eax is zero is cheaper by one
byte.
|
| | |
|
| | |
|
| |
| |
| |
| | |
Use the start field for the boot sector address...
|
| |
| |
| |
| |
| |
| | |
Fix a case of bad confusion of the start and end fields
(length = end-start+1, so we can't easily reuse the load of the start
field.)
|
| |
| |
| |
| |
| | |
xhcgw with %ax and a register is one byte shorter than movw with %ax
if %ax is then dead.
|
| |
| |
| |
| |
| |
| | |
Set up %bp as a permanent frame pointer and use it to reference stack
and phdr fields; by putting phdr in the bootsect slot we can use it
for phdr references with small displacements. This saves 5 bytes.
|
| |
| |
| |
| |
| | |
With %bx advanced to the end of the boot sector, we can use -2(%bx)
instead of (bootsec+510), thus saving one byte.
|
| |
| |
| |
| | |
Save one byte...
|
| |
| |
| |
| | |
The offsets into phdr, from the EFI spec, are in decimal, not hex.
|
| |
| |
| |
| | |
Move the advancing of %bx into read_sector, saving 3 bytes.
|
| |
| |
| |
| |
| |
| | |
Need to tell read_sector where to load the boot sector (unlike the MBR
code, where we always loaded into 0x7c00, this code uses multiple
buffers.)
|
| |
| |
| |
| |
| | |
Shuffle some code slightly to reduce register pressure; no size change
but this might make the code easier to follow and/or change.
|
| |
| |
| |
| | |
Shuffle some code to reduce the total size by 3 bytes
|
| |
| |
| |
| | |
Same instruction, but repe is more correct for cmpsw
|
| |
| |
| |
| | |
Beginnings of a master boot record for GPT partition tables.
|
|/
|
|
|
| |
Use $(CC) in gcc_ok macro, not plain gcc. This seems to work, iff the
gcc_ok macro is declared with =, not :=
|
| |
|
|
|
|
|
| |
Save another 5 bytes by making the newline character do double duty as
newline and string terminator.
|
|
|
|
|
| |
%ax is set to zero at the top; we then set it to 0x4100, so we only
need to change %ah, not all of %ax.
|
| |
|
|
|
|
|
| |
Remove mbr/*.bin on "spotless", not "clean"; otherwise we break "make
installer".
|
|
|
|
|
| |
Fix loading from logical partitions (a push/pop pair was not done in
reverse order.)
|
|
|
|
| |
Fix the handling of [BI]ESUBDIRS for other targets than "all".
|
|
|
|
| |
Yet another byte bites the dust...
|
|
|
|
|
| |
Shave off another byte by using the not-frequently-used jmpw *%sp
instruction!
|
|
|
|
| |
Comments are good...
|
|
|
|
|
| |
Use the "return address points to data" trick to shave a few bytes off
the generation of error messages.
|
|
|
|
|
|
|
|
| |
In case we hit the death loop, put HLT in it. It's probably superfluous,
but it can't hurt, and we can always take it out to reclaim the space.
Arguable the death loop is superfluous at all, since int $0x18 should
never return.
|
|
|
|
|
|
| |
Six bytes down the drain, but people do expect it. If it becomes
an issue we can remove the period; it's better than the CR LF. There
might be some way to efficiently issue . \r \n in common code, too.
|
|
|
|
|
| |
We always re-read the last partition table on any kind of error, so
no need to prevent the code from clobbering it on failure.
|
| |
|
| |
|
| |
|
| |
|
| |
|