summaryrefslogtreecommitdiffstats
path: root/src/arch/i386/include
diff options
context:
space:
mode:
authorMichael Brown2007-01-09 02:41:26 +0100
committerMichael Brown2007-01-09 02:41:26 +0100
commitcea2221737df534557b37ffaeca708aec4cedf29 (patch)
tree12a90eba59b3ab423f34090901a39221ee1b1610 /src/arch/i386/include
parentCopy pxelinux's shutdown sequence: use UNLOAD_STACK without STOP_BASE, (diff)
downloadipxe-cea2221737df534557b37ffaeca708aec4cedf29.tar.gz
ipxe-cea2221737df534557b37ffaeca708aec4cedf29.tar.xz
ipxe-cea2221737df534557b37ffaeca708aec4cedf29.zip
Use fixed-width fields in struct undi_device, so that pxeprefix.S will be
able to populate the structure.
Diffstat (limited to 'src/arch/i386/include')
-rw-r--r--src/arch/i386/include/undi.h44
1 files changed, 25 insertions, 19 deletions
diff --git a/src/arch/i386/include/undi.h b/src/arch/i386/include/undi.h
index 67b063b67..e2e3c1d56 100644
--- a/src/arch/i386/include/undi.h
+++ b/src/arch/i386/include/undi.h
@@ -10,8 +10,31 @@
#include <gpxe/device.h>
#include <pxe_types.h>
-/** An UNDI device */
+/** An UNDI device
+ *
+ * This structure is used by assembly code as well as C; do not alter
+ * this structure without editing pxeprefix.S to match.
+ */
struct undi_device {
+ /** PXENV+ structure address */
+ SEGOFF16_t pxenv;
+ /** !PXE structure address */
+ SEGOFF16_t ppxe;
+ /** Entry point */
+ SEGOFF16_t entry;
+ /** Free base memory after load */
+ UINT16_t fbms;
+ /** Free base memory prior to load */
+ UINT16_t restore_fbms;
+ /** PCI bus:dev.fn, or 0xffff */
+ UINT16_t pci_busdevfn;
+ /** ISAPnP card select number, or 0xffff */
+ UINT16_t isapnp_csn;
+ /** ISAPnP read port, or 0xffff */
+ UINT16_t isapnp_read_port;
+ /** Padding */
+ UINT16_t pad;
+
/** Generic device */
struct device dev;
/** Driver-private data
@@ -20,24 +43,7 @@ struct undi_device {
* field.
*/
void *priv;
-
- /** PXENV+ structure address */
- SEGOFF16_t pxenv;
- /** !PXE structure address */
- SEGOFF16_t ppxe;
- /** Entry point */
- SEGOFF16_t entry;
- /** PCI bus:dev.fn, or 0 */
- unsigned int pci_busdevfn;
- /** ISAPnP card select number, or -1U */
- unsigned int isapnp_csn;
- /** ISAPnP read port, or -1U */
- unsigned int isapnp_read_port;
- /** Free base memory prior to load */
- unsigned int restore_fbms;
- /** Free base memory after load */
- unsigned int fbms;
-};
+} __attribute__ (( packed ));
/**
* Set UNDI driver-private data