Changeset 10647 in vbox for trunk/src/VBox/VMM/VMMAll
- Timestamp:
- Jul 15, 2008 12:07:24 PM (17 years ago)
- svn:sync-xref-src-repo-rev:
- 33357
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/CPUMAllA.asm
r10633 r10647 267 267 268 268 ;; 269 ; Restores the host's FPU/XMM state269 ; Restores the guest's FPU/XMM state 270 270 ; 271 271 ; @param pCtx x86:[esp+4] GCC:rdi MSC:rcx CPUMCTX pointer … … 285 285 ret 286 286 ENDPROC CPUMSaveFPUAsm 287 288 ;; 289 ; Saves the guest's XMM state 290 ; 291 ; @param pCtx x86:[esp+4] GCC:rdi MSC:rcx CPUMCTX pointer 292 ; 293 BEGINPROC CPUMLoadXMMAsm 294 %ifdef RT_ARCH_AMD64 295 %ifdef RT_OS_WINDOWS 296 mov xDX, rcx 297 %else 298 mov xDX, rdi 299 %endif 300 %else 301 mov xDX, dword [esp + 4] 302 %endif 303 movdqa xmm0, [xDX + CPUMCTX.fpu + X86FXSTATE.aXMM + 16*0] 304 movdqa xmm1, [xDX + CPUMCTX.fpu + X86FXSTATE.aXMM + 16*1] 305 movdqa xmm2, [xDX + CPUMCTX.fpu + X86FXSTATE.aXMM + 16*2] 306 movdqa xmm3, [xDX + CPUMCTX.fpu + X86FXSTATE.aXMM + 16*3] 307 movdqa xmm4, [xDX + CPUMCTX.fpu + X86FXSTATE.aXMM + 16*4] 308 movdqa xmm5, [xDX + CPUMCTX.fpu + X86FXSTATE.aXMM + 16*5] 309 movdqa xmm6, [xDX + CPUMCTX.fpu + X86FXSTATE.aXMM + 16*6] 310 movdqa xmm7, [xDX + CPUMCTX.fpu + X86FXSTATE.aXMM + 16*7] 311 312 %ifdef RT_ARCH_AMD64 313 test qword [xDX + CPUMCTX.msrEFER], MSR_K6_EFER_LMA 314 jz CPUMLoadXMMAsm_done 315 316 movdqa xmm8, [xDX + CPUMCTX.fpu + X86FXSTATE.aXMM + 16*8] 317 movdqa xmm9, [xDX + CPUMCTX.fpu + X86FXSTATE.aXMM + 16*9] 318 movdqa xmm10, [xDX + CPUMCTX.fpu + X86FXSTATE.aXMM + 16*10] 319 movdqa xmm11, [xDX + CPUMCTX.fpu + X86FXSTATE.aXMM + 16*11] 320 movdqa xmm12, [xDX + CPUMCTX.fpu + X86FXSTATE.aXMM + 16*12] 321 movdqa xmm13, [xDX + CPUMCTX.fpu + X86FXSTATE.aXMM + 16*13] 322 movdqa xmm14, [xDX + CPUMCTX.fpu + X86FXSTATE.aXMM + 16*14] 323 movdqa xmm15, [xDX + CPUMCTX.fpu + X86FXSTATE.aXMM + 16*15] 324 CPUMLoadXMMAsm_done: 325 %endif 326 327 ret 328 ENDPROC CPUMLoadXMMAsm 329 330 331 ;; 332 ; Restores the guest's XMM state 333 ; 334 ; @param pCtx x86:[esp+4] GCC:rdi MSC:rcx CPUMCTX pointer 335 ; 336 BEGINPROC CPUMSaveXMMAsm 337 %ifdef RT_ARCH_AMD64 338 %ifdef RT_OS_WINDOWS 339 mov xDX, rcx 340 %else 341 mov xDX, rdi 342 %endif 343 %else 344 mov xDX, dword [esp + 4] 345 %endif 346 movdqa [xDX + CPUMCTX.fpu + X86FXSTATE.aXMM + 16*0], xmm0 347 movdqa [xDX + CPUMCTX.fpu + X86FXSTATE.aXMM + 16*1], xmm1 348 movdqa [xDX + CPUMCTX.fpu + X86FXSTATE.aXMM + 16*2], xmm2 349 movdqa [xDX + CPUMCTX.fpu + X86FXSTATE.aXMM + 16*3], xmm3 350 movdqa [xDX + CPUMCTX.fpu + X86FXSTATE.aXMM + 16*4], xmm4 351 movdqa [xDX + CPUMCTX.fpu + X86FXSTATE.aXMM + 16*5], xmm5 352 movdqa [xDX + CPUMCTX.fpu + X86FXSTATE.aXMM + 16*6], xmm6 353 movdqa [xDX + CPUMCTX.fpu + X86FXSTATE.aXMM + 16*7], xmm7 354 355 %ifdef RT_ARCH_AMD64 356 test qword [xDX + CPUMCTX.msrEFER], MSR_K6_EFER_LMA 357 jz CPUMSaveXMMAsm_done 358 359 movdqa [xDX + CPUMCTX.fpu + X86FXSTATE.aXMM + 16*8], xmm8 360 movdqa [xDX + CPUMCTX.fpu + X86FXSTATE.aXMM + 16*9], xmm9 361 movdqa [xDX + CPUMCTX.fpu + X86FXSTATE.aXMM + 16*10], xmm10 362 movdqa [xDX + CPUMCTX.fpu + X86FXSTATE.aXMM + 16*11], xmm11 363 movdqa [xDX + CPUMCTX.fpu + X86FXSTATE.aXMM + 16*12], xmm12 364 movdqa [xDX + CPUMCTX.fpu + X86FXSTATE.aXMM + 16*13], xmm13 365 movdqa [xDX + CPUMCTX.fpu + X86FXSTATE.aXMM + 16*14], xmm14 366 movdqa [xDX + CPUMCTX.fpu + X86FXSTATE.aXMM + 16*15], xmm15 367 368 CPUMSaveXMMAsm_done: 369 %endif 370 ret 371 ENDPROC CPUMSaveXMMAsm 372
Note:
See TracChangeset
for help on using the changeset viewer.