Intel Extensible Firmware Interface User Manual

Page 998

Advertising
background image

Extensible Firmware Interface Specification

I-6

12/01/02

Version 1.10

//
// Get 1 byte into SubBitBuf
//
Sd->mCompSize --;
Sd->mSubBitBuf = 0;
Sd->mSubBitBuf = Sd->mSrcBase[Sd->mInBuf ++];
Sd->mBitCount = 8;

} else {

Sd->mSubBitBuf = 0;
Sd->mBitCount = 8;

}
}

Sd->mBitCount = (UINT16)(Sd->mBitCount - NumOfBits);
Sd->mBitBuf |= Sd->mSubBitBuf >> Sd->mBitCount;
}


STATIC
UINT16
GetBits(
IN SCRATCH_DATA *Sd,
IN UINT16 NumOfBits
)
/*++

Routine Description:

Get NumOfBits of bits out from mBitBuf. Fill mBitBuf with subsequent
NumOfBits of bits from source. Returns NumOfBits of bits that are
popped out.

Arguments:

Sd - The global scratch data.
NumOfBits - The number of bits to pop and read.

Returns:

The bits that are popped out.

--*/
{
UINT16 OutBits;

OutBits = (UINT16)(Sd->mBitBuf >> (BITBUFSIZ - NumOfBits));

FillBuf (Sd, NumOfBits);

return OutBits;
}

Advertising