VM.sysExit(VM.exitStatusHPMTrouble);
VM.sysExit(VM.EXIT_STATUS_HPM_TROUBLE);
  static public void boot()   {    if (VM.BuildForHPM && enabled) {      //-#if RVM_WITH_HPM      // When only the main thread Java thread is created, allocate HPM_counters.      int events[] = HPM_info.ids;      if (verbose>=4) {        VM.sysWrite("VM_HPMs.boot(): Events 1: "); VM.sysWrite(events[1]);	VM.sysWrite(", 2: ");VM.sysWrite(events[2]);VM.sysWrite(", 3: ");VM.sysWrite(events[3]);	VM.sysWrite(", 4: ");VM.sysWrite(events[4]);VM.sysWrite(", 5: ");VM.sysWrite(events[5]);	VM.sysWrite(", 6: ");VM.sysWrite(events[6]);VM.sysWrite(", 7: ");VM.sysWrite(events[7]);	VM.sysWrite(", 8: ");VM.sysWrite(events[8]);VM.sysWrite(", mode: ");VM.sysWrite(HPM_info.mode);	VM.sysWrite("\n");      }      if(verbose>=3)VM.sysWrite("VM_HPMs.boot() call hpmInit()\n");      VM_SysCall.sysHPMinit();      if(verbose>=3) {	VM.sysWrite("VM_HPMs.boot() call hpmSetEvent(");	VM.sysWrite(events[1]);VM.sysWrite(",");VM.sysWrite(events[2]);VM.sysWrite(",");	VM.sysWrite(events[3]);VM.sysWrite(",");VM.sysWrite(events[4]);VM.sysWrite(")\n");      }      VM_SysCall.sysHPMsetEvent(events[1],events[2],events[3],events[4]);      if(verbose>=3){	VM.sysWrite("VM_HPMs.boot() call hpmSetEventX(");	VM.sysWrite(events[5]);VM.sysWrite(",");VM.sysWrite(events[6]);VM.sysWrite(",");	VM.sysWrite(events[7]);VM.sysWrite(",");VM.sysWrite(events[8]);VM.sysWrite(")\n");      }      VM_SysCall.sysHPMsetEventX(events[5],events[6],events[7],events[8]);      if(verbose>=3){	VM.sysWrite("VM_HPMs.boot() call hpmSetMode(",HPM_info.mode,")\n");      }      VM_SysCall.sysHPMsetMode(HPM_info.mode);      // set hpm program for current pthread.  Inherited by other, to be created, pthreads.      if (! thread_group) {        if(verbose>=3)          VM.sysWriteln("VM_HPMs.boot() call to sysHPMsetProgramMyThread() and sysHPMstartMyThread()");        VM_SysCall.sysHPMsetProgramMyThread();        VM_SysCall.sysHPMstartMyThread();      } else {        if(verbose>=3)          VM.sysWriteln("VM_HPMs.boot() call to sysHPMsetProgramMyGroup() and sysHPMstartMyGroup()");        VM_SysCall.sysHPMsetProgramMyGroup();        VM_SysCall.sysHPMstartMyGroup();      }      HPM_info.setNumberOfEvents(VM_SysCall.sysHPMgetNumberOfEvents());      HPM_info.setEndian(VM_SysCall.sysHPMisBigEndian());      booted = true;      // okay to construct HPM_counters      // Needed to allocate the HPM counters for the primodial thread!      VM_Thread thread = VM_Thread.getCurrentThread();      if (thread.hpm_counters == null) {	if(verbose>=3)VM.sysWriteln("VM_HPMs.boot() call new HPM_counters for primordial thread");	thread.hpm_counters = new HPM_counters();              }      // set up callbacks      if(report) {        if(verbose>=3){ VM.sysWrite("VM_HPMs.boot() call setUpCallbacks\n"); }        if (VM_Scheduler.numProcessors != 1) {          VM.sysWrite("***VM_HPM.boot() -X:hpm:report can not be true when -X:processors != 1!***\n");          VM.sysExit(VM.exitStatusHPMTrouble);        }        aos = new HPM_counters();        sum = new HPM_counters();        setUpCallbacks();      }      //-#endif    }  }