pci_sun4v_asm.S 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. /* pci_sun4v_asm: Hypervisor calls for PCI support.
  2. *
  3. * Copyright (C) 2006 David S. Miller <davem@davemloft.net>
  4. */
  5. #include <asm/hypervisor.h>
  6. /* %o0: devhandle
  7. * %o1: devino
  8. *
  9. * returns %o0: sysino
  10. */
  11. .globl pci_sun4v_devino_to_sysino
  12. pci_sun4v_devino_to_sysino:
  13. mov %o1, %o2
  14. mov %o0, %o1
  15. mov HV_FAST_INTR_DEVINO2SYSINO, %o0
  16. ta HV_FAST_TRAP
  17. retl
  18. mov %o1, %o0
  19. /* %o0: devhandle
  20. * %o1: tsbid
  21. * %o2: num ttes
  22. * %o3: io_attributes
  23. * %o4: io_page_list phys address
  24. *
  25. * returns %o0: num ttes mapped
  26. */
  27. .globl pci_sun4v_iommu_map
  28. pci_sun4v_iommu_map:
  29. mov %o4, %o5
  30. mov %o3, %o4
  31. mov %o2, %o3
  32. mov %o1, %o2
  33. mov %o0, %o1
  34. mov HV_FAST_PCI_IOMMU_MAP, %o0
  35. ta HV_FAST_TRAP
  36. retl
  37. mov %o1, %o0
  38. /* %o0: devhandle
  39. * %o1: tsbid
  40. * %o2: num ttes
  41. *
  42. * returns %o0: num ttes demapped
  43. */
  44. .globl pci_sun4v_iommu_demap
  45. pci_sun4v_iommu_demap:
  46. mov %o2, %o3
  47. mov %o1, %o2
  48. mov %o0, %o1
  49. mov HV_FAST_PCI_IOMMU_DEMAP, %o0
  50. ta HV_FAST_TRAP
  51. retl
  52. mov %o1, %o0
  53. /* %o0: devhandle
  54. * %o1: pci_device
  55. * %o2: pci_config_offset
  56. * %o3: size
  57. *
  58. * returns %o0: data
  59. *
  60. * If there is an error, the data will be returned
  61. * as all 1's.
  62. */
  63. .globl pci_sun4v_config_get
  64. pci_sun4v_config_get:
  65. mov %o3, %o4
  66. mov %o2, %o3
  67. mov %o1, %o2
  68. mov %o0, %o1
  69. mov HV_FAST_PCI_CONFIG_GET, %o0
  70. ta HV_FAST_TRAP
  71. brnz,a,pn %o1, 1f
  72. mov -1, %o2
  73. 1: retl
  74. mov %o2, %o0
  75. /* %o0: devhandle
  76. * %o1: pci_device
  77. * %o2: pci_config_offset
  78. * %o3: size
  79. * %o4: data
  80. *
  81. * returns %o0: status
  82. *
  83. * status will be zero if the operation completed
  84. * successfully, else -1 if not
  85. */
  86. .globl pci_sun4v_config_put
  87. pci_sun4v_config_put:
  88. mov %o3, %o4
  89. mov %o2, %o3
  90. mov %o1, %o2
  91. mov %o0, %o1
  92. mov HV_FAST_PCI_CONFIG_PUT, %o0
  93. ta HV_FAST_TRAP
  94. brnz,a,pn %o1, 1f
  95. mov -1, %o1
  96. 1: retl
  97. mov %o1, %o0