VirtualBox

Changeset 20037 in vbox for trunk/src/VBox/Devices


Ignore:
Timestamp:
May 26, 2009 1:25:48 PM (16 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
47770
Message:

TPR read/write updates

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/PC/DevAPIC.cpp

    r20005 r20037  
    438438PDMBOTHCBDECL(void) apicSetBase(PPDMDEVINS pDevIns, uint64_t val);
    439439PDMBOTHCBDECL(uint64_t) apicGetBase(PPDMDEVINS pDevIns);
    440 PDMBOTHCBDECL(void) apicSetTPR(PPDMDEVINS pDevIns, VMCPUID idCpu, uint8_t val);
    441 PDMBOTHCBDECL(uint8_t) apicGetTPR(PPDMDEVINS pDevIns, VMCPUID idCpu);
     440PDMBOTHCBDECL(void) apicSetTPR(PPDMDEVINS pDevIns, VMCPUID idCpu, uint8_t val, bool fMMIOFormat);
     441PDMBOTHCBDECL(uint8_t) apicGetTPR(PPDMDEVINS pDevIns, VMCPUID idCpu, bool fMMIOFormat);
    442442PDMBOTHCBDECL(int)  apicBusDeliverCallback(PPDMDEVINS pDevIns, uint8_t u8Dest, uint8_t u8DestMode,
    443443                                           uint8_t u8DeliveryMode, uint8_t iVector, uint8_t u8Polarity,
     
    670670}
    671671
    672 PDMBOTHCBDECL(void) apicSetTPR(PPDMDEVINS pDevIns, VMCPUID idCpu, uint8_t val)
     672PDMBOTHCBDECL(void) apicSetTPR(PPDMDEVINS pDevIns, VMCPUID idCpu, uint8_t val, bool fMMIOFormat)
    673673{
    674674    APICDeviceInfo *dev = PDMINS_2_DATA(pDevIns, APICDeviceInfo *);
    675675    APICState *s = getLapicById(dev, idCpu);
    676     LogFlow(("apicSetTPR: val=%#x (trp %#x -> %#x)\n", val, s->tpr, (val & 0x0f) << 4));
    677     apic_update_tpr(dev, s, (val & 0x0f) << 4);
    678 }
    679 
    680 PDMBOTHCBDECL(uint8_t) apicGetTPR(PPDMDEVINS pDevIns, VMCPUID idCpu)
     676
     677    if (!fMMIOFormat)
     678        val = (val & 0x0f) << 4;
     679
     680    LogFlow(("apicSetTPR: val=%#x (trp %#x -> %#x)\n", val, s->tpr, val));
     681    apic_update_tpr(dev, s, val);
     682}
     683
     684PDMBOTHCBDECL(uint8_t) apicGetTPR(PPDMDEVINS pDevIns, VMCPUID idCpu, bool fMMIOFormat)
    681685{
    682686    APICDeviceInfo *dev = PDMINS_2_DATA(pDevIns, APICDeviceInfo *);
    683687    APICState *s = getLapicById(dev, idCpu);
    684     Log2(("apicGetTPR: returns %#x\n", s->tpr >> 4));
    685     return s->tpr >> 4;
     688
     689    if (fMMIOFormat)
     690    {
     691        Log2(("apicGetTPR: returns %#x\n", s->tpr));
     692        return s->tpr;
     693    }
     694    else
     695    {
     696        Log2(("apicGetTPR: returns %#x\n", s->tpr >> 4));
     697        return s->tpr >> 4;
     698    }
    686699}
    687700
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