Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  pci_sun4v_asm.S  Sprache: unbekannt

 
/* SPDX-License-Identifier: GPL-2.0 */
/* pci_sun4v_asm: Hypervisor calls for PCI support.
 *
 * Copyright (C) 2006, 2008 David S. Miller <davem@davemloft.net>
 */


#include <linux/linkage.h>
#include <asm/hypervisor.h>

 /* %o0: devhandle
  * %o1: tsbid
  * %o2: num ttes
  * %o3: io_attributes
  * %o4: io_page_list phys address
  *
  * returns %o0: -status if status was non-zero, else
  *         %o0: num pages mapped
 */

ENTRY(pci_sun4v_iommu_map)
 mov %o5, %g1
 mov HV_FAST_PCI_IOMMU_MAP, %o5
 ta HV_FAST_TRAP
 brnz,pn %o0, 1f
  sub %g0, %o0, %o0
 mov %o1, %o0
1: retl
  nop
ENDPROC(pci_sun4v_iommu_map)

 /* %o0: devhandle
  * %o1: tsbid
  * %o2: num ttes
  *
  * returns %o0: num ttes demapped
 */

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
  * %o2: &io_attributes
  * %o3: &real_address
  *
  * returns %o0: status
 */

ENTRY(pci_sun4v_iommu_getmap)
 mov %o2, %o4
 mov HV_FAST_PCI_IOMMU_GETMAP, %o5
 ta HV_FAST_TRAP
 stx %o1, [%o4]
 stx %o2, [%o3]
 retl
  mov %o0, %o0
ENDPROC(pci_sun4v_iommu_getmap)

 /* %o0: devhandle
  * %o1: pci_device
  * %o2: pci_config_offset
  * %o3: size
  *
  * returns %o0: data
  *
  * If there is an error, the data will be returned
  * as all 1's.
 */

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
  * %o2: pci_config_offset
  * %o3: size
  * %o4: data
  *
  * returns %o0: status
  *
  * status will be zero if the operation completed
  * successfully, else -1 if not
 */

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)

 /*
  * %o0: devhandle
  * %o1: r_addr
  * %o2: size
  * %o3: pagesize
  * %o4: virt
  * %o5: &iotsb_num/&iotsb_handle
  *
  * returns %o0: status
  *         %o1: iotsb_num/iotsb_handle
 */

ENTRY(pci_sun4v_iotsb_conf)
 mov %o5, %g1
 mov HV_FAST_PCI_IOTSB_CONF, %o5
 ta HV_FAST_TRAP
 retl
  stx %o1, [%g1]
ENDPROC(pci_sun4v_iotsb_conf)

 /*
  * %o0: devhandle
  * %o1: iotsb_num/iotsb_handle
  * %o2: pci_device
  *
  * returns %o0: status
 */

ENTRY(pci_sun4v_iotsb_bind)
 mov HV_FAST_PCI_IOTSB_BIND, %o5
 ta HV_FAST_TRAP
 retl
  nop
ENDPROC(pci_sun4v_iotsb_bind)

 /*
  * %o0: devhandle
  * %o1: iotsb_num/iotsb_handle
  * %o2: index_count
  * %o3: iotte_attributes
  * %o4: io_page_list_p
  * %o5: &mapped
  *
  * returns %o0: status
  *         %o1: #mapped
 */

ENTRY(pci_sun4v_iotsb_map)
 mov %o5, %g1
 mov HV_FAST_PCI_IOTSB_MAP, %o5
 ta HV_FAST_TRAP
 retl
  stx %o1, [%g1]
ENDPROC(pci_sun4v_iotsb_map)

 /*
  * %o0: devhandle
  * %o1: iotsb_num/iotsb_handle
  * %o2: iotsb_index
  * %o3: #iottes
  * %o4: &demapped
  *
  * returns %o0: status
  *         %o1: #demapped
 */

ENTRY(pci_sun4v_iotsb_demap)
 mov HV_FAST_PCI_IOTSB_DEMAP, %o5
 ta HV_FAST_TRAP
 retl
  stx %o1, [%o4]
ENDPROC(pci_sun4v_iotsb_demap)

Messung V0.5 in Prozent
C=94 H=100 G=96

[0.10QuellennavigatorsProjekt 2026-10-11]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

letze Version des Elbe Quellennavigators


Jenseits des Üblichen ....

Besucher

Besucher

Statistik
#Sources=1127926
#Domains=2039723