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