VirtualBox

Changeset 102656 in vbox for trunk/src/VBox/VMM/VMMAll


Ignore:
Timestamp:
Dec 20, 2023 4:33:54 PM (15 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
160818
Message:

IEMAllAImpl.asm: Windows and SysV ABI does not guarantee that top bits of byte/word/dword arguments passed in 64-bit registers are cleared. We must clear them ourselves!

File:
1 edited

Legend:

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

    r101376 r102656  
    140140  %define A3_32     ecx
    141141  %define A3_16     cx
     142  %define A3_8      cl
    142143 %endif
    143144
     
    161162  %define A3_32     r9d
    162163  %define A3_16     r9w
     164  %define A3_8      r9b
    163165 %endif
    164166
     
    40204022        IEMIMPL_MMX_PROLOGUE
    40214023
     4024        movzx   A2, A2_8                ; must clear top bits
    40224025        movq    mm1, [A1]
    40234026        movq    mm0, mm0                ; paranoia!
     
    40524055        IEMIMPL_SSE_PROLOGUE
    40534056
     4057        movzx   A2, A2_8                ; must clear top bits
    40544058        movdqu  xmm1, [A1]
    40554059        movdqu  xmm0, xmm1              ; paranoia!
     
    40904094        IEMIMPL_SSE_PROLOGUE
    40914095
     4096        movzx   A2, A2_8                ; must clear top bits
    40924097        vmovdqu  ymm1, [A1]
    40934098        vmovdqu  ymm0, ymm1             ; paranoia!
     
    41314136        IEMIMPL_MMX_PROLOGUE
    41324137
     4138        movzx   A1, A1_8                ; must clear top bits
    41334139        movq    mm0, [A0]
    41344140        lea     T1, [.imm0 xWrtRIP]
     
    41724178        IEMIMPL_SSE_PROLOGUE
    41734179
     4180        movzx   A1, A1_8                ; must clear top bits
    41744181        movdqu  xmm0, [A0]
    41754182        lea     T1, [.imm0 xWrtRIP]
     
    50255032        IEMIMPL_SSE_PROLOGUE
    50265033
     5034        movzx   A2, A2_8                ; must clear top bits
    50275035        movdqu  xmm0, [A0]
    50285036        movdqu  xmm1, [A1]
     
    50645072        IEMIMPL_SSE_PROLOGUE
    50655073
     5074        movzx   A2, A2_8                ; must clear top bits
    50665075        movdqu  xmm0, [A0]
    50675076        movdqu  xmm1, [A1]
     
    51065115        IEMIMPL_AVX_PROLOGUE
    51075116
     5117        movzx   A3, A3_8                ; must clear top bits
    51085118        movdqu  xmm0, [A1]
    51095119        movdqu  xmm1, [A2]
     
    51365146        IEMIMPL_AVX_PROLOGUE
    51375147
     5148        movzx   A3, A3_8                ; must clear top bits
    51385149        vmovdqu ymm0, [A1]
    51395150        vmovdqu ymm1, [A2]
     
    52515262        IEMIMPL_MMX_PROLOGUE
    52525263
     5264        movzx   A2, A2_8                ; must clear top bits
    52535265        movq    mm0, [A0]
    52545266        movq    mm1, A1
     
    52945306        IEMIMPL_SSE_PROLOGUE
    52955307
     5308        movzx   A2, A2_8                ; must clear top bits
    52965309        movdqu  xmm0, [A0]
    52975310        movdqu  xmm1, [A1]
     
    53515364        IEMIMPL_AVX_PROLOGUE
    53525365
     5366        movzx   A3, A3_8                ; must clear top bits
    53535367        movdqu  xmm0, [A1]
    53545368        movdqu  xmm1, [A2]
     
    53845398        IEMIMPL_AVX_PROLOGUE
    53855399
     5400        movzx   A3, A3_8                ; must clear top bits
    53865401        vmovdqu ymm0, [A1]
    53875402        vmovdqu ymm1, [A2]
     
    54505465        IEMIMPL_SSE_PROLOGUE
    54515466
     5467        movzx   A3, A3_8                ; must clear top bits
    54525468        movdqu  xmm0, [A2 + IEMPCMPISTRXSRC.uSrc1]
    54535469        movdqu  xmm1, [A2 + IEMPCMPISTRXSRC.uSrc2]
     
    54925508        IEMIMPL_SSE_PROLOGUE
    54935509
     5510        movzx   A3, A3_8                ; must clear top bits
    54945511        movdqu  xmm0, [A2 + IEMPCMPESTRXSRC.uSrc1]
    54955512        movdqu  xmm1, [A2 + IEMPCMPESTRXSRC.uSrc2]
     
    55385555        IEMIMPL_SSE_PROLOGUE
    55395556
     5557        movzx   A3, A3_8                ; must clear top bits
    55405558        movdqu  xmm1, [A2 + IEMPCMPISTRXSRC.uSrc1]
    55415559        movdqu  xmm2, [A2 + IEMPCMPISTRXSRC.uSrc2]
     
    55795597        IEMIMPL_SSE_PROLOGUE
    55805598
     5599        movzx   A3, A3_8                ; must clear top bits
    55815600        movdqu  xmm1, [A2 + IEMPCMPESTRXSRC.uSrc1]
    55825601        movdqu  xmm2, [A2 + IEMPCMPESTRXSRC.uSrc2]
     
    56245643        IEMIMPL_SSE_PROLOGUE
    56255644
     5645        movzx   A2, A2_8                ; must clear top bits
    56265646        movq    mm0,  [A0]
    56275647        lea     T1, [.imm0 xWrtRIP]
     
    56535673        IEMIMPL_SSE_PROLOGUE
    56545674
     5675        movzx   A2, A2_8                ; must clear top bits
    56555676        movdqu  xmm0, [A0]
    56565677        lea     T1, [.imm0 xWrtRIP]
     
    56905711        IEMIMPL_SSE_PROLOGUE
    56915712
     5713        movzx   A3, A3_8                ; must clear top bits
    56925714        movdqu  xmm0, [A1]
    56935715        lea     T1, [.imm0 xWrtRIP]
     
    57285750        IEMIMPL_SSE_PROLOGUE
    57295751
     5752        movzx   A2, A2_8                ; must clear top bits
    57305753        movq    mm0,  A1
    57315754        lea     T1, [.imm0 xWrtRIP]
     
    57575780        IEMIMPL_SSE_PROLOGUE
    57585781
     5782        movzx   A2, A2_8                ; must clear top bits
    57595783        movdqu  xmm0, [A1]
    57605784        lea     T1, [.imm0 xWrtRIP]
     
    57935817        IEMIMPL_SSE_PROLOGUE
    57945818
     5819        movzx   A2, A2_8                ; must clear top bits
    57955820        movdqu  xmm0, [A1]
    57965821        lea     T1, [.imm0 xWrtRIP]
     
    63756400        SSE_LD_FXSTATE_MXCSR_ONLY A0
    63766401
     6402        movzx   A3, A3_8                ; must clear top bits
    63776403        movdqu  xmm0, [A2 + IEMMEDIAF2XMMSRC.uSrc1]
    63786404        movdqu  xmm1, [A2 + IEMMEDIAF2XMMSRC.uSrc2]
     
    64216447        SSE_LD_FXSTATE_MXCSR_ONLY A0
    64226448
     6449        movzx   A3, A3_8                ; must clear top bits
    64236450        movdqu  xmm0, [A2 + IEMMEDIAF2XMMSRC.uSrc1]
    64246451        movdqu  xmm1, [A2 + IEMMEDIAF2XMMSRC.uSrc2]
     
    64726499        SSE_LD_FXSTATE_MXCSR_ONLY A0
    64736500
     6501        movzx   A3, A3_8                ; must clear top bits
    64746502        movdqu  xmm0, [A2 + IEMMEDIAF2XMMSRC.uSrc1]
    64756503        movdqu  xmm1, [A2 + IEMMEDIAF2XMMSRC.uSrc2]
     
    66396667        IEMIMPL_SSE_PROLOGUE
    66406668
     6669        movzx   A2, A2_8                ; must clear top bits
    66416670        movdqu  xmm0, [A0]
    66426671        movdqu  xmm1, [A1]
Note: See TracChangeset for help on using the changeset viewer.

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