Revision 88045ac5

b/hw/spapr_pci.c
67 67
    return ((arg >> 20) & 0xf00) | (arg & 0xff);
68 68
}
69 69

  
70
static uint32_t rtas_read_pci_config_do(PCIDevice *pci_dev, uint32_t addr,
71
                                        uint32_t limit, uint32_t len)
72
{
73
    if ((addr + len) <= limit) {
74
        return pci_host_config_read_common(pci_dev, addr, limit, len);
75
    } else {
76
        return ~0x0;
77
    }
78
}
79

  
80
static void rtas_write_pci_config_do(PCIDevice *pci_dev, uint32_t addr,
81
                                     uint32_t limit, uint32_t val,
82
                                     uint32_t len)
83
{
84
    if ((addr + len) <= limit) {
85
        pci_host_config_write_common(pci_dev, addr, limit, val, len);
86
    }
87
}
88

  
70 89
static void rtas_ibm_read_pci_config(sPAPREnvironment *spapr,
71 90
                                     uint32_t token, uint32_t nargs,
72 91
                                     target_ulong args,
......
82 101
    }
83 102
    size = rtas_ld(args, 3);
84 103
    addr = rtas_pci_cfgaddr(rtas_ld(args, 0));
85
    val = pci_host_config_read_common(dev, addr, pci_config_size(dev), size);
104
    val = rtas_read_pci_config_do(dev, addr, pci_config_size(dev), size);
86 105
    rtas_st(rets, 0, 0);
87 106
    rtas_st(rets, 1, val);
88 107
}
......
101 120
    }
102 121
    size = rtas_ld(args, 1);
103 122
    addr = rtas_pci_cfgaddr(rtas_ld(args, 0));
104
    val = pci_host_config_read_common(dev, addr, pci_config_size(dev), size);
123
    val = rtas_read_pci_config_do(dev, addr, pci_config_size(dev), size);
105 124
    rtas_st(rets, 0, 0);
106 125
    rtas_st(rets, 1, val);
107 126
}
......
122 141
    val = rtas_ld(args, 4);
123 142
    size = rtas_ld(args, 3);
124 143
    addr = rtas_pci_cfgaddr(rtas_ld(args, 0));
125
    pci_host_config_write_common(dev, addr, pci_config_size(dev), val, size);
144
    rtas_write_pci_config_do(dev, addr, pci_config_size(dev), val, size);
126 145
    rtas_st(rets, 0, 0);
127 146
}
128 147

  
......
141 160
    val = rtas_ld(args, 2);
142 161
    size = rtas_ld(args, 1);
143 162
    addr = rtas_pci_cfgaddr(rtas_ld(args, 0));
144
    pci_host_config_write_common(dev, addr, pci_config_size(dev), val, size);
163
    rtas_write_pci_config_do(dev, addr, pci_config_size(dev), val, size);
145 164
    rtas_st(rets, 0, 0);
146 165
}
147 166

  

Also available in: Unified diff