Commit Graph

632 Commits

Author SHA1 Message Date
Michael Brown
35ee7e4479 Ensure that empty e820 regions are skipped even at the end of the
memory map.  (We achieve this by setting CF on the last entry if it is
zero-length; this avoids the need to look ahead to see at each entry
if the *next* entry would be both the last entry and zero-length).

This fixes the "0kB base memory" error message upon starting Windows
2003 on a SunFire X2100.
2007-10-10 20:13:34 +01:00
Michael Brown
56550e400e Redefine bzimage_exec_context::mem_limit to be the highest permissible
byte, rather than the number of permissible bytes (i.e. subtract one
from the value under the previous definition to get the value under
the new definition).

This avoids integer overflow on 64-bit kernels, where
bzhdr.initrd_addr_max may be 0xffffffffffffffff; under the old
behaviour we set mem_limit equal to initrd_addr_max+1, which meant it
ended up as zero.  Kernel loads would fail with ENOBUFS.
2007-09-28 01:23:06 +01:00
Michael Brown
881dd8e102 Switch rm_ss and rm_sp back to being words; it'll make it less
confusing to read the code.
2007-09-25 20:16:32 +01:00
Michael Brown
42d96bcb07 Don't use the "rep ss movsb" trick to copy the RM stack to the PM
stack; it breaks vmxassist.
2007-09-25 20:14:20 +01:00
Michael Brown
0ed066bc50 rm_ss, rm_sp, and pm_esp don't need to be accessed from anywhere
outside of librm.S.
2007-09-25 19:20:38 +01:00
Michael Brown
b8a8eea850 Minor refactoring to eliminate duplication. 2007-09-25 19:06:38 +01:00
Michael Brown
dec325fe43 Use full protected mode for access to high memory within prefix, to
work around limitations in real-mode virtualisation support on Intel
VT-capable chips.
2007-09-25 18:01:15 +01:00
Michael Brown
a7eee64506 Added more verbose memory-map debugging.
Added redundant call to get_memmap() in int13_boot() immediately
before jumping to boot sector, to assist in debugging.
2007-09-21 18:33:17 +01:00
Michael Brown
9c264faa0c Add const attribute to byte-swapping functions 2007-09-21 01:15:06 +01:00
Michael Brown
a82e6ec2de Added missing .kpxe prefix. 2007-09-06 15:08:41 +01:00
Michael Brown
01b755704a Auto-assign drive number only if set to 0xff; almost all applications
require that we use drive 0x80, so it should probably be the default.
2007-08-23 20:50:24 +01:00
Michael Brown
eff8b06eff Separate out arch-independent parts of stdint.h 2007-08-17 19:51:08 +01:00
Michael Brown
950057eeed Add PXE FILE API. 2007-08-04 01:23:37 +01:00
Michael Brown
688bac1656 Place multiboot command lines in base memory; Xen won't pick them up
otherwise.  :(
2007-08-02 23:09:03 +01:00
Michael Brown
d4947c05b2 Allow images to hold references to the originating URI.
Some shuffling around of the image management code; this needs tidying up.
2007-08-02 20:18:32 +01:00
Michael Brown
9fd6a0418f Allowed zero-cost enforced ordering of features in startup banner
list.

Added FEATURE() macros to most relevant (non-driver) files.
2007-08-02 14:51:03 +01:00
Holger Lubitz
0ebf6cdef4 remove old minorversion!=4 check (added -march a second time) 2007-08-02 01:54:42 +01:00
Holger Lubitz
06eb725cd4 remove x86_64 comments from arch specific Config
options are in main makefile now
2007-08-02 01:48:28 +01:00
Michael Brown
726e366e8f Add code for constructing single-file cpio archives on the fly 2007-08-01 23:10:30 +01:00
Michael Brown
24f32a1945 Initrd concatenation now working 2007-08-01 15:29:15 +01:00
Michael Brown
c5d9114064 Allow loading of multiple initramfs images. 2007-07-31 18:09:18 +01:00
Michael Brown
5e26df0325 Centralise construction of the DHCP request and response packets. 2007-07-31 03:02:21 +01:00
Michael Brown
4ce8d61a5c Import various libgcc functions from syslinux.
Experimentation reveals that gcc ignores -mrtd for the implicit
arithmetic functions (e.g. __udivdi3), but not for the implicit
memcpy() and memset() functions.  Mark the implicit arithmetic
functions with __attribute__((cdecl)) to compensate for this.

(Note: we cannot mark with with __cdecl, because we define __cdecl to
incorporate regparm(0) as well.)
2007-07-30 02:43:43 +01:00
Michael Brown
f62d6486d8 GCC's optimiser seems to screw up if this is left static... 2007-07-30 02:42:32 +01:00
Michael Brown
304d1e9fa5 Don't rely on retry.c's periodically calling currticks() in order to
allow the UNDI NIC interrupt to happen.
2007-07-29 15:27:47 +01:00
Michael Brown
a6a1052096 Applied a modified version of holger's regparm patches. 2007-07-29 00:17:25 +01:00
Holger Lubitz
0ae6c53bd9 Revert "make __udivmoddi4 static" - gcc links to it implicitly
This reverts commit 9e7b165017.
2007-07-28 23:20:00 +02:00
Holger Lubitz
9a4790667a make multiboot_load static 2007-07-27 22:01:23 +02:00
Holger Lubitz
dc38303ff9 make nbi_load static 2007-07-27 22:00:51 +02:00
Holger Lubitz
5ec4e2ad50 make eltorito_load static 2007-07-27 21:58:31 +02:00
Holger Lubitz
9e7b165017 make __udivmoddi4 static 2007-07-27 21:39:58 +02:00
Michael Brown
09118cd5bf Don't overwrite %dl with a (potentially) modified drive number if we
already handled the INT13 call.
2007-07-25 02:03:29 +01:00
Michael Brown
d5e39286f7 We probably shouldn't leave interrupts disabled when starting an OS. 2007-07-25 02:02:24 +01:00
Michael Brown
9aa61ad5a2 Add per-file error identifiers 2007-07-24 17:11:31 +01:00
Michael Brown
75912b3b77 Remove some obsolete sections of librm.h and libkir.h.
Add some of the missing parts to libkir.h.
2007-07-24 12:46:07 +01:00
Michael Brown
07e11f8af9 Minor debug improvement 2007-07-19 17:01:21 +01:00
Michael Brown
2cfe0dee1f Don't trash the %ecx value returned by relocate(). This was causing
us to round down the size for the relocation copy to the nearest 64kB
(+0x10 bytes); this just happened to work on most machines because the
last 64kB of the image is all-zeroes anyway (it's the .bss).
2007-07-19 16:07:31 +01:00
Michael Brown
a8111e8ab7 Remove INT 13,4b handler; it represents an incomplete feature (CD-ROM
emulation support) for an unknown purpose, and breaks grub.
2007-07-19 11:16:05 +01:00
Michael Brown
0d9d2ccbae Completed definition of struct int13_cdrom_specification, and moved to
int13.h.
2007-07-19 11:15:01 +01:00
Michael Brown
013d381e3c Real-mode code might set the direction flag, which would cause carnage. 2007-07-17 13:46:37 +01:00
Michael Brown
c94cdf2b7d Move .zinfo to libprefix.S; it doesn't belong with the decompression code. 2007-07-17 12:52:54 +01:00
Michael Brown
dc52db4920 Removed dead code identified by symcheck 2007-07-17 01:43:19 +01:00
Michael Brown
38dbe14bbe Kill off redundant references to the .zprefixes. 2007-07-16 17:26:07 +01:00
Michael Brown
84551d485e Update all prefixes currently referring to _load_size to include a
compressor fixup section.
2007-07-16 17:17:26 +01:00
Michael Brown
0929142a15 Rename _rom_size to _load_size_sect, since hdprefix.S also uses it. 2007-07-16 17:03:19 +01:00
Michael Brown
048bbeeebc Compressed ROM images now work. 2007-07-16 16:58:38 +01:00
Michael Brown
6d2e4e719c Move uninitialised .data16 variables to .bss16; saves around 2000
bytes of useless zeroes in the final image.
2007-07-16 13:22:12 +01:00
Michael Brown
389204713f Kill off some long-redundant CFLAGS 2007-07-16 13:15:12 +01:00
Michael Brown
833d6cc8ec Add __bss16() macro, and allow use of .bss16 section by removing
link-time check for section overlaps.  (In order to avoid wasting
space in the executable image, .bss16 will overlap with the following
section, which is .text).
2007-07-16 13:10:49 +01:00
Michael Brown
ab859a5355 Use a single _payload_offset linker-defined variable to locate the
start of the non-prefix blocks in the loaded image, and rely on the
image ordering.  This should make introducing compression much easier.
2007-07-15 02:52:02 +01:00