VirtualBox

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


Ignore:
Timestamp:
May 18, 2009 2:23:07 PM (16 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
47428
Message:

Atomic writes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/PGMAllPool.cpp

    r19721 r19792  
    287287                                               GstPte.u & X86_PTE_PG_MASK);
    288288#  endif
    289                     uShw.pPT->a[iShw].u = 0;
     289                    ASMAtomicWriteSize(&uShw.pPT->a[iShw], 0);
    290290                }
    291291                break;
     
    312312                                                   GstPte.u & X86_PTE_PG_MASK);
    313313#  endif
    314                         uShw.pPTPae->a[iShw].u = 0;
     314                        ASMAtomicWriteSize(&uShw.pPTPae->a[iShw], 0);
    315315                    }
    316316                }
     
    350350                                        pPage->idx,
    351351                                        iShw + i);
    352                             uShw.pPDPae->a[iShw+i].u = 0;
     352                            ASMAtomicWriteSize(&uShw.pPDPae->a[iShw+i], 0);
    353353                        }
    354354
     
    378378                                                pPage->idx,
    379379                                                iShw2);
    380                                     uShw.pPDPae->a[iShw2].u = 0;
     380                                    ASMAtomicWriteSize(&uShw.pPDPae->a[iShw2].u, 0);
    381381                                }
    382382                            }
     
    403403                                               GstPte.u & X86_PTE_PAE_PG_MASK);
    404404#  endif
    405                     uShw.pPTPae->a[iShw].u = 0;
     405                    ASMAtomicWriteSize(&uShw.pPTPae->a[iShw].u, 0);
    406406                }
    407407
     
    429429                                                   GstPte.u & X86_PTE_PAE_PG_MASK);
    430430#  endif
    431                         uShw.pPTPae->a[iShw2].u = 0;
     431                        ASMAtomicWriteSize(&uShw.pPTPae->a[iShw2].u ,0);
    432432                    }
    433433                }
     
    462462                                    pPage->idx,
    463463                                    iShw);
    464                         uShw.pPD->a[iShw].u = 0;
     464                        ASMAtomicWriteSize(&uShw.pPD->a[iShw].u, 0);
    465465                    }
    466466                }
     
    495495                                            pPage->idx,
    496496                                            iShw2);
    497                                 uShw.pPD->a[iShw2].u = 0;
     497                                ASMAtomicWriteSize(&uShw.pPD->a[iShw2].u, 0);
    498498                            }
    499499                        }
     
    509509# endif
    510510                    pgmPoolFree(pVM, uShw.pPD->a[iShw].u & X86_PDE_PG_MASK, pPage->idx, iShw);
    511                     uShw.pPD->a[iShw].u = 0;
     511                    ASMAtomicWriteSize(&uShw.pPD->a[iShw].u, 0);
    512512                }
    513513#endif
     
    545545                                    pPage->idx,
    546546                                    iShw);
    547                         uShw.pPDPae->a[iShw].u = 0;
     547                        ASMAtomicWriteSize(&uShw.pPDPae->a[iShw].u, 0);
    548548                    }
    549549                }
     
    577577                                    pPage->idx,
    578578                                    iShw2);
    579                         uShw.pPDPae->a[iShw2].u = 0;
     579                        ASMAtomicWriteSize(&uShw.pPDPae->a[iShw2].u, 0);
    580580                    }
    581581                }
     
    617617                                    pPage->idx,
    618618                                    iShw);
    619                         uShw.pPDPT->a[iShw].u = 0;
     619                        ASMAtomicWriteSize(&uShw.pPDPT->a[iShw].u, 0);
    620620                    }
    621621
     
    649649                                            pPage->idx,
    650650                                            iShw2);
    651                                 uShw.pPDPT->a[iShw2].u = 0;
     651                                ASMAtomicWriteSize(&uShw.pPDPT->a[iShw2].u, 0);
    652652                            }
    653653                        }
     
    670670                                pPage->idx,
    671671                                iShw);
    672                     uShw.pPDPae->a[iShw].u = 0;
     672                    ASMAtomicWriteSize(&uShw.pPDPae->a[iShw].u, 0);
    673673                }
    674674                /* paranoia / a bit assumptive. */
     
    688688                                    pPage->idx,
    689689                                    iShw2);
    690                         uShw.pPDPae->a[iShw2].u = 0;
     690                        ASMAtomicWriteSize(&uShw.pPDPae->a[iShw2].u, 0);
    691691                    }
    692692                }
     
    708708                        LogFlow(("pgmPoolMonitorChainChanging: pdpt iShw=%#x: %RX64 -> freeing it!\n", iShw, uShw.pPDPT->a[iShw].u));
    709709                        pgmPoolFree(pVM, uShw.pPDPT->a[iShw].u & X86_PDPE_PG_MASK, pPage->idx, iShw);
    710                         uShw.pPDPT->a[iShw].u = 0;
     710                        ASMAtomicWriteSize(&uShw.pPDPT->a[iShw].u, 0);
    711711                    }
    712712                    /* paranoia / a bit assumptive. */
     
    720720                            LogFlow(("pgmPoolMonitorChainChanging: pdpt iShw2=%#x: %RX64 -> freeing it!\n", iShw2, uShw.pPDPT->a[iShw2].u));
    721721                            pgmPoolFree(pVM, uShw.pPDPT->a[iShw2].u & X86_PDPE_PG_MASK, pPage->idx, iShw2);
    722                             uShw.pPDPT->a[iShw2].u = 0;
     722                            ASMAtomicWriteSize(&uShw.pPDPT->a[iShw2].u, 0);
    723723                        }
    724724                    }
     
    741741                        LogFlow(("pgmPoolMonitorChainChanging: pml4 iShw=%#x: %RX64 -> freeing it!\n", iShw, uShw.pPML4->a[iShw].u));
    742742                        pgmPoolFree(pVM, uShw.pPML4->a[iShw].u & X86_PML4E_PG_MASK, pPage->idx, iShw);
    743                         uShw.pPML4->a[iShw].u = 0;
     743                        ASMAtomicWriteSize(&uShw.pPML4->a[iShw].u, 0);
    744744                    }
    745745                    /* paranoia / a bit assumptive. */
     
    753753                            LogFlow(("pgmPoolMonitorChainChanging: pml4 iShw2=%#x: %RX64 -> freeing it!\n", iShw2, uShw.pPML4->a[iShw2].u));
    754754                            pgmPoolFree(pVM, uShw.pPML4->a[iShw2].u & X86_PML4E_PG_MASK, pPage->idx, iShw2);
    755                             uShw.pPML4->a[iShw2].u = 0;
     755                            ASMAtomicWriteSize(&uShw.pPML4->a[iShw2].u, 0);
    756756                        }
    757757                    }
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