* greater. If present, it points to a struct s_PXE.
*/
SEGOFF16_t PXEPtr;
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV PXENV_t;
SEGDESC_t BC_Code;
/** Base-code writable code segment descriptor */
SEGDESC_t BC_CodeWrite;
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXE PXE_t;
struct s_PXENV_UNLOAD_STACK {
PXENV_STATUS_t Status; /**< PXE status code */
UINT8_t reserved[10]; /**< Must be zero */
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_UNLOAD_STACK PXENV_UNLOAD_STACK_t;
UINT16_t BufferSize; /**< Buffer size */
SEGOFF16_t Buffer; /**< Buffer address */
UINT16_t BufferLimit; /**< Maximum buffer size */
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_GET_CACHED_INFO PXENV_GET_CACHED_INFO_t;
UINT8_t pad[56];
} v;
} vendor;
-} PACKED;
+} __attribute__ (( packed ));
typedef struct bootph BOOTPLAYER_t;
* more sense.
*/
SEGSEL_t ES;
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_START_UNDI PXENV_START_UNDI_t;
/** Parameter block for pxenv_stop_undi() */
struct s_PXENV_STOP_UNDI {
PXENV_STATUS_t Status; /**< PXE status code */
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_STOP_UNDI PXENV_STOP_UNDI_t;
/** Parameter block for pxenv_start_base() */
struct s_PXENV_START_BASE {
PXENV_STATUS_t Status; /**< PXE status code */
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_START_BASE PXENV_START_BASE_t;
/** Parameter block for pxenv_stop_base() */
struct s_PXENV_STOP_BASE {
PXENV_STATUS_t Status; /**< PXE status code */
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_STOP_BASE PXENV_STOP_BASE_t;
* negotiate blocksizes smaller than this.
*/
UINT16_t PacketSize;
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_TFTP_OPEN PXENV_TFTP_OPEN_t;
/** Parameter block for pxenv_tftp_close() */
struct s_PXENV_TFTP_CLOSE {
PXENV_STATUS_t Status; /**< PXE status code */
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_TFTP_CLOSE PXENV_TFTP_CLOSE_t;
UINT16_t PacketNumber; /**< TFTP packet number */
UINT16_t BufferSize; /**< Size of data buffer */
SEGOFF16_t Buffer; /**< Address of data buffer */
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_TFTP_READ PXENV_TFTP_READ_t;
* already been seen).
*/
UINT16_t TFTPReopenDelay;
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_TFTP_READ_FILE PXENV_TFTP_READ_FILE_t;
IP4_t GatewayIPAddress; /**< Relay agent IP address */
UINT8_t FileName[128]; /**< File name */
UINT32_t FileSize; /**< Size of the file */
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_TFTP_GET_FSIZE PXENV_TFTP_GET_FSIZE_t;
struct s_PXENV_UDP_OPEN {
PXENV_STATUS_t Status; /**< PXE status code */
IP4_t src_ip; /**< IP address of this station */
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_UDP_OPEN PXENV_UDP_OPEN_t;
/** Parameter block for pxenv_udp_close() */
struct s_PXENV_UDP_CLOSE {
PXENV_STATUS_t Status; /**< PXE status code */
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_UDP_CLOSE PXENV_UDP_CLOSE_t;
UDP_PORT_t dst_port; /**< Destination UDP port */
UINT16_t buffer_size; /**< UDP payload buffer size */
SEGOFF16_t buffer; /**< UDP payload buffer address */
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_UDP_WRITE PXENV_UDP_WRITE_t;
UDP_PORT_t d_port; /**< Destination UDP port */
UINT16_t buffer_size; /**< UDP payload buffer size */
SEGOFF16_t buffer; /**< UDP payload buffer address */
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_UDP_READ PXENV_UDP_READ_t;
/** Parameter block for pxenv_undi_startup() */
struct s_PXENV_UNDI_STARTUP {
PXENV_STATUS_t Status; /**< PXE status code */
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_UNDI_STARTUP PXENV_UNDI_STARTUP_t;
/** Parameter block for pxenv_undi_cleanup() */
struct s_PXENV_UNDI_CLEANUP {
PXENV_STATUS_t Status; /**< PXE status code */
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_UNDI_CLEANUP PXENV_UNDI_CLEANUP_t;
*/
ADDR32_t ProtocolIni;
UINT8_t reserved[8]; /**< Must be zero */
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_UNDI_INITIALIZE PXENV_UNDI_INITIALIZE_t;
UINT16_t MCastAddrCount;
/** List of up to #MAXNUM_MCADDR multicast MAC addresses */
MAC_ADDR_t McastAddr[MAXNUM_MCADDR];
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_UNDI_MCAST_ADDRESS PXENV_UNDI_MCAST_ADDRESS_t;
PXENV_STATUS_t Status; /**< PXE status code */
/** Multicast MAC addresses */
struct s_PXENV_UNDI_MCAST_ADDRESS R_Mcast_Buf;
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_UNDI_RESET PXENV_UNDI_RESET_t;
/** Parameter block for pxenv_undi_shutdown() */
struct s_PXENV_UNDI_SHUTDOWN {
PXENV_STATUS_t Status; /**< PXE status code */
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_UNDI_SHUTDOWN PXENV_UNDI_SHUTDOWN_t;
UINT16_t PktFilter;
/** Multicast MAC addresses */
struct s_PXENV_UNDI_MCAST_ADDRESS R_Mcast_Buf;
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_UNDI_OPEN PXENV_UNDI_OPEN_t;
/** Parameter block for pxenv_undi_close() */
struct s_PXENV_UNDI_CLOSE {
PXENV_STATUS_t Status; /**< PXE status code */
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_UNDI_CLOSE PXENV_UNDI_CLOSE_t;
UINT16_t TDDataLen; /**< Length of this transmit buffer */
SEGOFF16_t TDDataPtr; /**< Address of this transmit buffer */
} DataBlock[MAX_DATA_BLKS];
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_UNDI_TBD PXENV_UNDI_TBD_t;
*/
SEGOFF16_t TBD;
UINT32_t Reserved[2]; /**< Must be zero */
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_UNDI_TRANSMIT PXENV_UNDI_TRANSMIT_t;
PXENV_STATUS_t Status; /**< PXE status code */
/** List of multicast addresses */
struct s_PXENV_UNDI_MCAST_ADDRESS R_Mcast_Buf;
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_UNDI_SET_MCAST_ADDRESS PXENV_UNDI_SET_MCAST_ADDRESS_t;
struct s_PXENV_UNDI_SET_STATION_ADDRESS {
PXENV_STATUS_t Status; /**< PXE status code */
MAC_ADDR_t StationAddress; /**< Station MAC address */
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_UNDI_SET_STATION_ADDRESS PXENV_UNDI_SET_STATION_ADDRESS_t;
* without any kind of adult supervision" (quote from hpa).
*/
UINT8_t filter;
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_UNDI_SET_PACKET_FILTER PXENV_UNDI_SET_PACKET_FILTER_t;
SEGSEL_t ROMAddress; /**< Real-mode ROM segment address */
UINT16_t RxBufCt; /**< Receive queue length */
UINT16_t TxBufCt; /**< Transmit queue length */
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_UNDI_GET_INFORMATION PXENV_UNDI_GET_INFORMATION_t;
UINT32_t RcvGoodFrames; /**< Successful reception count */
UINT32_t RcvCRCErrors; /**< Receive CRC error count */
UINT32_t RcvResourceErrors; /**< Receive queue overflow count */
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_UNDI_GET_STATISTICS PXENV_UNDI_GET_STATISTICS_t;
/** Parameter block for pxenv_undi_clear_statistics() */
struct s_PXENV_UNDI_CLEAR_STATISTICS {
PXENV_STATUS_t Status; /**< PXE status code */
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_UNDI_CLEAR_STATISTICS PXENV_UNDI_CLEAR_STATISTICS_t;
/** Parameter block for pxenv_undi_initiate_diags() */
struct s_PXENV_UNDI_INITIATE_DIAGS {
PXENV_STATUS_t Status; /**< PXE status code */
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_UNDI_INITIATE_DIAGS PXENV_UNDI_INITIATE_DIAGS_t;
/** Parameter block for pxenv_undi_force_interrupt() */
struct s_PXENV_UNDI_FORCE_INTERRUPT {
PXENV_STATUS_t Status; /**< PXE status code */
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_UNDI_FORCE_INTERRUPT PXENV_UNDI_FORCE_INTERRUPT_t;
PXENV_STATUS_t Status; /**< PXE status code */
IP4_t InetAddr; /**< Multicast IP address */
MAC_ADDR_t MediaAddr; /**< Multicast MAC address */
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_UNDI_GET_MCAST_ADDRESS PXENV_UNDI_GET_MCAST_ADDRESS_t;
UINT16_t BusDevFunc; /**< PCI bus:dev:fn address */
UINT16_t SubVendor_ID; /**< PCI subvendor ID */
UINT16_t SubDevice_ID; /**< PCI subdevice ID */
-} PACKED;
+} __attribute__ (( packed ));
/** Information for an ISAPnP or equivalent NIC */
struct pnp_nic_info {
UINT8_t Prog_Intf; /**< Programming interface */
/** Card Select Number assigned to card */
UINT16_t CardSelNum;
-} PACKED;
+} __attribute__ (( packed ));
/** Parameter block for pxenv_undi_get_nic_type() */
struct s_PXENV_UNDI_GET_NIC_TYPE {
/** NIC information (if #NicType==#PnP_NIC) */
struct pnp_nic_info pnp;
} info;
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_UNDI_GET_NIC_TYPE PXENV_UNDI_GET_NIC_TYPE_t;
*/
UINT32_t ServiceFlags;
UINT32_t Reserved[4]; /**< Must be zero */
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_UNDI_GET_IFACE_INFO PXENV_UNDI_GET_IFACE_INFO_t;
* #PXE_UNDI_GET_STATE_OPENED.
*/
UINT8_t UNDIstate;
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_UNDI_GET_STATE PXENV_UNDI_GET_STATE_t;
* Valid values are #P_DIRECTED, #P_BROADCAST or #P_MULTICAST.
*/
UINT8_t PktType;
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_UNDI_ISR PXENV_UNDI_ISR_t;
UINT16_t FileHandle; /**< File handle */
SEGOFF16_t FileName; /**< File URL */
UINT32_t Reserved; /**< Reserved */
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_FILE_OPEN PXENV_FILE_OPEN_t;
struct s_PXENV_FILE_CLOSE {
PXENV_STATUS_t Status; /**< PXE status code */
UINT16_t FileHandle; /**< File handle */
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_FILE_CLOSE PXENV_FILE_CLOSE_t;
PXENV_STATUS_t Status; /**< PXE status code */
UINT16_t FileHandle; /**< File handle */
UINT16_t Ready; /**< Indication of readiness */
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_FILE_SELECT PXENV_FILE_SELECT_t;
UINT16_t FileHandle; /**< File handle */
UINT16_t BufferSize; /**< Data buffer size */
SEGOFF16_t Buffer; /**< Data buffer */
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_FILE_READ PXENV_FILE_READ_t;
PXENV_STATUS_t Status; /**< PXE status code */
UINT16_t FileHandle; /**< File handle */
UINT32_t FileSize; /**< File size */
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_GET_FILE_SIZE PXENV_GET_FILE_SIZE_t;
struct s_PXENV_FILE_EXEC {
PXENV_STATUS_t Status; /**< PXE status code */
SEGOFF16_t Command; /**< Command to execute */
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_FILE_EXEC PXENV_FILE_EXEC_t;
UINT32_t Provider; /**< Implementation identifier */
UINT32_t APIMask; /**< Supported API functions */
UINT32_t Flags; /**< Reserved for the future */
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_FILE_API_CHECK PXENV_FILE_API_CHECK_t;
struct s_PXENV_FILE_EXIT_HOOK {
PXENV_STATUS_t Status; /**< PXE status code */
SEGOFF16_t Hook; /**< SEG16:OFF16 to jump to */
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_PXENV_FILE_EXIT_HOOK PXENV_FILE_EXIT_HOOK_t;
SEGOFF16_t PXEptr;
/** Address of the PXENV+ structure (a struct s_PXENV) */
SEGOFF16_t PXENVptr;
-} PACKED;
+} __attribute__ (( packed ));
typedef struct s_UNDI_LOADER UNDI_LOADER_t;