Annotation of qemu/hw/alpha_pci.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * QEMU Alpha PCI support functions.
                      3:  *
                      4:  * Some of this isn't very Alpha specific at all.
                      5:  *
                      6:  * ??? Sparse memory access not implemented.
                      7:  */
                      8: 
                      9: #include "config.h"
                     10: #include "alpha_sys.h"
                     11: #include "qemu-log.h"
                     12: #include "sysemu.h"
                     13: #include "vmware_vga.h"
                     14: 
                     15: 
                     16: /* PCI IO reads/writes, to byte-word addressable memory.  */
                     17: /* ??? Doesn't handle multiple PCI busses.  */
                     18: 
                     19: static uint64_t bw_io_read(void *opaque, target_phys_addr_t addr, unsigned size)
                     20: {
                     21:     switch (size) {
                     22:     case 1:
                     23:         return cpu_inb(addr);
                     24:     case 2:
                     25:         return cpu_inw(addr);
                     26:     case 4:
                     27:         return cpu_inl(addr);
                     28:     }
                     29:     abort();
                     30: }
                     31: 
                     32: static void bw_io_write(void *opaque, target_phys_addr_t addr,
                     33:                         uint64_t val, unsigned size)
                     34: {
                     35:     switch (size) {
                     36:     case 1:
                     37:         cpu_outb(addr, val);
                     38:         break;
                     39:     case 2:
                     40:         cpu_outw(addr, val);
                     41:         break;
                     42:     case 4:
                     43:         cpu_outl(addr, val);
                     44:         break;
                     45:     default:
                     46:         abort();
                     47:     }
                     48: }
                     49: 
                     50: const MemoryRegionOps alpha_pci_bw_io_ops = {
                     51:     .read = bw_io_read,
                     52:     .write = bw_io_write,
                     53:     .endianness = DEVICE_LITTLE_ENDIAN,
                     54:     .impl = {
                     55:         .min_access_size = 1,
                     56:         .max_access_size = 4,
                     57:     },
                     58: };
                     59: 
                     60: /* PCI config space reads/writes, to byte-word addressable memory.  */
                     61: static uint64_t bw_conf1_read(void *opaque, target_phys_addr_t addr,
                     62:                               unsigned size)
                     63: {
                     64:     PCIBus *b = opaque;
                     65:     return pci_data_read(b, addr, size);
                     66: }
                     67: 
                     68: static void bw_conf1_write(void *opaque, target_phys_addr_t addr,
                     69:                            uint64_t val, unsigned size)
                     70: {
                     71:     PCIBus *b = opaque;
                     72:     pci_data_write(b, addr, val, size);
                     73: }
                     74: 
                     75: const MemoryRegionOps alpha_pci_conf1_ops = {
                     76:     .read = bw_conf1_read,
                     77:     .write = bw_conf1_write,
                     78:     .endianness = DEVICE_LITTLE_ENDIAN,
                     79:     .impl = {
                     80:         .min_access_size = 1,
                     81:         .max_access_size = 4,
                     82:     },
                     83: };
                     84: 
                     85: /* PCI/EISA Interrupt Acknowledge Cycle.  */
                     86: 
                     87: static uint64_t iack_read(void *opaque, target_phys_addr_t addr, unsigned size)
                     88: {
                     89:     return pic_read_irq(isa_pic);
                     90: }
                     91: 
                     92: static void special_write(void *opaque, target_phys_addr_t addr,
                     93:                           uint64_t val, unsigned size)
                     94: {
                     95:     qemu_log("pci: special write cycle");
                     96: }
                     97: 
                     98: const MemoryRegionOps alpha_pci_iack_ops = {
                     99:     .read = iack_read,
                    100:     .write = special_write,
                    101:     .endianness = DEVICE_LITTLE_ENDIAN,
                    102:     .valid = {
                    103:         .min_access_size = 4,
                    104:         .max_access_size = 4,
                    105:     },
                    106:     .impl = {
                    107:         .min_access_size = 4,
                    108:         .max_access_size = 4,
                    109:     },
                    110: };
                    111: 
                    112: void alpha_pci_vga_setup(PCIBus *pci_bus)
                    113: {
                    114:     switch (vga_interface_type) {
                    115: #ifdef CONFIG_SPICE
                    116:     case VGA_QXL:
                    117:         pci_create_simple(pci_bus, -1, "qxl-vga");
                    118:         return;
                    119: #endif
                    120:     case VGA_CIRRUS:
                    121:         pci_cirrus_vga_init(pci_bus);
                    122:         return;
                    123:     case VGA_VMWARE:
                    124:         if (pci_vmsvga_init(pci_bus)) {
                    125:             return;
                    126:         }
                    127:         break;
                    128:     }
                    129:     /* If VGA is enabled at all, and one of the above didn't work, then
                    130:        fallback to Standard VGA.  */
                    131:     if (vga_interface_type != VGA_NONE) {
                    132:         pci_vga_init(pci_bus);
                    133:     }
                    134: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.