Commit 6c0f402f authored by David S. Miller's avatar David S. Miller

[SPARC64]: Implement rest of generic interrupt hypervisor calls.

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 85dfa19b
...@@ -1701,9 +1701,73 @@ hard_smp_processor_id: ...@@ -1701,9 +1701,73 @@ hard_smp_processor_id:
* *
* returns %o0: sysino * returns %o0: sysino
*/ */
.globl pci_sun4v_devino_to_sysino .globl sun4v_devino_to_sysino
sun4v_devino_to_sysino: sun4v_devino_to_sysino:
mov HV_FAST_INTR_DEVINO2SYSINO, %o5 mov HV_FAST_INTR_DEVINO2SYSINO, %o5
ta HV_FAST_TRAP ta HV_FAST_TRAP
retl retl
mov %o1, %o0 mov %o1, %o0
/* %o0: sysino
*
* returns %o0: intr_enabled (HV_INTR_{DISABLED,ENABLED})
*/
.globl sun4v_intr_getenabled
sun4v_intr_getenabled:
mov HV_FAST_INTR_GETENABLED, %o5
ta HV_FAST_TRAP
retl
mov %o1, %o0
/* %o0: sysino
* %o1: intr_enabled (HV_INTR_{DISABLED,ENABLED})
*/
.globl sun4v_intr_setenabled
sun4v_intr_setenabled:
mov HV_FAST_INTR_SETENABLED, %o5
ta HV_FAST_TRAP
retl
nop
/* %o0: sysino
*
* returns %o0: intr_state (HV_INTR_STATE_*)
*/
.globl sun4v_intr_getstate
sun4v_intr_getstate:
mov HV_FAST_INTR_GETSTATE, %o5
ta HV_FAST_TRAP
retl
mov %o1, %o0
/* %o0: sysino
* %o1: intr_state (HV_INTR_STATE_*)
*/
.globl sun4v_intr_setstate
sun4v_intr_setstate:
mov HV_FAST_INTR_SETSTATE, %o5
ta HV_FAST_TRAP
retl
nop
/* %o0: sysino
*
* returns %o0: cpuid
*/
.globl sun4v_intr_gettarget
sun4v_intr_gettarget:
mov HV_FAST_INTR_GETTARGET, %o5
ta HV_FAST_TRAP
retl
mov %o1, %o0
/* %o0: sysino
* %o1: cpuid
*/
.globl sun4v_intr_settarget
sun4v_intr_settarget:
mov HV_FAST_INTR_SETTARGET, %o5
ta HV_FAST_TRAP
retl
nop
...@@ -1221,6 +1221,10 @@ extern unsigned long sun4v_devino_to_sysino(unsigned long devhandle, ...@@ -1221,6 +1221,10 @@ extern unsigned long sun4v_devino_to_sysino(unsigned long devhandle,
*/ */
#define HV_FAST_INTR_GETENABLED 0xa1 #define HV_FAST_INTR_GETENABLED 0xa1
#ifndef __ASSEMBLY__
extern unsigned long sun4v_intr_getenabled(unsigned long sysino);
#endif
/* intr_setenabled() /* intr_setenabled()
* TRAP: HV_FAST_TRAP * TRAP: HV_FAST_TRAP
* FUNCTION: HV_FAST_INTR_SETENABLED * FUNCTION: HV_FAST_INTR_SETENABLED
...@@ -1233,6 +1237,10 @@ extern unsigned long sun4v_devino_to_sysino(unsigned long devhandle, ...@@ -1233,6 +1237,10 @@ extern unsigned long sun4v_devino_to_sysino(unsigned long devhandle,
*/ */
#define HV_FAST_INTR_SETENABLED 0xa2 #define HV_FAST_INTR_SETENABLED 0xa2
#ifndef __ASSEMBLY__
extern void sun4v_intr_setenabled(unsigned long sysino, unsigned long intr_enabled);
#endif
/* intr_getstate() /* intr_getstate()
* TRAP: HV_FAST_TRAP * TRAP: HV_FAST_TRAP
* FUNCTION: HV_FAST_INTR_GETSTATE * FUNCTION: HV_FAST_INTR_GETSTATE
...@@ -1245,6 +1253,10 @@ extern unsigned long sun4v_devino_to_sysino(unsigned long devhandle, ...@@ -1245,6 +1253,10 @@ extern unsigned long sun4v_devino_to_sysino(unsigned long devhandle,
*/ */
#define HV_FAST_INTR_GETSTATE 0xa3 #define HV_FAST_INTR_GETSTATE 0xa3
#ifndef __ASSEMBLY__
extern unsigned long sun4v_intr_getstate(unsigned long sysino);
#endif
/* intr_setstate() /* intr_setstate()
* TRAP: HV_FAST_TRAP * TRAP: HV_FAST_TRAP
* FUNCTION: HV_FAST_INTR_SETSTATE * FUNCTION: HV_FAST_INTR_SETSTATE
...@@ -1261,6 +1273,10 @@ extern unsigned long sun4v_devino_to_sysino(unsigned long devhandle, ...@@ -1261,6 +1273,10 @@ extern unsigned long sun4v_devino_to_sysino(unsigned long devhandle,
*/ */
#define HV_FAST_INTR_SETSTATE 0xa4 #define HV_FAST_INTR_SETSTATE 0xa4
#ifndef __ASSEMBLY__
extern void sun4v_intr_setstate(unsigned long sysino, unsigned long intr_state);
#endif
/* intr_gettarget() /* intr_gettarget()
* TRAP: HV_FAST_TRAP * TRAP: HV_FAST_TRAP
* FUNCTION: HV_FAST_INTR_GETTARGET * FUNCTION: HV_FAST_INTR_GETTARGET
...@@ -1275,6 +1291,10 @@ extern unsigned long sun4v_devino_to_sysino(unsigned long devhandle, ...@@ -1275,6 +1291,10 @@ extern unsigned long sun4v_devino_to_sysino(unsigned long devhandle,
*/ */
#define HV_FAST_INTR_GETTARGET 0xa5 #define HV_FAST_INTR_GETTARGET 0xa5
#ifndef __ASSEMBLY__
extern unsigned long sun4v_intr_gettarget(unsigned long sysino);
#endif
/* intr_settarget() /* intr_settarget()
* TRAP: HV_FAST_TRAP * TRAP: HV_FAST_TRAP
* FUNCTION: HV_FAST_INTR_SETTARGET * FUNCTION: HV_FAST_INTR_SETTARGET
...@@ -1288,6 +1308,10 @@ extern unsigned long sun4v_devino_to_sysino(unsigned long devhandle, ...@@ -1288,6 +1308,10 @@ extern unsigned long sun4v_devino_to_sysino(unsigned long devhandle,
*/ */
#define HV_FAST_INTR_SETTARGET 0xa6 #define HV_FAST_INTR_SETTARGET 0xa6
#ifndef __ASSEMBLY__
extern void sun4v_intr_settarget(unsigned long sysino, unsigned long cpuid);
#endif
/* PCI IO services. /* PCI IO services.
* *
* See the terminology descriptions in the device interrupt services * See the terminology descriptions in the device interrupt services
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment