- Timestamp:
- Jul 18, 2011 2:51:35 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllAImpl.asm
r38019 r38025 28 28 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 29 29 30 ; 31 ; We employ some macro assembly here to hid the calling convention differences. 32 ; 33 %ifdef RT_ARCH_AMD64 34 %macro PROLOGUE_1_ARGS 0 35 %endmacro 36 %macro EPILOGUE_1_ARGS 0 37 %endmacro 38 %macro PROLOGUE_2_ARGS 0 39 %endmacro 40 %macro EPILOGUE_2_ARGS 0 41 %endmacro 42 %macro PROLOGUE_3_ARGS 0 43 %endmacro 44 %macro EPILOGUE_3_ARGS 0 45 %endmacro 46 %macro PROLOGUE_4_ARGS 0 47 %endmacro 48 %macro EPILOGUE_4_ARGS 0 49 %endmacro 50 51 %ifdef ASM_CALL64_GCC 52 %define A0 rdi 53 %define A0_32 edi 54 %define A0_16 di 55 %define A0_8 dil 56 57 %define A1 rsi 58 %define A1_32 esi 59 %define A1_16 si 60 %define A1_8 sil 61 62 %define A2 rdx 63 %define A2_32 edx 64 %define A2_16 dx 65 %define A2_8 dl 66 67 %define A3 rcx 68 %define A3_32 ecx 69 %define A3_16 cx 70 %endif 71 72 %ifdef ASM_CALL64_MSC 73 %define A0 rcx 74 %define A0_32 ecx 75 %define A0_16 cx 76 %define A0_8 cl 77 78 %define A1 rdx 79 %define A1_32 edx 80 %define A1_16 dx 81 %define A1_8 dl 82 83 %define A2 r8 84 %define A2_32 r8d 85 %define A2_16 r8w 86 %define A2_8 r8b 87 88 %define A3 r9 89 %define A3_32 r9d 90 %define A3_16 r9w 91 %endif 92 93 %define T0 rax 94 %define T0_32 eax 95 %define T0_16 ax 96 %define T0_8 al 97 98 %define T1 r11 99 %define T1_32 r11d 100 %define T1_16 r11w 101 %define T1_8 r11b 102 30 ;; 31 ; RET XX / RET wrapper for fastcall. 32 ; 33 %macro RET_FASTCALL 1 34 %ifdef RT_ARCH_X86 35 %ifdef RT_OS_WINDOWS 36 ret %1 37 %else 38 ret 39 %endif 103 40 %else 104 ; x86 105 %macro PROLOGUE_1_ARGS 0 106 push edi 107 %endmacro 108 %macro EPILOGUE_1_ARGS 0 109 pop edi 110 %endmacro 111 112 %macro PROLOGUE_2_ARGS 0 113 push edi 114 %endmacro 115 %macro EPILOGUE_2_ARGS 0 116 pop edi 117 %endmacro 118 119 %macro PROLOGUE_3_ARGS 0 120 push ebx 121 mov ebx, [esp + 4 + 4] 122 push edi 123 %endmacro 124 %macro EPILOGUE_3_ARGS 0 125 pop edi 126 pop ebx 127 %endmacro 128 129 %macro PROLOGUE_4_ARGS 0 130 push ebx 131 push edi 132 push esi 133 mov ebx, [esp + 12 + 4 + 0] 134 mov esi, [esp + 12 + 4 + 4] 135 %endmacro 136 %macro EPILOGUE_4_ARGS 0 137 pop esi 138 pop edi 139 pop ebx 140 %endmacro 141 142 %define A0 ecx 143 %define A0_32 ecx 144 %define A0_16 cx 145 %define A0_8 cl 146 147 %define A1 edx 148 %define A1_32 edx 149 %define A1_16 dx 150 %define A1_8 dl 151 152 %define A2 ebx 153 %define A2_32 ebx 154 %define A2_16 bx 155 %define A2_8 bl 156 157 %define A3 esi 158 %define A3_32 esi 159 %define A3_16 si 160 161 %define T0 eax 162 %define T0_32 eax 163 %define T0_16 ax 164 %define T0_8 al 165 166 %define T1 edi 167 %define T1_32 edi 168 %define T1_16 di 41 ret 169 42 %endif 43 %endmacro 170 44 171 45 ;; … … 204 78 NAME_FASTCALL(%1,%2,@): 205 79 %endmacro 80 81 82 ; 83 ; We employ some macro assembly here to hid the calling convention differences. 84 ; 85 %ifdef RT_ARCH_AMD64 86 %macro PROLOGUE_1_ARGS 0 87 %endmacro 88 %macro EPILOGUE_1_ARGS 0 89 %endmacro 90 %macro PROLOGUE_2_ARGS 0 91 %endmacro 92 %macro EPILOGUE_2_ARGS 0 93 %endmacro 94 %macro PROLOGUE_3_ARGS 0 95 %endmacro 96 %macro EPILOGUE_3_ARGS 0 97 %endmacro 98 %macro PROLOGUE_4_ARGS 0 99 %endmacro 100 %macro EPILOGUE_4_ARGS 0 101 %endmacro 102 103 %ifdef ASM_CALL64_GCC 104 %define A0 rdi 105 %define A0_32 edi 106 %define A0_16 di 107 %define A0_8 dil 108 109 %define A1 rsi 110 %define A1_32 esi 111 %define A1_16 si 112 %define A1_8 sil 113 114 %define A2 rdx 115 %define A2_32 edx 116 %define A2_16 dx 117 %define A2_8 dl 118 119 %define A3 rcx 120 %define A3_32 ecx 121 %define A3_16 cx 122 %endif 123 124 %ifdef ASM_CALL64_MSC 125 %define A0 rcx 126 %define A0_32 ecx 127 %define A0_16 cx 128 %define A0_8 cl 129 130 %define A1 rdx 131 %define A1_32 edx 132 %define A1_16 dx 133 %define A1_8 dl 134 135 %define A2 r8 136 %define A2_32 r8d 137 %define A2_16 r8w 138 %define A2_8 r8b 139 140 %define A3 r9 141 %define A3_32 r9d 142 %define A3_16 r9w 143 %endif 144 145 %define T0 rax 146 %define T0_32 eax 147 %define T0_16 ax 148 %define T0_8 al 149 150 %define T1 r11 151 %define T1_32 r11d 152 %define T1_16 r11w 153 %define T1_8 r11b 154 155 %else 156 ; x86 157 %macro PROLOGUE_1_ARGS 0 158 push edi 159 %endmacro 160 %macro EPILOGUE_1_ARGS 1 161 pop edi 162 RET_FASTCALL %1 163 %endmacro 164 165 %macro PROLOGUE_2_ARGS 0 166 push edi 167 %endmacro 168 %macro EPILOGUE_2_ARGS 1 169 pop edi 170 RET_FASTCALL %1 171 %endmacro 172 173 %macro PROLOGUE_3_ARGS 0 174 push ebx 175 mov ebx, [esp + 4 + 4] 176 push edi 177 %endmacro 178 %macro EPILOGUE_3_ARGS 1 179 pop edi 180 pop ebx 181 RET_FASTCALL %1 182 %endmacro 183 184 %macro PROLOGUE_4_ARGS 0 185 push ebx 186 push edi 187 push esi 188 mov ebx, [esp + 12 + 4 + 0] 189 mov esi, [esp + 12 + 4 + 4] 190 %endmacro 191 %macro EPILOGUE_4_ARGS 1 192 pop esi 193 pop edi 194 pop ebx 195 RET_FASTCALL %1 196 %endmacro 197 198 %define A0 ecx 199 %define A0_32 ecx 200 %define A0_16 cx 201 %define A0_8 cl 202 203 %define A1 edx 204 %define A1_32 edx 205 %define A1_16 dx 206 %define A1_8 dl 207 208 %define A2 ebx 209 %define A2_32 ebx 210 %define A2_16 bx 211 %define A2_8 bl 212 213 %define A3 esi 214 %define A3_32 esi 215 %define A3_16 si 216 217 %define T0 eax 218 %define T0_32 eax 219 %define T0_16 ax 220 %define T0_8 al 221 222 %define T1 edi 223 %define T1_32 edi 224 %define T1_16 di 225 %endif 206 226 207 227 … … 269 289 %1 byte [A0], A1_8 270 290 IEM_SAVE_FLAGS A2, %3, %4 271 EPILOGUE_3_ARGS 272 ret 291 EPILOGUE_3_ARGS 4 273 292 ENDPROC iemAImpl_ %+ %1 %+ _u8 274 293 … … 278 297 %1 word [A0], A1_16 279 298 IEM_SAVE_FLAGS A2, %3, %4 280 EPILOGUE_3_ARGS 281 ret 299 EPILOGUE_3_ARGS 4 282 300 ENDPROC iemAImpl_ %+ %1 %+ _u16 283 301 … … 287 305 %1 dword [A0], A1_32 288 306 IEM_SAVE_FLAGS A2, %3, %4 289 EPILOGUE_3_ARGS 290 ret 307 EPILOGUE_3_ARGS 4 291 308 ENDPROC iemAImpl_ %+ %1 %+ _u32 292 309 … … 297 314 %1 qword [A0], A1 298 315 IEM_SAVE_FLAGS A2, %3, %4 299 EPILOGUE_3_ARGS 300 ret 316 EPILOGUE_3_ARGS 8 301 317 ENDPROC iemAImpl_ %+ %1 %+ _u64 302 318 %else ; stub it for now - later, replace with hand coded stuff. … … 314 330 lock %1 byte [A0], A1_8 315 331 IEM_SAVE_FLAGS A2, %3, %4 316 EPILOGUE_3_ARGS 317 ret 332 EPILOGUE_3_ARGS 4 318 333 ENDPROC iemAImpl_ %+ %1 %+ _u8_locked 319 334 … … 323 338 lock %1 word [A0], A1_16 324 339 IEM_SAVE_FLAGS A2, %3, %4 325 EPILOGUE_3_ARGS 326 ret 340 EPILOGUE_3_ARGS 4 327 341 ENDPROC iemAImpl_ %+ %1 %+ _u16_locked 328 342 … … 332 346 lock %1 dword [A0], A1_32 333 347 IEM_SAVE_FLAGS A2, %3, %4 334 EPILOGUE_3_ARGS 335 ret 348 EPILOGUE_3_ARGS 4 336 349 ENDPROC iemAImpl_ %+ %1 %+ _u32_locked 337 350 … … 342 355 lock %1 qword [A0], A1 343 356 IEM_SAVE_FLAGS A2, %3, %4 344 EPILOGUE_3_ARGS 345 ret 357 EPILOGUE_3_ARGS 8 346 358 ENDPROC iemAImpl_ %+ %1 %+ _u64_locked 347 359 %else ; stub it for now - later, replace with hand coded stuff. 348 360 BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u64_locked, 16 349 361 int3 350 ret 362 ret 8 351 363 ENDPROC iemAImpl_ %+ %1 %+ _u64_locked 352 364 %endif ; !RT_ARCH_AMD64 … … 388 400 %1 word [A0], A1_16 389 401 IEM_SAVE_FLAGS A2, %3, %4 390 EPILOGUE_3_ARGS 391 ret 402 EPILOGUE_3_ARGS 4 392 403 ENDPROC iemAImpl_ %+ %1 %+ _u16 393 404 … … 397 408 %1 dword [A0], A1_32 398 409 IEM_SAVE_FLAGS A2, %3, %4 399 EPILOGUE_3_ARGS 400 ret 410 EPILOGUE_3_ARGS 4 401 411 ENDPROC iemAImpl_ %+ %1 %+ _u32 402 412 … … 407 417 %1 qword [A0], A1 408 418 IEM_SAVE_FLAGS A2, %3, %4 409 EPILOGUE_3_ARGS 410 ret 419 EPILOGUE_3_ARGS 8 411 420 ENDPROC iemAImpl_ %+ %1 %+ _u64 412 421 %else ; stub it for now - later, replace with hand coded stuff. 413 422 BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u64, 16 414 423 int3 415 ret 424 ret 8 416 425 ENDPROC iemAImpl_ %+ %1 %+ _u64 417 426 %endif ; !RT_ARCH_AMD64 … … 424 433 lock %1 word [A0], A1_16 425 434 IEM_SAVE_FLAGS A2, %3, %4 426 EPILOGUE_3_ARGS 427 ret 435 EPILOGUE_3_ARGS 4 428 436 ENDPROC iemAImpl_ %+ %1 %+ _u16_locked 429 437 … … 433 441 lock %1 dword [A0], A1_32 434 442 IEM_SAVE_FLAGS A2, %3, %4 435 EPILOGUE_3_ARGS 436 ret 443 EPILOGUE_3_ARGS 4 437 444 ENDPROC iemAImpl_ %+ %1 %+ _u32_locked 438 445 … … 443 450 lock %1 qword [A0], A1 444 451 IEM_SAVE_FLAGS A2, %3, %4 445 EPILOGUE_3_ARGS 446 ret 452 EPILOGUE_3_ARGS 8 447 453 ENDPROC iemAImpl_ %+ %1 %+ _u64_locked 448 454 %else ; stub it for now - later, replace with hand coded stuff. 449 455 BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u64_locked, 16 450 456 int3 451 ret 457 ret 8 452 458 ENDPROC iemAImpl_ %+ %1 %+ _u64_locked 453 459 %endif ; !RT_ARCH_AMD64 … … 480 486 mov [A0], T0_16 481 487 IEM_SAVE_FLAGS A2, %2, %3 482 EPILOGUE_3_ARGS 483 ret 488 EPILOGUE_3_ARGS 4 484 489 ENDPROC iemAImpl_ %+ %1 %+ _u16 485 490 … … 490 495 mov [A0], T0_32 491 496 IEM_SAVE_FLAGS A2, %2, %3 492 EPILOGUE_3_ARGS 493 ret 497 EPILOGUE_3_ARGS 4 494 498 ENDPROC iemAImpl_ %+ %1 %+ _u32 495 499 … … 501 505 mov [A0], T0 502 506 IEM_SAVE_FLAGS A2, %2, %3 503 EPILOGUE_3_ARGS 504 ret 507 EPILOGUE_3_ARGS 8 505 508 ENDPROC iemAImpl_ %+ %1 %+ _u64 506 509 %else ; stub it for now - later, replace with hand coded stuff. 507 510 BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u64, 16 508 511 int3 509 ret 512 ret 8 510 513 ENDPROC iemAImpl_ %+ %1 %+ _u64 511 514 %endif ; !RT_ARCH_AMD64 … … 526 529 mov [A0], A1_16 527 530 IEM_SAVE_FLAGS A2, (X86_EFL_OF | X86_EFL_CF), (X86_EFL_SF | X86_EFL_ZF | X86_EFL_AF | X86_EFL_PF) 528 EPILOGUE_3_ARGS 529 ret 531 EPILOGUE_3_ARGS 4 530 532 ENDPROC iemAImpl_imul_two_u16 531 533 … … 536 538 mov [A0], A1_32 537 539 IEM_SAVE_FLAGS A2, (X86_EFL_OF | X86_EFL_CF), (X86_EFL_SF | X86_EFL_ZF | X86_EFL_AF | X86_EFL_PF) 538 EPILOGUE_3_ARGS 539 ret 540 EPILOGUE_3_ARGS 4 540 541 ENDPROC iemAImpl_imul_two_u32 541 542 … … 550 551 int3 ;; @todo implement me 551 552 %endif 552 EPILOGUE_3_ARGS 553 ret 553 EPILOGUE_3_ARGS 8 554 554 ENDPROC iemAImpl_imul_two_u64 555 555 … … 567 567 xchg [A0], T0_8 568 568 mov [A1], T0_8 569 EPILOGUE_2_ARGS 570 ret 569 EPILOGUE_2_ARGS 0 571 570 ENDPROC iemAImpl_xchg_u8 572 571 … … 576 575 xchg [A0], T0_16 577 576 mov [A1], T0_16 578 EPILOGUE_2_ARGS 579 ret 577 EPILOGUE_2_ARGS 0 580 578 ENDPROC iemAImpl_xchg_u16 581 579 … … 585 583 xchg [A0], T0_32 586 584 mov [A1], T0_32 587 EPILOGUE_2_ARGS 588 ret 585 EPILOGUE_2_ARGS 0 589 586 ENDPROC iemAImpl_xchg_u32 590 587 … … 595 592 xchg [A0], T0 596 593 mov [A1], T0 597 EPILOGUE_2_ARGS 598 ret 594 EPILOGUE_2_ARGS 0 599 595 %else 600 596 int3 597 ret 0 601 598 %endif 602 599 ENDPROC iemAImpl_xchg_u64 … … 618 615 mov [A1], T0_8 619 616 IEM_SAVE_FLAGS A2, (X86_EFL_OF | X86_EFL_SF | X86_EFL_ZF | X86_EFL_AF | X86_EFL_PF | X86_EFL_CF), 0 620 EPILOGUE_3_ARGS 621 ret 617 EPILOGUE_3_ARGS 4 622 618 ENDPROC iemAImpl_xadd_u8 623 619 … … 629 625 mov [A1], T0_16 630 626 IEM_SAVE_FLAGS A2, (X86_EFL_OF | X86_EFL_SF | X86_EFL_ZF | X86_EFL_AF | X86_EFL_PF | X86_EFL_CF), 0 631 EPILOGUE_3_ARGS 632 ret 627 EPILOGUE_3_ARGS 4 633 628 ENDPROC iemAImpl_xadd_u16 634 629 … … 640 635 mov [A1], T0_32 641 636 IEM_SAVE_FLAGS A2, (X86_EFL_OF | X86_EFL_SF | X86_EFL_ZF | X86_EFL_AF | X86_EFL_PF | X86_EFL_CF), 0 642 EPILOGUE_3_ARGS 643 ret 637 EPILOGUE_3_ARGS 4 644 638 ENDPROC iemAImpl_xadd_u32 645 639 … … 652 646 mov [A1], T0 653 647 IEM_SAVE_FLAGS A2, (X86_EFL_OF | X86_EFL_SF | X86_EFL_ZF | X86_EFL_AF | X86_EFL_PF | X86_EFL_CF), 0 654 EPILOGUE_3_ARGS 655 ret 648 EPILOGUE_3_ARGS 4 656 649 %else 657 650 int3 651 ret 4 658 652 %endif 659 653 ENDPROC iemAImpl_xadd_u64 … … 666 660 mov [A1], T0_8 667 661 IEM_SAVE_FLAGS A2, (X86_EFL_OF | X86_EFL_SF | X86_EFL_ZF | X86_EFL_AF | X86_EFL_PF | X86_EFL_CF), 0 668 EPILOGUE_3_ARGS 669 ret 662 EPILOGUE_3_ARGS 4 670 663 ENDPROC iemAImpl_xadd_u8_locked 671 664 … … 677 670 mov [A1], T0_16 678 671 IEM_SAVE_FLAGS A2, (X86_EFL_OF | X86_EFL_SF | X86_EFL_ZF | X86_EFL_AF | X86_EFL_PF | X86_EFL_CF), 0 679 EPILOGUE_3_ARGS 680 ret 672 EPILOGUE_3_ARGS 4 681 673 ENDPROC iemAImpl_xadd_u16_locked 682 674 … … 688 680 mov [A1], T0_32 689 681 IEM_SAVE_FLAGS A2, (X86_EFL_OF | X86_EFL_SF | X86_EFL_ZF | X86_EFL_AF | X86_EFL_PF | X86_EFL_CF), 0 690 EPILOGUE_3_ARGS 691 ret 682 EPILOGUE_3_ARGS 4 692 683 ENDPROC iemAImpl_xadd_u32_locked 693 684 … … 700 691 mov [A1], T0 701 692 IEM_SAVE_FLAGS A2, (X86_EFL_OF | X86_EFL_SF | X86_EFL_ZF | X86_EFL_AF | X86_EFL_PF | X86_EFL_CF), 0 702 EPILOGUE_3_ARGS 703 ret 693 EPILOGUE_3_ARGS 4 704 694 %else 705 695 int3 696 ret 4 706 697 %endif 707 698 ENDPROC iemAImpl_xadd_u64_locked … … 729 720 %1 byte [A0] 730 721 IEM_SAVE_FLAGS A1, %2, %3 731 EPILOGUE_2_ARGS 732 ret 722 EPILOGUE_2_ARGS 0 733 723 ENDPROC iemAImpl_ %+ %1 %+ _u8 734 724 … … 738 728 lock %1 byte [A0] 739 729 IEM_SAVE_FLAGS A1, %2, %3 740 EPILOGUE_2_ARGS 741 ret 730 EPILOGUE_2_ARGS 0 742 731 ENDPROC iemAImpl_ %+ %1 %+ _u8_locked 743 732 … … 747 736 %1 word [A0] 748 737 IEM_SAVE_FLAGS A1, %2, %3 749 EPILOGUE_2_ARGS 750 ret 738 EPILOGUE_2_ARGS 0 751 739 ENDPROC iemAImpl_ %+ %1 %+ _u16 752 740 … … 756 744 lock %1 word [A0] 757 745 IEM_SAVE_FLAGS A1, %2, %3 758 EPILOGUE_2_ARGS 759 ret 746 EPILOGUE_2_ARGS 0 760 747 ENDPROC iemAImpl_ %+ %1 %+ _u16_locked 761 748 … … 765 752 %1 dword [A0] 766 753 IEM_SAVE_FLAGS A1, %2, %3 767 EPILOGUE_2_ARGS 768 ret 754 EPILOGUE_2_ARGS 0 769 755 ENDPROC iemAImpl_ %+ %1 %+ _u32 770 756 … … 774 760 lock %1 dword [A0] 775 761 IEM_SAVE_FLAGS A1, %2, %3 776 EPILOGUE_2_ARGS 777 ret 762 EPILOGUE_2_ARGS 0 778 763 ENDPROC iemAImpl_ %+ %1 %+ _u32_locked 779 764 … … 784 769 %1 qword [A0] 785 770 IEM_SAVE_FLAGS A1, %2, %3 786 EPILOGUE_2_ARGS 787 ret 771 EPILOGUE_2_ARGS 0 788 772 ENDPROC iemAImpl_ %+ %1 %+ _u64 789 773 … … 793 777 lock %1 qword [A0] 794 778 IEM_SAVE_FLAGS A1, %2, %3 795 EPILOGUE_2_ARGS 796 ret 779 EPILOGUE_2_ARGS 0 797 780 ENDPROC iemAImpl_ %+ %1 %+ _u64_locked 798 781 %else … … 800 783 BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u64, 8 801 784 int3 802 ret 785 ret 0 803 786 ENDPROC iemAImpl_ %+ %1 %+ _u64 804 787 BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u64_locked, 8 805 788 int3 806 ret 789 ret 0 807 790 ENDPROC iemAImpl_ %+ %1 %+ _u64_locked 808 791 %endif … … 845 828 %endif 846 829 IEM_SAVE_FLAGS A2, %2, %3 847 EPILOGUE_3_ARGS 848 ret 830 EPILOGUE_3_ARGS 4 849 831 ENDPROC iemAImpl_ %+ %1 %+ _u8 850 832 … … 860 842 %endif 861 843 IEM_SAVE_FLAGS A2, %2, %3 862 EPILOGUE_3_ARGS 863 ret 844 EPILOGUE_3_ARGS 4 864 845 ENDPROC iemAImpl_ %+ %1 %+ _u16 865 846 … … 875 856 %endif 876 857 IEM_SAVE_FLAGS A2, %2, %3 877 EPILOGUE_3_ARGS 878 ret 858 EPILOGUE_3_ARGS 4 879 859 ENDPROC iemAImpl_ %+ %1 %+ _u32 880 860 … … 891 871 %endif 892 872 IEM_SAVE_FLAGS A2, %2, %3 893 EPILOGUE_3_ARGS 894 ret 873 EPILOGUE_3_ARGS 4 895 874 ENDPROC iemAImpl_ %+ %1 %+ _u64 896 875 %else ; stub it for now - later, replace with hand coded stuff. 897 876 BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u64, 12 898 877 int3 899 ret 878 ret 4 900 879 ENDPROC iemAImpl_ %+ %1 %+ _u64 901 880 %endif ; !RT_ARCH_AMD64 … … 941 920 %endif 942 921 IEM_SAVE_FLAGS A3, %2, %3 943 EPILOGUE_4_ARGS 944 ret 922 EPILOGUE_4_ARGS 8 945 923 ENDPROC iemAImpl_ %+ %1 %+ _u16 946 924 … … 957 935 %endif 958 936 IEM_SAVE_FLAGS A3, %2, %3 959 EPILOGUE_4_ARGS 960 ret 937 EPILOGUE_4_ARGS 8 961 938 ENDPROC iemAImpl_ %+ %1 %+ _u32 962 939 … … 974 951 %endif 975 952 IEM_SAVE_FLAGS A3, %2, %3 976 EPILOGUE_4_ARGS 977 ret 953 EPILOGUE_4_ARGS 12 978 954 ENDPROC iemAImpl_ %+ %1 %+ _u64 979 955 %else ; stub it for now - later, replace with hand coded stuff. 980 956 BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u64, 20 981 957 int3 982 ret 958 ret 12 983 959 ENDPROC iemAImpl_ %+ %1 %+ _u64 984 960 %endif ; !RT_ARCH_AMD64 … … 1018 994 mov [A0], ax 1019 995 IEM_SAVE_FLAGS A2, %2, %3 1020 EPILOGUE_3_ARGS1021 996 xor eax, eax 1022 ret997 EPILOGUE_3_ARGS 4 1023 998 ENDPROC iemAImpl_ %+ %1 %+ _u8 1024 999 … … 1038 1013 %endif 1039 1014 IEM_SAVE_FLAGS A3, %2, %3 1040 EPILOGUE_4_ARGS1041 1015 xor eax, eax 1042 ret1016 EPILOGUE_4_ARGS 8 1043 1017 ENDPROC iemAImpl_ %+ %1 %+ _u16 1044 1018 … … 1058 1032 %endif 1059 1033 IEM_SAVE_FLAGS A3, %2, %3 1060 EPILOGUE_4_ARGS1061 1034 xor eax, eax 1062 ret1035 EPILOGUE_4_ARGS 8 1063 1036 ENDPROC iemAImpl_ %+ %1 %+ _u32 1064 1037 … … 1079 1052 %endif 1080 1053 IEM_SAVE_FLAGS A3, %2, %3 1081 EPILOGUE_4_ARGS1082 1054 xor eax, eax 1083 ret1055 EPILOGUE_4_ARGS 12 1084 1056 ENDPROC iemAImpl_ %+ %1 %+ _u64 1085 1057 %else ; stub it for now - later, replace with hand coded stuff. 1086 1058 BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u64, 20 1087 1059 int3 1088 ret 1060 ret 12 1089 1061 ENDPROC iemAImpl_ %+ %1 %+ _u64 1090 1062 %endif ; !RT_ARCH_AMD64 … … 1132 1104 1133 1105 .return: 1134 EPILOGUE_3_ARGS 1135 ret 1106 EPILOGUE_3_ARGS 4 1107 1136 1108 .div_zero: 1137 1109 mov eax, -1 … … 1166 1138 1167 1139 .return: 1168 EPILOGUE_4_ARGS 1169 ret1140 EPILOGUE_4_ARGS 8 1141 1170 1142 .div_zero: 1171 1143 mov eax, -1 … … 1201 1173 1202 1174 .return: 1203 EPILOGUE_4_ARGS 1204 ret 1175 EPILOGUE_4_ARGS 8 1176 1205 1177 .div_zero: 1206 1178 mov eax, -1 … … 1237 1209 1238 1210 .return: 1239 EPILOGUE_4_ARGS 1240 ret1211 EPILOGUE_4_ARGS 12 1212 1241 1213 .div_zero: 1242 1214 mov eax, -1
Note:
See TracChangeset
for help on using the changeset viewer.