aboutsummaryrefslogtreecommitdiff
path: root/arch/sparc64/kernel/pci_sun4v_asm.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sparc64/kernel/pci_sun4v_asm.S')
-rw-r--r--arch/sparc64/kernel/pci_sun4v_asm.S56
1 files changed, 56 insertions, 0 deletions
diff --git a/arch/sparc64/kernel/pci_sun4v_asm.S b/arch/sparc64/kernel/pci_sun4v_asm.S
new file mode 100644
index 00000000000..fd2fe0edf16
--- /dev/null
+++ b/arch/sparc64/kernel/pci_sun4v_asm.S
@@ -0,0 +1,56 @@
+/* pci_sun4v_asm: Hypervisor calls for PCI support.
+ *
+ * Copyright (C) 2006 David S. Miller <davem@davemloft.net>
+ */
+
+#include <asm/hypervisor.h>
+
+ /* %o0: devhandle
+ * %o1: devino
+ *
+ * returns %o0: sysino
+ */
+ .globl pci_sun4v_devino_to_sysino
+pci_sun4v_devino_to_sysino:
+ mov %o1, %o2
+ mov %o0, %o1
+ mov HV_FAST_INTR_DEVINO2SYSINO, %o0
+ ta HV_FAST_TRAP
+ retl
+ mov %o1, %o0
+
+ /* %o0: devhandle
+ * %o1: tsbid
+ * %o2: num ttes
+ * %o3: io_attributes
+ * %o4: io_page_list phys address
+ *
+ * returns %o0: num ttes mapped
+ */
+ .globl pci_sun4v_iommu_map
+pci_sun4v_iommu_map:
+ mov %o4, %o5
+ mov %o3, %o4
+ mov %o2, %o3
+ mov %o1, %o2
+ mov %o0, %o1
+ mov HV_FAST_PCI_IOMMU_MAP, %o0
+ ta HV_FAST_TRAP
+ retl
+ mov %o1, %o0
+
+ /* %o0: devhandle
+ * %o1: tsbid
+ * %o2: num ttes
+ *
+ * returns %o0: num ttes demapped
+ */
+ .globl pci_sun4v_iommu_demap
+pci_sun4v_iommu_demap:
+ mov %o2, %o3
+ mov %o1, %o2
+ mov %o0, %o1
+ mov HV_FAST_PCI_IOMMU_DEMAP, %o0
+ ta HV_FAST_TRAP
+ retl
+ mov %o1, %o0