mirror of
https://github.com/reactos/reactos.git
synced 2024-12-27 09:34:43 +00:00
[HAL/APIC] Use APIC_CLOCK_VECTOR everywhere, instead of keeping separate definitions
This commit is contained in:
parent
a559d830b5
commit
aedb97df47
2 changed files with 11 additions and 11 deletions
|
@ -12,12 +12,12 @@
|
|||
/* INCLUDES *******************************************************************/
|
||||
|
||||
#include <hal.h>
|
||||
#include "apicp.h"
|
||||
#define NDEBUG
|
||||
#include <debug.h>
|
||||
|
||||
/* GLOBALS ********************************************************************/
|
||||
|
||||
const UCHAR HalpClockVector = 0xD1;
|
||||
BOOLEAN HalpClockSetMSRate;
|
||||
UCHAR HalpNextMSRate;
|
||||
UCHAR HalpCurrentRate = 9; /* Initial rate 9: 128 Hz / 7.8 ms */
|
||||
|
@ -141,7 +141,7 @@ HalpClockInterruptHandler(IN PKTRAP_FRAME TrapFrame)
|
|||
#endif
|
||||
|
||||
/* Start the interrupt */
|
||||
if (!HalBeginSystemInterrupt(CLOCK_LEVEL, HalpClockVector, &Irql))
|
||||
if (!HalBeginSystemInterrupt(CLOCK_LEVEL, APIC_CLOCK_VECTOR, &Irql))
|
||||
{
|
||||
/* Spurious, just end the interrupt */
|
||||
KiEoiHelper(TrapFrame);
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
|
||||
#include <hal.h>
|
||||
#include "tsc.h"
|
||||
#include "apicp.h"
|
||||
#define NDEBUG
|
||||
#include <debug.h>
|
||||
|
||||
|
@ -17,10 +18,9 @@ LARGE_INTEGER HalpCpuClockFrequency = {{INITIAL_STALL_COUNT * 1000000}};
|
|||
|
||||
UCHAR TscCalibrationPhase;
|
||||
ULONG64 TscCalibrationArray[NUM_SAMPLES];
|
||||
UCHAR HalpRtcClockVector = 0xD1;
|
||||
|
||||
#define RTC_MODE 6 /* Mode 6 is 1024 Hz */
|
||||
#define SAMPLE_FREQENCY ((32768 << 1) >> RTC_MODE)
|
||||
#define SAMPLE_FREQUENCY ((32768 << 1) >> RTC_MODE)
|
||||
|
||||
/* PRIVATE FUNCTIONS *********************************************************/
|
||||
|
||||
|
@ -44,7 +44,7 @@ DoLinearRegression(
|
|||
}
|
||||
|
||||
/* Account for sample frequency */
|
||||
SumXY *= SAMPLE_FREQENCY;
|
||||
SumXY *= SAMPLE_FREQUENCY;
|
||||
|
||||
/* Return the quotient of the sums */
|
||||
return (SumXY + (SumXX/2)) / SumXX;
|
||||
|
@ -72,22 +72,22 @@ HalpInitializeTsc(VOID)
|
|||
RegisterB = HalpReadCmos(RTC_REGISTER_B);
|
||||
HalpWriteCmos(RTC_REGISTER_B, RegisterB | RTC_REG_B_PI);
|
||||
|
||||
/* Modify register A to RTC_MODE to get SAMPLE_FREQENCY */
|
||||
/* Modify register A to RTC_MODE to get SAMPLE_FREQUENCY */
|
||||
RegisterA = HalpReadCmos(RTC_REGISTER_A);
|
||||
RegisterA = (RegisterA & 0xF0) | RTC_MODE;
|
||||
HalpWriteCmos(RTC_REGISTER_A, RegisterA);
|
||||
|
||||
/* Save old IDT entry */
|
||||
PreviousHandler = KeQueryInterruptHandler(HalpRtcClockVector);
|
||||
PreviousHandler = KeQueryInterruptHandler(APIC_CLOCK_VECTOR);
|
||||
|
||||
/* Set the calibration ISR */
|
||||
KeRegisterInterruptHandler(HalpRtcClockVector, TscCalibrationISR);
|
||||
KeRegisterInterruptHandler(APIC_CLOCK_VECTOR, TscCalibrationISR);
|
||||
|
||||
/* Reset TSC value to 0 */
|
||||
__writemsr(MSR_RDTSC, 0);
|
||||
|
||||
/* Enable the timer interrupt */
|
||||
HalEnableSystemInterrupt(HalpRtcClockVector, CLOCK_LEVEL, Latched);
|
||||
HalEnableSystemInterrupt(APIC_CLOCK_VECTOR, CLOCK_LEVEL, Latched);
|
||||
|
||||
/* Read register C, so that the next interrupt can happen */
|
||||
HalpReadCmos(RTC_REGISTER_C);
|
||||
|
@ -101,10 +101,10 @@ HalpInitializeTsc(VOID)
|
|||
HalpWriteCmos(RTC_REGISTER_B, RegisterB & ~RTC_REG_B_PI);
|
||||
|
||||
/* Disable the timer interrupt */
|
||||
HalDisableSystemInterrupt(HalpRtcClockVector, CLOCK_LEVEL);
|
||||
HalDisableSystemInterrupt(APIC_CLOCK_VECTOR, CLOCK_LEVEL);
|
||||
|
||||
/* Restore the previous handler */
|
||||
KeRegisterInterruptHandler(HalpRtcClockVector, PreviousHandler);
|
||||
KeRegisterInterruptHandler(APIC_CLOCK_VECTOR, PreviousHandler);
|
||||
|
||||
/* Calculate an average, using simplified linear regression */
|
||||
HalpCpuClockFrequency.QuadPart = DoLinearRegression(NUM_SAMPLES - 1,
|
||||
|
|
Loading…
Reference in a new issue