~ubuntu-branches/ubuntu/precise/virtualbox/precise-updates

« back to all changes in this revision

Viewing changes to src/VBox/Devices/PC/DevACPI.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Felix Geyer
  • Date: 2011-07-04 13:02:31 UTC
  • mfrom: (3.1.1 sid)
  • Revision ID: james.westby@ubuntu.com-20110704130231-l843es6wqhx614n7
Tags: 4.0.10-dfsg-1ubuntu1
* Merge from Debian unstable, remaining changes:
  - Add Apport hook.
    - debian/virtualbox-ose.files/source_virtualbox-ose.py
    - debian/virtualbox-ose.install
  - Drop *-source packages.
* Add the Modaliases control field manually for maximum backportability.

Show diffs side-by-side

added added

removed removed

Lines of Context:
198
198
    uint16_t            pm1a_ctl;
199
199
    /** Number of logical CPUs in guest */
200
200
    uint16_t            cCpus;
201
 
    int64_t             pm_timer_initial;
 
201
    uint64_t            u64PmTimerInitial;
 
202
    uint64_t            u64PmTimerLastSeen;
202
203
    PTMTIMERR3          tsR3;
203
204
    PTMTIMERR0          tsR0;
204
205
    PTMTIMERRC          tsRC;
1888
1889
    if (cb == 4)
1889
1890
    {
1890
1891
        ACPIState *s = PDMINS_2_DATA(pDevIns, ACPIState *);
1891
 
        int64_t now = TMTimerGet(s->CTX_SUFF(ts));
1892
 
        int64_t elapsed = now - s->pm_timer_initial;
 
1892
        uint64_t u64Now = TMTimerGet(s->CTX_SUFF(ts));
 
1893
        uint64_t u64Seen;
 
1894
        do
 
1895
        {
 
1896
            u64Seen = ASMAtomicReadU64(&s->u64PmTimerLastSeen);
 
1897
            if (u64Now < u64Seen)
 
1898
                u64Now = u64Seen + 1;
 
1899
        } while (!ASMAtomicCmpXchgU64(&s->u64PmTimerLastSeen, u64Now, u64Seen));
1893
1900
 
1894
 
        *pu32 = ASMMultU64ByU32DivByU32(elapsed, PM_TMR_FREQ, TMTimerGetFreq(s->CTX_SUFF(ts)));
 
1901
        uint64_t u64Elapsed = u64Now - s->u64PmTimerInitial;
 
1902
        *pu32 = ASMMultU64ByU32DivByU32(u64Elapsed, PM_TMR_FREQ, TMTimerGetFreq(s->CTX_SUFF(ts)));
1895
1903
        Log(("acpi: acpiPMTmrRead -> %#x\n", *pu32));
1896
1904
        return VINF_SUCCESS;
1897
1905
    }
2090
2098
    SSMFIELD_ENTRY(ACPIState, pm1a_en),
2091
2099
    SSMFIELD_ENTRY(ACPIState, pm1a_sts),
2092
2100
    SSMFIELD_ENTRY(ACPIState, pm1a_ctl),
2093
 
    SSMFIELD_ENTRY(ACPIState, pm_timer_initial),
 
2101
    SSMFIELD_ENTRY(ACPIState, u64PmTimerInitial),
2094
2102
    SSMFIELD_ENTRY(ACPIState, gpe0_en),
2095
2103
    SSMFIELD_ENTRY(ACPIState, gpe0_sts),
2096
2104
    SSMFIELD_ENTRY(ACPIState, uBatteryIndex),
2110
2118
    SSMFIELD_ENTRY(ACPIState, pm1a_en),
2111
2119
    SSMFIELD_ENTRY(ACPIState, pm1a_sts),
2112
2120
    SSMFIELD_ENTRY(ACPIState, pm1a_ctl),
2113
 
    SSMFIELD_ENTRY(ACPIState, pm_timer_initial),
 
2121
    SSMFIELD_ENTRY(ACPIState, u64PmTimerInitial),
2114
2122
    SSMFIELD_ENTRY(ACPIState, gpe0_en),
2115
2123
    SSMFIELD_ENTRY(ACPIState, gpe0_sts),
2116
2124
    SSMFIELD_ENTRY(ACPIState, uBatteryIndex),
2129
2137
    SSMFIELD_ENTRY(ACPIState, pm1a_en),
2130
2138
    SSMFIELD_ENTRY(ACPIState, pm1a_sts),
2131
2139
    SSMFIELD_ENTRY(ACPIState, pm1a_ctl),
2132
 
    SSMFIELD_ENTRY(ACPIState, pm_timer_initial),
 
2140
    SSMFIELD_ENTRY(ACPIState, u64PmTimerInitial),
2133
2141
    SSMFIELD_ENTRY(ACPIState, gpe0_en),
2134
2142
    SSMFIELD_ENTRY(ACPIState, gpe0_sts),
2135
2143
    SSMFIELD_ENTRY(ACPIState, uBatteryIndex),
2548
2556
    s->pm1a_en           = 0;
2549
2557
    s->pm1a_sts          = 0;
2550
2558
    s->pm1a_ctl          = 0;
2551
 
    s->pm_timer_initial  = TMTimerGet(s->CTX_SUFF(ts));
 
2559
    s->u64PmTimerInitial = TMTimerGet(s->CTX_SUFF(ts));
2552
2560
    acpiPMTimerReset(s);
2553
2561
    s->uBatteryIndex     = 0;
2554
2562
    s->uSystemInfoIndex  = 0;
2832
2840
 
2833
2841
    s->tsR0 = TMTimerR0Ptr(s->tsR3);
2834
2842
    s->tsRC = TMTimerRCPtr(s->tsR3);
2835
 
    s->pm_timer_initial = TMTimerGet(s->tsR3);
 
2843
    s->u64PmTimerInitial = TMTimerGet(s->tsR3);
2836
2844
    acpiPMTimerReset(s);
2837
2845
 
2838
2846
    PCIDevSetVendorId(dev, 0x8086); /* Intel */