summaryrefslogtreecommitdiffstats
path: root/src/include/gpxe/efi
Commit message (Collapse)AuthorAgeFilesLines
* [build] Rename gPXE to iPXEMichael Brown2010-04-2044-14326/+0Star
| | | | | | | | | | | Access to the gpxe.org and etherboot.org domains and associated resources has been revoked by the registrant of the domain. Work around this problem by renaming project from gPXE to iPXE, and updating URLs to match. Also update README, LOG and COPYRIGHTS to remove obsolete information. Signed-off-by: Michael Brown <mcb30@ipxe.org>
* [legal] Add a selection of FILE_LICENCE declarationsMichael Brown2009-05-186-0/+12
| | | | | Add FILE_LICENCE declarations to almost all files that make up the various standard builds of gPXE.
* [efi] Fix compilation on Mac OS X.Michael Brown2009-03-311-0/+1
| | | | | | | | | | | | | The Mac compiler treats "#pragma pack()" as gcc's "#pragma pack(pop)", and so dies if the pragma pack stack is empty. Adding a "#pragma pack(1)" immediately beforehand is enough to keep the Mac compiler happy. The combination of "#pragma pack(1)", "#pragma pack()" won't actually achieve anything on a Mac, but it will at least build. (With gcc, the "#pragma pack()" overrides any previous pragmas, so is still useful.) Suggested-by: Joshua Oreman <oremanj@rwcr.net>
* [build] Enable building with the Intel C compiler (icc)Michael Brown2009-03-261-1/+6
|
* [tables] Incorporate table data type information into table definitionMichael Brown2009-03-131-6/+5Star
| | | | | | | Eliminate the potential for mismatches between table names and the table entry data type by incorporating the data type into the definition of the table, rather than specifying it explicitly in each table accessor method.
* [tables] Redefine methods for accessing linker tablesMichael Brown2009-03-131-2/+8
| | | | | | | | | | | | | | | Intel's C compiler (icc) chokes on the zero-length arrays that we currently use as part of the mechanism for accessing linker table entries. Abstract away the zero-length arrays, to make a port to icc easier. Introduce macros such as for_each_table_entry() to simplify the common case of iterating over all entries in a linker table. Represent table names as #defined string constants rather than unquoted literals; this avoids visual confusion between table names and C variable or type names, and also allows us to force a compilation error in the event of incorrect table names.
* [efi] Add an EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL interfaceMichael Brown2009-01-121-0/+74
| | | | | This allegedly optional interface seems to be compulsory if you want EFI's PXE code to bother trying to use your network interface.
* [efi] Provide component name protocol and device path protocol interfacesMichael Brown2009-01-121-0/+174
| | | | | | | | | | | | | | Include a minimal component name protocol so that the driver name shows up as something other than "<UNKNOWN>" in the driver list, and a device path protocol so that the network interface shows up as a separate device in the device list, rather than being attached directly to the PCI device. Incidentally, the EFI component name protocol reaches new depths for signal-to-noise ratio in program code. A typical instance within the EFI development kit will use an additional 300 lines of code to provide slightly less functionality than GNU gettext achieves with three additional characters.
* [efi] Add efirom utility and .efirom image formatMichael Brown2009-01-081-0/+601
|
* [efi] Allow for .efidrv images as well as .efi imagesMichael Brown2009-01-081-0/+1
| | | | | | Merge in the changes that allow for building EFI driver images (that can be loaded using the EFI shell's "load" command) as well as EFI applications.
* [efi] Use elf2efi utility in place of efilinkMichael Brown2009-01-071-0/+2
| | | | | | | | | | | elf2efi converts a suitable ELF executable (containing relocation information, and with appropriate virtual addresses) into an EFI executable. It is less tightly coupled with the gPXE build process and, in particular, does not require the use of a hand-crafted PE image header in efiprefix.S. elf2efi correctly handles .bss sections, which significantly reduces the size of the gPXE EFI executable.
* [x86_64] Add support for compilation as an x86_64 binaryMichael Brown2008-12-052-0/+251
| | | | | | | | | | | | Currently the only supported platform for x86_64 is EFI. Building an EFI64 gPXE requires a version of gcc that supports __attribute__((ms_abi)). This currently means a development build of gcc; the feature should be present when gcc 4.4 is released. In the meantime; you can grab a suitable gcc tree from git://git.etherboot.org/scm/people/mcb30/gcc/.git
* [efi] Use EFI-native mechanism for accessing SMBIOS tableMichael Brown2008-12-052-0/+50
| | | | | | EFI provides a copy of the SMBIOS table accessible via the EFI system table, which we should use instead of manually scanning through the F000:0000 segment.
* [efi] Allow use of EFI configuration tablesMichael Brown2008-12-051-0/+33
| | | | | | | EFI passes in copies of SMBIOS and other system configuration tables via the EFI system table. Allow configuration tables to be requested using a mechanism similar to the current method for requesting EFI protocols.
* [efi] Add efi_strerror()Michael Brown2008-11-191-0/+2
| | | | | | | | | EFI_STATUS is defined as an INTN, which maps to UINT32 (i.e. unsigned int) on i386 and UINT64 (i.e. unsigned long) on x86_64. This would require a cast each time the error status is printed. Add efi_strerror() to avoid this ickiness and simultaneously enable prettier reporting of EFI status codes.
* [efi] Update to latest UEFI headersMichael Brown2008-11-1826-1973/+1889Star
|
* [efi] Add basic implementation of EFI SIMPLE_NETWORK_PROTOCOLMichael Brown2008-10-163-0/+1388
| | | | | This implementation is tested and working, but not currently tied in to the EFI build.
* [efi] Add EFI image format and basic runtime environmentMichael Brown2008-10-1311-0/+2798
| | | | | | | | | We have EFI APIs for CPU I/O, PCI I/O, timers, console I/O, user access and user memory allocation. EFI executables are created using the vanilla GNU toolchain, with the EXE header handcrafted in assembly and relocations generated by a custom efilink utility.
* [efi] Add EFI headers from the EFI Development Kit (edk2)Michael Brown2008-10-1025-0/+9013
The intention is to include near-verbatim copies of the EFI headers required by gPXE. This is achieved using the import.pl script in src/include/gpxe/efi. Note that import.pl will modify any #include lines in each imported header to reflect its new location within the gPXE tree. It will also tidy up the file by removing carriage return characters and trailing whitespace.