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 --- |