beautypg.com

Intel Extensible Firmware Interface User Manual

Page 882

background image

Extensible Firmware Interface Specification

E-16

12/01/02

Version 1.10

E.3.1.3 PXE_BUSTYPE

Used to convert a 4-character ASCII identifier to a 32-bit unsigned integer.

#if PXE_INTEL_ORDER

# define PXE_BUSTYPE(a,b,c,d)

\

((((PXE_UINT32)(d) & 0xFF) << 24) |

\

(((PXE_UINT32)(c) & 0xFF) << 16) |

\

(((PXE_UINT32)(b) & 0xFF) << 8) |

\

((PXE_UINT32)(a) & 0xFF))

#else

# define PXE_BUSTYPE(a,b,c,d)

\

((((PXE_UINT32)(a) & 0xFF) << 24) |

\

(((PXE_UINT32)(b) & 0xFF) << 16) |

\

(((PXE_UINT32)(c) & 0xFF) << 8) |

\

((PXE_UINT32)(f) & 0xFF))

#endif

//*******************************************************

// UNDI ROM ID and devive ID signature

//*******************************************************

#define PXE_BUSTYPE_PXE

PXE_BUSTYPE(’!’, ’P’, ’X’, ’E’)

//*******************************************************

// BUS ROM ID signatures

//*******************************************************

#define PXE_BUSTYPE_PCI

PXE_BUSTYPE(’P’, ’C’, ’I’, ’R’)

#define PXE_BUSTYPE_PC_CARD

PXE_BUSTYPE(’P’, ’C’, ’C’, ’R’)

#define PXE_BUSTYPE_USB

PXE_BUSTYPE(’U’, ’S’, ’B’, ’R’)

#define PXE_BUSTYPE_1394

PXE_BUSTYPE(’1’, ’3’, ’9’, ’4’)

E.3.1.4 PXE_SWAP_UINT16

This macro swaps bytes in a 16-bit word.

#ifdef PXE_INTEL_ORDER

# define PXE_SWAP_UINT16(n)

\

((((PXE_UINT16)(n) & 0x00FF) << 8) | \

(((PXE_UINT16)(n) & 0xFF00) >> 8))

#else

# define PXE_SWAP_UINT16(n)

(n)

#endif