Changeset 73471 in vbox for trunk/src/VBox/VMM/VMMR0
- Timestamp:
- Aug 3, 2018 12:11:07 PM (6 years ago)
- Location:
- trunk/src/VBox/VMM/VMMR0
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/VMMR0JmpA-amd64.asm
r71222 r73471 19 19 ;* Header Files * 20 20 ;******************************************************************************* 21 %define RT_ASM_WITH_SEH64 21 22 %include "VBox/asmdefs.mac" 22 23 %include "VMMInternal.mac" … … 62 63 ; 63 64 push rbp 65 SEH64_PUSH_xBP 64 66 mov rbp, rsp 67 SEH64_SET_FRAME_xBP 0 65 68 %ifdef ASM_CALL64_MSC 66 69 sub rsp, 30h + STACK_FUZZ_SIZE ; (10h is used by resume (??), 20h for callee spill area) 70 SEH64_ALLOCATE_STACK 30h + STACK_FUZZ_SIZE 71 SEH64_END_PROLOGUE 67 72 mov r11, rdx ; pfn 68 73 mov rdx, rcx ; pJmpBuf; 69 74 %else 70 75 sub rsp, 10h + STACK_FUZZ_SIZE ; (10h is used by resume (??)) 76 SEH64_ALLOCATE_STACK 10h + STACK_FUZZ_SIZE 77 SEH64_END_PROLOGUE 71 78 mov r8, rdx ; pvUser1 (save it like MSC) 72 79 mov r9, rcx ; pvUser2 (save it like MSC) … … 302 309 ; 303 310 push rbp 311 SEH64_PUSH_xBP 304 312 mov rbp, rsp 313 SEH64_SET_FRAME_xBP 0 305 314 push r15 315 SEH64_PUSH_GREG r15 306 316 push r14 317 SEH64_PUSH_GREG r14 307 318 push r13 319 SEH64_PUSH_GREG r13 308 320 push r12 321 SEH64_PUSH_GREG r12 309 322 %ifdef ASM_CALL64_MSC 310 323 push rdi 324 SEH64_PUSH_GREG rdi 311 325 push rsi 326 SEH64_PUSH_GREG rsi 312 327 %endif 313 328 push rbx 329 SEH64_PUSH_GREG rbx 314 330 pushf 331 SEH64_ALLOCATE_STACK 8 315 332 %ifdef RT_OS_WINDOWS 316 333 sub rsp, 0a0h 334 SEH64_ALLOCATE_STACK 0a0h 317 335 movdqa [rsp + 000h], xmm6 318 336 movdqa [rsp + 010h], xmm7 … … 328 346 %ifdef VBOX_STRICT 329 347 push RESUME_MAGIC 330 %endif 348 SEH64_ALLOCATE_STACK 8 349 %endif 350 SEH64_END_PROLOGUE 331 351 332 352 ; … … 373 393 374 394 %endif ; !VMM_R0_SWITCH_STACK 395 396 ; Save a PC and return PC here to assist unwinding. 397 .unwind_point: 398 lea rcx, [.unwind_point wrt RIP] 399 mov [xDX + VMMR0JMPBUF.SavedEipForUnwind], rcx 400 mov rcx, [xDX + VMMR0JMPBUF.rbp] 401 lea rcx, [rcx + 8] 402 mov [xDX + VMMR0JMPBUF.UnwindRetPcLocation], rcx 403 mov rcx, [rcx] 404 mov [xDX + VMMR0JMPBUF.UnwindRetPcValue], rcx 375 405 376 406 ; Save RSP & RBP to enable stack dumps … … 452 482 ; @cproto VMMR0DECL(void) vmmR0LoggerWrapper(const char *pszFormat, ...) 453 483 ; 454 EXPORTEDNAME vmmR0LoggerWrapper 484 BEGINPROC_EXPORTED vmmR0LoggerWrapper 485 SEH64_END_PROLOGUE 455 486 int3 456 487 int3 -
trunk/src/VBox/VMM/VMMR0/VMMR0JmpA-x86.asm
r71222 r73471 334 334 %endif ; !VMM_R0_SWITCH_STACK 335 335 336 ; Save a PC here to assist unwinding. 337 .unwind_point: 338 mov dword [xDX + VMMR0JMPBUF.SavedEipForUnwind], .unwind_point 339 mov ecx, [xDX + VMMR0JMPBUF.ebp] 340 lea ecx, [ecx + 4] 341 mov [xDX + VMMR0JMPBUF.UnwindRetPcLocation], ecx 342 336 343 ; Save ESP & EBP to enable stack dumps 337 344 mov ecx, ebp … … 353 360 mov ebp, [xDX + VMMR0JMPBUF.ebp] 354 361 mov ecx, [xDX + VMMR0JMPBUF.eip] 362 mov [xDX + VMMR0JMPBUF.UnwindRetPcValue], ecx 355 363 mov esp, [xDX + VMMR0JMPBUF.esp] 356 364 push dword [xDX + VMMR0JMPBUF.eflags]
Note:
See TracChangeset
for help on using the changeset viewer.