PS2SDK
PS2 Homebrew Libraries
Loading...
Searching...
No Matches
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
22typedef 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
54typedef struct t_SifCmdSRegData
55{
56 SifCmdHeader_t header;
57 int index;
58 unsigned int value;
60
61#ifdef __cplusplus
62extern "C"
63#endif
64 typedef void (*SifCmdHandler_t)(void *data, void *harg);
65
66typedef struct t_SifCmdHandlerData
67{
68 SifCmdHandler_t handler;
69 void *harg;
71
73{
74 SifCmdHandler_t handler;
75 void *harg;
76 void *unknown08;
78
80#define RESET_ARG_MAX 79
81
82typedef 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
91extern "C" {
92#endif
93
94extern void sceSifInitCmd(void);
95extern void sceSifExitCmd(void);
96extern unsigned int sceSifGetSreg(int sreg);
97extern void sceSifSetSreg(int sreg, unsigned int value);
98extern void sceSifSetCmdBuffer(SifCmdHandlerData_t *db, int size);
99extern void sceSifSetSysCmdBuffer(SifCmdSysHandlerData_t *db, int size);
100extern void sceSifAddCmdHandler(int cid, SifCmdHandler_t handler, void *harg);
101extern void sceSifRemoveCmdHandler(int cid);
102extern unsigned int sceSifSendCmd(int cid, void *packet, int packet_size, void *src_extra,
103 void *dest_extra, int size_extra);
104extern unsigned int isceSifSendCmd(int cid, void *packet, int packet_size, void *src_extra,
105 void *dest_extra, int size_extra);
106
107#ifdef _EE
108extern void sceSifWriteBackDCache(void *ptr, int size); // EE only
109#endif
110#ifdef _IOP
111extern 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);
113extern 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
136#define SIF_CMD_M_WBDC 0x04
137
138#endif /* __SIFCMD_COMMON_H__ */
struct t_SifCmdHeader SifCmdHeader_t
#define RESET_ARG_MAX
struct t_SifCmdSRegData SifCmdSRegData_t