VirtualBox

Changeset 64655 in vbox for trunk/src/VBox/VMM/VMMRC


Ignore:
Timestamp:
Nov 14, 2016 10:46:07 AM (8 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
111904
Message:

VMM,recompiler: Get rid of PDM APIC interfaces reducing one level of indirection, cleaned up some unused stuff in recompiler.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMRC/PDMRCDevice.cpp

    r64596 r64655  
    2929#include <VBox/vmm/vmm.h>
    3030#include <VBox/vmm/patm.h>
     31#include <VBox/vmm/apic.h>
    3132
    3233#include <VBox/log.h>
     
    432433    PVM pVM = pDevIns->Internal.s.pVMRC;
    433434    PVMCPU pVCpu = &pVM->aCpus[0];  /* for PIC we always deliver to CPU 0, MP use APIC */
    434 
    435     if (pVM->pdm.s.Apic.pfnLocalInterruptRC)
    436     {
    437         LogFlow(("pdmRCPicHlp_SetInterruptFF: caller='%p'/%d: Setting local interrupt on LAPIC\n",
    438                  pDevIns, pDevIns->iInstance));
    439         /* Raise the LAPIC's LINT0 line instead of signaling the CPU directly. */
    440         /** @todo 'rcRZ' propagation to pfnLocalInterrupt from caller. */
    441         pVM->pdm.s.Apic.pfnLocalInterruptRC(pVM->pdm.s.Apic.pDevInsRC, pVCpu, 0 /* u8Pin */, 1 /* u8Level*/,
    442                                             VINF_SUCCESS /*rcRZ*/);
    443         return;
    444     }
    445 
    446     LogFlow(("pdmRCPicHlp_SetInterruptFF: caller=%p/%d: VMMCPU_FF_INTERRUPT_PIC %d -> 1\n",
    447              pDevIns, pDevIns->iInstance, VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_INTERRUPT_PIC)));
    448 
    449     VMCPU_FF_SET(pVCpu, VMCPU_FF_INTERRUPT_PIC);
     435    /** @todo r=ramshankar: Propagating rcRZ and make all callers handle it? */
     436    APICLocalInterrupt(pVCpu, 0 /* u8Pin */, 1 /* u8Level */, VINF_SUCCESS /* rcRZ */);
    450437}
    451438
     
    457444    PVM pVM = pDevIns->Internal.s.CTX_SUFF(pVM);
    458445    PVMCPU pVCpu = &pVM->aCpus[0];  /* for PIC we always deliver to CPU 0, MP use APIC */
    459 
    460     if (pVM->pdm.s.Apic.pfnLocalInterruptRC)
    461     {
    462         /* Raise the LAPIC's LINT0 line instead of signaling the CPU directly. */
    463         LogFlow(("pdmRCPicHlp_ClearInterruptFF: caller='%s'/%d: Clearing local interrupt on LAPIC\n",
    464                  pDevIns, pDevIns->iInstance));
    465         /* Lower the LAPIC's LINT0 line instead of signaling the CPU directly. */
    466         /** @todo 'rcRZ' propagation to pfnLocalInterrupt from caller. */
    467         pVM->pdm.s.Apic.pfnLocalInterruptRC(pVM->pdm.s.Apic.pDevInsRC, pVCpu, 0 /* u8Pin */, 0 /* u8Level */,
    468                                             VINF_SUCCESS /* rcRZ */);
    469         return;
    470     }
    471 
    472     LogFlow(("pdmRCPicHlp_ClearInterruptFF: caller=%p/%d: VMCPU_FF_INTERRUPT_PIC %d -> 0\n",
    473              pDevIns, pDevIns->iInstance, VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_INTERRUPT_PIC)));
    474 
    475     VMCPU_FF_CLEAR(pVCpu, VMCPU_FF_INTERRUPT_PIC);
     446    /** @todo r=ramshankar: Propagating rcRZ and make all callers handle it? */
     447    APICLocalInterrupt(pVCpu, 0 /* u8Pin */, 0 /* u8Level */, VINF_SUCCESS /* rcRZ */);
    476448}
    477449
     
    514486
    515487/** @interface_method_impl{PDMIOAPICHLPRC,pfnApicBusDeliver} */
    516 static DECLCALLBACK(int) pdmRCIoApicHlp_ApicBusDeliver(PPDMDEVINS pDevIns, uint8_t u8Dest, uint8_t u8DestMode, uint8_t u8DeliveryMode,
    517                                                        uint8_t iVector, uint8_t u8Polarity, uint8_t u8TriggerMode, uint32_t uTagSrc)
     488static DECLCALLBACK(int) pdmRCIoApicHlp_ApicBusDeliver(PPDMDEVINS pDevIns, uint8_t u8Dest, uint8_t u8DestMode,
     489                                                       uint8_t u8DeliveryMode, uint8_t uVector, uint8_t u8Polarity,
     490                                                       uint8_t u8TriggerMode, uint32_t uTagSrc)
    518491{
    519492    PDMDEV_ASSERT_DEVINS(pDevIns);
    520493    PVM pVM = pDevIns->Internal.s.pVMRC;
    521     LogFlow(("pdmRCIoApicHlp_ApicBusDeliver: caller=%p/%d: u8Dest=%RX8 u8DestMode=%RX8 u8DeliveryMode=%RX8 iVector=%RX8 u8Polarity=%RX8 u8TriggerMode=%RX8 uTagSrc=%#x\n",
    522              pDevIns, pDevIns->iInstance, u8Dest, u8DestMode, u8DeliveryMode, iVector, u8Polarity, u8TriggerMode, uTagSrc));
    523     Assert(pVM->pdm.s.Apic.pDevInsRC);
    524     if (pVM->pdm.s.Apic.pfnBusDeliverRC)
    525         return pVM->pdm.s.Apic.pfnBusDeliverRC(pVM->pdm.s.Apic.pDevInsRC, u8Dest, u8DestMode, u8DeliveryMode, iVector,
    526                                                u8Polarity, u8TriggerMode, uTagSrc);
    527     return VINF_SUCCESS;
     494    LogFlow(("pdmRCIoApicHlp_ApicBusDeliver: caller=%p/%d: u8Dest=%RX8 u8DestMode=%RX8 u8DeliveryMode=%RX8 uVector=%RX8 u8Polarity=%RX8 u8TriggerMode=%RX8 uTagSrc=%#x\n",
     495             pDevIns, pDevIns->iInstance, u8Dest, u8DestMode, u8DeliveryMode, uVector, u8Polarity, u8TriggerMode, uTagSrc));
     496    return APICBusDeliver(pVM, u8Dest, u8DestMode, u8DeliveryMode, uVector, u8Polarity, u8TriggerMode, uTagSrc);
    528497}
    529498
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