Michael Brown
dca369ddc3
Call hide_etherboot() from startup(), rather than requiring the prefix to
do it.
17 lat temu
Michael Brown
86171c53f4
Damn Broadcom and their damned incorrect assumptions about x86 memory
allocation.
17 lat temu
Michael Brown
fdc97499bf
Add device description fields to struct device.
17 lat temu
Michael Brown
a2be828a33
Avoid leaving preloaded_undi with invalid PXENV+/!PXE structure
addresses if the signature checks fail.
17 lat temu
Michael Brown
697bcc9d24
Since we now always unload the base code stack (even if we keep UNDI),
we can never return to the PXE stack and must always use INT 18.
17 lat temu
Michael Brown
2436dac281
Populate preloaded_undi device when applicable.
17 lat temu
Michael Brown
47222d5ed8
Call PXENV_UNDI_GET_NIC_TYPE to identify NIC physical device.
Record all information required for populating a struct undi_device.
Make debugging output more human-readable.
17 lat temu
Michael Brown
fbdebac5f4
Copy pxelinux's shutdown sequence: use UNLOAD_STACK without STOP_BASE,
and call UNDI_SHUTDOWN first to make sure the NIC is in a safe state.
17 lat temu
Michael Brown
8f8af10b22
New strategy: always stop both base code and UNDI. Always free base code
memory (unless we get an error while stopping the base code). Leave UNDI
resident (though stopped) for .kpxe.
Still need to add code to record the device identification parameters
prior to stopping UNDI.
17 lat temu
Michael Brown
de2fc50f4c
Add as a separate file so that we can do "make bin/xxxx.kpxe" rather than
having to edit PXELOADER_KEEP_ALL as a config option.
17 lat temu
Michael Brown
6abfaa153b
Towards making KEEP_IT_REAL work again.
Fix bug that caused over-allocation of .text16 and .data16 memory areas
by a factor of 16.
18 lat temu
Michael Brown
ef37f78cbe
Cut out almost all the optional code paths, drastically simplifying the
flow of control through this code.
We now always add PCI and PnP headers even for ISA ROMs; there's no harm
in doing so.
UNDI loader is still missing.
18 lat temu
Michael Brown
e7eca7b7cb
Code segment may not be writable; create the temporary pointer to the GDT
on the stack.
18 lat temu
Michael Brown
041a04335e
Fixed assembly on old versions of gas
18 lat temu
Michael Brown
9f86754f90
Updated to work with libprefix.
18 lat temu
Michael Brown
89da833c5d
init_librm() and prot_call() are now real-mode far calls.
install() now calls relocate(), moves the protected-mode code to the new
location, and calls hide_etherboot().
18 lat temu
Michael Brown
15ee09ed10
Restructured PCI subsystem to fit the new device model.
Generic PCI code now handles 64-bit BARs correctly when setting
"membase"; drivers should need to call pci_bar_start() only if they want
to use BARs other than the first memory or I/O BAR.
Split rarely-used PCI functions out into pciextra.c.
Core PCI code is now 662 bytes (down from 1308 bytes in Etherboot 5.4).
284 bytes of this saving comes from the pci/pciextra split.
Cosmetic changes to lots of drivers (e.g. vendor_id->vendor in order to
match the names used in Linux).
18 lat temu
Michael Brown
832807726a
Add infrastructure to support access to .data16 (and .text16) variables
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.
18 lat temu
Michael Brown
f8f75cef5b
BSS is now zeroed by libprefix (along with the otherwise non-zeroable
portions such as the stack) during the installation process.
init_fns() are called from main(). We need to think about initial
control flow some more.
18 lat temu
Michael Brown
cc23057b59
Typo
18 lat temu
Michael Brown
10c28a51bd
Create two easy-to-use entry points in libprefix: install and
install_prealloc. I *think* these will suffice for all the 16-bit
prefixes.
18 lat temu
Michael Brown
9fcded3d23
Towards a(nother) new real-mode infrastructure, in which we take
advantage of the fact that we have to have a permanently-resident block
in base memory.
18 lat temu
Michael Brown
5463169c1a
Verified as working
18 lat temu
Michael Brown
d081d65d48
This should be much more elegant: we use flat real mode for the
highmem data, so decompress16 will be able to unpack blocks bigger
than 64kB.
18 lat temu
Michael Brown
cc8821a443
Checking in because I don't want to lose this rather neat code for
running the decompresser in 16:16 protected mode using the real-mode
stack. However, there's an even simpler way to do it...
18 lat temu
Michael Brown
824d6ffa7f
Header rearrangement.
I want to get to the point where any header in include/ reflects a
standard user-level header (e.g. a POSIX header), while everything that's
specific to gPXE lives in include/gpxe/. Headers that reflect a Linux
header (e.g. if_ether.h) should also be in include/gpxe/, with the same
name as the Linux header and, preferably, the same names used for the
definitions.
18 lat temu
Michael Brown
cdf1511d3e
Prefix semantics have changed
18 lat temu
Michael Brown
5d28bae0f1
Fix up building with gcc 4.0.1 / gas 2.16.91
18 lat temu
Michael Brown
0e494614b5
Some versions of doxygen seem to object to "@ret None" or similar.
19 lat temu
Michael Brown
d5789ff4a2
Doxygenation
19 lat temu
Michael Brown
d3dec7c331
Update to cope with changes in registers.h
19 lat temu
Michael Brown
698f86f25a
Prevent hundreds of errors from "make symcheck". The prefix exit path
mechanism has changed anyway, and so must be rewritten, but at least doing
this makes the output of "make symcheck" more legible.
19 lat temu
Michael Brown
84f43ea9cf
isapnp_read_port can be set directly, rather than via a function call.
19 lat temu
Michael Brown
98ff29345e
Created a bus/device API that allows for the ROM prefix to specify an
initial device, and will also allow for e.g. a device menu to be presented
to the user.
19 lat temu
Michael Brown
e74bbaeca0
First versions
19 lat temu
Michael Brown
e44e5c7247
compiler.h is now always included on the command line.
19 lat temu
Michael Brown
3714946709
arch_rm_main no longer exists.
19 lat temu
Michael Brown
43417e6c1b
setup16() now calls initialise(); we don't have to do it.
19 lat temu
Michael Brown
792f34d228
#ifdef 0 out the UNDI loader routine, since it refers to the obsolete
callback mechanism.
19 lat temu
Michael Brown
0ff80b477d
Merged mcb30-realmode-redesign back to HEAD
19 lat temu
Michael Brown
afff2b50f1
Obsolete; not referenced by anything.
19 lat temu
Michael Brown
168973a5d7
Obsolete; not reference by anything.
19 lat temu
Michael Brown
6d4d056202
Obsolete; not referenced by anything.
19 lat temu
Michael Brown
10d9f9cec8
Obsolete and no longer used
19 lat temu
Michael Brown
3d6123e69a
Initial revision
19 lat temu