diff options
| author | Michael Brown | 2007-01-05 04:24:39 +0100 |
|---|---|---|
| committer | Michael Brown | 2007-01-05 04:24:39 +0100 |
| commit | 9780fef360dc381ee6e4cd7e16f10990657eed83 (patch) | |
| tree | 9b7a506c6c82087f0096c6c49375d5503da8a028 /src/include | |
| parent | Add PXE driver-scanning code, capable of locating all PXE ROMs in a system (diff) | |
| download | ipxe-9780fef360dc381ee6e4cd7e16f10990657eed83.tar.gz ipxe-9780fef360dc381ee6e4cd7e16f10990657eed83.tar.xz ipxe-9780fef360dc381ee6e4cd7e16f10990657eed83.zip | |
Partial implementation of UNDI loader caller.
Diffstat (limited to 'src/include')
| -rw-r--r-- | src/include/pxe.h | 2 | ||||
| -rw-r--r-- | src/include/pxe_api.h | 66 |
2 files changed, 17 insertions, 51 deletions
diff --git a/src/include/pxe.h b/src/include/pxe.h index e85e7e270..003ebf125 100644 --- a/src/include/pxe.h +++ b/src/include/pxe.h @@ -155,7 +155,7 @@ struct pxe_driver { /** ROM segment address */ unsigned int rom_segment; /** UNDI loader entry point */ - SEGOFF16_t loader; + SEGOFF16_t loader_entry; /** Code segment size */ size_t code_size; /** Data segment size */ diff --git a/src/include/pxe_api.h b/src/include/pxe_api.h index 7256c57e5..e64413254 100644 --- a/src/include/pxe_api.h +++ b/src/include/pxe_api.h @@ -1562,54 +1562,20 @@ extern PXENV_EXIT_t pxenv_undi_isr ( struct s_PXENV_UNDI_ISR *undi_isr ); * @{ */ -/** The UNDI ROM ID structure */ -struct s_UNDI_ROM_ID { - /** Signature - * - * Contains the bytes 'U', 'N', 'D', 'I'. - */ - UINT32_t Signature; - UINT8_t StructLength; /**< Length of this structure */ - /** Checksum - * - * The byte checksum of this structure (using the length in - * #StructLength) must be zero. - */ - UINT8_t StructCksum; - /** Revision of this structure - * - * For PXE version 2.1, this field must be zero. - */ - UINT8_t StructRev; - /** UNDI revision - * - * UNDI revision, least significant byte first. For UNDI - * version 2.1.0, this field will contain { 0x00, 0x01, 0x02 }. - */ - UINT8_t UNDIRev[3]; - /** UNDI loader routine entry point - * - * This is the entry point for calling undi_loader(). - */ - UINT16_t UNDILoader; - /** Minimum required stack segment size */ - UINT16_t StackSize; - /** Minimum required data segment size */ - UINT16_t DataSize; - /** Minimum required code segment size */ - UINT16_t CodeSize; -} PACKED; - -typedef struct s_UNDI_ROM_ID UNDI_ROM_ID_t; - /** Parameter block for undi_loader() */ struct s_UNDI_LOADER { - /** struct s_UNDI_LOADER starts with a struct s_PXENV_START_UNDI */ - union undi_loader_start_undi { - PXENV_STATUS_t Status; /**< PXE status code */ - /** Parameters to pass to pxenv_start_undi() */ - struct s_PXENV_START_UNDI start_undi; - } u; + /** PXE status code */ + PXENV_STATUS_t Status; + /** %ax register as for PXENV_START_UNDI */ + UINT16_t AX; + /** %bx register as for PXENV_START_UNDI */ + UINT16_t BX; + /** %dx register as for PXENV_START_UNDI */ + UINT16_t DX; + /** %di register as for PXENV_START_UNDI */ + OFF16_t DI; + /** %es register as for PXENV_START_UNDI */ + SEGSEL_t ES; /** UNDI data segment * * @note The PXE specification defines the type of this field @@ -1617,7 +1583,7 @@ struct s_UNDI_LOADER { * equivalent anyway; for other architectures #SEGSEL_t makes * more sense. */ - SEGSEL_t undi_ds; + SEGSEL_t UNDI_DS; /** UNDI code segment * * @note The PXE specification defines the type of this field @@ -1625,11 +1591,11 @@ struct s_UNDI_LOADER { * equivalent anyway; for other architectures #SEGSEL_t makes * more sense. */ - SEGSEL_t undi_cs; + SEGSEL_t UNDI_CS; /** Address of the !PXE structure (a struct s_PXE) */ - SEGOFF16_t pxe_ptr; + SEGOFF16_t PXEptr; /** Address of the PXENV+ structure (a struct s_PXENV) */ - SEGOFF16_t pxenv_ptr; + SEGOFF16_t PXENVptr; } PACKED; typedef struct s_UNDI_LOADER UNDI_LOADER_t; |
