Chameleon

Chameleon Svn Source Tree

Root/branches/cparm/i386/modules/KernelPatcher/kernel_patcher.h

1/*
2 * Copyright (c) 2009 Evan Lojewski. All rights reserved.
3 *
4 */
5
6#include <mach-o/loader.h>
7#include <mach-o/nlist.h>
8
9#ifndef __BOOT2_KERNEL_PATCHER_H
10#define __BOOT2_KERNEL_PATCHER_H
11
12#define CPUID_MODEL_ANY0x00
13#define CPUID_MODEL_UNKNOWN0x01
14
15#define KERNEL_ANY0x00
16#define KERNEL_640x01
17#define KERNEL_320x02
18#define KERNEL_ERR0xFF
19
20typedef struct patchRoutine_t
21{
22void(*patchRoutine)(void*);
23int validArchs;
24int validCpu;
25struct patchRoutine_t* next;
26} patchRoutine_t;
27
28
29typedef struct kernSymbols_t
30{
31char* symbol;
32UInt64 addr;
33struct kernSymbols_t* next;
34} kernSymbols_t;
35
36kernSymbols_t* lookup_kernel_symbol(const char* name);
37void register_kernel_symbol(int kernelType, const char* name);
38
39long long symbol_handler(char* symbolName, long long addr, char is64);
40void patch_kernel(void* kernelData, void* arg2, void* arg3, void *arg4, void* arg5, void* arg6);
41void register_kernel_patch(void* patch, int arch, int cpus);
42
43int locate_symbols(void* kernelData);
44
45int determineKernelArchitecture(void* kernelData);
46
47/*
48 * Internal patches provided by this module.
49 */
50void patch_cpuid_set_info_all(void* kernelData);
51void patch_cpuid_set_info_32(void* kernelData, UInt32 impersonateFamily, UInt8 impersonateModel);
52void patch_cpuid_set_info_64(void* kernelData, UInt32 impersonateFamily, UInt8 impersonateModel);
53
54void patch_pmCPUExitHaltToOff(void* kernelData);
55void patch_lapic_init(void* kernelData);
56void patch_commpage_stuff_routine(void* kernelData);
57void patch_lapic_configure(void* kernelData);
58void patch_lapic_interrupt(void* kernelData);
59
60#endif /* !__BOOT2_KERNEL_PATCHER_H */
61

Archive Download this file

Revision: 1119