Michael Brown
045fb24557
Use internal real-mode stack from non-returnable prefixes
před 17 roky
Michael Brown
00473f0952
Revert "Move stack to below 0x7c00; leaving it at the default location"
This reverts commit 03ca71c38d .
před 17 roky
Michael Brown
03ca71c38d
Move stack to below 0x7c00; leaving it at the default location
(0x7ef4) tends to really screw up anything that loads at 0x7c00...
před 17 roky
Michael Brown
37127ea90c
Added .nbi as a format.
před 17 roky
Michael Brown
520d9c36af
Updated ISAPnP, EISA, MCA and ISA buses to current device model.
ISA 3c509 is currently non-functional, although the EISA (3c509-eisa) and
MCA (3c529) variants should build OK.
None of this code is yet tested.
před 17 roky
Michael Brown
7d9267561b
Don't call PXENV_STOP_UNDI in the kpxeprefix. This slighy breaks the
clean separation between loading and starting, but does mean that more
PXE stacks survive the process.
před 17 roky
Michael Brown
b04b0ddc31
.lilo and derived targets (e.g. .iso) now load properly.
před 17 roky
Michael Brown
dca369ddc3
Call hide_etherboot() from startup(), rather than requiring the prefix to
do it.
před 17 roky
Michael Brown
86171c53f4
Damn Broadcom and their damned incorrect assumptions about x86 memory
allocation.
před 17 roky
Michael Brown
fdc97499bf
Add device description fields to struct device.
před 17 roky
Michael Brown
a2be828a33
Avoid leaving preloaded_undi with invalid PXENV+/!PXE structure
addresses if the signature checks fail.
před 17 roky
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.
před 17 roky
Michael Brown
2436dac281
Populate preloaded_undi device when applicable.
před 17 roky
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.
před 17 roky
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.
před 17 roky
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.
před 17 roky
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.
před 17 roky
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.
před 18 roky
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.
před 18 roky
Michael Brown
e7eca7b7cb
Code segment may not be writable; create the temporary pointer to the GDT
on the stack.
před 18 roky
Michael Brown
041a04335e
Fixed assembly on old versions of gas
před 18 roky
Michael Brown
9f86754f90
Updated to work with libprefix.
před 18 roky
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().
před 18 roky
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).
před 18 roky
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.
před 18 roky
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.
před 18 roky
Michael Brown
cc23057b59
Typo
před 18 roky
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.
před 18 roky
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.
před 18 roky
Michael Brown
5463169c1a
Verified as working
před 18 roky
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.
před 18 roky
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...
před 18 roky
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.
před 18 roky
Michael Brown
cdf1511d3e
Prefix semantics have changed
před 18 roky
Michael Brown
5d28bae0f1
Fix up building with gcc 4.0.1 / gas 2.16.91
před 18 roky
Michael Brown
0e494614b5
Some versions of doxygen seem to object to "@ret None" or similar.
před 19 roky
Michael Brown
d5789ff4a2
Doxygenation
před 19 roky
Michael Brown
d3dec7c331
Update to cope with changes in registers.h
před 19 roky
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.
před 19 roky
Michael Brown
84f43ea9cf
isapnp_read_port can be set directly, rather than via a function call.
před 19 roky
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.
před 19 roky
Michael Brown
e74bbaeca0
First versions
před 19 roky
Michael Brown
e44e5c7247
compiler.h is now always included on the command line.
před 19 roky
Michael Brown
3714946709
arch_rm_main no longer exists.
před 19 roky
Michael Brown
43417e6c1b
setup16() now calls initialise(); we don't have to do it.
před 19 roky
Michael Brown
792f34d228
#ifdef 0 out the UNDI loader routine, since it refers to the obsolete
callback mechanism.
před 19 roky
Michael Brown
0ff80b477d
Merged mcb30-realmode-redesign back to HEAD
před 19 roky
Michael Brown
afff2b50f1
Obsolete; not referenced by anything.
před 19 roky
Michael Brown
168973a5d7
Obsolete; not reference by anything.
před 19 roky
Michael Brown
6d4d056202
Obsolete; not referenced by anything.
před 19 roky