FreeBSD/sys/arm/arm/mp_machdep.c
/* Initialize and fire up non-boot processors */
Initialize and fire up non-boot processors
Initialize and fire up non - boot processors
void
cpu_mp_start(void)
{
	int error, i;
	mtx_init(&ap_boot_mtx, "ap boot", NULL, MTX_SPIN);
	for(i = 0; i < (mp_ncpus - 1); i++)
		dpcpu[i] = (void *)kmem_malloc(kernel_arena, DPCPU_SIZE,
		    M_WAITOK | M_ZERO);
	dcache_wbinv_poc_all();
	platform_mp_start_ap();
	error = check_ap();
	if (error)
		printf("WARNING: Some AP's failed to start\n");
	else
		for (i = 1; i < mp_ncpus; i++)
			CPU_SET(i, &all_cpus);
}
void cpu_mp_start ( void ) { int error , i ; mtx_init ( & ap_boot_mtx , " " , NULL , MTX_SPIN ) ; for ( i = 0 ; i < ( mp_ncpus - 1 ) ; i ++ ) dpcpu [ i ] = ( void * ) kmem_malloc ( kernel_arena , DPCPU_SIZE , M_WAITOK | M_ZERO ) ; dcache_wbinv_poc_all ( ) ; platform_mp_start_ap ( ) ; error = check_ap ( ) ; if ( error ) printf ( " \n " ) ; else for ( i = 1 ; i < mp_ncpus ; i ++ ) CPU_SET ( i , & all_cpus ) ; }
Initialize and fire up non-boot processors
Initialize and fire up non - boot processors
/* Reserve memory for application processors */ /* Initialize boot code and start up processors */ /*  Check if ap's started properly */