24#include "pedigree/kernel/Spinlock.h"
25#include "pedigree/kernel/process/initialiseMultitasking.h"
26#include "pedigree/kernel/processor/NMFaultHandler.h"
27#include "pedigree/kernel/processor/Processor.h"
29#include "../x86_common/Multiprocessor.h"
30#include "InterruptManager.h"
31#include "SyscallManager.h"
33#include "machine/mach_pc/LocalApic.h"
34#include "machine/mach_pc/Pc.h"
36void Multiprocessor::applicationProcessorStartup() {
39 asm volatile(
"mov %%cr0, %%rax; or $0x10000, %%rax; mov %%rax, %%cr0" :::
"rax");
45 Pc::instance().getLocalApic().prepareApplicationProcessor();
49 m_ProcessorStarted =
true;
53 m_ProcessorLock2.acquire(
false,
false);
54 m_ProcessorLock2.release();
69 Pc::instance().initialiseProcessor();
76 initialiseMultitaskingPerProcessor();
static NMFaultHandler & instance()
bool initialiseProcessor()
static void invalidate(void *pAddress)
static void initialiseProcessor() INITIALISATION_ONLY
static void initialiseProcessor() INITIALISATION_ONLY
static void initialiseProcessor() INITIALISATION_ONLY