Changeset 3581 in vbox for trunk/src/recompiler
- Timestamp:
- Jul 12, 2007 1:41:39 PM (18 years ago)
- Location:
- trunk/src/recompiler
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/recompiler/VBoxREMWrapper.cpp
r2981 r3581 1221 1221 1222 1222 1223 1224 /** 1225 * Entry logger function. 1226 * 1227 * @param pDesc The description. 1228 */ 1229 DECLASM(void) remLogEntry(PCREMFNDESC pDesc) 1230 { 1231 RTPrintf("calling %s\n", pDesc->pszName); 1232 } 1233 1234 1235 /** 1236 * Exit logger function. 1237 * 1238 * @param pDesc The description. 1239 * @param pvRet The return code. 1240 */ 1241 DECLASM(void) remLogExit(PCREMFNDESC pDesc, void *pvRet) 1242 { 1243 RTPrintf("returning %p from %s\n", pvRet, pDesc->pszName); 1244 } 1245 1246 1223 1247 /** 1224 1248 * Fixes export glue. … … 1259 1283 continue; 1260 1284 } 1285 if (cb >= 8 && *u.pu64 == UINT64_C(0xdead00010001dead)) 1286 { 1287 /* 64-bit address to the descriptor. */ 1288 *u.pu64++ = (uintptr_t)pDesc; 1289 cb -= 8; 1290 continue; 1291 } 1292 if (cb >= 8 && *u.pu64 == UINT64_C(0xdead00020002dead)) 1293 { 1294 /* 64-bit address to the entry logger function. */ 1295 *u.pu64++ = (uintptr_t)remLogEntry; 1296 cb -= 8; 1297 continue; 1298 } 1299 if (cb >= 8 && *u.pu64 == UINT64_C(0xdead00030003dead)) 1300 { 1301 /* 64-bit address to the entry logger function. */ 1302 *u.pu64++ = (uintptr_t)remLogExit; 1303 cb -= 8; 1304 continue; 1305 } 1261 1306 1262 1307 /* move on. */ … … 1301 1346 /* 64-bit address to the real function. */ 1302 1347 *u.pu64++ = (uintptr_t)pDesc->pv; 1348 cb -= 8; 1349 continue; 1350 } 1351 if (cb >= 8 && *u.pu64 == UINT64_C(0xdead00010001dead)) 1352 { 1353 /* 64-bit address to the descriptor. */ 1354 *u.pu64++ = (uintptr_t)pDesc; 1355 cb -= 8; 1356 continue; 1357 } 1358 if (cb >= 8 && *u.pu64 == UINT64_C(0xdead00020002dead)) 1359 { 1360 /* 64-bit address to the entry logger function. */ 1361 *u.pu64++ = (uintptr_t)remLogEntry; 1362 cb -= 8; 1363 continue; 1364 } 1365 if (cb >= 8 && *u.pu64 == UINT64_C(0xdead00030003dead)) 1366 { 1367 /* 64-bit address to the entry logger function. */ 1368 *u.pu64++ = (uintptr_t)remLogExit; 1303 1369 cb -= 8; 1304 1370 continue; -
trunk/src/recompiler/VBoxREMWrapperA.asm
r2988 r3581 22 22 %include "iprt/asmdefs.mac" 23 23 24 ;%define ENTRY_LOGGING 1 25 ;%define EXIT_LOGGING 1 26 27 28 %ifdef __AMD64__ 29 ;; 30 ; 64-bit pushad 31 %macro MY_PUSHAQ 0 32 push rax 33 push rbx 34 push rcx 35 push rdx 36 push rsi 37 push rdi 38 push rbp 39 push r8 40 push r9 41 push r10 42 push r11 43 push r12 44 push r13 45 push r14 46 push r15 47 %endmacro 48 49 ;; 50 ; 64-bit popad 51 %macro MY_POPAQ 0 52 pop r15 53 pop r14 54 pop r13 55 pop r12 56 pop r11 57 pop r10 58 pop r9 59 pop r8 60 pop rbp 61 pop rdi 62 pop rsi 63 pop rdx 64 pop rcx 65 pop rbx 66 pop rax 67 %endmacro 68 69 ;; 70 ; Entry logging 71 %ifdef ENTRY_LOGGING 72 %macro LOG_ENTRY 0 73 MY_PUSHAQ 74 push rbp 75 mov rbp, rsp 76 and rsp, ~0fh 77 sub rsp, 20h ; shadow space 78 79 %ifdef __WIN__ 80 mov rcx, 0xdead00010001dead 81 %else 82 mov rdi, 0xdead00010001dead 83 %endif 84 mov rax, 0xdead00020002dead 85 call rax 86 87 leave 88 MY_POPAQ 89 %endmacro 90 %else 91 %define LOG_ENTRY 92 %endif 93 94 ;; 95 ; Exit logging 96 %ifdef EXIT_LOGGING 97 %macro LOG_EXIT 0 98 MY_PUSHAQ 99 push rbp 100 mov rbp, rsp 101 and rsp, ~0fh 102 sub rsp, 20h ; shadow space 103 104 %ifdef __WIN__ 105 mov rdx, rax 106 mov rcx, 0xdead00010001dead 107 %else 108 mov rsi, eax 109 mov rdi, 0xdead00010001dead 110 %endif 111 mov rax, 0xdead00030003dead 112 call rax 113 114 leave 115 MY_POPAQ 116 %endmacro 117 %else 118 %define LOG_EXIT 119 %endif 120 121 %else 122 %define LOG_ENTRY 123 %define LOG_EXIT 124 %endif 24 125 25 126 … … 31 132 32 133 BEGINPROC WrapGCC2MSC0Int 33 %ifdef USE_DIRECT_CALLS 34 jmp $+5+0deadbeefh 35 %else 36 mov rax, 0xdeadf00df00ddead 37 jmp rax 38 %endif 134 LOG_ENTRY 135 push rbp 136 mov rbp, rsp 137 sub rsp, 20h 138 139 %ifdef USE_DIRECT_CALLS 140 call $+5+0deadbeefh 141 %else 142 mov rax, 0xdeadf00df00ddead 143 call rax 144 %endif 145 146 leave 147 LOG_EXIT 148 ret 39 149 ENDPROC WrapGCC2MSC0Int 40 150 41 151 42 152 BEGINPROC WrapGCC2MSC1Int 43 push rbp 44 mov rbp, rsp 45 sub rsp, 10h 46 47 mov rcx, rdi 48 %ifdef USE_DIRECT_CALLS 49 call $+5+0deadbeefh 50 %else 51 mov rax, 0xdeadf00df00ddead 52 call rax 53 %endif 54 55 leave 153 LOG_ENTRY 154 push rbp 155 mov rbp, rsp 156 sub rsp, 20h 157 158 mov rcx, rdi 159 %ifdef USE_DIRECT_CALLS 160 call $+5+0deadbeefh 161 %else 162 mov rax, 0xdeadf00df00ddead 163 call rax 164 %endif 165 166 leave 167 LOG_EXIT 56 168 ret 57 169 ENDPROC WrapGCC2MSC1Int … … 59 171 60 172 BEGINPROC WrapGCC2MSC2Int 61 push rbp 62 mov rbp, rsp 63 sub rsp, 10h 64 65 mov rdx, rsi 66 mov rcx, rdi 67 %ifdef USE_DIRECT_CALLS 68 call $+5+0deadbeefh 69 %else 70 mov rax, 0xdeadf00df00ddead 71 call rax 72 %endif 73 74 leave 173 LOG_ENTRY 174 push rbp 175 mov rbp, rsp 176 sub rsp, 20h 177 178 mov rdx, rsi 179 mov rcx, rdi 180 %ifdef USE_DIRECT_CALLS 181 call $+5+0deadbeefh 182 %else 183 mov rax, 0xdeadf00df00ddead 184 call rax 185 %endif 186 187 leave 188 LOG_EXIT 75 189 ret 76 190 ENDPROC WrapGCC2MSC2Int … … 78 192 79 193 BEGINPROC WrapGCC2MSC3Int 80 push rbp 81 mov rbp, rsp 82 sub rsp, 20h 83 84 mov r8, rdx 85 mov rdx, rsi 86 mov rcx, rdi 87 %ifdef USE_DIRECT_CALLS 88 call $+5+0deadbeefh 89 %else 90 mov rax, 0xdeadf00df00ddead 91 call rax 92 %endif 93 94 leave 194 LOG_ENTRY 195 push rbp 196 mov rbp, rsp 197 sub rsp, 20h 198 199 mov r8, rdx 200 mov rdx, rsi 201 mov rcx, rdi 202 %ifdef USE_DIRECT_CALLS 203 call $+5+0deadbeefh 204 %else 205 mov rax, 0xdeadf00df00ddead 206 call rax 207 %endif 208 209 leave 210 LOG_EXIT 95 211 ret 96 212 ENDPROC WrapGCC2MSC3Int … … 98 214 99 215 BEGINPROC WrapGCC2MSC4Int 100 push rbp 101 mov rbp, rsp 102 sub rsp, 20h 103 104 mov r9, rcx 105 mov r8, rdx 106 mov rdx, rsi 107 mov rcx, rdi 108 %ifdef USE_DIRECT_CALLS 109 call $+5+0deadbeefh 110 %else 111 mov rax, 0xdeadf00df00ddead 112 call rax 113 %endif 114 115 leave 216 LOG_ENTRY 217 push rbp 218 mov rbp, rsp 219 sub rsp, 20h 220 221 mov r9, rcx 222 mov r8, rdx 223 mov rdx, rsi 224 mov rcx, rdi 225 %ifdef USE_DIRECT_CALLS 226 call $+5+0deadbeefh 227 %else 228 mov rax, 0xdeadf00df00ddead 229 call rax 230 %endif 231 232 leave 233 LOG_EXIT 116 234 ret 117 235 ENDPROC WrapGCC2MSC4Int … … 119 237 120 238 BEGINPROC WrapGCC2MSC5Int 239 LOG_ENTRY 121 240 push rbp 122 241 mov rbp, rsp … … 136 255 137 256 leave 257 LOG_EXIT 138 258 ret 139 259 ENDPROC WrapGCC2MSC5Int … … 141 261 142 262 BEGINPROC WrapGCC2MSC6Int 263 LOG_ENTRY 143 264 push rbp 144 265 mov rbp, rsp … … 159 280 160 281 leave 282 LOG_EXIT 161 283 ret 162 284 ENDPROC WrapGCC2MSC6Int … … 164 286 165 287 BEGINPROC WrapGCC2MSC7Int 288 LOG_ENTRY 166 289 push rbp 167 290 mov rbp, rsp … … 184 307 185 308 leave 309 LOG_EXIT 186 310 ret 187 311 ENDPROC WrapGCC2MSC7Int … … 189 313 190 314 BEGINPROC WrapGCC2MSC8Int 315 LOG_ENTRY 191 316 push rbp 192 317 mov rbp, rsp … … 211 336 212 337 leave 338 LOG_EXIT 213 339 ret 214 340 ENDPROC WrapGCC2MSC8Int … … 216 342 217 343 BEGINPROC WrapGCC2MSC9Int 344 LOG_ENTRY 218 345 push rbp 219 346 mov rbp, rsp … … 240 367 241 368 leave 369 LOG_EXIT 242 370 ret 243 371 ENDPROC WrapGCC2MSC9Int … … 245 373 246 374 BEGINPROC WrapGCC2MSC10Int 375 LOG_ENTRY 247 376 push rbp 248 377 mov rbp, rsp … … 271 400 272 401 leave 402 LOG_EXIT 273 403 ret 274 404 ENDPROC WrapGCC2MSC10Int … … 276 406 277 407 BEGINPROC WrapGCC2MSC11Int 408 LOG_ENTRY 278 409 push rbp 279 410 mov rbp, rsp … … 304 435 305 436 leave 437 LOG_EXIT 306 438 ret 307 439 ENDPROC WrapGCC2MSC11Int … … 309 441 310 442 BEGINPROC WrapGCC2MSC12Int 443 LOG_ENTRY 311 444 push rbp 312 445 mov rbp, rsp … … 339 472 340 473 leave 474 LOG_EXIT 341 475 ret 342 476 ENDPROC WrapGCC2MSC12Int … … 345 479 346 480 BEGINPROC WrapGCC2MSCVariadictInt 481 LOG_ENTRY 347 482 %ifdef DEBUG 348 483 ; check that there are NO floting point arguments in XMM registers! … … 373 508 374 509 add rsp, 30h 510 LOG_EXIT 375 511 jmp rsi 376 512 ; (*) unconditionally spill the registers, just in case '...' implies weird stuff on MSC. Check this out! … … 385 521 386 522 BEGINPROC WrapMSC2GCC0Int 523 LOG_ENTRY 387 524 push rbp 388 525 mov rbp, rsp … … 401 538 mov rsi, [ebp - 10h] 402 539 leave 540 LOG_EXIT 403 541 ret 404 542 ENDPROC WrapMSC2GCC0Int … … 406 544 407 545 BEGINPROC WrapMSC2GCC1Int 408 push rbp 409 mov rbp, rsp 410 sub rsp, 20h 411 mov [ebp - 10h], rsi 412 mov [ebp - 18h], rdi 413 414 mov rdi, rcx 415 %ifdef USE_DIRECT_CALLS 416 call $+5+0deadbeefh 417 %else 418 mov rax, 0xdeadf00df00ddead 419 call rax 420 %endif 421 422 mov rdi, [ebp - 18h] 423 mov rsi, [ebp - 10h] 424 leave 546 LOG_ENTRY 547 push rbp 548 mov rbp, rsp 549 sub rsp, 20h 550 mov [ebp - 10h], rsi 551 mov [ebp - 18h], rdi 552 553 mov rdi, rcx 554 %ifdef USE_DIRECT_CALLS 555 call $+5+0deadbeefh 556 %else 557 mov rax, 0xdeadf00df00ddead 558 call rax 559 %endif 560 561 mov rdi, [ebp - 18h] 562 mov rsi, [ebp - 10h] 563 leave 564 LOG_EXIT 425 565 ret 426 566 ENDPROC WrapMSC2GCC1Int … … 428 568 429 569 BEGINPROC WrapMSC2GCC2Int 570 LOG_ENTRY 430 571 push rbp 431 572 mov rbp, rsp … … 446 587 mov rsi, [ebp - 10h] 447 588 leave 589 LOG_EXIT 448 590 ret 449 591 ENDPROC WrapMSC2GCC2Int … … 451 593 452 594 BEGINPROC WrapMSC2GCC3Int 595 LOG_ENTRY 453 596 push rbp 454 597 mov rbp, rsp … … 465 608 mov rsi, [ebp - 10h] 466 609 leave 610 LOG_EXIT 467 611 ret 468 612 ENDPROC WrapMSC2GCC3Int … … 470 614 471 615 BEGINPROC WrapMSC2GCC4Int 616 LOG_ENTRY 472 617 push rbp 473 618 mov rbp, rsp … … 485 630 mov rsi, [ebp - 10h] 486 631 leave 632 LOG_EXIT 487 633 ret 488 634 ENDPROC WrapMSC2GCC4Int … … 490 636 491 637 BEGINPROC WrapMSC2GCC5Int 638 LOG_ENTRY 492 639 push rbp 493 640 mov rbp, rsp … … 506 653 mov rsi, [ebp - 10h] 507 654 leave 655 LOG_EXIT 508 656 ret 509 657 ENDPROC WrapMSC2GCC5Int … … 511 659 512 660 BEGINPROC WrapMSC2GCC6Int 661 LOG_ENTRY 513 662 push rbp 514 663 mov rbp, rsp … … 528 677 mov rsi, [ebp - 10h] 529 678 leave 679 LOG_EXIT 530 680 ret 531 681 ENDPROC WrapMSC2GCC6Int … … 533 683 534 684 BEGINPROC WrapMSC2GCC7Int 685 LOG_ENTRY 535 686 push rbp 536 687 mov rbp, rsp … … 552 703 mov rsi, [ebp - 10h] 553 704 leave 705 LOG_EXIT 554 706 ret 555 707 ENDPROC WrapMSC2GCC7Int … … 557 709 558 710 BEGINPROC WrapMSC2GCC8Int 711 LOG_ENTRY 559 712 push rbp 560 713 mov rbp, rsp … … 578 731 mov rsi, [ebp - 10h] 579 732 leave 733 LOG_EXIT 580 734 ret 581 735 ENDPROC WrapMSC2GCC8Int … … 583 737 584 738 BEGINPROC WrapMSC2GCC9Int 739 LOG_ENTRY 585 740 push rbp 586 741 mov rbp, rsp … … 606 761 mov rsi, [ebp - 10h] 607 762 leave 763 LOG_EXIT 608 764 ret 609 765 ENDPROC WrapMSC2GCC9Int
Note:
See TracChangeset
for help on using the changeset viewer.