sdk-core v2026.11.05
PS2 SDK - core tier (build-critical EE/IOP modules)
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
17#ifndef __SIFCMD_COMMON_H__
18#define __SIFCMD_COMMON_H__
19
20#include <tamtypes.h>
21
23typedef struct t_SifCmdHeader
24{
26 u32 psize : 8;
28 u32 dsize : 24;
30 void *dest;
32 int cid;
34 u32 opt;
36
38#define SIF_CMD_ID_SYSTEM 0x80000000
39
40#define SIF_CMD_CHANGE_SADDR (SIF_CMD_ID_SYSTEM | 0)
41#define SIF_CMD_SET_SREG (SIF_CMD_ID_SYSTEM | 1)
42#define SIF_CMD_INIT_CMD (SIF_CMD_ID_SYSTEM | 2)
43#define SIF_CMD_RESET_CMD (SIF_CMD_ID_SYSTEM | 3)
44#define SIF_CMD_RPC_END (SIF_CMD_ID_SYSTEM | 8)
45#define SIF_CMD_RPC_BIND (SIF_CMD_ID_SYSTEM | 9)
46#define SIF_CMD_RPC_CALL (SIF_CMD_ID_SYSTEM | 10)
47#define SIF_CMD_RPC_RDATA (SIF_CMD_ID_SYSTEM | 12)
48
50#define SIF_SREG_RPCINIT 0
51
55typedef struct t_SifCmdSRegData
56{
57 SifCmdHeader_t header;
58 int index;
59 unsigned int value;
61
62#ifdef __cplusplus
63extern "C"
64#endif
65 typedef void (*SifCmdHandler_t)(void *data, void *harg);
66
67typedef struct t_SifCmdHandlerData
68{
69 SifCmdHandler_t handler;
70 void *harg;
71} SifCmdHandlerData_t;
72
74{
75 SifCmdHandler_t handler;
76 void *harg;
77 void *unknown08;
78} SifCmdSysHandlerData_t;
79
81#define RESET_ARG_MAX 79
82
83typedef struct _iop_reset_pkt
84{
85 struct t_SifCmdHeader header;
86 int arglen;
87 int mode;
88 char arg[RESET_ARG_MAX + 1];
89} SifCmdResetData_t;
90
91#ifdef __cplusplus
92extern "C" {
93#endif
94
95extern void sceSifInitCmd(void);
96extern void sceSifExitCmd(void);
97extern unsigned int sceSifGetSreg(int sreg);
98extern void sceSifSetSreg(int sreg, unsigned int value);
99extern void sceSifSetCmdBuffer(SifCmdHandlerData_t *db, int size);
100extern void sceSifSetSysCmdBuffer(SifCmdSysHandlerData_t *db, int size);
101extern void sceSifAddCmdHandler(int cid, SifCmdHandler_t handler, void *harg);
102extern void sceSifRemoveCmdHandler(int cid);
103extern unsigned int sceSifSendCmd(int cid, void *packet, int packet_size, void *src_extra,
104 void *dest_extra, int size_extra);
105extern unsigned int isceSifSendCmd(int cid, void *packet, int packet_size, void *src_extra,
106 void *dest_extra, int size_extra);
107
108#ifdef _EE
109extern void sceSifWriteBackDCache(void *ptr, int size); // EE only
110#endif
111#ifdef _IOP
112extern unsigned int sceSifSendCmdIntr(int cid, void *packet, int packet_size, void *src_extra,
113 void *dest_extra, int size_extra, void (*completioncb)(void *userdata), void *userdata);
114extern unsigned int isceSifSendCmdIntr(int cid, void *packet, int packet_size, void *src_extra,
115 void *dest_extra, int size_extra, void (*completioncb)(void *userdata), void *userdata);
116#endif
117
118#ifdef __cplusplus
119}
120#endif
121
122// For backwards compatibility purposes
123#define SifInitCmd(...) sceSifInitCmd(__VA_ARGS__)
124#define SifExitCmd(...) sceSifExitCmd(__VA_ARGS__)
125#define SifGetSreg(...) sceSifGetSreg(__VA_ARGS__)
126#define SifSetCmdBuffer(...) sceSifSetCmdBuffer(__VA_ARGS__)
127#define SifAddCmdHandler(...) sceSifAddCmdHandler(__VA_ARGS__)
128#define SifRemoveCmdHandler(...) sceSifRemoveCmdHandler(__VA_ARGS__)
129#define SifSendCmd(...) sceSifSendCmd(__VA_ARGS__)
130#define iSifSendCmd(...) isceSifSendCmd(__VA_ARGS__)
131#define SifWriteBackDCache(...) sceSifWriteBackDCache(__VA_ARGS__)
132
133// Send mode bits
135#define SIF_CMD_M_INTR 0x01
137#define SIF_CMD_M_WBDC 0x04
138
139#endif /* __SIFCMD_COMMON_H__ */
struct t_SifCmdHeader SifCmdHeader_t
#define RESET_ARG_MAX
struct t_SifCmdSRegData SifCmdSRegData_t