Changeset 20541 in vbox
- Timestamp:
- Jun 13, 2009 9:31:22 PM (16 years ago)
- svn:sync-xref-src-repo-rev:
- 48543
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 2 edited
- 1 copied
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/Makefile.kmk
r20167 r20541 414 414 VMMR0/TRPMR0A.asm \ 415 415 VMMR0/VMMR0.cpp \ 416 VMMR0/VMMR0A.asm \417 416 VMMRZ/DBGFRZ.cpp \ 418 417 VMMAll/CPUMAllA.asm \ … … 445 444 VMMAll/VMAll.cpp \ 446 445 VMMAll/VMMAll.cpp 446 VMMR0_SOURCES.amd64 = \ 447 VMMR0/VMMR0JmpA-amd64.asm 448 VMMR0_SOURCES.x86 = \ 449 VMMR0/VMMR0JmpA-x86.asm 447 450 VMMR0_SOURCES.darwin.x86 = \ 448 451 VMMR0/PGMR0DynMap.cpp -
trunk/src/VBox/VMM/VMMR0/VMMR0JmpA-amd64.asm
r20534 r20541 1 1 ; $Id$ 2 2 ;; @file 3 ; VMM - R0 assembly routines.4 ; 5 6 ; 7 ; Copyright (C) 2006-200 7Sun Microsystems, Inc.3 ; VMM - R0 SetJmp / LongJmp routines for AMD64. 4 ; 5 6 ; 7 ; Copyright (C) 2006-2009 Sun Microsystems, Inc. 8 8 ; 9 9 ; This file is part of VirtualBox Open Source Edition (OSE), as … … 27 27 %include "iprt/err.mac" 28 28 29 30 %ifdef RT_ARCH_X86 ; The other architecture(s) use(s) C99 variadict macros.31 extern NAME(RTLogLogger)32 %endif33 34 29 %ifdef RT_OS_DARWIN 35 30 %define VMM_R0_SWITCH_STACK … … 55 50 BEGINPROC vmmR0CallHostSetJmp 56 51 GLOBALNAME vmmR0CallHostSetJmpEx 57 %ifdef RT_ARCH_X8658 ;59 ; Save the registers.60 ;61 mov edx, [esp + 4h] ; pJmpBuf62 mov [edx + VMMR0JMPBUF.ebx], ebx63 mov [edx + VMMR0JMPBUF.esi], esi64 mov [edx + VMMR0JMPBUF.edi], edi65 mov [edx + VMMR0JMPBUF.ebp], ebp66 mov eax, [esp]67 mov [edx + VMMR0JMPBUF.eip], eax68 lea ecx, [esp + 4] ; (used in resume)69 mov [edx + VMMR0JMPBUF.esp], ecx70 71 ;72 ; If we're not in a ring-3 call, call pfn and return.73 ;74 test byte [edx + VMMR0JMPBUF.fInRing3Call], 175 jnz .resume76 77 mov ebx, edx ; pJmpBuf -> ebx (persistent reg)78 %ifdef VMM_R0_SWITCH_STACK79 mov esi, [ebx + VMMR0JMPBUF.pvSavedStack]80 test esi, esi81 jz .entry_error82 %ifdef VBOX_STRICT83 cmp dword [esi], 0h84 jne .entry_error85 mov edx, esi86 mov edi, esi87 mov ecx, 204888 mov eax, 0eeeeeeeeh89 repne stosd90 %endif91 lea esi, [esi + 8192 - 32]92 mov [esi + 1ch], dword 0deadbeefh ; Marker 1.93 mov [esi + 18h], ebx ; Save pJmpBuf pointer.94 mov [esi + 14h], dword 00c00ffeeh ; Marker 2.95 mov [esi + 10h], dword 0f00dbeefh ; Marker 3.96 mov edx, [esp + 10h] ; pvArg297 mov [esi + 04h], edx98 mov ecx, [esp + 0ch] ; pvArg199 mov [esi ], ecx100 mov eax, [esp + 08h] ; pfn101 mov esp, esi ; Switch stack!102 call eax103 and dword [esi + 1ch], byte 0 ; clear marker.104 105 %ifdef VBOX_STRICT106 mov esi, [ebx + VMMR0JMPBUF.pvSavedStack]107 cmp [esi], 0eeeeeeeeh ; Check for stack overflow108 jne .stack_overflow109 cmp [esi + 04h], 0eeeeeeeeh110 jne .stack_overflow111 cmp [esi + 08h], 0eeeeeeeeh112 jne .stack_overflow113 cmp [esi + 0ch], 0eeeeeeeeh114 jne .stack_overflow115 cmp [esi + 10h], 0eeeeeeeeh116 jne .stack_overflow117 cmp [esi + 20h], 0eeeeeeeeh118 jne .stack_overflow119 cmp [esi + 30h], 0eeeeeeeeh120 jne .stack_overflow121 mov dword [esi], 0h ; Reset the marker122 %endif123 124 %else ; !VMM_R0_SWITCH_STACK125 mov ecx, [esp + 0ch] ; pvArg1126 mov edx, [esp + 10h] ; pvArg2127 mov eax, [esp + 08h] ; pfn128 sub esp, 12 ; align the stack on a 16-byte boundrary.129 mov [esp ], ecx130 mov [esp + 04h], edx131 call eax132 %endif ; !VMM_R0_SWITCH_STACK133 mov edx, ebx ; pJmpBuf -> edx (volatile reg)134 135 ;136 ; Return like in the long jump but clear eip, no short cuts here.137 ;138 .proper_return:139 mov ebx, [edx + VMMR0JMPBUF.ebx]140 mov esi, [edx + VMMR0JMPBUF.esi]141 mov edi, [edx + VMMR0JMPBUF.edi]142 mov ebp, [edx + VMMR0JMPBUF.ebp]143 mov ecx, [edx + VMMR0JMPBUF.eip]144 and dword [edx + VMMR0JMPBUF.eip], byte 0 ; used for valid check.145 mov esp, [edx + VMMR0JMPBUF.esp]146 jmp ecx147 148 .entry_error:149 mov eax, VERR_INTERNAL_ERROR_2150 jmp .proper_return151 152 .stack_overflow:153 mov eax, VERR_INTERNAL_ERROR_5154 jmp .proper_return155 156 ;157 ; Aborting resume.158 ;159 .bad:160 and dword [edx + VMMR0JMPBUF.eip], byte 0 ; used for valid check.161 mov edi, [edx + VMMR0JMPBUF.edi]162 mov esi, [edx + VMMR0JMPBUF.esi]163 mov ebx, [edx + VMMR0JMPBUF.ebx]164 mov eax, VERR_INTERNAL_ERROR_3 ; todo better return code!165 ret166 167 ;168 ; Resume VMMR0CallHost the call.169 ;170 .resume:171 ; Sanity checks.172 %ifdef VMM_R0_SWITCH_STACK173 mov eax, [edx + VMMR0JMPBUF.pvSavedStack]174 %ifdef RT_STRICT175 cmp dword [eax], 0eeeeeeeeh176 %endif177 lea eax, [eax + 8192 - 32]178 cmp dword [eax + 1ch], 0deadbeefh ; Marker 1.179 jne .bad180 %ifdef RT_STRICT181 cmp [esi + 18h], edx ; The saved pJmpBuf pointer.182 jne .bad183 cmp dword [esi + 14h], 00c00ffeeh ; Marker 2.184 jne .bad185 cmp dword [esi + 10h], 0f00dbeefh ; Marker 3.186 jne .bad187 %endif188 %else ; !VMM_R0_SWITCH_STACK189 cmp ecx, [edx + VMMR0JMPBUF.SpCheck]190 jne .bad191 .espCheck_ok:192 mov ecx, [edx + VMMR0JMPBUF.cbSavedStack]193 cmp ecx, 8192194 ja .bad195 test ecx, 3196 jnz .bad197 mov edi, [edx + VMMR0JMPBUF.esp]198 sub edi, [edx + VMMR0JMPBUF.SpResume]199 cmp ecx, edi200 jne .bad201 %endif202 203 %ifdef VMM_R0_SWITCH_STACK204 ; Switch stack.205 mov esp, [edx + VMMR0JMPBUF.SpResume]206 %else207 ; Restore the stack.208 mov ecx, [edx + VMMR0JMPBUF.cbSavedStack]209 shr ecx, 2210 mov esi, [edx + VMMR0JMPBUF.pvSavedStack]211 mov edi, [edx + VMMR0JMPBUF.SpResume]212 mov esp, edi213 rep movsd214 %endif ; !VMM_R0_SWITCH_STACK215 mov byte [edx + VMMR0JMPBUF.fInRing3Call], 0216 217 ; Continue where we left off.218 %ifdef VBOX_STRICT219 pop eax ; magic220 cmp eax, 0f00dbed0h221 je .magic_ok222 mov ecx, 0123h223 mov [ecx], edx224 .magic_ok:225 %endif226 popf227 pop ebx228 pop esi229 pop edi230 pop ebp231 xor eax, eax ; VINF_SUCCESS232 ret233 %endif ; RT_ARCH_X86234 235 %ifdef RT_ARCH_AMD64236 52 ; 237 53 ; Save the registers. … … 395 211 xor eax, eax ; VINF_SUCCESS 396 212 ret 397 %endif398 213 ENDPROC vmmR0CallHostSetJmp 399 214 … … 407 222 ; 408 223 BEGINPROC vmmR0CallHostLongJmp 409 %ifdef RT_ARCH_X86410 ;411 ; Save the registers on the stack.412 ;413 push ebp414 mov ebp, esp415 push edi416 push esi417 push ebx418 pushf419 %ifdef VBOX_STRICT420 push dword 0f00dbed0h421 %endif422 423 ;424 ; Load parameters.425 ;426 mov edx, [ebp + 08h] ; pJmpBuf427 mov eax, [ebp + 0ch] ; rc428 429 ;430 ; Is the jump buffer armed?431 ;432 cmp dword [edx + VMMR0JMPBUF.eip], byte 0433 je .nok434 435 ;436 ; Sanity checks.437 ;438 mov edi, [edx + VMMR0JMPBUF.pvSavedStack]439 test edi, edi ; darwin may set this to 0.440 jz .nok441 mov [edx + VMMR0JMPBUF.SpResume], esp442 %ifndef VMM_R0_SWITCH_STACK443 mov esi, esp444 mov ecx, [edx + VMMR0JMPBUF.esp]445 sub ecx, esi446 447 ; two sanity checks on the size.448 cmp ecx, 8192 ; check max size.449 jnbe .nok450 451 ;452 ; Copy the stack.453 ;454 test ecx, 3 ; check alignment455 jnz .nok456 mov [edx + VMMR0JMPBUF.cbSavedStack], ecx457 shr ecx, 2458 rep movsd459 %endif ; !VMM_R0_SWITCH_STACK460 461 ; Save ESP & EBP to enable stack dumps462 mov ecx, ebp463 mov [edx + VMMR0JMPBUF.SavedEbp], ecx464 sub ecx, 4465 mov [edx + VMMR0JMPBUF.SavedEsp], ecx466 467 ; store the last pieces of info.468 mov ecx, [edx + VMMR0JMPBUF.esp]469 mov [edx + VMMR0JMPBUF.SpCheck], ecx470 mov byte [edx + VMMR0JMPBUF.fInRing3Call], 1471 472 ;473 ; Do the long jump.474 ;475 mov ebx, [edx + VMMR0JMPBUF.ebx]476 mov esi, [edx + VMMR0JMPBUF.esi]477 mov edi, [edx + VMMR0JMPBUF.edi]478 mov ebp, [edx + VMMR0JMPBUF.ebp]479 mov ecx, [edx + VMMR0JMPBUF.eip]480 mov esp, [edx + VMMR0JMPBUF.esp]481 jmp ecx482 483 ;484 ; Failure485 ;486 .nok:487 %ifdef VBOX_STRICT488 pop eax ; magic489 cmp eax, 0f00dbed0h490 je .magic_ok491 mov ecx, 0123h492 mov [ecx], edx493 .magic_ok:494 %endif495 popf496 pop ebx497 pop esi498 pop edi499 mov eax, VERR_INTERNAL_ERROR_4500 leave501 ret502 %endif ; RT_ARCH_X86503 504 %ifdef RT_ARCH_AMD64505 224 ; 506 225 ; Save the registers on the stack. … … 608 327 leave 609 328 ret 610 611 %endif612 329 ENDPROC vmmR0CallHostLongJmp 613 330 … … 619 336 ; 620 337 EXPORTEDNAME vmmR0LoggerWrapper 621 %ifdef RT_ARCH_X86 ; The other architecture(s) use(s) C99 variadict macros.622 push 0 ; assumes we're the wrapper for a default instance.623 call NAME(RTLogLogger)624 add esp, byte 4625 ret626 %else627 338 int3 628 339 int3 629 340 int3 630 341 ret 631 %endif632 342 ENDPROC vmmR0LoggerWrapper 633 343 -
trunk/src/VBox/VMM/VMMR0/VMMR0JmpA-x86.asm
r20534 r20541 1 1 ; $Id$ 2 2 ;; @file 3 ; VMM - R0 assembly routines.4 ; 5 6 ; 7 ; Copyright (C) 2006-200 7Sun Microsystems, Inc.3 ; VMM - R0 SetJmp / LongJmp routines for X86. 4 ; 5 6 ; 7 ; Copyright (C) 2006-2009 Sun Microsystems, Inc. 8 8 ; 9 9 ; This file is part of VirtualBox Open Source Edition (OSE), as … … 28 28 29 29 30 %ifdef RT_ARCH_X86 ; The other architecture(s) use(s) C99 variadict macros. 30 ; For vmmR0LoggerWrapper. (The other architecture(s) use(s) C99 variadict macros.) 31 31 extern NAME(RTLogLogger) 32 %endif33 32 34 33 %ifdef RT_OS_DARWIN … … 55 54 BEGINPROC vmmR0CallHostSetJmp 56 55 GLOBALNAME vmmR0CallHostSetJmpEx 57 %ifdef RT_ARCH_X8658 56 ; 59 57 ; Save the registers. … … 231 229 xor eax, eax ; VINF_SUCCESS 232 230 ret 233 %endif ; RT_ARCH_X86234 235 %ifdef RT_ARCH_AMD64236 ;237 ; Save the registers.238 ;239 push rbp240 mov rbp, rsp241 %ifdef ASM_CALL64_MSC242 sub rsp, 30h243 mov r11, rdx ; pfn244 mov rdx, rcx ; pJmpBuf;245 %else246 sub rsp, 10h247 mov r8, rdx ; pvUser1 (save it like MSC)248 mov r9, rcx ; pvUser2 (save it like MSC)249 mov r11, rsi ; pfn250 mov rdx, rdi ; pJmpBuf251 %endif252 mov [rdx + VMMR0JMPBUF.rbx], rbx253 %ifdef ASM_CALL64_MSC254 mov [rdx + VMMR0JMPBUF.rsi], rsi255 mov [rdx + VMMR0JMPBUF.rdi], rdi256 %endif257 mov r10, [rbp]258 mov [rdx + VMMR0JMPBUF.rbp], r10259 mov [rdx + VMMR0JMPBUF.r12], r12260 mov [rdx + VMMR0JMPBUF.r13], r13261 mov [rdx + VMMR0JMPBUF.r14], r14262 mov [rdx + VMMR0JMPBUF.r15], r15263 mov rax, [rbp + 8]264 mov [rdx + VMMR0JMPBUF.rip], rax265 lea r10, [rbp + 10h] ; (used in resume)266 mov [rdx + VMMR0JMPBUF.rsp], r10267 268 ;269 ; If we're not in a ring-3 call, call pfn and return.270 ;271 test byte [rdx + VMMR0JMPBUF.fInRing3Call], 1272 jnz .resume273 274 %ifdef VMM_R0_SWITCH_STACK275 mov r15, [rdx + VMMR0JMPBUF.pvSavedStack]276 test r15, r15277 jz .entry_error278 %ifdef VBOX_STRICT279 cmp dword [r15], 0h280 jne .entry_error281 mov rdi, r15282 mov rcx, 1024283 mov rax, 00eeeeeeeffeeeeeeeh284 repne stosq285 mov [rdi - 10h], rbx286 %endif287 lea r15, [r15 + 8192 - 40h]288 mov rsp, r15 ; Switch stack!289 %endif ; VMM_R0_SWITCH_STACK290 291 mov r12, rdx ; Save pJmpBuf.292 %ifdef ASM_CALL64_MSC293 mov rcx, r8 ; pvUser -> arg0294 mov rdx, r9295 %else296 mov rdi, r8 ; pvUser -> arg0297 mov rsi, r9298 %endif299 call r11300 mov rdx, r12 ; Restore pJmpBuf301 302 %ifdef VMM_R0_SWITCH_STACK303 %ifdef VBOX_STRICT304 mov r15, [rdx + VMMR0JMPBUF.pvSavedStack]305 mov dword [r15], 0h ; Reset the marker306 %endif307 %endif308 309 ;310 ; Return like in the long jump but clear eip, no short cuts here.311 ;312 .proper_return:313 mov rbx, [rdx + VMMR0JMPBUF.rbx]314 %ifdef ASM_CALL64_MSC315 mov rsi, [rdx + VMMR0JMPBUF.rsi]316 mov rdi, [rdx + VMMR0JMPBUF.rdi]317 %endif318 mov r12, [rdx + VMMR0JMPBUF.r12]319 mov r13, [rdx + VMMR0JMPBUF.r13]320 mov r14, [rdx + VMMR0JMPBUF.r14]321 mov r15, [rdx + VMMR0JMPBUF.r15]322 mov rbp, [rdx + VMMR0JMPBUF.rbp]323 mov rcx, [rdx + VMMR0JMPBUF.rip]324 and qword [rdx + VMMR0JMPBUF.rip], byte 0 ; used for valid check.325 mov rsp, [rdx + VMMR0JMPBUF.rsp]326 jmp rcx327 328 .entry_error:329 mov eax, VERR_INTERNAL_ERROR_2330 jmp .proper_return331 332 ;333 ; Resume VMMR0CallHost the call.334 ;335 .resume:336 %ifdef VMM_R0_SWITCH_STACK337 ; Switch stack.338 mov rsp, [rdx + VMMR0JMPBUF.SpResume]339 %else ; !VMM_R0_SWITCH_STACK340 ; Sanity checks.341 cmp r10, [rdx + VMMR0JMPBUF.SpCheck]342 je .rspCheck_ok343 .bad:344 and qword [rdx + VMMR0JMPBUF.rip], byte 0 ; used for valid check.345 mov rbx, [rdx + VMMR0JMPBUF.rbx]346 %ifdef ASM_CALL64_MSC347 mov rsi, [rdx + VMMR0JMPBUF.rsi]348 mov rdi, [rdx + VMMR0JMPBUF.rdi]349 %endif350 mov r12, [rdx + VMMR0JMPBUF.r12]351 mov r13, [rdx + VMMR0JMPBUF.r13]352 mov r14, [rdx + VMMR0JMPBUF.r14]353 mov r15, [rdx + VMMR0JMPBUF.r15]354 mov eax, VERR_INTERNAL_ERROR_2355 leave356 ret357 358 .rspCheck_ok:359 mov ecx, [rdx + VMMR0JMPBUF.cbSavedStack]360 cmp rcx, 8192361 ja .bad362 test rcx, 3363 jnz .bad364 mov rdi, [rdx + VMMR0JMPBUF.rsp]365 sub rdi, [rdx + VMMR0JMPBUF.SpResume]366 cmp rcx, rdi367 jne .bad368 369 ;370 ; Restore the stack.371 ;372 mov ecx, [rdx + VMMR0JMPBUF.cbSavedStack]373 shr ecx, 3374 mov rsi, [rdx + VMMR0JMPBUF.pvSavedStack]375 mov rdi, [rdx + VMMR0JMPBUF.SpResume]376 mov rsp, rdi377 rep movsq378 %endif ; !VMM_R0_SWITCH_STACK379 mov byte [rdx + VMMR0JMPBUF.fInRing3Call], 0380 381 ;382 ; Continue where we left off.383 ;384 popf385 pop rbx386 %ifdef ASM_CALL64_MSC387 pop rsi388 pop rdi389 %endif390 pop r12391 pop r13392 pop r14393 pop r15394 pop rbp395 xor eax, eax ; VINF_SUCCESS396 ret397 %endif398 231 ENDPROC vmmR0CallHostSetJmp 399 232 … … 407 240 ; 408 241 BEGINPROC vmmR0CallHostLongJmp 409 %ifdef RT_ARCH_X86410 242 ; 411 243 ; Save the registers on the stack. … … 500 332 leave 501 333 ret 502 %endif ; RT_ARCH_X86503 504 %ifdef RT_ARCH_AMD64505 ;506 ; Save the registers on the stack.507 ;508 push rbp509 mov rbp, rsp510 push r15511 push r14512 push r13513 push r12514 %ifdef ASM_CALL64_MSC515 push rdi516 push rsi517 %endif518 push rbx519 pushf520 521 ;522 ; Normalize the parameters.523 ;524 %ifdef ASM_CALL64_MSC525 mov eax, edx ; rc526 mov rdx, rcx ; pJmpBuf527 %else528 mov rdx, rdi ; pJmpBuf529 mov eax, esi ; rc530 %endif531 532 ;533 ; Is the jump buffer armed?534 ;535 cmp qword [rdx + VMMR0JMPBUF.rip], byte 0536 je .nok537 538 ;539 ; Sanity checks.540 ;541 mov rdi, [rdx + VMMR0JMPBUF.pvSavedStack]542 test rdi, rdi ; darwin may set this to 0.543 jz .nok544 mov [rdx + VMMR0JMPBUF.SpResume], rsp545 %ifndef VMM_R0_SWITCH_STACK546 mov rsi, rsp547 mov rcx, [rdx + VMMR0JMPBUF.rsp]548 sub rcx, rsi549 550 ; two sanity checks on the size.551 cmp rcx, 8192 ; check max size.552 jnbe .nok553 554 ;555 ; Copy the stack556 ;557 test ecx, 7 ; check alignment558 jnz .nok559 mov [rdx + VMMR0JMPBUF.cbSavedStack], ecx560 shr ecx, 3561 rep movsq562 563 %endif ; !VMM_R0_SWITCH_STACK564 565 ; Save RSP & RBP to enable stack dumps566 mov rcx, rbp567 mov [rdx + VMMR0JMPBUF.SavedEbp], rcx568 sub rcx, 8569 mov [rdx + VMMR0JMPBUF.SavedEsp], rcx570 571 ; store the last pieces of info.572 mov rcx, [rdx + VMMR0JMPBUF.rsp]573 mov [rdx + VMMR0JMPBUF.SpCheck], rcx574 mov byte [rdx + VMMR0JMPBUF.fInRing3Call], 1575 576 ;577 ; Do the long jump.578 ;579 mov rbx, [rdx + VMMR0JMPBUF.rbx]580 %ifdef ASM_CALL64_MSC581 mov rsi, [rdx + VMMR0JMPBUF.rsi]582 mov rdi, [rdx + VMMR0JMPBUF.rdi]583 %endif584 mov r12, [rdx + VMMR0JMPBUF.r12]585 mov r13, [rdx + VMMR0JMPBUF.r13]586 mov r14, [rdx + VMMR0JMPBUF.r14]587 mov r15, [rdx + VMMR0JMPBUF.r15]588 mov rbp, [rdx + VMMR0JMPBUF.rbp]589 mov rcx, [rdx + VMMR0JMPBUF.rip]590 mov rsp, [rdx + VMMR0JMPBUF.rsp]591 jmp rcx592 593 ;594 ; Failure595 ;596 .nok:597 mov eax, VERR_INTERNAL_ERROR_4598 popf599 pop rbx600 %ifdef ASM_CALL64_MSC601 pop rsi602 pop rdi603 %endif604 pop r12605 pop r13606 pop r14607 pop r15608 leave609 ret610 611 %endif612 334 ENDPROC vmmR0CallHostLongJmp 613 335 … … 619 341 ; 620 342 EXPORTEDNAME vmmR0LoggerWrapper 621 %ifdef RT_ARCH_X86 ; The other architecture(s) use(s) C99 variadict macros.622 343 push 0 ; assumes we're the wrapper for a default instance. 623 344 call NAME(RTLogLogger) 624 345 add esp, byte 4 625 346 ret 626 %else627 int3628 int3629 int3630 ret631 %endif632 347 ENDPROC vmmR0LoggerWrapper 633 348 -
trunk/src/VBox/VMM/testcase/Makefile.kmk
r19490 r20541 161 161 tstVMMR0CallHost-1_INCS = $(VBOX_PATH_VMM_SRC) 162 162 tstVMMR0CallHost-1_SOURCES = \ 163 tstVMMR0CallHost-1.cpp \ 164 $(VBOX_PATH_VMM_SRC)/VMMR0/VMMR0A.asm 163 tstVMMR0CallHost-1.cpp 164 tstVMMR0CallHost-1_SOURCES.amd64 = \ 165 $(VBOX_PATH_VMM_SRC)/VMMR0/VMMR0JmpA-amd64.asm 166 tstVMMR0CallHost-1_SOURCES.x86 = \ 167 $(VBOX_PATH_VMM_SRC)/VMMR0/VMMR0JmpA-x86.asm 165 168 tstVMMR0CallHost-1_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME) 166 169
Note:
See TracChangeset
for help on using the changeset viewer.