Changeset 13375 in vbox
- Timestamp:
- Oct 17, 2008 2:18:29 PM (17 years ago)
- svn:sync-xref-src-repo-rev:
- 38101
- Location:
- trunk
- Files:
-
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/em.h
r13351 r13375 56 56 /** Hardware accelerated raw-mode execution. */ 57 57 EMSTATE_HWACC, 58 /** PARAV function. */ 59 EMSTATE_PARAV, 58 60 /** Recompiled mode execution. */ 59 61 EMSTATE_REM, -
trunk/include/VBox/err.h
r12079 r13375 154 154 * interrupts having changed the EIP. */ 155 155 #define VINF_EM_RESCHEDULE 1117 156 /** PARAV call */ 157 #define VINF_EM_RESCHEDULE_PARAV 1118 156 158 /** Last scheduling related status code. (inclusive) */ 157 #define VINF_EM_LAST 111 7159 #define VINF_EM_LAST 1118 158 160 159 161 /** Reason for leaving GC: Guest trap which couldn't be handled in GC. … … 1274 1276 /** @} */ 1275 1277 1278 1279 /** @name VBox PARAV Status Codes 1280 * @{ 1281 */ 1282 /** Switch back to host */ 1283 #define VINF_PARAV_SWITCH_TO_HOST 4400 1284 1285 /** @} */ 1286 1276 1287 /* SED-END */ 1277 1288 -
trunk/include/VBox/mm.h
r12989 r13375 162 162 MM_TAG_MM_LOOKUP_VIRT, 163 163 MM_TAG_MM_PAGE, 164 165 MM_TAG_PARAV, 164 166 165 167 MM_TAG_PATM, -
trunk/include/VBox/vm.h
r13350 r13375 487 487 * This is placed here for performance reasons. */ 488 488 bool fHWACCMEnabled; 489 490 /** PARAV enabled flag. */ 491 bool fPARAVEnabled; 489 492 /** @} */ 490 493 … … 632 635 } csam; 633 636 637 /** PARAV part. */ 638 union 639 { 640 #ifdef ___PARAVInternal_h 641 struct PARAV s; 642 #endif 643 char padding[128]; 644 } parav; 645 634 646 /** EM part. */ 635 647 union -
trunk/src/VBox/Devices/Makefile.kmk
r13057 r13375 197 197 # 198 198 VBoxDD2_TEMPLATE = VBOXR3 199 VBoxDD2_DEFS = IN_VBOXDD2 199 VBoxDD2_DEFS = IN_VBOXDD2 \ 200 $(if $(VBOX_WITH_VMI),VBOX_WITH_VMI,) 200 201 VBoxDD2_INCS := \ 201 202 $(PATH_SUB_CURRENT) -
trunk/src/VBox/VMM/EM.cpp
r13343 r13375 42 42 #include <VBox/em.h> 43 43 #include <VBox/vmm.h> 44 #ifdef VBOX_WITH_VMI 45 #include <VBox/parav.h> 46 #endif 44 47 #include <VBox/patm.h> 45 48 #include <VBox/csam.h> … … 531 534 case EMSTATE_HWACC: return "EMSTATE_HWACC"; 532 535 case EMSTATE_REM: return "EMSTATE_REM"; 536 #ifdef VBOX_WITH_VMI 537 case EMSTATE_PARAV: return "EMSTATE_PARAV"; 538 #endif 533 539 case EMSTATE_HALTED: return "EMSTATE_HALTED"; 534 540 case EMSTATE_SUSPENDED: return "EMSTATE_SUSPENDED"; … … 2155 2161 AssertReleaseMsgFailed(("%Vrc handling is not yet implemented\n", rc)); 2156 2162 break; 2163 2164 #ifdef VBOX_WITH_VMI 2165 /* 2166 * PARAV function. 2167 */ 2168 case VINF_EM_RESCHEDULE_PARAV: 2169 rc = PARAVCallFunction(pVM); 2170 break; 2171 #endif 2157 2172 2158 2173 /* … … 3316 3331 break; 3317 3332 3333 #ifdef VBOX_WITH_VMI 3334 /* 3335 * Reschedule - parav call. 3336 */ 3337 case VINF_EM_RESCHEDULE_PARAV: 3338 Log2(("EMR3ExecuteVM: VINF_EM_RESCHEDULE_PARAV: %d -> %d (EMSTATE_PARAV)\n", pVM->em.s.enmState, EMSTATE_PARAV)); 3339 pVM->em.s.enmState = EMSTATE_PARAV; 3340 break; 3341 #endif 3342 3318 3343 /* 3319 3344 * Resume. … … 3467 3492 break; 3468 3493 3494 #ifdef VBOX_WITH_VMI 3495 /* 3496 * Execute PARAV function. 3497 */ 3498 case EMSTATE_PARAV: 3499 rc = PARAVCallFunction(pVM); 3500 pVM->em.s.enmState = EMSTATE_REM; 3501 break; 3502 #endif 3503 3469 3504 /* 3470 3505 * hlt - execution halted until interrupt. -
trunk/src/VBox/VMM/MMHeap.cpp
r12989 r13375 753 753 TAG2STR(MM_PAGE); 754 754 755 TAG2STR(PARAV); 756 755 757 TAG2STR(PATM); 756 758 TAG2STR(PATM_PATCH); -
trunk/src/VBox/VMM/Makefile.kmk
r13306 r13375 138 138 VMMSwitcher/AMD64ToPAE.asm 139 139 140 ifdef VBOX_WITH_VMI 141 VMMR3_DEFS += \ 142 VBOX_WITH_VMI 143 VMMR3_INCS += \ 144 PARAV 145 VMMR3_SOURCES += \ 146 PARAV/PARAV.cpp \ 147 PARAV/PARAVAll.cpp 148 endif 149 140 150 ifdef VBOX_WITH_USB 141 151 VMMR3_DEFS += VBOX_WITH_USB … … 338 348 endif 339 349 350 ifdef VBOX_WITH_VMI 351 VMMGC_DEFS += \ 352 VBOX_WITH_VMI 353 VMMGC_SOURCES += \ 354 PARAV/PARAV.cpp \ 355 PARAV/PARAVAll.cpp 356 endif 357 340 358 # the very last one. 341 359 VMMGC_SOURCES += VMMGC/VMMGC99.asm -
trunk/src/VBox/VMM/VM.cpp
r13146 r13375 41 41 #include <VBox/stam.h> 42 42 #include <VBox/patm.h> 43 #ifdef VBOX_WITH_VMI 44 #include <VBox/parav.h> 45 #endif 43 46 #include <VBox/csam.h> 44 47 #include <VBox/iom.h> … … 613 616 if (VBOX_SUCCESS(rc)) 614 617 { 615 rc = IOMR3Init(pVM); 618 #ifdef VBOX_WITH_VMI 619 rc = PARAVR3Init(pVM); 616 620 if (VBOX_SUCCESS(rc)) 617 621 { 618 rc = EMR3Init(pVM); 622 #endif 623 rc = IOMR3Init(pVM); 619 624 if (VBOX_SUCCESS(rc)) 620 625 { 621 rc = DBGFR3Init(pVM);626 rc = EMR3Init(pVM); 622 627 if (VBOX_SUCCESS(rc)) 623 628 { 624 rc = PDMR3Init(pVM);629 rc = DBGFR3Init(pVM); 625 630 if (VBOX_SUCCESS(rc)) 626 631 { 627 rc = PGMR3InitDynMap(pVM); 628 if (VBOX_SUCCESS(rc)) 629 rc = MMR3HyperInitFinalize(pVM); 630 if (VBOX_SUCCESS(rc)) 631 rc = PATMR3InitFinalize(pVM); 632 if (VBOX_SUCCESS(rc)) 633 rc = PGMR3InitFinalize(pVM); 634 if (VBOX_SUCCESS(rc)) 635 rc = SELMR3InitFinalize(pVM); 636 if (VBOX_SUCCESS(rc)) 637 rc = TMR3InitFinalize(pVM); 638 if (VBOX_SUCCESS(rc)) 639 rc = VMMR3InitFinalize(pVM); 640 if (VBOX_SUCCESS(rc)) 641 rc = vmR3InitDoCompleted(pVM, VMINITCOMPLETED_RING3); 632 rc = PDMR3Init(pVM); 642 633 if (VBOX_SUCCESS(rc)) 643 634 { 644 LogFlow(("vmR3InitRing3: returns %Vrc\n", VINF_SUCCESS)); 645 return VINF_SUCCESS; 635 rc = PGMR3InitDynMap(pVM); 636 if (VBOX_SUCCESS(rc)) 637 rc = MMR3HyperInitFinalize(pVM); 638 if (VBOX_SUCCESS(rc)) 639 rc = PATMR3InitFinalize(pVM); 640 if (VBOX_SUCCESS(rc)) 641 rc = PGMR3InitFinalize(pVM); 642 if (VBOX_SUCCESS(rc)) 643 rc = SELMR3InitFinalize(pVM); 644 if (VBOX_SUCCESS(rc)) 645 rc = TMR3InitFinalize(pVM); 646 if (VBOX_SUCCESS(rc)) 647 rc = VMMR3InitFinalize(pVM); 648 if (VBOX_SUCCESS(rc)) 649 rc = vmR3InitDoCompleted(pVM, VMINITCOMPLETED_RING3); 650 if (VBOX_SUCCESS(rc)) 651 { 652 LogFlow(("vmR3InitRing3: returns %Vrc\n", VINF_SUCCESS)); 653 return VINF_SUCCESS; 654 } 655 int rc2 = PDMR3Term(pVM); 656 AssertRC(rc2); 646 657 } 647 int rc2 = PDMR3Term(pVM);658 int rc2 = DBGFR3Term(pVM); 648 659 AssertRC(rc2); 649 660 } 650 int rc2 = DBGFR3Term(pVM);661 int rc2 = EMR3Term(pVM); 651 662 AssertRC(rc2); 652 663 } 653 int rc2 = EMR3Term(pVM);664 int rc2 = IOMR3Term(pVM); 654 665 AssertRC(rc2); 655 666 } 656 int rc2 = IOMR3Term(pVM); 667 #ifdef VBOX_WITH_VMI 668 int rc2 = PARAVR3Term(pVM); 657 669 AssertRC(rc2); 658 670 } 671 #endif 659 672 int rc2 = PATMR3Term(pVM); 660 673 AssertRC(rc2); -
trunk/src/VBox/VMM/testcase/Makefile.kmk
r12989 r13375 94 94 tstVMStructSize_TEMPLATE= VBOXR3AUTOTST 95 95 tstVMStructSize_DEFS = IN_VMM_R3 IN_DIS 96 ifdef VBOX_WITH_IDT_PATCHING97 tstVMStructSize_DEFS += VBOX_WITH_IDT_PATCHING98 endif99 96 tstVMStructSize_INCS = $(VBOX_PATH_VMM_SRC) $(VBOX_PATH_VMM_SRC)/PATM $(VBOX_VMM_TESTCASE_OUT_DIR) 100 97 tstVMStructSize_SOURCES = tstVMStructSize.cpp 101 98 tstVMStructSize.cpp_DEPS= $(VBOX_VMM_TESTCASE_OUT_DIR)/tstVMStructGC.h 99 ifdef VBOX_WITH_IDT_PATCHING 100 tstVMStructSize_DEFS += VBOX_WITH_IDT_PATCHING 101 endif 102 ifdef VBOX_WITH_VMI 103 tstVMStructSize_DEFS += VBOX_WITH_VMI 104 tstVMStructSize_INCS += $(VBOX_PATH_VMM_SRC)/PARAV 105 endif 102 106 103 107 tstAsmStructs_TEMPLATE = VBOXR3AUTOTST -
trunk/src/VBox/VMM/testcase/tstVMStructSize.cpp
r13062 r13375 47 47 #include "HWACCMInternal.h" 48 48 #include "PATMInternal.h" 49 #ifdef VBOX_WITH_VMI 50 #include "PARAVInternal.h" 51 #endif 49 52 #include "VMMInternal.h" 50 53 #include "DBGFInternal.h" -
trunk/src/recompiler/Makefile.kmk
r13363 r13375 104 104 # The VBoxREM.[dll|so|..] or VBoxREM2.rel. 105 105 # 106 $(REM_MOD)_DEFS = IN_REM_R3 REM_INCLUDE_CPU_H 107 $(REM_MOD)_DEFS += REM_PHYS_ADDR_IN_TLB 106 $(REM_MOD)_DEFS = \ 107 IN_REM_R3 REM_INCLUDE_CPU_H REM_PHYS_ADDR_IN_TLB \ 108 $(if $(VBOX_WITH_VMI),VBOX_WITH_VMI,) 109 108 110 #$(REM_MOD)_DEFS += DEBUG_ALL_LOGGING DEBUG_DISAS DEBUG_PCALL DEBUG_EXEC DEBUG_FLUSH DEBUG_IOPORT DEBUG_SIGNAL DEBUG_TLB_CHECK DEBUG_TB_INVALIDATE DEBUG_TLB # Enables huge amounts of debug logging. 109 111 -
trunk/src/recompiler/VBoxREMWrapper.cpp
r13306 r13375 624 624 { REMPARMDESC_FLAGS_INT, sizeof(uint32_t *), NULL } 625 625 }; 626 #ifdef VBOX_WITH_VMI 627 static const REMPARMDESC g_aArgsPARAVIsBiosCall[] = 628 { 629 { REMPARMDESC_FLAGS_INT, sizeof(PVM), NULL }, 630 { REMPARMDESC_FLAGS_GCPTR, sizeof(RTGCPTR), NULL }, 631 { REMPARMDESC_FLAGS_INT, sizeof(uint32_t), NULL } 632 }; 633 #endif 626 634 static const REMPARMDESC g_aArgsPDMApicGetBase[] = 627 635 { … … 1075 1083 { "PATMR3QueryPatchMemGC", (void *)(uintptr_t)&PATMR3QueryPatchMemGC, &g_aArgsPATMR3QueryPatchMem[0], RT_ELEMENTS(g_aArgsPATMR3QueryPatchMem), REMFNDESC_FLAGS_RET_INT, sizeof(RTGCPTR), NULL }, 1076 1084 { "PATMR3QueryPatchMemHC", (void *)(uintptr_t)&PATMR3QueryPatchMemHC, &g_aArgsPATMR3QueryPatchMem[0], RT_ELEMENTS(g_aArgsPATMR3QueryPatchMem), REMFNDESC_FLAGS_RET_INT, sizeof(void *), NULL }, 1085 #ifdef VBOX_WITH_VMI 1086 { "PARAVIsBiosCall", (void *)(uintptr_t)&PARAVIsBiosCall, &g_aArgsPARAVIsBiosCall[0], RT_ELEMENTS(g_aArgsPARAVIsBiosCall), REMFNDESC_FLAGS_RET_INT, sizeof(bool), NULL }, 1087 #endif 1077 1088 { "PDMApicGetBase", (void *)(uintptr_t)&PDMApicGetBase, &g_aArgsPDMApicGetBase[0], RT_ELEMENTS(g_aArgsPDMApicGetBase), REMFNDESC_FLAGS_RET_INT, sizeof(int), NULL }, 1078 1089 { "PDMApicGetTPR", (void *)(uintptr_t)&PDMApicGetTPR, &g_aArgsPDMApicGetTPR[0], RT_ELEMENTS(g_aArgsPDMApicGetTPR), REMFNDESC_FLAGS_RET_INT, sizeof(int), NULL }, -
trunk/src/recompiler/VBoxRecompiler.c
r13185 r13375 1070 1070 rc = VINF_EM_RESCHEDULE_HWACC; 1071 1071 break; 1072 1073 #ifdef VBOX_WITH_VMI 1074 /* 1075 * 1076 */ 1077 case EXCP_PARAV_CALL: 1078 Log2(("REMR3Run: cpu_exec -> EXCP_PARAV_CALL\n")); 1079 rc = VINF_EM_RESCHEDULE_PARAV; 1080 break; 1081 #endif 1072 1082 1073 1083 /* -
trunk/src/recompiler/cpu-defs.h
r11982 r13375 90 90 #define EXCP_SINGLE_INSTR 0x11026 /* executed single instruction. */ 91 91 #define EXCP_RC 0x11027 /* a EM rc was raised (VMR3Reset/Suspend/PowerOff). */ 92 #ifdef VBOX 93 #define EXCP_PARAV_CALL 0x11028 /* VMI BIOS call */ 94 #endif 92 95 #endif /* VBOX */ 93 96 #define MAX_BREAKPOINTS 32 -
trunk/src/recompiler/target-i386/helper.c
r13117 r13375 29 29 #ifdef VBOX 30 30 # include <VBox/err.h> 31 # include <VBox/parav.h> 31 32 #endif 32 33 #include "exec.h" … … 625 626 626 627 #ifdef VBOX 628 # ifdef VBOX_WITH_VMI 629 if ( intno == 6 630 && PARAVIsBiosCall(env->pVM, (RTRCPTR)next_eip, env->regs[R_EAX])) 631 { 632 env->exception_index = EXCP_PARAV_CALL; 633 cpu_loop_exit(); 634 } 635 # endif 627 636 if (remR3NotifyTrap(env, intno, error_code, next_eip) != VINF_SUCCESS) 628 637 cpu_loop_exit();
Note:
See TracChangeset
for help on using the changeset viewer.