mirror of
https://github.com/andreas-abel/nanoBench.git
synced 2025-12-16 03:20:08 +01:00
compatibility with recent kernels
This commit is contained in:
@@ -536,13 +536,13 @@ uint32_t prev_APIC_TMICT = 0;
|
|||||||
uint64_t prev_deadline = 0;
|
uint64_t prev_deadline = 0;
|
||||||
|
|
||||||
static void restore_interrupts_preemption(void) {
|
static void restore_interrupts_preemption(void) {
|
||||||
apic_write(APIC_LVTT, prev_LVTT);
|
apic->write(APIC_LVTT, prev_LVTT);
|
||||||
apic_write(APIC_LVTTHMR, prev_LVTTHMR);
|
apic->write(APIC_LVTTHMR, prev_LVTTHMR);
|
||||||
apic_write(APIC_LVTPC, prev_LVTPC);
|
apic->write(APIC_LVTPC, prev_LVTPC);
|
||||||
apic_write(APIC_LVT0, prev_LVT0);
|
apic->write(APIC_LVT0, prev_LVT0);
|
||||||
apic_write(APIC_LVT1, prev_LVT1);
|
apic->write(APIC_LVT1, prev_LVT1);
|
||||||
apic_write(APIC_LVTERR, prev_LVTERR);
|
apic->write(APIC_LVTERR, prev_LVTERR);
|
||||||
apic_write(APIC_TMICT, prev_APIC_TMICT);
|
apic->write(APIC_TMICT, prev_APIC_TMICT);
|
||||||
if (supports_tsc_deadline) {
|
if (supports_tsc_deadline) {
|
||||||
asm volatile("mfence");
|
asm volatile("mfence");
|
||||||
write_msr(MSR_IA32_TSC_DEADLINE, max(1ULL, prev_deadline));
|
write_msr(MSR_IA32_TSC_DEADLINE, max(1ULL, prev_deadline));
|
||||||
@@ -564,24 +564,24 @@ static void disable_interrupts_preemption(void) {
|
|||||||
// We mask interrupts in the APIC LVT. We do not mask all maskable interrupts using the cli instruction, as on some
|
// We mask interrupts in the APIC LVT. We do not mask all maskable interrupts using the cli instruction, as on some
|
||||||
// microarchitectures, pending interrupts that are masked via the cli instruction can reduce the retirement rate
|
// microarchitectures, pending interrupts that are masked via the cli instruction can reduce the retirement rate
|
||||||
// (e.g., on ICL to 4 uops/cycle).
|
// (e.g., on ICL to 4 uops/cycle).
|
||||||
prev_LVTT = apic_read(APIC_LVTT);
|
prev_LVTT = apic->read(APIC_LVTT);
|
||||||
prev_LVTTHMR = apic_read(APIC_LVTTHMR);
|
prev_LVTTHMR = apic->read(APIC_LVTTHMR);
|
||||||
prev_LVTPC = apic_read(APIC_LVTPC);
|
prev_LVTPC = apic->read(APIC_LVTPC);
|
||||||
prev_LVT0 = apic_read(APIC_LVT0);
|
prev_LVT0 = apic->read(APIC_LVT0);
|
||||||
prev_LVT1 = apic_read(APIC_LVT1);
|
prev_LVT1 = apic->read(APIC_LVT1);
|
||||||
prev_LVTERR = apic_read(APIC_LVTERR);
|
prev_LVTERR = apic->read(APIC_LVTERR);
|
||||||
prev_APIC_TMICT = apic_read(APIC_TMICT);
|
prev_APIC_TMICT = apic->read(APIC_TMICT);
|
||||||
if (supports_tsc_deadline) {
|
if (supports_tsc_deadline) {
|
||||||
prev_deadline = read_msr(MSR_IA32_TSC_DEADLINE);
|
prev_deadline = read_msr(MSR_IA32_TSC_DEADLINE);
|
||||||
write_msr(MSR_IA32_TSC_DEADLINE, 0);
|
write_msr(MSR_IA32_TSC_DEADLINE, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
apic_write(APIC_LVTT, prev_LVTT | APIC_LVT_MASKED);
|
apic->write(APIC_LVTT, prev_LVTT | APIC_LVT_MASKED);
|
||||||
apic_write(APIC_LVTTHMR, prev_LVTTHMR | APIC_LVT_MASKED);
|
apic->write(APIC_LVTTHMR, prev_LVTTHMR | APIC_LVT_MASKED);
|
||||||
apic_write(APIC_LVTPC, prev_LVTPC | APIC_LVT_MASKED);
|
apic->write(APIC_LVTPC, prev_LVTPC | APIC_LVT_MASKED);
|
||||||
apic_write(APIC_LVT0, prev_LVT0 | APIC_LVT_MASKED);
|
apic->write(APIC_LVT0, prev_LVT0 | APIC_LVT_MASKED);
|
||||||
apic_write(APIC_LVT1, prev_LVT1 | APIC_LVT_MASKED);
|
apic->write(APIC_LVT1, prev_LVT1 | APIC_LVT_MASKED);
|
||||||
apic_write(APIC_LVTERR, prev_LVTERR | APIC_LVT_MASKED);
|
apic->write(APIC_LVTERR, prev_LVTERR | APIC_LVT_MASKED);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool check_memory_allocations(void) {
|
static bool check_memory_allocations(void) {
|
||||||
|
|||||||
Reference in New Issue
Block a user