1//
2//  AppleARMCPU.h
3//  AppleARMPlatform
4//
5//  Created by rms on 5/22/13.
6//  Copyright (c) 2013 rms. All rights reserved.
7//
8
9#ifndef __AppleARMPlatform__AppleARMCPU__
10#define __AppleARMPlatform__AppleARMCPU__
11
12#include <mach/mach_types.h>
13#include <IOKit/IOPlatformExpert.h>
14#include "IOCPU.h"
15
16#define PE_LOG \
17    IOLog("[%s]: ", __PRETTY_FUNCTION__), IOLog
18
19class AppleARMCPU:public IOCPU {
20    OSDeclareDefaultStructors(AppleARMCPU);
21 private:
22    IOCPUInterruptController * gIC;
23 public:
24    bool start(IOService * provider);
25    void initCPU(bool boot);
26    void quiesceCPU(void);
27    kern_return_t startCPU(vm_offset_t start_paddr, vm_offset_t parg_addr);
28    void haltCPU(void);
29    const OSSymbol *getCPUName(void);
30    bool init(OSDictionary * propTable);
31    void ipiHandler(void *refCon, IOService * nub, int source);
32};
33
34/*
35 * AppleARMGrandCentral
36 */
37
38class AppleARMGrandCentral:public IOCPUInterruptController {
39    OSDeclareDefaultStructors(AppleARMGrandCentral);
40 public:
41    IOReturn handleInterrupt(void *refCon, IOService * nub, int source);
42};
43
44#endif                          /* defined(__AppleARMPlatform__AppleARMCPU__) */
45