]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/sparc64/kernel/pci_sun4v_asm.S
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6
[linux-2.6-omap-h63xx.git] / arch / sparc64 / kernel / pci_sun4v_asm.S
index 6604fdbf746cc44b2c410013563a87e27ae84ee3..e606d46c68159a9c773dfd571fb60b6659882055 100644 (file)
@@ -1,8 +1,9 @@
 /* pci_sun4v_asm: Hypervisor calls for PCI support.
  *
- * Copyright (C) 2006 David S. Miller <davem@davemloft.net>
+ * Copyright (C) 2006, 2008 David S. Miller <davem@davemloft.net>
  */
 
+#include <linux/linkage.h>
 #include <asm/hypervisor.h>
 
        /* %o0: devhandle
@@ -14,8 +15,7 @@
         * returns %o0: -status if status was non-zero, else
         *         %o0: num pages mapped
         */
-       .globl  pci_sun4v_iommu_map
-pci_sun4v_iommu_map:
+ENTRY(pci_sun4v_iommu_map)
        mov     %o5, %g1
        mov     HV_FAST_PCI_IOMMU_MAP, %o5
        ta      HV_FAST_TRAP
@@ -24,6 +24,7 @@ pci_sun4v_iommu_map:
        mov     %o1, %o0
 1:     retl
         nop
+ENDPROC(pci_sun4v_iommu_map)
 
        /* %o0: devhandle
         * %o1: tsbid
@@ -31,12 +32,12 @@ pci_sun4v_iommu_map:
         *
         * returns %o0: num ttes demapped
         */
-       .globl  pci_sun4v_iommu_demap
-pci_sun4v_iommu_demap:
+ENTRY(pci_sun4v_iommu_demap)
        mov     HV_FAST_PCI_IOMMU_DEMAP, %o5
        ta      HV_FAST_TRAP
        retl
         mov    %o1, %o0
+ENDPROC(pci_sun4v_iommu_demap)
 
        /* %o0: devhandle
         * %o1: tsbid
@@ -45,8 +46,7 @@ pci_sun4v_iommu_demap:
         *
         * returns %o0: status
         */
-       .globl  pci_sun4v_iommu_getmap
-pci_sun4v_iommu_getmap:
+ENTRY(pci_sun4v_iommu_getmap)
        mov     %o2, %o4
        mov     HV_FAST_PCI_IOMMU_GETMAP, %o5
        ta      HV_FAST_TRAP
@@ -54,6 +54,7 @@ pci_sun4v_iommu_getmap:
        stx     %o2, [%o3]
        retl
         mov    %o0, %o0
+ENDPROC(pci_sun4v_iommu_getmap)
 
        /* %o0: devhandle
         * %o1: pci_device
@@ -65,14 +66,14 @@ pci_sun4v_iommu_getmap:
         * If there is an error, the data will be returned
         * as all 1's.
         */
-       .globl  pci_sun4v_config_get
-pci_sun4v_config_get:
+ENTRY(pci_sun4v_config_get)
        mov     HV_FAST_PCI_CONFIG_GET, %o5
        ta      HV_FAST_TRAP
        brnz,a,pn %o1, 1f
         mov    -1, %o2
 1:     retl
         mov    %o2, %o0
+ENDPROC(pci_sun4v_config_get)
 
        /* %o0: devhandle
         * %o1: pci_device
@@ -85,11 +86,277 @@ pci_sun4v_config_get:
         * status will be zero if the operation completed
         * successfully, else -1 if not
         */
-       .globl  pci_sun4v_config_put
-pci_sun4v_config_put:
+ENTRY(pci_sun4v_config_put)
        mov     HV_FAST_PCI_CONFIG_PUT, %o5
        ta      HV_FAST_TRAP
        brnz,a,pn %o1, 1f
         mov    -1, %o1
 1:     retl
         mov    %o1, %o0
+ENDPROC(pci_sun4v_config_put)
+
+       /* %o0: devhandle
+        * %o1: msiqid
+        * %o2: msiq phys address
+        * %o3: num entries
+        *
+        * returns %o0: status
+        *
+        * status will be zero if the operation completed
+        * successfully, else -1 if not
+        */
+ENTRY(pci_sun4v_msiq_conf)
+       mov     HV_FAST_PCI_MSIQ_CONF, %o5
+       ta      HV_FAST_TRAP
+       retl
+        mov    %o0, %o0
+ENDPROC(pci_sun4v_msiq_conf)
+
+       /* %o0: devhandle
+        * %o1: msiqid
+        * %o2: &msiq_phys_addr
+        * %o3: &msiq_num_entries
+        *
+        * returns %o0: status
+        */
+ENTRY(pci_sun4v_msiq_info)
+       mov     %o2, %o4
+       mov     HV_FAST_PCI_MSIQ_INFO, %o5
+       ta      HV_FAST_TRAP
+       stx     %o1, [%o4]
+       stx     %o2, [%o3]
+       retl
+        mov    %o0, %o0
+ENDPROC(pci_sun4v_msiq_info)
+
+       /* %o0: devhandle
+        * %o1: msiqid
+        * %o2: &valid
+        *
+        * returns %o0: status
+        */
+ENTRY(pci_sun4v_msiq_getvalid)
+       mov     HV_FAST_PCI_MSIQ_GETVALID, %o5
+       ta      HV_FAST_TRAP
+       stx     %o1, [%o2]
+       retl
+        mov    %o0, %o0
+ENDPROC(pci_sun4v_msiq_getvalid)
+
+       /* %o0: devhandle
+        * %o1: msiqid
+        * %o2: valid
+        *
+        * returns %o0: status
+        */
+ENTRY(pci_sun4v_msiq_setvalid)
+       mov     HV_FAST_PCI_MSIQ_SETVALID, %o5
+       ta      HV_FAST_TRAP
+       retl
+        mov    %o0, %o0
+ENDPROC(pci_sun4v_msiq_setvalid)
+
+       /* %o0: devhandle
+        * %o1: msiqid
+        * %o2: &state
+        *
+        * returns %o0: status
+        */
+ENTRY(pci_sun4v_msiq_getstate)
+       mov     HV_FAST_PCI_MSIQ_GETSTATE, %o5
+       ta      HV_FAST_TRAP
+       stx     %o1, [%o2]
+       retl
+        mov    %o0, %o0
+ENDPROC(pci_sun4v_msiq_getstate)
+
+       /* %o0: devhandle
+        * %o1: msiqid
+        * %o2: state
+        *
+        * returns %o0: status
+        */
+ENTRY(pci_sun4v_msiq_setstate)
+       mov     HV_FAST_PCI_MSIQ_SETSTATE, %o5
+       ta      HV_FAST_TRAP
+       retl
+        mov    %o0, %o0
+ENDPROC(pci_sun4v_msiq_setstate)
+
+       /* %o0: devhandle
+        * %o1: msiqid
+        * %o2: &head
+        *
+        * returns %o0: status
+        */
+ENTRY(pci_sun4v_msiq_gethead)
+       mov     HV_FAST_PCI_MSIQ_GETHEAD, %o5
+       ta      HV_FAST_TRAP
+       stx     %o1, [%o2]
+       retl
+        mov    %o0, %o0
+ENDPROC(pci_sun4v_msiq_gethead)
+
+       /* %o0: devhandle
+        * %o1: msiqid
+        * %o2: head
+        *
+        * returns %o0: status
+        */
+ENTRY(pci_sun4v_msiq_sethead)
+       mov     HV_FAST_PCI_MSIQ_SETHEAD, %o5
+       ta      HV_FAST_TRAP
+       retl
+        mov    %o0, %o0
+ENDPROC(pci_sun4v_msiq_sethead)
+
+       /* %o0: devhandle
+        * %o1: msiqid
+        * %o2: &tail
+        *
+        * returns %o0: status
+        */
+ENTRY(pci_sun4v_msiq_gettail)
+       mov     HV_FAST_PCI_MSIQ_GETTAIL, %o5
+       ta      HV_FAST_TRAP
+       stx     %o1, [%o2]
+       retl
+        mov    %o0, %o0
+ENDPROC(pci_sun4v_msiq_gettail)
+
+       /* %o0: devhandle
+        * %o1: msinum
+        * %o2: &valid
+        *
+        * returns %o0: status
+        */
+ENTRY(pci_sun4v_msi_getvalid)
+       mov     HV_FAST_PCI_MSI_GETVALID, %o5
+       ta      HV_FAST_TRAP
+       stx     %o1, [%o2]
+       retl
+        mov    %o0, %o0
+ENDPROC(pci_sun4v_msi_getvalid)
+
+       /* %o0: devhandle
+        * %o1: msinum
+        * %o2: valid
+        *
+        * returns %o0: status
+        */
+ENTRY(pci_sun4v_msi_setvalid)
+       mov     HV_FAST_PCI_MSI_SETVALID, %o5
+       ta      HV_FAST_TRAP
+       retl
+        mov    %o0, %o0
+ENDPROC(pci_sun4v_msi_setvalid)
+
+       /* %o0: devhandle
+        * %o1: msinum
+        * %o2: &msiq
+        *
+        * returns %o0: status
+        */
+ENTRY(pci_sun4v_msi_getmsiq)
+       mov     HV_FAST_PCI_MSI_GETMSIQ, %o5
+       ta      HV_FAST_TRAP
+       stx     %o1, [%o2]
+       retl
+        mov    %o0, %o0
+ENDPROC(pci_sun4v_msi_getmsiq)
+
+       /* %o0: devhandle
+        * %o1: msinum
+        * %o2: msitype
+        * %o3: msiq
+        *
+        * returns %o0: status
+        */
+ENTRY(pci_sun4v_msi_setmsiq)
+       mov     HV_FAST_PCI_MSI_SETMSIQ, %o5
+       ta      HV_FAST_TRAP
+       retl
+        mov    %o0, %o0
+ENDPROC(pci_sun4v_msi_setmsiq)
+
+       /* %o0: devhandle
+        * %o1: msinum
+        * %o2: &state
+        *
+        * returns %o0: status
+        */
+ENTRY(pci_sun4v_msi_getstate)
+       mov     HV_FAST_PCI_MSI_GETSTATE, %o5
+       ta      HV_FAST_TRAP
+       stx     %o1, [%o2]
+       retl
+        mov    %o0, %o0
+ENDPROC(pci_sun4v_msi_getstate)
+
+       /* %o0: devhandle
+        * %o1: msinum
+        * %o2: state
+        *
+        * returns %o0: status
+        */
+ENTRY(pci_sun4v_msi_setstate)
+       mov     HV_FAST_PCI_MSI_SETSTATE, %o5
+       ta      HV_FAST_TRAP
+       retl
+        mov    %o0, %o0
+ENDPROC(pci_sun4v_msi_setstate)
+
+       /* %o0: devhandle
+        * %o1: msinum
+        * %o2: &msiq
+        *
+        * returns %o0: status
+        */
+ENTRY(pci_sun4v_msg_getmsiq)
+       mov     HV_FAST_PCI_MSG_GETMSIQ, %o5
+       ta      HV_FAST_TRAP
+       stx     %o1, [%o2]
+       retl
+        mov    %o0, %o0
+ENDPROC(pci_sun4v_msg_getmsiq)
+
+       /* %o0: devhandle
+        * %o1: msinum
+        * %o2: msiq
+        *
+        * returns %o0: status
+        */
+ENTRY(pci_sun4v_msg_setmsiq)
+       mov     HV_FAST_PCI_MSG_SETMSIQ, %o5
+       ta      HV_FAST_TRAP
+       retl
+        mov    %o0, %o0
+ENDPROC(pci_sun4v_msg_setmsiq)
+
+       /* %o0: devhandle
+        * %o1: msinum
+        * %o2: &valid
+        *
+        * returns %o0: status
+        */
+ENTRY(pci_sun4v_msg_getvalid)
+       mov     HV_FAST_PCI_MSG_GETVALID, %o5
+       ta      HV_FAST_TRAP
+       stx     %o1, [%o2]
+       retl
+        mov    %o0, %o0
+ENDPROC(pci_sun4v_msg_getvalid)
+
+       /* %o0: devhandle
+        * %o1: msinum
+        * %o2: valid
+        *
+        * returns %o0: status
+        */
+ENTRY(pci_sun4v_msg_setvalid)
+       mov     HV_FAST_PCI_MSG_SETVALID, %o5
+       ta      HV_FAST_TRAP
+       retl
+        mov    %o0, %o0
+ENDPROC(pci_sun4v_msg_setvalid)
+