x86: Move local APIC initialization out of initCPU.
The APIC can (and probably should) set its version register on its own. Also it already configures its CPUID register when associated with a CPU and doesn't need initCPU to do that. Change-Id: I4611563668d197c48caf2f23fcde9ec2ec101fe7 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/24186 Maintainer: Gabe Black <gabeblack@google.com> Tested-by: kokoro <noreply+kokoro@google.com> Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
This commit is contained in:
@@ -614,6 +614,8 @@ X86ISA::Interrupts::Interrupts(Params * p)
|
||||
regs[APIC_DESTINATION_FORMAT] = (uint32_t)(-1);
|
||||
ISRV = 0;
|
||||
IRRV = 0;
|
||||
|
||||
regs[APIC_VERSION] = (5 << 16) | 0x14;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -84,14 +84,6 @@ initCPU(ThreadContext *tc, int cpuId)
|
||||
// passed. No BIST actually runs, but software may still check this
|
||||
// register for errors.
|
||||
tc->setIntReg(INTREG_RAX, 0);
|
||||
|
||||
Interrupts * interrupts = dynamic_cast<Interrupts *>(
|
||||
tc->getCpuPtr()->getInterruptController(0));
|
||||
assert(interrupts);
|
||||
|
||||
interrupts->setRegNoEffect(APIC_ID, cpuId << 24);
|
||||
|
||||
interrupts->setRegNoEffect(APIC_VERSION, (5 << 16) | 0x14);
|
||||
}
|
||||
|
||||
void startupCPU(ThreadContext *tc, int cpuId)
|
||||
|
||||
Reference in New Issue
Block a user