~ubuntu-branches/ubuntu/trusty/virtualbox/trusty-proposed

« back to all changes in this revision

Viewing changes to src/VBox/Runtime/testcase/tstRTInlineAsm.cpp

  • Committer: Package Import Robot
  • Author(s): Felix Geyer
  • Date: 2013-03-07 16:38:36 UTC
  • mfrom: (1.1.13) (3.1.20 experimental)
  • Revision ID: package-import@ubuntu.com-20130307163836-p93jpbgx39tp3gb4
Tags: 4.2.8-dfsg-0ubuntu1
* New upstream release. (Closes: #691148)
  - Fixes compatibility with kernel 3.8. (Closes: #700823; LP: #1101867)
* Switch to my @debian.org email address.
* Move package to contrib as virtualbox 4.2 needs a non-free compiler to
  build the BIOS.
* Build-depend on libdevmapper-dev.
* Refresh patches.
  - Drop 36-fix-ftbfs-xserver-112.patch, cve-2012-3221.patch,
    CVE-2013-0420.patch 37-kcompat-3.6.patch and 38-kcompat-3.7.patch.
* Drop all virtualbox-ose transitional packages.
* Drop the virtualbox-fuse package as vdfuse fails to build with
  virtualbox 4.2.
* Update install files and VBox.sh.
* Bump required kbuild version to 0.1.9998svn2577.
* Fix path to VBoxCreateUSBNode.sh in virtualbox.postinst. (Closes: #700479)
* Add an init script to virtuabox-guest-x11 which loads the vboxvideo
  kernel module. The X Server 1.13 doesn't load it anymore. (Closes: #686994)
* Update man pages. (Closes: #680053)
* Add 36-python-multiarch.patch from Rico Tzschichholz to fix detection of
  python in multiarch paths using pkg-config.

Show diffs side-by-side

added added

removed removed

Lines of Context:
4
4
 */
5
5
 
6
6
/*
7
 
 * Copyright (C) 2006-2010 Oracle Corporation
 
7
 * Copyright (C) 2006-2013 Oracle Corporation
8
8
 *
9
9
 * This file is part of VirtualBox Open Source Edition (OSE), as
10
10
 * available from http://www.virtualbox.org. This file is free software;
209
209
        RTTestIPrintf(RTTESTLVL_ALWAYS, "%08x  %08x %08x %08x %08x%s\n",
210
210
                      iStd, s.uEAX, s.uEBX, s.uECX, s.uEDX, iStd <= cFunctions ? "" : "*");
211
211
 
212
 
        if (iStd == 0x04 || iStd == 0x0b || iStd == 0x0d || iStd > cFunctions)
213
 
            continue; /* Leaf 04 and leaf 0d output depend on the initial value of ECX
214
 
                       * The same seems to apply to invalid standard functions */
215
 
 
216
 
        u32 = ASMCpuId_EAX(iStd);
217
 
        CHECKVAL(u32, s.uEAX, "%x");
218
 
        u32 = ASMCpuId_EBX(iStd);
219
 
        CHECKVAL(u32, s.uEBX, "%x");
220
 
        u32 = ASMCpuId_ECX(iStd);
221
 
        CHECKVAL(u32, s.uECX, "%x");
222
 
        u32 = ASMCpuId_EDX(iStd);
223
 
        CHECKVAL(u32, s.uEDX, "%x");
224
 
 
225
 
        uECX2 = s.uECX - 1;
226
 
        uEDX2 = s.uEDX - 1;
227
 
        ASMCpuId_ECX_EDX(iStd, &uECX2, &uEDX2);
228
 
        CHECKVAL(uECX2, s.uECX, "%x");
229
 
        CHECKVAL(uEDX2, s.uEDX, "%x");
 
212
        /* Leaf 04 and leaf 0d output depend on the initial value of ECX
 
213
         * The same seems to apply to invalid standard functions */
 
214
        if (iStd > cFunctions)
 
215
            continue;
 
216
        if (iStd != 0x04 && iStd != 0x0b && iStd != 0x0d)
 
217
        {
 
218
            u32 = ASMCpuId_EAX(iStd);
 
219
            CHECKVAL(u32, s.uEAX, "%x");
 
220
            u32 = ASMCpuId_EBX(iStd);
 
221
            CHECKVAL(u32, s.uEBX, "%x");
 
222
            u32 = ASMCpuId_ECX(iStd);
 
223
            CHECKVAL(u32, s.uECX, "%x");
 
224
            u32 = ASMCpuId_EDX(iStd);
 
225
            CHECKVAL(u32, s.uEDX, "%x");
 
226
 
 
227
            uECX2 = s.uECX - 1;
 
228
            uEDX2 = s.uEDX - 1;
 
229
            ASMCpuId_ECX_EDX(iStd, &uECX2, &uEDX2);
 
230
            CHECKVAL(uECX2, s.uECX, "%x");
 
231
            CHECKVAL(uEDX2, s.uEDX, "%x");
 
232
        }
 
233
 
 
234
        if (iStd == 0x04)
 
235
            for (uint32_t uECX = 1; s.uEAX & 0x1f; uECX++)
 
236
            {
 
237
                ASMCpuId_Idx_ECX(iStd, uECX, &s.uEAX, &s.uEBX, &s.uECX, &s.uEDX);
 
238
                RTTestIPrintf(RTTESTLVL_ALWAYS, "    [%02x]  %08x %08x %08x %08x\n", uECX, s.uEAX, s.uEBX, s.uECX, s.uEDX);
 
239
                RTTESTI_CHECK_BREAK(uECX < 128);
 
240
            }
 
241
        else if (iStd == 0x0b)
 
242
            for (uint32_t uECX = 1; (s.uEAX & 0x1f) && (s.uEBX & 0xffff); uECX++)
 
243
            {
 
244
                ASMCpuId_Idx_ECX(iStd, uECX, &s.uEAX, &s.uEBX, &s.uECX, &s.uEDX);
 
245
                RTTestIPrintf(RTTESTLVL_ALWAYS, "    [%02x]  %08x %08x %08x %08x\n", uECX, s.uEAX, s.uEBX, s.uECX, s.uEDX);
 
246
                RTTESTI_CHECK_BREAK(uECX < 128);
 
247
            }
 
248
        else if (iStd == 0x0d)
 
249
            for (uint32_t uECX = 1; s.uEAX != 0 || s.uEBX != 0 || s.uECX != 0 || s.uEDX != 0; uECX++)
 
250
            {
 
251
                ASMCpuId_Idx_ECX(iStd, uECX, &s.uEAX, &s.uEBX, &s.uECX, &s.uEDX);
 
252
                RTTestIPrintf(RTTESTLVL_ALWAYS, "    [%02x]  %08x %08x %08x %08x\n", uECX, s.uEAX, s.uEBX, s.uECX, s.uEDX);
 
253
                RTTESTI_CHECK_BREAK(uECX < 128);
 
254
            }
230
255
    }
231
256
 
232
257
    /*
1519
1544
#if !defined(GCC44_32BIT_PIC) && (defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86))
1520
1545
    tstASMCpuId();
1521
1546
#endif
 
1547
#if 1
1522
1548
    tstASMAtomicXchgU8();
1523
1549
    tstASMAtomicXchgU16();
1524
1550
    tstASMAtomicXchgU32();
1549
1575
    tstASMByteSwap();
1550
1576
 
1551
1577
    tstASMBench();
 
1578
#endif
1552
1579
 
1553
1580
    /*
1554
1581
     * Show the result.