virtio-pci.c (d5d680cacc66ef7e3c02c81dc8f3a34eabce6dfe) virtio-pci.c (9bf825bf3df4ebae3af51566c8088e3f1249a910)
1/*
2 * Virtio PCI Bindings
3 *
4 * Copyright IBM, Corp. 2007
5 * Copyright (c) 2009 CodeSourcery
6 *
7 * Authors:
8 * Anthony Liguori <aliguori@us.ibm.com>

--- 530 unchanged lines hidden (view full) ---

539 /* Make sure caller aligned buf properly */
540 assert(!(((uintptr_t)buf) & (len - 1)));
541
542 switch (len) {
543 case 1:
544 val = pci_get_byte(buf);
545 break;
546 case 2:
1/*
2 * Virtio PCI Bindings
3 *
4 * Copyright IBM, Corp. 2007
5 * Copyright (c) 2009 CodeSourcery
6 *
7 * Authors:
8 * Anthony Liguori <aliguori@us.ibm.com>

--- 530 unchanged lines hidden (view full) ---

539 /* Make sure caller aligned buf properly */
540 assert(!(((uintptr_t)buf) & (len - 1)));
541
542 switch (len) {
543 case 1:
544 val = pci_get_byte(buf);
545 break;
546 case 2:
547 val = cpu_to_le16(pci_get_word(buf));
547 val = pci_get_word(buf);
548 break;
549 case 4:
548 break;
549 case 4:
550 val = cpu_to_le32(pci_get_long(buf));
550 val = pci_get_long(buf);
551 break;
552 default:
553 /* As length is under guest control, handle illegal values. */
554 return;
555 }
551 break;
552 default:
553 /* As length is under guest control, handle illegal values. */
554 return;
555 }
556 /* TODO: Merge bswap from cpu_to_leXX into memory_region_dispatch_write. */
557 memory_region_dispatch_write(mr, addr, val, size_memop(len) | MO_LE,
558 MEMTXATTRS_UNSPECIFIED);
559}
560
561static void
562virtio_address_space_read(VirtIOPCIProxy *proxy, hwaddr addr,
563 uint8_t *buf, int len)
564{

--- 8 unchanged lines hidden (view full) ---

573 mr = virtio_address_space_lookup(proxy, &addr, len);
574 if (!mr) {
575 return;
576 }
577
578 /* Make sure caller aligned buf properly */
579 assert(!(((uintptr_t)buf) & (len - 1)));
580
556 memory_region_dispatch_write(mr, addr, val, size_memop(len) | MO_LE,
557 MEMTXATTRS_UNSPECIFIED);
558}
559
560static void
561virtio_address_space_read(VirtIOPCIProxy *proxy, hwaddr addr,
562 uint8_t *buf, int len)
563{

--- 8 unchanged lines hidden (view full) ---

572 mr = virtio_address_space_lookup(proxy, &addr, len);
573 if (!mr) {
574 return;
575 }
576
577 /* Make sure caller aligned buf properly */
578 assert(!(((uintptr_t)buf) & (len - 1)));
579
581 /* TODO: Merge bswap from leXX_to_cpu into memory_region_dispatch_read. */
582 memory_region_dispatch_read(mr, addr, &val, size_memop(len) | MO_LE,
583 MEMTXATTRS_UNSPECIFIED);
584 switch (len) {
585 case 1:
586 pci_set_byte(buf, val);
587 break;
588 case 2:
580 memory_region_dispatch_read(mr, addr, &val, size_memop(len) | MO_LE,
581 MEMTXATTRS_UNSPECIFIED);
582 switch (len) {
583 case 1:
584 pci_set_byte(buf, val);
585 break;
586 case 2:
589 pci_set_word(buf, le16_to_cpu(val));
587 pci_set_word(buf, val);
590 break;
591 case 4:
588 break;
589 case 4:
592 pci_set_long(buf, le32_to_cpu(val));
590 pci_set_long(buf, val);
593 break;
594 default:
595 /* As length is under guest control, handle illegal values. */
596 break;
597 }
598}
599
600static void virtio_write_config(PCIDevice *pci_dev, uint32_t address,

--- 1465 unchanged lines hidden ---
591 break;
592 default:
593 /* As length is under guest control, handle illegal values. */
594 break;
595 }
596}
597
598static void virtio_write_config(PCIDevice *pci_dev, uint32_t address,

--- 1465 unchanged lines hidden ---