pcsxr/libpcsxcore/ppc/ppc.h

61 lines
1.1 KiB
C

/*
* 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