blob: a6134d4f7f2bcc996bc2e17ba0d86a43eb67ea35 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
/*
* ppc definitions v0.5.1
* Authors: linuzappz <linuzappz@pcsx.net>
* alexey silinov
*/
#ifndef __PPC_H__
#define __PPC_H__
#ifdef __cplusplus
extern "C" {
#endif
// include basic types
#include "../psxcommon.h"
#include "ppc_mnemonics.h"
#define NUM_HW_REGISTERS 29
/* general defines */
#define write8(val) *(u8 *)ppcPtr = val; ppcPtr++;
#define write16(val) *(u16*)ppcPtr = val; ppcPtr+=2;
#define write32(val) *(u32*)ppcPtr = val; ppcPtr+=4;
#define write64(val) *(u64*)ppcPtr = val; ppcPtr+=8;
#define CALLFunc(FUNC) \
{ \
u32 _func = (FUNC); \
ReleaseArgs(); \
if ((_func & 0x1fffffc) == _func) { \
BLA(_func); \
} else { \
LIW(0, _func); \
MTCTR(0); \
BCTRL(); \
} \
}
extern int cpuHWRegisters[NUM_HW_REGISTERS];
extern u32 *ppcPtr;
extern u8 *j8Ptr[32];
extern u32 *j32Ptr[32];
void ppcInit();
void ppcSetPtr(u32 *ptr);
void ppcShutdown();
void ppcAlign(int bytes);
void returnPC();
void recRun(void (*func)(), u32 hw1, u32 hw2);
u8 dynMemRead8(u32 mem);
u16 dynMemRead16(u32 mem);
u32 dynMemRead32(u32 mem);
void dynMemWrite32(u32 mem, u32 val);
#ifdef __cplusplus
}
#endif
#endif
|