Lines Matching refs:frame
385 vmt_probe_cmd(struct vm_backdoor *frame, uint16_t cmd) in vmt_probe_cmd() argument
387 bzero(frame, sizeof(*frame)); in vmt_probe_cmd()
389 (frame->eax).word = VM_MAGIC; in vmt_probe_cmd()
390 (frame->ebx).word = ~VM_MAGIC; in vmt_probe_cmd()
391 (frame->ecx).part.low = cmd; in vmt_probe_cmd()
392 (frame->ecx).part.high = 0xffff; in vmt_probe_cmd()
393 (frame->edx).part.low = VM_PORT_CMD; in vmt_probe_cmd()
394 (frame->edx).part.high = 0; in vmt_probe_cmd()
396 vm_cmd(frame); in vmt_probe_cmd()
402 struct vm_backdoor frame; in vmt_probe() local
404 vmt_probe_cmd(&frame, VM_CMD_GET_VERSION); in vmt_probe()
405 if (frame.eax.word == 0xffffffff || in vmt_probe()
406 frame.ebx.word != VM_MAGIC) in vmt_probe()
409 vmt_probe_cmd(&frame, VM_CMD_GET_SPEED); in vmt_probe()
410 if (frame.eax.word == VM_MAGIC) in vmt_probe()
579 struct vm_backdoor frame; in vmt_resume() local
582 bzero(&frame, sizeof(frame)); in vmt_resume()
583 frame.eax.word = VM_MAGIC; in vmt_resume()
584 frame.ecx.part.low = VM_CMD_GET_TIME_FULL; in vmt_resume()
585 frame.edx.part.low = VM_PORT_CMD; in vmt_resume()
586 vm_cmd(&frame); in vmt_resume()
589 enqueue_randomness(frame.eax.word); in vmt_resume()
590 enqueue_randomness(frame.esi.word); in vmt_resume()
591 enqueue_randomness(frame.edx.word); in vmt_resume()
592 enqueue_randomness(frame.ebx.word); in vmt_resume()
688 struct vm_backdoor frame; in vmt_tick() local
694 bzero(&frame, sizeof(frame)); in vmt_tick()
695 frame.eax.word = VM_MAGIC; in vmt_tick()
696 frame.ecx.part.low = VM_CMD_GET_TIME_FULL; in vmt_tick()
697 frame.edx.part.low = VM_PORT_CMD; in vmt_tick()
698 vm_cmd(&frame); in vmt_tick()
700 if (frame.eax.word != 0xffffffff) { in vmt_tick()
701 host.tv_sec = ((uint64_t)frame.esi.word << 32) | frame.edx.word; in vmt_tick()
702 host.tv_usec = frame.ebx.word; in vmt_tick()
1397 #define BACKDOOR_OP_I386(op, frame) \ argument
1418 ::"a"(frame) \
1421 #define BACKDOOR_OP_AMD64(op, frame) \ argument
1442 : /* No outputs. */ : "a" (frame) \
1449 #define BACKDOOR_OP(op, frame) BACKDOOR_OP_I386(op, frame) argument
1451 #define BACKDOOR_OP(op, frame) BACKDOOR_OP_AMD64(op, frame) argument
1455 vm_cmd(struct vm_backdoor *frame) in vm_cmd() argument
1457 BACKDOOR_OP("inl %%dx, %%eax;", frame); in vm_cmd()
1461 vm_ins(struct vm_backdoor *frame) in vm_ins() argument
1463 BACKDOOR_OP("cld;\n\trep insb;", frame); in vm_ins()
1467 vm_outs(struct vm_backdoor *frame) in vm_outs() argument
1469 BACKDOOR_OP("cld;\n\trep outsb;", frame); in vm_outs()
1475 struct vm_backdoor frame; in vm_rpc_open() local
1477 bzero(&frame, sizeof(frame)); in vm_rpc_open()
1478 frame.eax.word = VM_MAGIC; in vm_rpc_open()
1479 frame.ebx.word = proto | VM_RPC_FLAG_COOKIE; in vm_rpc_open()
1480 frame.ecx.part.low = VM_CMD_RPC; in vm_rpc_open()
1481 frame.ecx.part.high = VM_RPC_OPEN; in vm_rpc_open()
1482 frame.edx.part.low = VM_PORT_CMD; in vm_rpc_open()
1483 frame.edx.part.high = 0; in vm_rpc_open()
1485 vm_cmd(&frame); in vm_rpc_open()
1487 if (frame.ecx.part.high != 1 || frame.edx.part.low != 0) { in vm_rpc_open()
1490 frame.eax.word, frame.ecx.word, frame.edx.word); in vm_rpc_open()
1494 rpc->channel = frame.edx.part.high; in vm_rpc_open()
1495 rpc->cookie1 = frame.esi.word; in vm_rpc_open()
1496 rpc->cookie2 = frame.edi.word; in vm_rpc_open()
1504 struct vm_backdoor frame; in vm_rpc_close() local
1506 bzero(&frame, sizeof(frame)); in vm_rpc_close()
1507 frame.eax.word = VM_MAGIC; in vm_rpc_close()
1508 frame.ebx.word = 0; in vm_rpc_close()
1509 frame.ecx.part.low = VM_CMD_RPC; in vm_rpc_close()
1510 frame.ecx.part.high = VM_RPC_CLOSE; in vm_rpc_close()
1511 frame.edx.part.low = VM_PORT_CMD; in vm_rpc_close()
1512 frame.edx.part.high = rpc->channel; in vm_rpc_close()
1513 frame.edi.word = rpc->cookie2; in vm_rpc_close()
1514 frame.esi.word = rpc->cookie1; in vm_rpc_close()
1516 vm_cmd(&frame); in vm_rpc_close()
1518 if (frame.ecx.part.high == 0 || frame.ecx.part.low != 0) { in vm_rpc_close()
1520 frame.eax.word, frame.ecx.word); in vm_rpc_close()
1534 struct vm_backdoor frame; in vm_rpc_send() local
1537 bzero(&frame, sizeof(frame)); in vm_rpc_send()
1538 frame.eax.word = VM_MAGIC; in vm_rpc_send()
1539 frame.ebx.word = length; in vm_rpc_send()
1540 frame.ecx.part.low = VM_CMD_RPC; in vm_rpc_send()
1541 frame.ecx.part.high = VM_RPC_SET_LENGTH; in vm_rpc_send()
1542 frame.edx.part.low = VM_PORT_CMD; in vm_rpc_send()
1543 frame.edx.part.high = rpc->channel; in vm_rpc_send()
1544 frame.esi.word = rpc->cookie1; in vm_rpc_send()
1545 frame.edi.word = rpc->cookie2; in vm_rpc_send()
1547 vm_cmd(&frame); in vm_rpc_send()
1549 if ((frame.ecx.part.high & VM_RPC_REPLY_SUCCESS) == 0) { in vm_rpc_send()
1551 frame.eax.word, frame.ecx.word); in vm_rpc_send()
1559 bzero(&frame, sizeof(frame)); in vm_rpc_send()
1560 frame.eax.word = VM_MAGIC; in vm_rpc_send()
1561 frame.ebx.word = VM_RPC_ENH_DATA; in vm_rpc_send()
1562 frame.ecx.word = length; in vm_rpc_send()
1563 frame.edx.part.low = VM_PORT_RPC; in vm_rpc_send()
1564 frame.edx.part.high = rpc->channel; in vm_rpc_send()
1565 frame.ebp.word = rpc->cookie1; in vm_rpc_send()
1566 frame.edi.word = rpc->cookie2; in vm_rpc_send()
1568 frame.esi.quad = (uint64_t)buf; in vm_rpc_send()
1570 frame.esi.word = (uint32_t)buf; in vm_rpc_send()
1573 vm_outs(&frame); in vm_rpc_send()
1575 if (frame.ebx.word != VM_RPC_ENH_DATA) { in vm_rpc_send()
1577 DPRINTF("vmware: send failed, ebx=%08x\n", frame.ebx.word); in vm_rpc_send()
1594 struct vm_backdoor frame; in vm_rpc_get_data() local
1597 bzero(&frame, sizeof(frame)); in vm_rpc_get_data()
1598 frame.eax.word = VM_MAGIC; in vm_rpc_get_data()
1599 frame.ebx.word = VM_RPC_ENH_DATA; in vm_rpc_get_data()
1600 frame.ecx.word = length; in vm_rpc_get_data()
1601 frame.edx.part.low = VM_PORT_RPC; in vm_rpc_get_data()
1602 frame.edx.part.high = rpc->channel; in vm_rpc_get_data()
1603 frame.esi.word = rpc->cookie1; in vm_rpc_get_data()
1605 frame.edi.quad = (uint64_t)data; in vm_rpc_get_data()
1607 frame.edi.word = (uint32_t)data; in vm_rpc_get_data()
1609 frame.ebp.word = rpc->cookie2; in vm_rpc_get_data()
1611 vm_ins(&frame); in vm_rpc_get_data()
1616 if (frame.ebx.word != VM_RPC_ENH_DATA) { in vm_rpc_get_data()
1618 frame.ebx.word); in vm_rpc_get_data()
1623 bzero(&frame, sizeof(frame)); in vm_rpc_get_data()
1624 frame.eax.word = VM_MAGIC; in vm_rpc_get_data()
1625 frame.ebx.word = dataid; in vm_rpc_get_data()
1626 frame.ecx.part.low = VM_CMD_RPC; in vm_rpc_get_data()
1627 frame.ecx.part.high = VM_RPC_GET_END; in vm_rpc_get_data()
1628 frame.edx.part.low = VM_PORT_CMD; in vm_rpc_get_data()
1629 frame.edx.part.high = rpc->channel; in vm_rpc_get_data()
1630 frame.esi.word = rpc->cookie1; in vm_rpc_get_data()
1631 frame.edi.word = rpc->cookie2; in vm_rpc_get_data()
1633 vm_cmd(&frame); in vm_rpc_get_data()
1635 if (frame.ecx.part.high == 0) { in vm_rpc_get_data()
1637 frame.eax.word, frame.ecx.word); in vm_rpc_get_data()
1647 struct vm_backdoor frame; in vm_rpc_get_length() local
1649 bzero(&frame, sizeof(frame)); in vm_rpc_get_length()
1650 frame.eax.word = VM_MAGIC; in vm_rpc_get_length()
1651 frame.ebx.word = 0; in vm_rpc_get_length()
1652 frame.ecx.part.low = VM_CMD_RPC; in vm_rpc_get_length()
1653 frame.ecx.part.high = VM_RPC_GET_LENGTH; in vm_rpc_get_length()
1654 frame.edx.part.low = VM_PORT_CMD; in vm_rpc_get_length()
1655 frame.edx.part.high = rpc->channel; in vm_rpc_get_length()
1656 frame.esi.word = rpc->cookie1; in vm_rpc_get_length()
1657 frame.edi.word = rpc->cookie2; in vm_rpc_get_length()
1659 vm_cmd(&frame); in vm_rpc_get_length()
1661 if ((frame.ecx.part.high & VM_RPC_REPLY_SUCCESS) == 0) { in vm_rpc_get_length()
1663 frame.eax.word, frame.ecx.word); in vm_rpc_get_length()
1666 if ((frame.ecx.part.high & VM_RPC_REPLY_DORECV) == 0) { in vm_rpc_get_length()
1670 *length = frame.ebx.word; in vm_rpc_get_length()
1671 *dataid = frame.edx.part.high; in vm_rpc_get_length()
1750 struct vm_backdoor frame;
1752 bzero(&frame, sizeof(frame));
1754 frame.eax.word = VM_MAGIC;
1755 frame.ecx.part.low = VM_CMD_GET_VERSION;
1756 frame.edx.part.low = VM_PORT_CMD;
1759 printf("eax 0x%08x\n", frame.eax.word);
1760 printf("ebx 0x%08x\n", frame.ebx.word);
1761 printf("ecx 0x%08x\n", frame.ecx.word);
1762 printf("edx 0x%08x\n", frame.edx.word);
1763 printf("ebp 0x%08x\n", frame.ebp.word);
1764 printf("edi 0x%08x\n", frame.edi.word);
1765 printf("esi 0x%08x\n", frame.esi.word);
1767 vm_cmd(&frame);
1770 printf("eax 0x%08x\n", frame.eax.word);
1771 printf("ebx 0x%08x\n", frame.ebx.word);
1772 printf("ecx 0x%08x\n", frame.ecx.word);
1773 printf("edx 0x%08x\n", frame.edx.word);
1774 printf("ebp 0x%08x\n", frame.ebp.word);
1775 printf("edi 0x%08x\n", frame.edi.word);
1776 printf("esi 0x%08x\n", frame.esi.word);