/* PCSX2 - PS2 Emulator for PCs * Copyright (C) 2002-2009 PCSX2 Dev Team * * PCSX2 is free software: you can redistribute it and/or modify it under the terms * of the GNU Lesser General Public License as published by the Free Software Found- * ation, either version 3 of the License, or (at your option) any later version. * * PCSX2 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with PCSX2. * If not, see . */ #ifndef __SIFCMD_H__ #define __SIFCMD_H__ /* from sifcmd.h */ #define SYSTEM_CMD 0x80000000 struct t_sif_cmd_header { u32 size; void *dest; s32 command; u32 unknown; }; struct t_sif_dma_transfer { void *src; void *dest; s32 size; s32 attr; }; struct t_sif_handler { void (*handler)(void *a, void *b); void *buff; }; #define SYSTEM_CMD_CHANGE_SADDR 0x80000000 #define SYSTEM_CMD_INIT_CMD 0x80000002 struct t_sif_saddr { struct t_sif_cmd_header hdr; //+00 void *newaddr; //+10 }; //=14 #define SYSTEM_CMD_SET_SREG 0x80000001 struct t_sif_sreg { struct t_sif_cmd_header hdr; //+00 s32 index; //+10 u32 value; //+14 }; //=18 #define SYSTEM_CMD_RESET 0x80000003 struct t_sif_reset { struct t_sif_cmd_header hdr; //+00 s32 size; //+10 s32 flag; //+14 char data[80]; //+18 }; //=68 /* end of sifcmd.h */ /* from sifsrpc.h */ struct t_sif_rpc_rend { struct t_sif_cmd_header sifcmd; s32 rec_id; /* 04 */ void *pkt_addr; /* 05 */ s32 rpc_id; /* 06 */ struct t_rpc_client_data *client; /* 7 */ u32 command; /* 8 */ struct t_rpc_server_data *server; /* 9 */ void *buff; /* 10 */ void *buff2; /* 11 */ }; struct t_sif_rpc_other_data { struct t_sif_cmd_header sifcmd; s32 rec_id; /* 04 */ void *pkt_addr; /* 05 */ s32 rpc_id; /* 06 */ struct t_rpc_receive_data *receive; /* 07 */ void *src; /* 08 */ void *dest; /* 09 */ s32 size; /* 10 */ }; struct t_sif_rpc_bind { struct t_sif_cmd_header sifcmd; s32 rec_id; /* 04 */ void *pkt_addr; /* 05 */ s32 rpc_id; /* 06 */ struct t_rpc_client_data *client; /* 07 */ s32 rpc_number; /* 08 */ }; struct t_sif_rpc_call { struct t_sif_cmd_header sifcmd; s32 rec_id; /* 04 */ void *pkt_addr; /* 05 */ s32 rpc_id; /* 06 */ struct t_rpc_client_data *client; /* 07 */ s32 rpc_number; /* 08 */ s32 send_size; /* 09 */ void *receive; /* 10 */ s32 rec_size; /* 11 */ s32 has_async_ef; /* 12 */ struct t_rpc_server_data *server; /* 13 */ }; struct t_rpc_server_data { s32 command; /* 04 00 */ void *(*func)(u32, void *, int); /* 05 01 */ void *buff; /* 06 02 */ s32 size; /* 07 03 */ void *(*func2)(u32, void *, int); /* 08 04 */ void *buff2; /* 09 05 */ s32 size2; /* 10 06 */ struct t_rpc_client_data *client; /* 11 07 */ void *pkt_addr; /* 12 08 */ s32 rpc_number; /* 13 09 */ void *receive; /* 14 10 */ s32 rec_size; /* 15 11 */ s32 has_async_ef; /* 16 12 */ s32 rec_id; /* 17 13 */ struct t_rpc_server_data *link; /* 18 14 */ struct r_rpc_server_data *next; /* 19 15 */ struct t_rpc_data_queue *queued_object; /* 20 16 */ }; struct t_rpc_header { void *pkt_addr; /* 04 00 */ u32 rpc_id; /* 05 01 */ s32 sema_id; /* 06 02 */ u32 mode; /* 07 03 */ }; struct t_rpc_client_data { struct t_rpc_header hdr; u32 command; /* 04 08 */ void *buff; /* 05 09 */ void *buff2; /* 06 10 */ void (*end_function)(void *); /* 07 11 */ void *end_param; /* 08 12*/ struct t_rpc_server_data *server; /* 09 13 */ }; struct t_rpc_receive_data { struct t_rpc_header hdr; void *src; /* 04 */ void *dest; /* 05 */ s32 size; /* 06 */ }; struct t_rpc_data_queue { s32 thread_id; /* 00 */ s32 active; /* 01 */ struct t_rpc_server_data *svdata_ref; /* 02 */ struct t_rpc_server_data *start; /* 03 */ struct t_rpc_server_data *end; /* 04 */ struct t_rpc_data_queue *next; /* 05 */ }; /* end of sifrpc.h */ #endif//__SIFCMD_H__