Linux Audio

Check our new training course

Loading...
Note: File does not exist in v3.5.6.
 1#ifndef __S390_ASM_SIGP_H
 2#define __S390_ASM_SIGP_H
 3
 4/* SIGP order codes */
 5#define SIGP_SENSE		      1
 6#define SIGP_EXTERNAL_CALL	      2
 7#define SIGP_EMERGENCY_SIGNAL	      3
 8#define SIGP_START		      4
 9#define SIGP_STOP		      5
10#define SIGP_RESTART		      6
11#define SIGP_STOP_AND_STORE_STATUS    9
12#define SIGP_INITIAL_CPU_RESET	     11
13#define SIGP_SET_PREFIX		     13
14#define SIGP_STORE_STATUS_AT_ADDRESS 14
15#define SIGP_SET_ARCHITECTURE	     18
16#define SIGP_COND_EMERGENCY_SIGNAL   19
17#define SIGP_SENSE_RUNNING	     21
18
19/* SIGP condition codes */
20#define SIGP_CC_ORDER_CODE_ACCEPTED 0
21#define SIGP_CC_STATUS_STORED	    1
22#define SIGP_CC_BUSY		    2
23#define SIGP_CC_NOT_OPERATIONAL	    3
24
25/* SIGP cpu status bits */
26
27#define SIGP_STATUS_CHECK_STOP		0x00000010UL
28#define SIGP_STATUS_STOPPED		0x00000040UL
29#define SIGP_STATUS_EXT_CALL_PENDING	0x00000080UL
30#define SIGP_STATUS_INVALID_PARAMETER	0x00000100UL
31#define SIGP_STATUS_INCORRECT_STATE	0x00000200UL
32#define SIGP_STATUS_NOT_RUNNING		0x00000400UL
33
34#ifndef __ASSEMBLY__
35
36static inline int __pcpu_sigp(u16 addr, u8 order, u32 parm, u32 *status)
37{
38	register unsigned int reg1 asm ("1") = parm;
39	int cc;
40
41	asm volatile(
42		"	sigp	%1,%2,0(%3)\n"
43		"	ipm	%0\n"
44		"	srl	%0,28\n"
45		: "=d" (cc), "+d" (reg1) : "d" (addr), "a" (order) : "cc");
46	if (status && cc == 1)
47		*status = reg1;
48	return cc;
49}
50
51#endif /* __ASSEMBLY__ */
52
53#endif /* __S390_ASM_SIGP_H */