#ifndef _IOKIT_CORE99CPU_H
#define _IOKIT_CORE99CPU_H
#include <IOKit/IOCPU.h>
#include "Core99.h"
class Core99CPUInterruptController;
class Core99CPU : public IOCPU
{
OSDeclareDefaultStructors(Core99CPU);
private:
bool bootCPU;
bool flushOnLock;
UInt32 l2crValue;
Core99PE *core99PE;
IOPCI2PCIBridge *decBridge;
UInt32 numCPUs;
bool rememberNap;
IOService *mpic;
IOService *keyLargo;
IOService *pmu;
virtual void ipiHandler(void *refCon, void *nub, int source);
const OSSymbol *mpic_dispatchIPI;
const OSSymbol *mpic_getProvider;
const OSSymbol *mpic_getIPIVector;
const OSSymbol *mpic_setCurrentTaskPriority;
const OSSymbol *mpic_setUpForSleep;
const OSSymbol *keyLargo_restoreRegisterState;
const OSSymbol *keyLargo_syncTimeBase;
const OSSymbol *keyLargo_saveRegisterState;
const OSSymbol *keyLargo_turnOffIO;
const OSSymbol *keyLargo_writeRegUInt8;
public:
virtual const OSSymbol *getCPUName(void);
virtual bool start(IOService *provider);
virtual IOReturn powerStateWillChangeTo (IOPMPowerFlags, unsigned long, IOService*);
virtual void initCPU(bool boot);
virtual void quiesceCPU(void);
virtual kern_return_t startCPU(vm_offset_t start_paddr,
vm_offset_t arg_paddr);
virtual void haltCPU(void);
virtual void signalCPU(IOCPU *target);
virtual void enableCPUTimeBase(bool enable);
};
#endif