~ubuntu-branches/ubuntu/trusty/qemu/trusty

« back to all changes in this revision

Viewing changes to tcg/i386/tcg-target.c

  • Committer: Package Import Robot
  • Author(s): Serge Hallyn
  • Date: 2013-10-22 22:47:07 UTC
  • mfrom: (1.8.3) (10.1.42 sid)
  • Revision ID: package-import@ubuntu.com-20131022224707-1lya34fw3k3f24tv
Tags: 1.6.0+dfsg-2ubuntu1
* Merge 1.6.0~rc0+dfsg-2exp from debian experimental.  Remaining changes:
  - debian/control
    * update maintainer
    * remove libiscsi, usb-redir, vde, vnc-jpeg, and libssh2-1-dev
      from build-deps
    * enable rbd
    * add qemu-system and qemu-common B/R to qemu-keymaps
    * add D:udev, R:qemu, R:qemu-common and B:qemu-common to
      qemu-system-common
    * qemu-system-arm, qemu-system-ppc, qemu-system-sparc:
      - add qemu-kvm to Provides
      - add qemu-common, qemu-kvm, kvm to B/R
      - remove openbios-sparc from qemu-system-sparc D
      - drop openbios-ppc and openhackware Depends to Suggests (for now)
    * qemu-system-x86:
      - add qemu-common to Breaks/Replaces.
      - add cpu-checker to Recommends.
    * qemu-user: add B/R:qemu-kvm
    * qemu-kvm:
      - add armhf armel powerpc sparc to Architecture
      - C/R/P: qemu-kvm-spice
    * add qemu-common package
    * drop qemu-slof which is not packaged in ubuntu
  - add qemu-system-common.links for tap ifup/down scripts and OVMF link.
  - qemu-system-x86.links:
    * remove pxe rom links which are in kvm-ipxe
    * add symlink for kvm.1 manpage
  - debian/rules
    * add kvm-spice symlink to qemu-kvm
    * call dh_installmodules for qemu-system-x86
    * update dh_installinit to install upstart script
    * run dh_installman (Closes: #709241) (cherrypicked from 1.5.0+dfsg-2)
  - Add qemu-utils.links for kvm-* symlinks.
  - Add qemu-system-x86.qemu-kvm.upstart and .default
  - Add qemu-system-x86.modprobe to set nesting=1
  - Add qemu-system-common.preinst to add kvm group
  - qemu-system-common.postinst: remove bad group acl if there, then have
    udev relabel /dev/kvm.
  - New linaro patches from qemu-linaro rebasing branch
  - Dropped patches:
    * xen-simplify-xen_enabled.patch
    * sparc-linux-user-fix-missing-symbols-in-.rel-.rela.plt-sections.patch
    * main_loop-do-not-set-nonblocking-if-xen_enabled.patch
    * xen_machine_pv-do-not-create-a-dummy-CPU-in-machine-.patch
    * virtio-rng-fix-crash
  - Kept patches:
    * expose_vms_qemu64cpu.patch - updated
    * linaro arm patches from qemu-linaro rebasing branch
  - New patches:
    * fix-pci-add: change CONFIG variable in ifdef to make sure that
      pci_add is defined.
* Add linaro patches
* Add experimental mach-virt patches for arm virtualization.
* qemu-system-common.install: add debian/tmp/usr/lib to install the
  qemu-bridge-helper

Show diffs side-by-side

added added

removed removed

Lines of Context:
2283
2283
    }
2284
2284
#endif
2285
2285
 
2286
 
#if !defined(CONFIG_USER_ONLY)
2287
 
    /* fail safe */
2288
 
    if ((1 << CPU_TLB_ENTRY_BITS) != sizeof(CPUTLBEntry))
2289
 
        tcg_abort();
2290
 
#endif
2291
 
 
2292
2286
    if (TCG_TARGET_REG_BITS == 64) {
2293
2287
        tcg_regset_set32(tcg_target_available_regs[TCG_TYPE_I32], 0, 0xffff);
2294
2288
        tcg_regset_set32(tcg_target_available_regs[TCG_TYPE_I64], 0, 0xffff);
2318
2312
}
2319
2313
 
2320
2314
typedef struct {
2321
 
    uint32_t len __attribute__((aligned((sizeof(void *)))));
2322
 
    uint32_t id;
2323
 
    uint8_t version;
2324
 
    char augmentation[1];
2325
 
    uint8_t code_align;
2326
 
    uint8_t data_align;
2327
 
    uint8_t return_column;
2328
 
} DebugFrameCIE;
2329
 
 
2330
 
typedef struct {
2331
 
    uint32_t len __attribute__((aligned((sizeof(void *)))));
2332
 
    uint32_t cie_offset;
2333
 
    tcg_target_long func_start __attribute__((packed));
2334
 
    tcg_target_long func_len __attribute__((packed));
2335
 
    uint8_t def_cfa[4];
2336
 
    uint8_t reg_ofs[14];
2337
 
} DebugFrameFDE;
2338
 
 
2339
 
typedef struct {
2340
2315
    DebugFrameCIE cie;
2341
 
    DebugFrameFDE fde;
 
2316
    DebugFrameFDEHeader fde;
 
2317
    uint8_t fde_def_cfa[4];
 
2318
    uint8_t fde_reg_ofs[14];
2342
2319
} DebugFrame;
2343
2320
 
 
2321
/* We're expecting a 2 byte uleb128 encoded value.  */
 
2322
QEMU_BUILD_BUG_ON(FRAME_SIZE >= (1 << 14));
 
2323
 
2344
2324
#if !defined(__ELF__)
2345
2325
    /* Host machine without ELF. */
2346
2326
#elif TCG_TARGET_REG_BITS == 64
2353
2333
    .cie.data_align = 0x78,             /* sleb128 -8 */
2354
2334
    .cie.return_column = 16,
2355
2335
 
2356
 
    .fde.len = sizeof(DebugFrameFDE)-4, /* length after .len member */
2357
 
    .fde.def_cfa = {
 
2336
    /* Total FDE size does not include the "len" member.  */
 
2337
    .fde.len = sizeof(DebugFrame) - offsetof(DebugFrame, fde.cie_offset),
 
2338
 
 
2339
    .fde_def_cfa = {
2358
2340
        12, 7,                          /* DW_CFA_def_cfa %rsp, ... */
2359
2341
        (FRAME_SIZE & 0x7f) | 0x80,     /* ... uleb128 FRAME_SIZE */
2360
2342
        (FRAME_SIZE >> 7)
2361
2343
    },
2362
 
    .fde.reg_ofs = {
 
2344
    .fde_reg_ofs = {
2363
2345
        0x90, 1,                        /* DW_CFA_offset, %rip, -8 */
2364
2346
        /* The following ordering must match tcg_target_callee_save_regs.  */
2365
2347
        0x86, 2,                        /* DW_CFA_offset, %rbp, -16 */
2380
2362
    .cie.data_align = 0x7c,             /* sleb128 -4 */
2381
2363
    .cie.return_column = 8,
2382
2364
 
2383
 
    .fde.len = sizeof(DebugFrameFDE)-4, /* length after .len member */
2384
 
    .fde.def_cfa = {
 
2365
    /* Total FDE size does not include the "len" member.  */
 
2366
    .fde.len = sizeof(DebugFrame) - offsetof(DebugFrame, fde.cie_offset),
 
2367
 
 
2368
    .fde_def_cfa = {
2385
2369
        12, 4,                          /* DW_CFA_def_cfa %esp, ... */
2386
2370
        (FRAME_SIZE & 0x7f) | 0x80,     /* ... uleb128 FRAME_SIZE */
2387
2371
        (FRAME_SIZE >> 7)
2388
2372
    },
2389
 
    .fde.reg_ofs = {
 
2373
    .fde_reg_ofs = {
2390
2374
        0x88, 1,                        /* DW_CFA_offset, %eip, -4 */
2391
2375
        /* The following ordering must match tcg_target_callee_save_regs.  */
2392
2376
        0x85, 2,                        /* DW_CFA_offset, %ebp, -8 */
2400
2384
#if defined(ELF_HOST_MACHINE)
2401
2385
void tcg_register_jit(void *buf, size_t buf_size)
2402
2386
{
2403
 
    /* We're expecting a 2 byte uleb128 encoded value.  */
2404
 
    assert(FRAME_SIZE >> 14 == 0);
2405
 
 
2406
2387
    debug_frame.fde.func_start = (tcg_target_long) buf;
2407
2388
    debug_frame.fde.func_len = buf_size;
2408
2389