VirtualBox

Changeset 857 in vbox


Ignore:
Timestamp:
Feb 13, 2007 10:30:35 AM (18 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
18562
Message:

Corrected physical ram/rom registration in dynamic ram case.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/recompiler/VBoxRecompiler.c

    r856 r857  
    417417    pVM->rem.s.fIgnoreInvlPg = false;
    418418    pVM->rem.s.fIgnoreCpuMode = false;
    419 
    420 #ifdef PGM_DYNAMIC_RAM_ALLOC
    421     pVM->rem.s.cPhysRegistrations = 0;
    422 #endif
    423419}
    424420
     
    25282524    else
    25292525    {
     2526        uint32_t i;
     2527
    25302528        cpu_register_physical_memory(GCPhys, cb, GCPhys | (fFlags & MM_RAM_FLAGS_RESERVED ? IO_MEM_UNASSIGNED : 0));
    25312529
    25322530        AssertRelease(pVM->rem.s.cPhysRegistrations < REM_MAX_PHYS_REGISTRATIONS);
    2533         pVM->rem.s.aPhysReg[pVM->rem.s.cPhysRegistrations].GCPhys = GCPhys;
    2534         pVM->rem.s.aPhysReg[pVM->rem.s.cPhysRegistrations].HCVirt = (RTHCUINTPTR)pvRam;
    2535         pVM->rem.s.aPhysReg[pVM->rem.s.cPhysRegistrations].cb     = cb;
    2536         pVM->rem.s.cPhysRegistrations++;
     2531        for (i=0;i<pVM->rem.s.cPhysRegistrations;i++)
     2532        {
     2533            if (pVM->rem.s.aPhysReg[i].GCPhys == GCPhys)
     2534            {
     2535                pVM->rem.s.aPhysReg[i].HCVirt = (RTHCUINTPTR)pvRam;
     2536                pVM->rem.s.aPhysReg[i].cb     = cb;
     2537                break;
     2538            }
     2539        }
     2540        if (i == pVM->rem.s.cPhysRegistrations)
     2541        {
     2542            pVM->rem.s.aPhysReg[i].GCPhys = GCPhys;
     2543            pVM->rem.s.aPhysReg[i].HCVirt = (RTHCUINTPTR)pvRam;
     2544            pVM->rem.s.aPhysReg[i].cb     = cb;
     2545            pVM->rem.s.cPhysRegistrations++;
     2546        }
    25372547    }
    25382548#else
     
    27212731REMR3DECL(void) REMR3NotifyPhysRomRegister(PVM pVM, RTGCPHYS GCPhys, RTUINT cb, void *pvCopy)
    27222732{
     2733#ifdef PGM_DYNAMIC_RAM_ALLOC
     2734    uint32_t i;
     2735#endif
    27232736    Log(("REMR3NotifyPhysRomRegister: GCPhys=%VGp cb=%d pvCopy=%p\n", GCPhys, cb, pvCopy));
    27242737    VM_ASSERT_EMT(pVM);
     
    27392752    cpu_register_physical_memory(GCPhys, cb, GCPhys | IO_MEM_ROM);
    27402753    AssertRelease(pVM->rem.s.cPhysRegistrations < REM_MAX_PHYS_REGISTRATIONS);
    2741     pVM->rem.s.aPhysReg[pVM->rem.s.cPhysRegistrations].GCPhys = GCPhys;
    2742     pVM->rem.s.aPhysReg[pVM->rem.s.cPhysRegistrations].HCVirt = (RTHCUINTPTR)pvCopy;
    2743     pVM->rem.s.aPhysReg[pVM->rem.s.cPhysRegistrations].cb     = cb;
    2744     pVM->rem.s.cPhysRegistrations++;
     2754    for (i=0;i<pVM->rem.s.cPhysRegistrations;i++)
     2755    {
     2756        if (pVM->rem.s.aPhysReg[i].GCPhys == GCPhys)
     2757        {
     2758            pVM->rem.s.aPhysReg[i].HCVirt = (RTHCUINTPTR)pvRam;
     2759            pVM->rem.s.aPhysReg[i].cb     = cb;
     2760            break;
     2761        }
     2762    }
     2763    if (i == pVM->rem.s.cPhysRegistrations)
     2764    {
     2765        pVM->rem.s.aPhysReg[i].GCPhys = GCPhys;
     2766        pVM->rem.s.aPhysReg[i].HCVirt = (RTHCUINTPTR)pvRam;
     2767        pVM->rem.s.aPhysReg[i].cb     = cb;
     2768        pVM->rem.s.cPhysRegistrations++;
     2769    }
    27452770#else
    27462771    AssertRelease(phys_ram_base);
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