示例#1
0
文件: main.c 项目: AzagraMac/PS2_SDK
int _start(int argc, char *argv[])
{
    // install IOP debug system.
    if(iop_dbg_install() != 0)
    {
        //printf("Failed installing IOP debug system!\n");
        return(1); // return "non-resident"
    }

    // register our IRX exports.
    if(RegisterLibraryEntries(&_exp_iopdebug) != 0)
    {
        iop_dbg_remove();

        //printf("Error registering library!\n");
        return(1);
    }

    FlushIcache();
    FlushDcache();

    //printf("IOPDEBUG installed!\n");

    return(0); // return "resident"
}
示例#2
0
文件: usbhdfsd.c 项目: AKuHAK2/ps2sdk
int _start( int argc, char *argv[])
{
	printf("USB HDD FileSystem Driver v%d.%d\n", MAJOR_VER, MINOR_VER);

	if (RegisterLibraryEntries(&_exp_usbmass) != 0) {
		printf("USBHDFSD: Already registered.\n");
		return MODULE_NO_RESIDENT_END;
	}

	// initialize the FAT driver
	if(InitFAT() != 0)
	{
		printf("USBHDFSD: Error initializing FAT driver!\n");
		return MODULE_NO_RESIDENT_END;
	}

	// initialize the USB driver
	if(InitUSB() != 0)
	{
		printf("USBHDFSD: Error initializing USB driver!\n");
		return MODULE_NO_RESIDENT_END;
	}

	// initialize the file system driver
	if(InitFS() != 0)
	{
		printf("USBHDFSD: Error initializing FS driver!\n");
		return MODULE_NO_RESIDENT_END;
	}

	// return resident
	return MODULE_RESIDENT_END;
}
示例#3
0
//////////////////////////////entrypoint///////////////////////////////
int  _start(int argc, char* argv[]){
     int x;
     register int ch;

	if (RegisterLibraryEntries(&dmacman_stub))		//loadcore
		return 1;

	CpuSuspendIntr(&x);					//intrman

	dmacSetDPCR(0x07777777);
	dmacSetDPCR2(0x07777777);
	dmacSetDPCR3(0x00000777);
	for (ch=0; ch<13; ch++){
		dmacSetD_MADR(ch, 0);
		dmacSetD_BCR (ch, 0);
		dmacSetD_CHCR(ch, 0);
	}
	dmacSetD_TADR( DMAch_SPU, 0);
	dmacSetD_TADR( DMAch_SIF0,0);
	dmacSet_4_9_A( DMAch_SPU, 0);
	dmacSet_4_9_A( DMAch_SIF0,0);
	dmacSet_4_9_A( DMAch_SIF1,0);
	dmacSetBF801578(1);

	CpuResumeIntr(x);					//intrman
	return 0;
}
示例#4
0
文件: ps2ip.c 项目: ylyking/ps2sdk
static inline int InitializeLWIP(void){
	sys_sem_t	Sema;
	int		iRet;

	dbgprintf("PS2IP: Module Loaded.\n");

	if ((iRet=RegisterLibraryEntries(&_exp_ps2ip))!=0)
	{
		printf("PS2IP: RegisterLibraryEntries returned: %d\n", iRet);
	}

	RxPBufsFree=LWIP_STACK_MAX_RX_PBUFS;
	NetManRxPacketBufferPoolFreeStart=0;
	recv_pbuf_queue_start=recv_pbuf_queue_end=NULL;

	sys_sem_new(&Sema, 0);
	dbgprintf("PS2IP: Calling tcpip_init\n");
	tcpip_init(InitDone,&Sema);

	sys_arch_sem_wait(&Sema, 0);
	sys_sem_free(&Sema);

	dbgprintf("PS2IP: tcpip_init called\n");
#if NOSYS
	InitTimer();
#endif

	dbgprintf("PS2IP: System Initialised\n");

	return 0;
}
示例#5
0
文件: alloc.c 项目: AKuHAK2/ps2sdk
int _start(int argc, char **argv)
{
    iop_sema_t sem_info;

    if (RegisterLibraryEntries(&_exp_alloc) != 0)
	return 1;

    // check arguments for a heap_size parameter.
    if (argc > 1) {
	heap_size = strtoul(argv[1], NULL, 0);
    }

    if (!(heap_start = AllocSysMemory(ALLOC_FIRST, heap_size, NULL)))
	return -1;
    heap_end = heap_start + heap_size;
    _heap_ptr = heap_start;

    sem_info.attr = 1;
    sem_info.option = 1;
    sem_info.initial = 1;
    sem_info.max = 1;

    alloc_sema = CreateSema(&sem_info);

    return 0;
}
示例#6
0
int _start(int argc, const char **argv)
{
	if (RegisterLibraryEntries(&_exp_sbusintr) != 0)
		return 1;

	return 0;
}
示例#7
0
s32 _start(char **argv, int argc)
{
    if(RegisterLibraryEntries(&_exp_ds3ps2) != 0) {
        //Failed
        return 1;
    }
    UsbRegisterDriver(&driver);
    return 0;
}
示例#8
0
文件: freesd.c 项目: AKuHAK2/ps2sdk
s32 _start(char **argv, int argc)
{
	printf(BANNER, VERSION);

	if(RegisterLibraryEntries(&_exp_libsd) != 0) return 1;

	InitSpu2();

	return 0;
}
示例#9
0
//////////////////////////////entrypoint///////////////////////////////
int _start(int argc, char* argv[]){
    int x;

	CpuSuspendIntr(&x);
	if (RegisterLibraryEntries(&export_stub)==0) {
		CpuResumeIntr(x);
		return 0;
	}

	CpuResumeIntr(x);
	return 1;
}
示例#10
0
//////////////////////////////entrypoint///////////////////////////////[00]
int _start(){
	register int *v, i;

	_dprintf("%s\n", __FUNCTION__);
	if (v=QueryBootMode(3)){
		_dprintf("bootmode: %x\n", v[1]);
		if (v[1] & 1){	printf("%s No SIF service(sifcmd)\n", __FUNCTION__);return 1;}
		if (v[1] & 2){	printf("%s No SIFCMD/RPC service\n", __FUNCTION__); return 1;}
	}

	if (SifCheckInit()==0)
		SifInit();

	if (RegisterLibraryEntries(&sifcmd_stub))	return 1;

	cmd_common.sif1_rcvBuffer=sif1_rcvBuffer;
	cmd_common.b=b;
	cmd_common.sysCmdBuffer=sysCmds;
	cmd_common.sysCmdBufferSize=32;
	cmd_common.saddr=0;
	cmd_common.cmdBuffer=0;
	cmd_common.cmdBufferSize=0;
	cmd_common.Sreg=Sreg;
	cmd_common.func=0;
	cmd_common.param=0;

	for (i=0; i<32; i++) {
		sysCmds[i].func=0;
		sysCmds[i].data=0;
	}
	for (i=0; i<32; i++) {
		Sreg[i]=0;
	}

	sysCmds[0].func=(cmdh_func)cmd80000000_CHANGE_SADDR;
	sysCmds[0].data=&cmd_common;

	sysCmds[1].func=(cmdh_func)cmd80000001_SET_SREG;
	sysCmds[1].data=&cmd_common;

	cmd_common.systemStatusFlag=GetSystemStatusFlag();
	
	sysCmds[2].func=(cmdh_func)cmd80000002_INIT_CMD;
	sysCmds[2].data=&cmd_common;

	RegisterIntrHandler(INT_DMA10, 1, SIF1_handler, (void*)&cmd_common);
	EnableIntr(INT_DMA10 | IMODE_DMA_IQE);

	SifSetIOPrcvaddr((u32)sif1_rcvBuffer);

	return 0;
}
示例#11
0
int _start ( int argc, const char** argv ) {

 int retVal = MODULE_NO_RESIDENT_END;

 if (  RegisterLibraryEntries ( &_exp_sio2man ) == 0  ) {

  int          lState;
  int          lThreadID;
  iop_thread_t lThread;
  iop_event_t  lEvent;

  lEvent.attr = 2;
  lEvent.bits = 0;
  s_EventFlag = CreateEventFlag ( &lEvent );

  lThread.attr      = TH_C;
  lThread.thread    = _MainThread;
  lThread.stacksize = 0x2000;
  lThread.priority  = 24;
  lThreadID         = CreateThread ( &lThread );

  s_Callback0 = NULL;
  s_Callback1 = NULL;
  s_Callback2 = NULL;
  s_Callback3 = NULL;

  SIO2_SetCtrl3BC ();

  CpuSuspendIntr ( &lState );
  RegisterIntrHandler ( IOP_IRQ_SIO2, 1, _IntHandler, &s_EventFlag );
  EnableIntr ( IOP_IRQ_SIO2 );
  CpuResumeIntr ( lState );

  dmac_ch_set_dpcr ( IOP_DMAC_SIO2in,  3 );
  dmac_ch_set_dpcr ( IOP_DMAC_SIO2out, 3 );

  dmac_enable ( IOP_DMAC_SIO2in  );
  dmac_enable ( IOP_DMAC_SIO2out );

  StartThread ( lThreadID, NULL );

  retVal = MODULE_RESIDENT_END;

 }  /* end if */

 return retVal;

}  /* end _start */
示例#12
0
int _start(int argc, char **argv)
{
	if(RegisterLibraryEntries(&_exp_iomanx) != 0)
    {
		return 1;
	}

    memset(dev_list, 0, sizeof(dev_list));
    memset(file_table, 0, sizeof(file_table));

    if(hook_ioman() != 0)
    {
        return 1;
    }

	return 0;
}
示例#13
0
文件: netman.c 项目: ps2dev/ps2sdk
int _start(int argc, char *argv[]){
	iop_sema_t sema;

	if(RegisterLibraryEntries(&_exp_netman) == 0){
		sema.attr = 0;
		sema.option = 0;
		sema.initial = 1;
		sema.max = 1;
		NetManIOSemaID = CreateSema(&sema);

		NetmanInitRPCServer();

		return MODULE_RESIDENT_END;
	}

	return MODULE_NO_RESIDENT_END;
}
示例#14
0
//-------------------------------------------------------------------------
int _start(int argc, char** argv)
{
	iop_thread_t thread_param;

	RegisterLibraryEntries(&_exp_cdvdfsv);

	FlushDcache();
	CpuEnableIntr();

	thread_param.attr = TH_C;
	thread_param.option = 0;
	thread_param.thread = (void *)init_thread;
	thread_param.stacksize = 0x800;
	thread_param.priority = 0x50;

	init_thread_id = CreateThread(&thread_param);
	StartThread(init_thread_id, 0);

	return MODULE_RESIDENT_END;
}
示例#15
0
文件: ioptrap.c 项目: AKuHAK/ps2sdk
int _start(int argc, char **argv)
{
    int rv;

	if(RegisterLibraryEntries(&_exp_ioptrap) != 0) return 1;

    memset(handlers, 0, sizeof(trap_exception_handler_t) * 16);
    printf("ioptrap starts.\n");
    if((rv = RegisterDefaultExceptionHandler(def_exc_handler)) < 0) {
        printf("RegisterDefaultExceptionHandler failed, rv=%d\n", rv);
        return 1;
    }
    if((rv = RegisterPriorityExceptionHandler(IOP_EXCEPTION_HDB, 0, bp_exc_handler)) < 0) {
	// shouldn't we release the default exception handler here... ?
        printf("RegisterDefaultExceptionHandler failed, rv=%d\n", rv);
        return 1;
    }
    do_tests();
    return 0;
}
示例#16
0
文件: devfs.c 项目: AKuHAK2/ps2sdk
/** Main start function of the module
    @param argc: Unused
    @param argv: Unused
    @returns 0 on success, -1 on error
*/
int _start(int argc, char **argv)
{
   int res = 1;

   printf(BANNER, VERSION);

   if ((res = RegisterLibraryEntries(&_exp_devfs)) != 0) {
      M_PRINTF("Library is already registered, exiting.\n");
      printf("res=%d\n", res);
   }
   else
   {
      res = init_devfs();
   }

   M_PRINTF("devfs_device_t size=%d\n", sizeof(devfs_device_t));
   M_PRINTF("Driver loaded.\n");

   return res;
}
示例#17
0
文件: main.c 项目: ps2dev/ps2sdk
int _start(int argc, char* argv[])
{
    printf("Block Device Manager (BDM) v%d.%d\n", MAJOR_VER, MINOR_VER);

    if (RegisterLibraryEntries(&_exp_bdm) != 0) {
        M_PRINTF("ERROR: Already registered!\n");
        return MODULE_NO_RESIDENT_END;
    }

    // initialize the block device manager
    if (bdm_init() < 0) {
        M_PRINTF("ERROR: BDM init failed!\n");
        return MODULE_NO_RESIDENT_END;
    }

    // initialize the partition driver
    part_init();

    // return resident
    return MODULE_RESIDENT_END;
}
示例#18
0
文件: ps2ip.c 项目: AzagraMac/PS2_SDK
int
_start(int argc,char** argv)
{
	sys_sem_t	Sema;
	int			iRet;

	dbgprintf("PS2IP: Module Loaded.\n");

	if ((iRet=RegisterLibraryEntries(&_exp_ps2ip))!=0)
	{
		printf("PS2IP: RegisterLibraryEntries returned: %d\n",iRet);
	}

	sys_init();
	mem_init();
	memp_init();
	pbuf_init();

	dbgprintf("PS2IP: sys_init, mem_init, memp_init, pbuf_init called\n");

	netif_init();

	dbgprintf("PS2IP: netif_init called\n");

	Sema=sys_sem_new(0);
	dbgprintf("PS2IP: Calling tcpip_init\n");
	tcpip_init(InitDone,&Sema);

	sys_arch_sem_wait(Sema,0);
	sys_sem_free(Sema);

	dbgprintf("PS2IP: tcpip_init called\n");

	AddLoopIF();
	InitTimer();

	dbgprintf("PS2IP: System Initialised\n");

	return	iRet; 
}
示例#19
0
文件: sio2man.c 项目: sp193/ps2sdk
int _start(int argc, const char **argv)
{
	int state;

	shutdown();

	if (RegisterLibraryEntries(&_exp_sio2man) != 0)
		return 1;

	if (init)
		return 1;

	init = 1;

	sio2_ctrl_set(0x3bc);

	cb1 = NULL;  cb2 = NULL;  cb3 = NULL; cb4 = NULL;
	event_flag = create_event_flag();
	thid = create_main_thread();

	CpuSuspendIntr(&state);
	RegisterIntrHandler(IOP_IRQ_SIO2, 1, sio2_intr_handler, &event_flag);
	EnableIntr(IOP_IRQ_SIO2);
	CpuResumeIntr(state);

	dmac_ch_set_dpcr(IOP_DMAC_SIO2in, 3);
	dmac_ch_set_dpcr(IOP_DMAC_SIO2out, 3);
	dmac_enable(IOP_DMAC_SIO2in);
	dmac_enable(IOP_DMAC_SIO2out);

	StartThread(thid, NULL);
#ifndef XSIO2MAN
	EPRINTF("Logging started.\n");
#endif
	return 0;
}
示例#20
0
文件: siftoo.c 项目: AKuHAK/ps2sdk
int _start(int argc, char **argv)
{
	u32 state;

	if (RegisterLibraryEntries(&_exp_siftoo) != 0)
		return 1;

	/* Add our SBUS interrupt handler.  */
	if (sbus_intr_init() < 0) {
		printf("Unable to initialize SBUS interrupt driver, exiting.\n");
		return 1;
	}

	if (sbus_intr_handler_add(SIF2_SBUS_IRQ, sif2_control, NULL) < 0) {
		printf("Unable to register SIFToo Control handler, exiting.\n");
		return 1;
	}

	CpuSuspendIntr((int *)&state);
	sceSifDma2Init();
	CpuResumeIntr(state);

	return 0;
}
示例#21
0
文件: mcserv.c 项目: AKuHAK2/ps2sdk
//--------------------------------------------------------------
int _start(int argc, const char **argv)
{
	iop_thread_t thread_param;
	register int thread_id;
	iop_library_t *libptr;
	int i, mcman_loaded;
	void **export_tab;

#ifdef SIO_DEBUG
	sio_init(38400, 0, 0, 0, 0);
#endif
#ifdef DEBUG
	DPRINTF("mcserv: _start...\n");
#endif

	// Get mcman lib ptr
	mcman_loaded = 0;
	libptr = GetLoadcoreInternalData()->let_next;
	while (libptr != 0) {
		for (i=0; i<8; i++) {
			if (libptr->name[i] != mcman_modname[i])
				break;
		}
		if (i == 8) {
			mcman_loaded = 1;
			break;
		}
		libptr = libptr->prev;
	}

	if (!mcman_loaded) {
#ifdef DEBUG
		DPRINTF("mcserv: mcman module is not loaded...\n");
#endif
		goto err_out;
	}

#ifdef DEBUG
	DPRINTF("mcserv: mcman version=%03x\n", libptr->version);
#endif
	if (libptr->version > 0x200)
		mcman_type = XMCMAN;

	// Get mcman export table
	export_tab = (void **)(((struct irx_export_table *)libptr)->fptrs);

	// Set functions pointers to match MCMAN exports
	McDetectCard = export_tab[5];
	McOpen = export_tab[6];
	McClose = export_tab[7];
	McRead = export_tab[8];
	McWrite = export_tab[9];
	McSeek = export_tab[10];
	McFormat = export_tab[11];
	McGetDir = export_tab[12];
	McDelete = export_tab[13];
	McFlush = export_tab[14];
	McChDir = export_tab[15];
	McSetFileInfo = export_tab[16];
	McEraseBlock = export_tab[17];
	McReadPage = export_tab[18];
	McWritePage = export_tab[19];
	McDataChecksum = export_tab[20];
	McReplaceBadBlock = export_tab[24]; // dummy in MCMAN !!!
	McReadPS1PDACard = export_tab[29];
	McWritePS1PDACard = export_tab[30];
	McUnformat = export_tab[36];
	McRetOnly = export_tab[37];
	McGetFreeClusters = export_tab[38];
	McGetMcType = export_tab[39];
	McSetPS1CardFlag = export_tab[40];

	// Set functions pointers to match XMCMAN exports if needed
	if (mcman_type == XMCMAN) {
	McDetectCard2 = export_tab[21];
	McGetFormat = export_tab[22];
	McGetEntSpace = export_tab[23];
	McGetModuleInfo = export_tab[42];
	McCheckBlock = export_tab[45];
	}

	// Register mcserv dummy export table
#ifdef DEBUG
	DPRINTF("mcserv: registering exports...\n");
#endif
	if (RegisterLibraryEntries(&_exp_mcserv) != 0)
		goto err_out;

	CpuEnableIntr();

#ifdef DEBUG
	DPRINTF("mcserv: starting RPC thread...\n");
#endif
 	thread_param.attr = TH_C;
 	thread_param.thread = (void *)thread_rpc_S_0400;
 	thread_param.priority = 0x68;
 	thread_param.stacksize = 0x1000;
 	thread_param.option = 0;

	thread_id = CreateThread(&thread_param);
	mcserv_tidS_0400 = thread_id;

	StartThread(thread_id, 0);

#ifdef DEBUG
	DPRINTF("mcserv: _start returns MODULE_RESIDENT_END...\n");
#endif

	return MODULE_RESIDENT_END;

err_out:

#ifdef DEBUG
	DPRINTF("mcserv: _start returns MODULE_NO_RESIDENT_END...\n");
#endif

	return MODULE_NO_RESIDENT_END;
}
示例#22
0
文件: freemtap.c 项目: sp193/ps2sdk
s32 _start(char **argv, int argc)
{
	iop_event_t event;
	iop_thread_t thread;
	u32 i;

	printf(BANNER,VERSION);

	if(RegisterLibraryEntries(&_exp_mtapman) != 0)
	{
		M_PRINTF("RegisterLibraryEntries failed.\n");
		return 1;
	}

	if(InitRpcServers() == 0)
	{
		M_PRINTF("Failed to setup RPC Servers.\n");
		return 1;
	}

	event.attr = 2;
	event.bits = 0;

	event_flag = CreateEventFlag(&event);

	if(event_flag < 0)
	{
		M_PRINTF("Could not create event flag (%i)\n.", (int)event_flag);
		return 1;
	}

	thread.attr = TH_C;
	thread.thread = update_slot_numbers_thread;
	thread.stacksize = 0x800;
	thread.priority = 32;

	threadid_main = CreateThread(&thread);

	if(threadid_main < 0)
	{
		M_PRINTF("Could not create thread (%i)\n.", (int)threadid_main);
		return 1;
	}

	StartThread(threadid_main, 0);

	for(i=0; i < 4; i++)
	{
		state_open[i] = 0;
		state_getcon[i] = 0;
		state_slots[i] = 0;
	}

	sio2_mtap_change_slot_set(change_slot);
	sio2_mtap_get_slot_max_set(get_slots1);
	sio2_mtap_get_slot_max_set2(get_slots2);
	sio2_mtap_update_slots_set(update_slot_numbers);

	td.in = in_buffer;
	td.out = out_buffer;

	return 0;
}