/** Internal function to return the frequency of the local APIC timer. @param ApicBase The base address of memory mapped registers of local APIC. @return The frequency of the timer in Hz. **/ UINT32 EFIAPI InternalX86GetTimerFrequency ( IN UINTN ApicBase ) { return PcdGet32(PcdFSBClock) / mTimerLibLocalApicDivisor[MmioBitFieldRead32 (ApicBase + APIC_TDCR, 0, 3)]; }
/** Reads a bit field of a PCI configuration register. Reads the bit field in a 32-bit PCI configuration register. The bit field is specified by the StartBit and the EndBit. The value of the bit field is returned. If Address > 0x0FFFFFFF, then ASSERT(). If Address is not aligned on a 32-bit boundary, then ASSERT(). If StartBit is greater than 31, then ASSERT(). If EndBit is greater than 31, then ASSERT(). If EndBit is less than StartBit, then ASSERT(). @param Address PCI configuration register to read. @param StartBit The ordinal of the least significant bit in the bit field. Range 0..31. @param EndBit The ordinal of the most significant bit in the bit field. Range 0..31. @return The value of the bit field read from the PCI configuration register. **/ UINT32 EFIAPI PciExpressBitFieldRead32 ( IN UINTN Address, IN UINTN StartBit, IN UINTN EndBit ) { ASSERT_INVALID_PCI_ADDRESS (Address); return MmioBitFieldRead32 ( (UINTN) GetPciExpressBaseAddress () + Address, StartBit, EndBit ); }