VirtualBox

Changeset 38025 in vbox for trunk


Ignore:
Timestamp:
Jul 18, 2011 2:51:35 PM (13 years ago)
Author:
vboxsync
Message:

IEMAllAImpl.asm: Fixed fastcall bug.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/IEMAllAImpl.asm

    r38019 r38025  
    2828;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    2929
    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       
    10340%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
    16942%endif
     43%endmacro
    17044
    17145;;
     
    20478NAME_FASTCALL(%1,%2,@):
    20579%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
    206226
    207227
     
    269289        %1      byte [A0], A1_8
    270290        IEM_SAVE_FLAGS                 A2, %3, %4
    271         EPILOGUE_3_ARGS
    272         ret
     291        EPILOGUE_3_ARGS 4
    273292ENDPROC iemAImpl_ %+ %1 %+ _u8
    274293
     
    278297        %1      word [A0], A1_16
    279298        IEM_SAVE_FLAGS                 A2, %3, %4
    280         EPILOGUE_3_ARGS
    281         ret
     299        EPILOGUE_3_ARGS 4
    282300ENDPROC iemAImpl_ %+ %1 %+ _u16
    283301
     
    287305        %1      dword [A0], A1_32
    288306        IEM_SAVE_FLAGS                 A2, %3, %4
    289         EPILOGUE_3_ARGS
    290         ret
     307        EPILOGUE_3_ARGS 4
    291308ENDPROC iemAImpl_ %+ %1 %+ _u32
    292309
     
    297314        %1      qword [A0], A1
    298315        IEM_SAVE_FLAGS                 A2, %3, %4
    299         EPILOGUE_3_ARGS
    300         ret
     316        EPILOGUE_3_ARGS 8
    301317ENDPROC iemAImpl_ %+ %1 %+ _u64
    302318 %else ; stub it for now - later, replace with hand coded stuff.
     
    314330        lock %1 byte [A0], A1_8
    315331        IEM_SAVE_FLAGS                 A2, %3, %4
    316         EPILOGUE_3_ARGS
    317         ret
     332        EPILOGUE_3_ARGS 4
    318333ENDPROC iemAImpl_ %+ %1 %+ _u8_locked
    319334
     
    323338        lock %1 word [A0], A1_16
    324339        IEM_SAVE_FLAGS                 A2, %3, %4
    325         EPILOGUE_3_ARGS
    326         ret
     340        EPILOGUE_3_ARGS 4
    327341ENDPROC iemAImpl_ %+ %1 %+ _u16_locked
    328342
     
    332346        lock %1 dword [A0], A1_32
    333347        IEM_SAVE_FLAGS                 A2, %3, %4
    334         EPILOGUE_3_ARGS
    335         ret
     348        EPILOGUE_3_ARGS  4
    336349ENDPROC iemAImpl_ %+ %1 %+ _u32_locked
    337350
     
    342355        lock %1 qword [A0], A1
    343356        IEM_SAVE_FLAGS                 A2, %3, %4
    344         EPILOGUE_3_ARGS
    345         ret
     357        EPILOGUE_3_ARGS 8
    346358ENDPROC iemAImpl_ %+ %1 %+ _u64_locked
    347359  %else ; stub it for now - later, replace with hand coded stuff.
    348360BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u64_locked, 16
    349361        int3
    350         ret
     362        ret 8
    351363ENDPROC iemAImpl_ %+ %1 %+ _u64_locked
    352364  %endif ; !RT_ARCH_AMD64
     
    388400        %1      word [A0], A1_16
    389401        IEM_SAVE_FLAGS                 A2, %3, %4
    390         EPILOGUE_3_ARGS
    391         ret
     402        EPILOGUE_3_ARGS 4
    392403ENDPROC iemAImpl_ %+ %1 %+ _u16
    393404
     
    397408        %1      dword [A0], A1_32
    398409        IEM_SAVE_FLAGS                 A2, %3, %4
    399         EPILOGUE_3_ARGS
    400         ret
     410        EPILOGUE_3_ARGS 4
    401411ENDPROC iemAImpl_ %+ %1 %+ _u32
    402412
     
    407417        %1      qword [A0], A1
    408418        IEM_SAVE_FLAGS                 A2, %3, %4
    409         EPILOGUE_3_ARGS
    410         ret
     419        EPILOGUE_3_ARGS 8
    411420ENDPROC iemAImpl_ %+ %1 %+ _u64
    412421 %else ; stub it for now - later, replace with hand coded stuff.
    413422BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u64, 16
    414423        int3
    415         ret
     424        ret 8
    416425ENDPROC iemAImpl_ %+ %1 %+ _u64
    417426  %endif ; !RT_ARCH_AMD64
     
    424433        lock %1 word [A0], A1_16
    425434        IEM_SAVE_FLAGS                 A2, %3, %4
    426         EPILOGUE_3_ARGS
    427         ret
     435        EPILOGUE_3_ARGS 4
    428436ENDPROC iemAImpl_ %+ %1 %+ _u16_locked
    429437
     
    433441        lock %1 dword [A0], A1_32
    434442        IEM_SAVE_FLAGS                 A2, %3, %4
    435         EPILOGUE_3_ARGS
    436         ret
     443        EPILOGUE_3_ARGS 4
    437444ENDPROC iemAImpl_ %+ %1 %+ _u32_locked
    438445
     
    443450        lock %1 qword [A0], A1
    444451        IEM_SAVE_FLAGS                 A2, %3, %4
    445         EPILOGUE_3_ARGS
    446         ret
     452        EPILOGUE_3_ARGS 8
    447453ENDPROC iemAImpl_ %+ %1 %+ _u64_locked
    448454  %else ; stub it for now - later, replace with hand coded stuff.
    449455BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u64_locked, 16
    450456        int3
    451         ret
     457        ret 8
    452458ENDPROC iemAImpl_ %+ %1 %+ _u64_locked
    453459  %endif ; !RT_ARCH_AMD64
     
    480486        mov     [A0], T0_16
    481487        IEM_SAVE_FLAGS                 A2, %2, %3
    482         EPILOGUE_3_ARGS
    483         ret
     488        EPILOGUE_3_ARGS 4
    484489ENDPROC iemAImpl_ %+ %1 %+ _u16
    485490
     
    490495        mov     [A0], T0_32
    491496        IEM_SAVE_FLAGS                 A2, %2, %3
    492         EPILOGUE_3_ARGS
    493         ret
     497        EPILOGUE_3_ARGS 4
    494498ENDPROC iemAImpl_ %+ %1 %+ _u32
    495499
     
    501505        mov     [A0], T0
    502506        IEM_SAVE_FLAGS                 A2, %2, %3
    503         EPILOGUE_3_ARGS
    504         ret
     507        EPILOGUE_3_ARGS 8
    505508ENDPROC iemAImpl_ %+ %1 %+ _u64
    506509 %else ; stub it for now - later, replace with hand coded stuff.
    507510BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u64, 16
    508511        int3
    509         ret
     512        ret 8
    510513ENDPROC iemAImpl_ %+ %1 %+ _u64
    511514 %endif ; !RT_ARCH_AMD64
     
    526529        mov     [A0], A1_16
    527530        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
    530532ENDPROC iemAImpl_imul_two_u16
    531533
     
    536538        mov     [A0], A1_32
    537539        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
    540541ENDPROC iemAImpl_imul_two_u32
    541542
     
    550551        int3 ;; @todo implement me
    551552%endif
    552         EPILOGUE_3_ARGS
    553         ret
     553        EPILOGUE_3_ARGS 8
    554554ENDPROC iemAImpl_imul_two_u64
    555555
     
    567567        xchg    [A0], T0_8
    568568        mov     [A1], T0_8
    569         EPILOGUE_2_ARGS
    570         ret
     569        EPILOGUE_2_ARGS 0
    571570ENDPROC iemAImpl_xchg_u8
    572571
     
    576575        xchg    [A0], T0_16
    577576        mov     [A1], T0_16
    578         EPILOGUE_2_ARGS
    579         ret
     577        EPILOGUE_2_ARGS 0
    580578ENDPROC iemAImpl_xchg_u16
    581579
     
    585583        xchg    [A0], T0_32
    586584        mov     [A1], T0_32
    587         EPILOGUE_2_ARGS
    588         ret
     585        EPILOGUE_2_ARGS 0
    589586ENDPROC iemAImpl_xchg_u32
    590587
     
    595592        xchg    [A0], T0
    596593        mov     [A1], T0
    597         EPILOGUE_2_ARGS
    598         ret
     594        EPILOGUE_2_ARGS 0
    599595%else
    600596        int3
     597        ret 0
    601598%endif
    602599ENDPROC iemAImpl_xchg_u64
     
    618615        mov     [A1], T0_8
    619616        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
    622618ENDPROC iemAImpl_xadd_u8
    623619
     
    629625        mov     [A1], T0_16
    630626        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
    633628ENDPROC iemAImpl_xadd_u16
    634629
     
    640635        mov     [A1], T0_32
    641636        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
    644638ENDPROC iemAImpl_xadd_u32
    645639
     
    652646        mov     [A1], T0
    653647        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
    656649%else
    657650        int3
     651        ret 4
    658652%endif
    659653ENDPROC iemAImpl_xadd_u64
     
    666660        mov     [A1], T0_8
    667661        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
    670663ENDPROC iemAImpl_xadd_u8_locked
    671664
     
    677670        mov     [A1], T0_16
    678671        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
    681673ENDPROC iemAImpl_xadd_u16_locked
    682674
     
    688680        mov     [A1], T0_32
    689681        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
    692683ENDPROC iemAImpl_xadd_u32_locked
    693684
     
    700691        mov     [A1], T0
    701692        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
    704694%else
    705695        int3
     696        ret 4
    706697%endif
    707698ENDPROC iemAImpl_xadd_u64_locked
     
    729720        %1      byte [A0]
    730721        IEM_SAVE_FLAGS       A1, %2, %3
    731         EPILOGUE_2_ARGS
    732         ret
     722        EPILOGUE_2_ARGS 0
    733723ENDPROC iemAImpl_ %+ %1 %+ _u8
    734724
     
    738728        lock %1 byte [A0]
    739729        IEM_SAVE_FLAGS       A1, %2, %3
    740         EPILOGUE_2_ARGS
    741         ret
     730        EPILOGUE_2_ARGS 0
    742731ENDPROC iemAImpl_ %+ %1 %+ _u8_locked
    743732
     
    747736        %1      word [A0]
    748737        IEM_SAVE_FLAGS       A1, %2, %3
    749         EPILOGUE_2_ARGS
    750         ret
     738        EPILOGUE_2_ARGS 0
    751739ENDPROC iemAImpl_ %+ %1 %+ _u16
    752740
     
    756744        lock %1 word [A0]
    757745        IEM_SAVE_FLAGS       A1, %2, %3
    758         EPILOGUE_2_ARGS
    759         ret
     746        EPILOGUE_2_ARGS 0
    760747ENDPROC iemAImpl_ %+ %1 %+ _u16_locked
    761748
     
    765752        %1      dword [A0]
    766753        IEM_SAVE_FLAGS       A1, %2, %3
    767         EPILOGUE_2_ARGS
    768         ret
     754        EPILOGUE_2_ARGS 0
    769755ENDPROC iemAImpl_ %+ %1 %+ _u32
    770756
     
    774760        lock %1 dword [A0]
    775761        IEM_SAVE_FLAGS       A1, %2, %3
    776         EPILOGUE_2_ARGS
    777         ret
     762        EPILOGUE_2_ARGS 0
    778763ENDPROC iemAImpl_ %+ %1 %+ _u32_locked
    779764
     
    784769        %1      qword [A0]
    785770        IEM_SAVE_FLAGS       A1, %2, %3
    786         EPILOGUE_2_ARGS
    787         ret
     771        EPILOGUE_2_ARGS 0
    788772ENDPROC iemAImpl_ %+ %1 %+ _u64
    789773
     
    793777        lock %1 qword [A0]
    794778        IEM_SAVE_FLAGS       A1, %2, %3
    795         EPILOGUE_2_ARGS
    796         ret
     779        EPILOGUE_2_ARGS 0
    797780ENDPROC iemAImpl_ %+ %1 %+ _u64_locked
    798781 %else
     
    800783BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u64, 8
    801784        int3
    802         ret
     785        ret 0
    803786ENDPROC iemAImpl_ %+ %1 %+ _u64
    804787BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u64_locked, 8
    805788        int3
    806         ret
     789        ret 0
    807790ENDPROC iemAImpl_ %+ %1 %+ _u64_locked
    808791 %endif
     
    845828 %endif
    846829        IEM_SAVE_FLAGS       A2, %2, %3
    847         EPILOGUE_3_ARGS
    848         ret
     830        EPILOGUE_3_ARGS 4
    849831ENDPROC iemAImpl_ %+ %1 %+ _u8
    850832
     
    860842 %endif
    861843        IEM_SAVE_FLAGS       A2, %2, %3
    862         EPILOGUE_3_ARGS
    863         ret
     844        EPILOGUE_3_ARGS 4
    864845ENDPROC iemAImpl_ %+ %1 %+ _u16
    865846
     
    875856 %endif
    876857        IEM_SAVE_FLAGS       A2, %2, %3
    877         EPILOGUE_3_ARGS
    878         ret
     858        EPILOGUE_3_ARGS 4
    879859ENDPROC iemAImpl_ %+ %1 %+ _u32
    880860
     
    891871 %endif
    892872        IEM_SAVE_FLAGS       A2, %2, %3
    893         EPILOGUE_3_ARGS
    894         ret
     873        EPILOGUE_3_ARGS 4
    895874ENDPROC iemAImpl_ %+ %1 %+ _u64
    896875 %else ; stub it for now - later, replace with hand coded stuff.
    897876BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u64, 12
    898877        int3
    899         ret
     878        ret 4
    900879ENDPROC iemAImpl_ %+ %1 %+ _u64
    901880  %endif ; !RT_ARCH_AMD64
     
    941920 %endif
    942921        IEM_SAVE_FLAGS       A3, %2, %3
    943         EPILOGUE_4_ARGS
    944         ret
     922        EPILOGUE_4_ARGS 8
    945923ENDPROC iemAImpl_ %+ %1 %+ _u16
    946924
     
    957935 %endif
    958936        IEM_SAVE_FLAGS       A3, %2, %3
    959         EPILOGUE_4_ARGS
    960         ret
     937        EPILOGUE_4_ARGS 8
    961938ENDPROC iemAImpl_ %+ %1 %+ _u32
    962939
     
    974951 %endif
    975952        IEM_SAVE_FLAGS       A3, %2, %3
    976         EPILOGUE_4_ARGS
    977         ret
     953        EPILOGUE_4_ARGS 12
    978954ENDPROC iemAImpl_ %+ %1 %+ _u64
    979955 %else ; stub it for now - later, replace with hand coded stuff.
    980956BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u64, 20
    981957        int3
    982         ret
     958        ret 12
    983959ENDPROC iemAImpl_ %+ %1 %+ _u64
    984960  %endif ; !RT_ARCH_AMD64
     
    1018994        mov     [A0], ax
    1019995        IEM_SAVE_FLAGS       A2, %2, %3
    1020         EPILOGUE_3_ARGS
    1021996        xor     eax, eax
    1022         ret
     997        EPILOGUE_3_ARGS 4
    1023998ENDPROC iemAImpl_ %+ %1 %+ _u8
    1024999
     
    10381013 %endif
    10391014        IEM_SAVE_FLAGS       A3, %2, %3
    1040         EPILOGUE_4_ARGS
    10411015        xor     eax, eax
    1042         ret
     1016        EPILOGUE_4_ARGS 8
    10431017ENDPROC iemAImpl_ %+ %1 %+ _u16
    10441018
     
    10581032 %endif
    10591033        IEM_SAVE_FLAGS       A3, %2, %3
    1060         EPILOGUE_4_ARGS
    10611034        xor     eax, eax
    1062         ret
     1035        EPILOGUE_4_ARGS 8
    10631036ENDPROC iemAImpl_ %+ %1 %+ _u32
    10641037
     
    10791052 %endif
    10801053        IEM_SAVE_FLAGS       A3, %2, %3
    1081         EPILOGUE_4_ARGS
    10821054        xor     eax, eax
    1083         ret
     1055        EPILOGUE_4_ARGS 12
    10841056ENDPROC iemAImpl_ %+ %1 %+ _u64
    10851057 %else ; stub it for now - later, replace with hand coded stuff.
    10861058BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u64, 20
    10871059        int3
    1088         ret
     1060        ret 12
    10891061ENDPROC iemAImpl_ %+ %1 %+ _u64
    10901062  %endif ; !RT_ARCH_AMD64
     
    11321104
    11331105.return:
    1134         EPILOGUE_3_ARGS
    1135         ret
     1106        EPILOGUE_3_ARGS 4
     1107
    11361108.div_zero:
    11371109        mov     eax, -1
     
    11661138
    11671139.return:
    1168         EPILOGUE_4_ARGS
    1169         ret
     1140        EPILOGUE_4_ARGS 8
     1141       
    11701142.div_zero:
    11711143        mov     eax, -1
     
    12011173
    12021174.return:
    1203         EPILOGUE_4_ARGS
    1204         ret
     1175        EPILOGUE_4_ARGS 8
     1176
    12051177.div_zero:
    12061178        mov     eax, -1
     
    12371209
    12381210.return:
    1239         EPILOGUE_4_ARGS
    1240         ret
     1211        EPILOGUE_4_ARGS 12
     1212       
    12411213.div_zero:
    12421214        mov     eax, -1
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette