0001
0002
0003
0004
0005
0006
0007 #include <linux/linkage.h>
0008 #include <asm/hypervisor.h>
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019 ENTRY(pci_sun4v_iommu_map)
0020 mov %o5, %g1
0021 mov HV_FAST_PCI_IOMMU_MAP, %o5
0022 ta HV_FAST_TRAP
0023 brnz,pn %o0, 1f
0024 sub %g0, %o0, %o0
0025 mov %o1, %o0
0026 1: retl
0027 nop
0028 ENDPROC(pci_sun4v_iommu_map)
0029
0030
0031
0032
0033
0034
0035
0036 ENTRY(pci_sun4v_iommu_demap)
0037 mov HV_FAST_PCI_IOMMU_DEMAP, %o5
0038 ta HV_FAST_TRAP
0039 retl
0040 mov %o1, %o0
0041 ENDPROC(pci_sun4v_iommu_demap)
0042
0043
0044
0045
0046
0047
0048
0049
0050 ENTRY(pci_sun4v_iommu_getmap)
0051 mov %o2, %o4
0052 mov HV_FAST_PCI_IOMMU_GETMAP, %o5
0053 ta HV_FAST_TRAP
0054 stx %o1, [%o4]
0055 stx %o2, [%o3]
0056 retl
0057 mov %o0, %o0
0058 ENDPROC(pci_sun4v_iommu_getmap)
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068
0069
0070 ENTRY(pci_sun4v_config_get)
0071 mov HV_FAST_PCI_CONFIG_GET, %o5
0072 ta HV_FAST_TRAP
0073 brnz,a,pn %o1, 1f
0074 mov -1, %o2
0075 1: retl
0076 mov %o2, %o0
0077 ENDPROC(pci_sun4v_config_get)
0078
0079
0080
0081
0082
0083
0084
0085
0086
0087
0088
0089
0090 ENTRY(pci_sun4v_config_put)
0091 mov HV_FAST_PCI_CONFIG_PUT, %o5
0092 ta HV_FAST_TRAP
0093 brnz,a,pn %o1, 1f
0094 mov -1, %o1
0095 1: retl
0096 mov %o1, %o0
0097 ENDPROC(pci_sun4v_config_put)
0098
0099
0100
0101
0102
0103
0104
0105
0106
0107
0108
0109 ENTRY(pci_sun4v_msiq_conf)
0110 mov HV_FAST_PCI_MSIQ_CONF, %o5
0111 ta HV_FAST_TRAP
0112 retl
0113 mov %o0, %o0
0114 ENDPROC(pci_sun4v_msiq_conf)
0115
0116
0117
0118
0119
0120
0121
0122
0123 ENTRY(pci_sun4v_msiq_info)
0124 mov %o2, %o4
0125 mov HV_FAST_PCI_MSIQ_INFO, %o5
0126 ta HV_FAST_TRAP
0127 stx %o1, [%o4]
0128 stx %o2, [%o3]
0129 retl
0130 mov %o0, %o0
0131 ENDPROC(pci_sun4v_msiq_info)
0132
0133
0134
0135
0136
0137
0138
0139 ENTRY(pci_sun4v_msiq_getvalid)
0140 mov HV_FAST_PCI_MSIQ_GETVALID, %o5
0141 ta HV_FAST_TRAP
0142 stx %o1, [%o2]
0143 retl
0144 mov %o0, %o0
0145 ENDPROC(pci_sun4v_msiq_getvalid)
0146
0147
0148
0149
0150
0151
0152
0153 ENTRY(pci_sun4v_msiq_setvalid)
0154 mov HV_FAST_PCI_MSIQ_SETVALID, %o5
0155 ta HV_FAST_TRAP
0156 retl
0157 mov %o0, %o0
0158 ENDPROC(pci_sun4v_msiq_setvalid)
0159
0160
0161
0162
0163
0164
0165
0166 ENTRY(pci_sun4v_msiq_getstate)
0167 mov HV_FAST_PCI_MSIQ_GETSTATE, %o5
0168 ta HV_FAST_TRAP
0169 stx %o1, [%o2]
0170 retl
0171 mov %o0, %o0
0172 ENDPROC(pci_sun4v_msiq_getstate)
0173
0174
0175
0176
0177
0178
0179
0180 ENTRY(pci_sun4v_msiq_setstate)
0181 mov HV_FAST_PCI_MSIQ_SETSTATE, %o5
0182 ta HV_FAST_TRAP
0183 retl
0184 mov %o0, %o0
0185 ENDPROC(pci_sun4v_msiq_setstate)
0186
0187
0188
0189
0190
0191
0192
0193 ENTRY(pci_sun4v_msiq_gethead)
0194 mov HV_FAST_PCI_MSIQ_GETHEAD, %o5
0195 ta HV_FAST_TRAP
0196 stx %o1, [%o2]
0197 retl
0198 mov %o0, %o0
0199 ENDPROC(pci_sun4v_msiq_gethead)
0200
0201
0202
0203
0204
0205
0206
0207 ENTRY(pci_sun4v_msiq_sethead)
0208 mov HV_FAST_PCI_MSIQ_SETHEAD, %o5
0209 ta HV_FAST_TRAP
0210 retl
0211 mov %o0, %o0
0212 ENDPROC(pci_sun4v_msiq_sethead)
0213
0214
0215
0216
0217
0218
0219
0220 ENTRY(pci_sun4v_msiq_gettail)
0221 mov HV_FAST_PCI_MSIQ_GETTAIL, %o5
0222 ta HV_FAST_TRAP
0223 stx %o1, [%o2]
0224 retl
0225 mov %o0, %o0
0226 ENDPROC(pci_sun4v_msiq_gettail)
0227
0228
0229
0230
0231
0232
0233
0234 ENTRY(pci_sun4v_msi_getvalid)
0235 mov HV_FAST_PCI_MSI_GETVALID, %o5
0236 ta HV_FAST_TRAP
0237 stx %o1, [%o2]
0238 retl
0239 mov %o0, %o0
0240 ENDPROC(pci_sun4v_msi_getvalid)
0241
0242
0243
0244
0245
0246
0247
0248 ENTRY(pci_sun4v_msi_setvalid)
0249 mov HV_FAST_PCI_MSI_SETVALID, %o5
0250 ta HV_FAST_TRAP
0251 retl
0252 mov %o0, %o0
0253 ENDPROC(pci_sun4v_msi_setvalid)
0254
0255
0256
0257
0258
0259
0260
0261 ENTRY(pci_sun4v_msi_getmsiq)
0262 mov HV_FAST_PCI_MSI_GETMSIQ, %o5
0263 ta HV_FAST_TRAP
0264 stx %o1, [%o2]
0265 retl
0266 mov %o0, %o0
0267 ENDPROC(pci_sun4v_msi_getmsiq)
0268
0269
0270
0271
0272
0273
0274
0275
0276 ENTRY(pci_sun4v_msi_setmsiq)
0277 mov HV_FAST_PCI_MSI_SETMSIQ, %o5
0278 ta HV_FAST_TRAP
0279 retl
0280 mov %o0, %o0
0281 ENDPROC(pci_sun4v_msi_setmsiq)
0282
0283
0284
0285
0286
0287
0288
0289 ENTRY(pci_sun4v_msi_getstate)
0290 mov HV_FAST_PCI_MSI_GETSTATE, %o5
0291 ta HV_FAST_TRAP
0292 stx %o1, [%o2]
0293 retl
0294 mov %o0, %o0
0295 ENDPROC(pci_sun4v_msi_getstate)
0296
0297
0298
0299
0300
0301
0302
0303 ENTRY(pci_sun4v_msi_setstate)
0304 mov HV_FAST_PCI_MSI_SETSTATE, %o5
0305 ta HV_FAST_TRAP
0306 retl
0307 mov %o0, %o0
0308 ENDPROC(pci_sun4v_msi_setstate)
0309
0310
0311
0312
0313
0314
0315
0316 ENTRY(pci_sun4v_msg_getmsiq)
0317 mov HV_FAST_PCI_MSG_GETMSIQ, %o5
0318 ta HV_FAST_TRAP
0319 stx %o1, [%o2]
0320 retl
0321 mov %o0, %o0
0322 ENDPROC(pci_sun4v_msg_getmsiq)
0323
0324
0325
0326
0327
0328
0329
0330 ENTRY(pci_sun4v_msg_setmsiq)
0331 mov HV_FAST_PCI_MSG_SETMSIQ, %o5
0332 ta HV_FAST_TRAP
0333 retl
0334 mov %o0, %o0
0335 ENDPROC(pci_sun4v_msg_setmsiq)
0336
0337
0338
0339
0340
0341
0342
0343 ENTRY(pci_sun4v_msg_getvalid)
0344 mov HV_FAST_PCI_MSG_GETVALID, %o5
0345 ta HV_FAST_TRAP
0346 stx %o1, [%o2]
0347 retl
0348 mov %o0, %o0
0349 ENDPROC(pci_sun4v_msg_getvalid)
0350
0351
0352
0353
0354
0355
0356
0357 ENTRY(pci_sun4v_msg_setvalid)
0358 mov HV_FAST_PCI_MSG_SETVALID, %o5
0359 ta HV_FAST_TRAP
0360 retl
0361 mov %o0, %o0
0362 ENDPROC(pci_sun4v_msg_setvalid)
0363
0364
0365
0366
0367
0368
0369
0370
0371
0372
0373
0374
0375 ENTRY(pci_sun4v_iotsb_conf)
0376 mov %o5, %g1
0377 mov HV_FAST_PCI_IOTSB_CONF, %o5
0378 ta HV_FAST_TRAP
0379 retl
0380 stx %o1, [%g1]
0381 ENDPROC(pci_sun4v_iotsb_conf)
0382
0383
0384
0385
0386
0387
0388
0389
0390 ENTRY(pci_sun4v_iotsb_bind)
0391 mov HV_FAST_PCI_IOTSB_BIND, %o5
0392 ta HV_FAST_TRAP
0393 retl
0394 nop
0395 ENDPROC(pci_sun4v_iotsb_bind)
0396
0397
0398
0399
0400
0401
0402
0403
0404
0405
0406
0407
0408 ENTRY(pci_sun4v_iotsb_map)
0409 mov %o5, %g1
0410 mov HV_FAST_PCI_IOTSB_MAP, %o5
0411 ta HV_FAST_TRAP
0412 retl
0413 stx %o1, [%g1]
0414 ENDPROC(pci_sun4v_iotsb_map)
0415
0416
0417
0418
0419
0420
0421
0422
0423
0424
0425
0426 ENTRY(pci_sun4v_iotsb_demap)
0427 mov HV_FAST_PCI_IOTSB_DEMAP, %o5
0428 ta HV_FAST_TRAP
0429 retl
0430 stx %o1, [%o4]
0431 ENDPROC(pci_sun4v_iotsb_demap)