inital commit
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
#ifndef SCE_LIBDMA_H
|
||||
#define SCE_LIBDMA_H
|
||||
|
||||
#include "typedefs.h"
|
||||
|
||||
typedef struct {
|
||||
u_char sts;
|
||||
u_char std;
|
||||
u_char mfd;
|
||||
u_char rcycle;
|
||||
u_short express;
|
||||
u_short notify;
|
||||
u_short sqwc;
|
||||
u_short tqwc;
|
||||
void *rbadr;
|
||||
u_int rbmsk;
|
||||
} sceDmaEnv;
|
||||
|
||||
typedef struct {
|
||||
unsigned DIR: 1;
|
||||
unsigned p0 : 1;
|
||||
unsigned MOD: 2;
|
||||
unsigned ASP: 2;
|
||||
unsigned TTE: 1;
|
||||
unsigned TIE: 1;
|
||||
unsigned STR: 1;
|
||||
unsigned p1 : 7;
|
||||
unsigned TAG:16;
|
||||
} tD_CHCR;
|
||||
|
||||
typedef struct _sceDmaTag {
|
||||
u_short qwc;
|
||||
u_char mark;
|
||||
u_char id;
|
||||
struct _sceDmaTag *next;
|
||||
u_int p[2];
|
||||
} sceDmaTag __attribute__ ((aligned(16)));
|
||||
|
||||
typedef struct {
|
||||
tD_CHCR chcr; u_int p0[3];
|
||||
volatile void *madr; u_int p1[3];
|
||||
volatile u_int qwc; u_int p2[3];
|
||||
volatile sceDmaTag *tadr; u_int p3[3];
|
||||
volatile void *as0; u_int p4[3];
|
||||
volatile void *as1; u_int p5[3];
|
||||
u_int p6[4];
|
||||
u_int p7[4];
|
||||
volatile void *sadr; u_int p8[3];
|
||||
} sceDmaChan;
|
||||
|
||||
#define settag(t,i,a,q) (t)->id=(i),(t)->next=(sceDmaTag *)(a),(t)->qwc=(u_short)(q)
|
||||
|
||||
inline static void *sceDmaAddRef(sceDmaTag **tag, int qwc, void *addr)
|
||||
{
|
||||
settag(*tag,0x30,addr,qwc);
|
||||
(*tag)++;
|
||||
return(addr);
|
||||
}
|
||||
|
||||
inline static void *sceDmaAddEnd(sceDmaTag **tag, int qwc, void *addr)
|
||||
{
|
||||
void *ret;
|
||||
settag(*tag,0x70,addr,qwc);
|
||||
ret = *tag+1;
|
||||
(*tag) += qwc+1;
|
||||
return(ret);
|
||||
}
|
||||
|
||||
int sceDmaReset(int mode);
|
||||
sceDmaEnv *sceDmaGetEnv(sceDmaEnv *env);
|
||||
int sceDmaPutEnv(sceDmaEnv *env);
|
||||
sceDmaChan *sceDmaGetChan(int id);
|
||||
void sceDmaSend(sceDmaChan *d, void *tag);
|
||||
int sceDmaSync(sceDmaChan *d, int mode, int timeout);
|
||||
|
||||
|
||||
#endif // SCE_LIBDMA_H
|
||||
Reference in New Issue
Block a user