#ifndef _IOKIT_MACRISC2CPU_H
#define _IOKIT_MACRISC2CPU_H
#include <IOKit/IOCPU.h>
#include "MacRISC2.h"
class MacRISC2CPUInterruptController;
class MacRISC2CPU : public IOCPU
{
OSDeclareDefaultStructors(MacRISC2CPU);
private:
bool bootCPU;
bool flushOnLock;
UInt32 l2crValue;
MacRISC2PE *macRISC2PE;
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;
const OSSymbol *keyLargo_getHostKeyLargo;
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