PS2SDK
PS2 Homebrew Libraries
sifcmd-common.h
Go to the documentation of this file.
1 /*
2 # _____ ___ ____ ___ ____
3 # ____| | ____| | | |____|
4 # | ___| |____ ___| ____| | \ PS2DEV Open Source Project.
5 #-----------------------------------------------------------------------
6 # Copyright ps2dev - http://www.ps2dev.org
7 # Licenced under Academic Free License version 2.0
8 # Review ps2sdk README & LICENSE files for further details.
9 */
10 
16 #ifndef __SIFCMD_COMMON_H__
17 #define __SIFCMD_COMMON_H__
18 
19 #include <tamtypes.h>
20 
22 typedef struct t_SifCmdHeader
23 {
25  u32 psize : 8;
27  u32 dsize : 24;
29  void *dest;
31  int cid;
33  u32 opt;
35 
37 #define SIF_CMD_ID_SYSTEM 0x80000000
38 
39 #define SIF_CMD_CHANGE_SADDR (SIF_CMD_ID_SYSTEM | 0)
40 #define SIF_CMD_SET_SREG (SIF_CMD_ID_SYSTEM | 1)
41 #define SIF_CMD_INIT_CMD (SIF_CMD_ID_SYSTEM | 2)
42 #define SIF_CMD_RESET_CMD (SIF_CMD_ID_SYSTEM | 3)
43 #define SIF_CMD_RPC_END (SIF_CMD_ID_SYSTEM | 8)
44 #define SIF_CMD_RPC_BIND (SIF_CMD_ID_SYSTEM | 9)
45 #define SIF_CMD_RPC_CALL (SIF_CMD_ID_SYSTEM | 10)
46 #define SIF_CMD_RPC_RDATA (SIF_CMD_ID_SYSTEM | 12)
47 
49 #define SIF_SREG_RPCINIT 0
50 
54 typedef struct t_SifCmdSRegData
55 {
56  SifCmdHeader_t header;
57  int index;
58  unsigned int value;
60 
61 #ifdef __cplusplus
62 extern "C"
63 #endif
64  typedef void (*SifCmdHandler_t)(void *data, void *harg);
65 
66 typedef struct t_SifCmdHandlerData
67 {
68  SifCmdHandler_t handler;
69  void *harg;
71 
72 typedef struct t_SifCmdSysHandlerData
73 {
74  SifCmdHandler_t handler;
75  void *harg;
76  void *unknown08;
78 
80 #define RESET_ARG_MAX 79
81 
82 typedef struct _iop_reset_pkt
83 {
84  struct t_SifCmdHeader header;
85  int arglen;
86  int mode;
87  char arg[RESET_ARG_MAX + 1];
89 
90 #ifdef __cplusplus
91 extern "C" {
92 #endif
93 
94 extern void sceSifInitCmd(void);
95 extern void sceSifExitCmd(void);
96 extern unsigned int sceSifGetSreg(int sreg);
97 extern void sceSifSetSreg(int sreg, unsigned int value);
98 extern void sceSifSetCmdBuffer(SifCmdHandlerData_t *db, int size);
99 extern void sceSifSetSysCmdBuffer(SifCmdSysHandlerData_t *db, int size);
100 extern void sceSifAddCmdHandler(int cid, SifCmdHandler_t handler, void *harg);
101 extern void sceSifRemoveCmdHandler(int cid);
102 extern unsigned int sceSifSendCmd(int cid, void *packet, int packet_size, void *src_extra,
103  void *dest_extra, int size_extra);
104 extern unsigned int isceSifSendCmd(int cid, void *packet, int packet_size, void *src_extra,
105  void *dest_extra, int size_extra);
106 
107 #ifdef _EE
108 extern void sceSifWriteBackDCache(void *ptr, int size); // EE only
109 #endif
110 #ifdef _IOP
111 extern unsigned int sceSifSendCmdIntr(int cid, void *packet, int packet_size, void *src_extra,
112  void *dest_extra, int size_extra, void (*completioncb)(void *userdata), void *userdata);
113 extern unsigned int isceSifSendCmdIntr(int cid, void *packet, int packet_size, void *src_extra,
114  void *dest_extra, int size_extra, void (*completioncb)(void *userdata), void *userdata);
115 #endif
116 
117 #ifdef __cplusplus
118 }
119 #endif
120 
121 // For backwards compatibility purposes
122 #define SifInitCmd(...) sceSifInitCmd(__VA_ARGS__)
123 #define SifExitCmd(...) sceSifExitCmd(__VA_ARGS__)
124 #define SifGetSreg(...) sceSifGetSreg(__VA_ARGS__)
125 #define SifSetCmdBuffer(...) sceSifSetCmdBuffer(__VA_ARGS__)
126 #define SifAddCmdHandler(...) sceSifAddCmdHandler(__VA_ARGS__)
127 #define SifRemoveCmdHandler(...) sceSifRemoveCmdHandler(__VA_ARGS__)
128 #define SifSendCmd(...) sceSifSendCmd(__VA_ARGS__)
129 #define iSifSendCmd(...) isceSifSendCmd(__VA_ARGS__)
130 #define SifWriteBackDCache(...) sceSifWriteBackDCache(__VA_ARGS__)
131 
132 // Send mode bits
134 #define SIF_CMD_M_INTR 0x01
135 
136 #define SIF_CMD_M_WBDC 0x04
137 
138 #endif /* __SIFCMD_COMMON_H__ */
t_SifCmdHeader::cid
int cid
Definition: sifcmd-common.h:31
t_SifCmdHandlerData
Definition: sifcmd-common.h:66
t_SifCmdHeader::dsize
u32 dsize
Definition: sifcmd-common.h:27
t_SifCmdHeader::dest
void * dest
Definition: sifcmd-common.h:29
t_SifCmdSysHandlerData
Definition: sifcmd-common.h:72
t_SifCmdHeader::opt
u32 opt
Definition: sifcmd-common.h:33
t_SifCmdHeader
Definition: sifcmd-common.h:22
RESET_ARG_MAX
#define RESET_ARG_MAX
Definition: sifcmd-common.h:80
t_SifCmdSRegData
Definition: sifcmd-common.h:54
SifCmdHeader_t
struct t_SifCmdHeader SifCmdHeader_t
tamtypes.h
_iop_reset_pkt
Definition: sifcmd-common.h:82
SifCmdSRegData_t
struct t_SifCmdSRegData SifCmdSRegData_t
t_SifCmdHeader::psize
u32 psize
Definition: sifcmd-common.h:25