VM_SysCall.sysVirtualProcessorCreate(VM_Magic.getTocPointer(),
VM_Address toc = VM_Magic.getTocPointer(); VM_SysCall.sysVirtualProcessorCreate(toc,
  static VM_Processor createNativeProcessor () throws VM_PragmaInterruptible {    //-#if RVM_FOR_IA32    // NOT YET IMPLEMENTED !!!    VM.sysWrite("VM_Processor createNativeProcessor NOT YET IMPLEMENTED for IA32\n");    VM.sysExit(VM.exitStatusUnsupportedInternalOp);    return null;    //-#else    // create native processor object without id - set later    VM_Processor newProcessor = new VM_Processor(0, NATIVE);    VM.disableGC();    // add to native Processors array-  note: GC will see it now    synchronized (nativeProcessorCountLock) {        int processId = generateNativeProcessorId();      newProcessor.id = processId;        nativeProcessors[-processId] = newProcessor;      if (debug_native) {        VM_Scheduler.trace( "VM_Processor",                             "created native processor", processId);      }    }    VM.enableGC();    // create idle thread for processor - with affinity to native processor.    // ?? will this affinity be a problem when idle thread temporarily migrates    // ?? to a blue processor ??    VM_Thread t = new VM_NativeIdleThread(newProcessor);    t.start(newProcessor.transferQueue);    // create VM_Thread for virtual cpu to execute    //    VM_Thread target = new VM_StartupThread(MM_Interface.newStack(STACK_SIZE_NORMAL>>LOG_BYTES_IN_ADDRESS));    // create virtual cpu and wait for execution to enter target's code/stack.    // this is done with gc disabled to ensure that garbage     // collector doesn't move    // code or stack before the C startoff function has a chance    // to transfer control into vm image.    VM.disableGC();    //-#if !RVM_FOR_SINGLE_VIRTUAL_PROCESSOR    // Need to set startuplock here    VM_SysCall.sysInitializeStartupLocks(1);    //-#endif    newProcessor.activeThread = target;    newProcessor.activeThreadStackLimit = target.stackLimit;    target.registerThread(); // let scheduler know that thread is active.    VM_SysCall.sysVirtualProcessorCreate(VM_Magic.getTocPointer(),					 VM_Magic.objectAsAddress(newProcessor),					 target.contextRegisters.gprs.get(VM.THREAD_ID_REGISTER).toAddress(),					 target.contextRegisters.getInnermostFramePointer());    while (!newProcessor.isInitialized)      VM.sysVirtualProcessorYield();    VM.enableGC();    if (debug_native) {      VM_Scheduler.trace("VM_Processor", "started native processor",                          newProcessor.id);      VM_Scheduler.trace("VM_Processor", "native processor pthread_id",                          newProcessor.pthread_id);    }    return newProcessor;    //-#endif  } // createNativeProcessor