/*
* Copyright (c) 2000 Alfred Perlstein <alfred@freebsd.org>
* All rights reserved.
* Copyright (c) 2000 Paul Saab <ps@freebsd.org>
* All rights reserved.
* Copyright (c) 2000 John Baldwin <jhb@freebsd.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $FreeBSD$
*/
/*
* The typedefs and structures declared in this file
* clearly violate style(9), the reason for this is to conform to the
* typedefs/structure-names used in the Intel literature to avoid confusion.
*
* It's for your own good. :)
*/
/* It seems that intel didn't think about ABI,
* either that or 16bit ABI != 32bit ABI (which seems reasonable)
* I have to thank Intel for the hair loss I incurred trying to figure
* out why PXE was mis-reading structures I was passing it (at least
* from my point of view)
*
* Solution: use gcc's '__packed' to correctly align
* structures passed into PXE
* Question: does this really work for PXE's expected ABI?
*/
typedef struct {
} SEGOFF16_t;
typedef struct {
} SEGDESC_t;
/* PXENV+ */
typedef struct {
/* don't use PMOffset and PMSelector (from the 2.1 PXE manual) */
only present when Version > 2.1 */
/* !PXE */
typedef struct {
typedef struct {
typedef struct {
typedef struct {
typedef struct {
typedef struct {
typedef struct {
typedef struct {
typedef struct {
typedef struct {
typedef struct {
# define P_UNKNOWN 0
typedef struct {
struct DataBlk {
typedef struct {
typedef struct {
typedef struct {
typedef struct {
typedef struct {
typedef struct {
typedef struct {
typedef struct {
typedef struct {
typedef struct {
union {
struct {
struct {
} pnp;
} info;
typedef struct {
typedef struct {
/* one of these will be returned for PXENV_UNDI_ISR_IN_START */
# define PXENV_UNDI_ISR_OUT_OURS 0
/*
* one of these will bre returnd for PXEND_UNDI_ISR_IN_PROCESS
* and PXENV_UNDI_ISR_IN_GET_NEXT
*/
# define PXENV_UNDI_ISR_OUT_DONE 0
typedef struct {
typedef struct {
typedef struct {
typedef struct {
typedef struct {
typedef struct {
typedef struct {
typedef struct {
typedef struct {
typedef struct {
typedef struct {
typedef struct {
/* structure filled in by PXENV_GET_CACHED_INFO
* (how we determine which IP we downloaded the initial bootstrap from)
* words can't describe...
*/
typedef struct {
uint32_t ident; /* random number chosen by client */
union {
# if 1
# else
# endif
struct {
# ifndef VM_RFC1048
# endif
union does... */
} v;
} vendor;
typedef struct {
typedef struct {