aboutsummaryrefslogtreecommitdiffstats
path: root/src/arch/i386/prefix/libprefix.S
Commit message (Collapse)AuthorAgeFilesLines
* [libprefix] Add addr32 prefix required by older assemblersEygene Ryabinkin2008-09-041-1/+1
| | | | | | | | | | Explicitly state that we are using 32-bit addressing in 16-bit code. GNU as 2.15 (FreeBSD/amd64 7-STABLE) got confused that 32-bit registers are used in the code that was declared as 16-bit. Add explicit modifier 'addr32' to make assembler happy. Signed-off-by: Eygene Ryabinkin <rea-fbsd@codelabs.ru>
* [prefix] Add PCI bus:dev.fn to ROM product stringMichael Brown2008-05-211-8/+56
| | | | | This allows multiple gPXE ROMs in a system to be disambiguated at boot time; the PCI ID will show up in the boot menu for a BBS-compliant BIOS.
* [prefix] Cope with image source addresses outside base memoryMichael Brown2008-03-111-121/+114
| | | | | | When PMM is used, the gPXE image source will no longer be in base memory. Decompression of .text16 and .data16 can therefore no longer be done in real mode.
* [prefix] Add printing functions to libprefix.SMichael Brown2008-03-111-0/+108
| | | | | Move the printing functions from pxeprefix.S into libprefix.S, so they are available for debug from any prefix.
* [PXE] Add PMM support to romprefix.S (untested)Michael Brown2008-03-091-30/+58
| | | | | | | | | | ROM initialisation vector now attempts to allocate a 2MB block using PMM. If successful, it copies the ROM image to this block, then shrinks the ROM image to allow for more option ROMs. If unsuccessful, it leaves the ROM as-is. ROM BEV now attempts to return to the BIOS, resorting to INT 18 only if the BIOS stack has been corrupted.
* Minor refactoring to eliminate duplication.Michael Brown2007-09-251-49/+39
|
* Use full protected mode for access to high memory within prefix, toMichael Brown2007-09-251-169/+237
| | | | | work around limitations in real-mode virtualisation support on Intel VT-capable chips.
* Don't trash the %ecx value returned by relocate(). This was causingMichael Brown2007-07-191-6/+8
| | | | | | 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).
* Move .zinfo to libprefix.S; it doesn't belong with the decompression code.Michael Brown2007-07-171-1/+29
|
* Compressed ROM images now work.Michael Brown2007-07-161-1/+8
|
* Use a single _payload_offset linker-defined variable to locate theMichael Brown2007-07-151-16/+21
| | | | | start of the non-prefix blocks in the loaded image, and rely on the image ordering. This should make introducing compression much easier.
* Call hide_etherboot() from startup(), rather than requiring the prefix toMichael Brown2007-01-141-20/+22
| | | | do it.
* Damn Broadcom and their damned incorrect assumptions about x86 memoryMichael Brown2007-01-131-3/+24
| | | | allocation.
* Towards making KEEP_IT_REAL work again.Michael Brown2006-08-241-4/+16
| | | | | Fix bug that caused over-allocation of .text16 and .data16 memory areas by a factor of 16.
* Code segment may not be writable; create the temporary pointer to the GDTMichael Brown2006-06-061-2/+7
| | | | on the stack.
* Fixed assembly on old versions of gasMichael Brown2006-05-281-1/+1
|
* init_librm() and prot_call() are now real-mode far calls.Michael Brown2006-05-251-84/+112
| | | | | install() now calls relocate(), moves the protected-mode code to the new location, and calls hide_etherboot().
* Add infrastructure to support access to .data16 (and .text16) variablesMichael Brown2006-05-041-2/+3
| | | | | | | | | from protected-mode code. Set up %ds to point to .data16 in prot_to_real, so that code specified via REAL_EXEC() and friends can access variables in .data16. Move most real-mode librm variables from .text16 to .data16.
* TypoMichael Brown2006-05-021-2/+2
|
* Create two easy-to-use entry points in libprefix: install andMichael Brown2006-05-021-10/+99
| | | | | install_prealloc. I *think* these will suffice for all the 16-bit prefixes.
* Verified as workingMichael Brown2006-05-021-6/+9
|
* This should be much more elegant: we use flat real mode for theMichael Brown2006-05-011-130/+219
| | | | | highmem data, so decompress16 will be able to unpack blocks bigger than 64kB.
* Checking in because I don't want to lose this rather neat code forMichael Brown2006-05-011-0/+178
running the decompresser in 16:16 protected mode using the real-mode stack. However, there's an even simpler way to do it...