+
+ if(CTable = act->mact.vmmControl) { /* Are there virtual machines? */
+
+ for(vmid = 0; vmid < kVmmMaxContextsPerThread; vmid++) {
+
+ if(!(CTable->vmmc[vmid].vmmFlags & vmmInUse)) continue; /* Skip if vm is not in use */
+
+ if(!CTable->vmmc[vmid].vmmFacCtx.FPUsave && !CTable->vmmc[vmid].vmmFacCtx.VMXsave) continue; /* If neither types, skip this vm */
+
+ db_printf(" VMachine ID %3d - fp: %08X fl: %08X fc: %d vp: %08X vl: %08X vp: %d\n", vmid, /* Title it */
+ CTable->vmmc[vmid].vmmFacCtx.FPUsave, CTable->vmmc[vmid].vmmFacCtx.FPUlevel, CTable->vmmc[vmid].vmmFacCtx.FPUcpu,
+ CTable->vmmc[vmid].vmmFacCtx.VMXsave, CTable->vmmc[vmid].vmmFacCtx.VMXlevel, CTable->vmmc[vmid].vmmFacCtx.VMXcpu
+ );
+
+ save = (savearea *)CTable->vmmc[vmid].vmmFacCtx.FPUsave; /* Set the start of the floating point chain */
+ chainsize = 0;
+ while(save) { /* Do them all */
+ totsaves++; /* Count savearea */
+ db_printf(" FPU %08X: %08X - tot = %d\n", save, save->save_hdr.save_level, totsaves);
+ save = save->save_hdr.save_prev; /* Next one */
+ if(chainsize++ > chainmax) { /* See if we might be in a loop */
+ db_printf(" Chain terminated by count (%d) before %08X\n", chainmax, save);
+ break;
+ }
+ }
+
+ save = (savearea *)CTable->vmmc[vmid].vmmFacCtx.VMXsave; /* Set the start of the floating point chain */
+ chainsize = 0;
+ while(save) { /* Do them all */
+ totsaves++; /* Count savearea */
+ db_printf(" Vec %08X: %08X - tot = %d\n", save, save->save_hdr.save_level, totsaves);
+ save = save->save_hdr.save_prev; /* Next one */
+ if(chainsize++ > chainmax) { /* See if we might be in a loop */
+ db_printf(" Chain terminated by count (%d) before %08X\n", chainmax, save);
+ break;
+ }
+ }
+ }
+ }