Beispiel #1
0
void __init
iSeries_init(unsigned long r3, unsigned long r4, unsigned long r5, 
	   unsigned long r6, unsigned long r7)
{
	/* Associate Lp Event Queue 0 with processor 0 */
	HvCallEvent_setLpEventQueueInterruptProc( 0, 0 );

	{
		/* copy the command line parameter from the primary VSP  */
		char *p, *q;
		HvCallEvent_dmaToSp( cmd_line,
				     2*64*1024,
				     256,
				     HvLpDma_Direction_RemoteToLocal );

		p = q = cmd_line + 255;
		while( p > cmd_line ) {
			if ((*p == 0) || (*p == ' ') || (*p == '\n'))
				--p;
			else
				break;
		}
		if ( p < q )
			*(p+1) = 0;
	}

	iSeries_proc_early_init();	
	mf_init();
	mf_initialized = 1;
	mb();

	iSeries_proc_callback( &pmc_proc_init );
}
static void __init iSeries_get_cmdline(void)
{
	char *p, *q;

	/* copy the command line parameter from the primary VSP  */
	HvCallEvent_dmaToSp(cmd_line, 2 * 64* 1024, 256,
			HvLpDma_Direction_RemoteToLocal);

	p = cmd_line;
	q = cmd_line + 255;
	while(p < q) {
		if (!*p || *p == '\n')
			break;
		++p;
	}
	*p = 0;
}