1*0af4b381SJanosch Frank /* 2*0af4b381SJanosch Frank * SIGP related definitions. 3*0af4b381SJanosch Frank * 4*0af4b381SJanosch Frank * Copied from the Linux kernel file arch/s390/include/asm/sigp.h 5*0af4b381SJanosch Frank * 6*0af4b381SJanosch Frank * This work is licensed under the terms of the GNU GPL, version 7*0af4b381SJanosch Frank * 2. 8*0af4b381SJanosch Frank */ 9*0af4b381SJanosch Frank 10*0af4b381SJanosch Frank #ifndef ASM_S390X_SIGP_H 11*0af4b381SJanosch Frank #define ASM_S390X_SIGP_H 12*0af4b381SJanosch Frank 13*0af4b381SJanosch Frank /* SIGP order codes */ 14*0af4b381SJanosch Frank #define SIGP_SENSE 1 15*0af4b381SJanosch Frank #define SIGP_EXTERNAL_CALL 2 16*0af4b381SJanosch Frank #define SIGP_EMERGENCY_SIGNAL 3 17*0af4b381SJanosch Frank #define SIGP_START 4 18*0af4b381SJanosch Frank #define SIGP_STOP 5 19*0af4b381SJanosch Frank #define SIGP_RESTART 6 20*0af4b381SJanosch Frank #define SIGP_STOP_AND_STORE_STATUS 9 21*0af4b381SJanosch Frank #define SIGP_INITIAL_CPU_RESET 11 22*0af4b381SJanosch Frank #define SIGP_CPU_RESET 12 23*0af4b381SJanosch Frank #define SIGP_SET_PREFIX 13 24*0af4b381SJanosch Frank #define SIGP_STORE_STATUS_AT_ADDRESS 14 25*0af4b381SJanosch Frank #define SIGP_SET_ARCHITECTURE 18 26*0af4b381SJanosch Frank #define SIGP_COND_EMERGENCY_SIGNAL 19 27*0af4b381SJanosch Frank #define SIGP_SENSE_RUNNING 21 28*0af4b381SJanosch Frank #define SIGP_SET_MULTI_THREADING 22 29*0af4b381SJanosch Frank #define SIGP_STORE_ADDITIONAL_STATUS 23 30*0af4b381SJanosch Frank 31*0af4b381SJanosch Frank /* SIGP condition codes */ 32*0af4b381SJanosch Frank #define SIGP_CC_ORDER_CODE_ACCEPTED 0 33*0af4b381SJanosch Frank #define SIGP_CC_STATUS_STORED 1 34*0af4b381SJanosch Frank #define SIGP_CC_BUSY 2 35*0af4b381SJanosch Frank #define SIGP_CC_NOT_OPERATIONAL 3 36*0af4b381SJanosch Frank 37*0af4b381SJanosch Frank /* SIGP cpu status bits */ 38*0af4b381SJanosch Frank 39*0af4b381SJanosch Frank #define SIGP_STATUS_INVALID_ORDER 0x00000002UL 40*0af4b381SJanosch Frank #define SIGP_STATUS_CHECK_STOP 0x00000010UL 41*0af4b381SJanosch Frank #define SIGP_STATUS_STOPPED 0x00000040UL 42*0af4b381SJanosch Frank #define SIGP_STATUS_EXT_CALL_PENDING 0x00000080UL 43*0af4b381SJanosch Frank #define SIGP_STATUS_INVALID_PARAMETER 0x00000100UL 44*0af4b381SJanosch Frank #define SIGP_STATUS_INCORRECT_STATE 0x00000200UL 45*0af4b381SJanosch Frank #define SIGP_STATUS_NOT_RUNNING 0x00000400UL 46*0af4b381SJanosch Frank 47*0af4b381SJanosch Frank #ifndef __ASSEMBLER__ 48*0af4b381SJanosch Frank 49*0af4b381SJanosch Frank static inline void sigp_stop(void) 50*0af4b381SJanosch Frank { 51*0af4b381SJanosch Frank register unsigned long status asm ("1") = 0; 52*0af4b381SJanosch Frank register unsigned long cpu asm ("2") = 0; 53*0af4b381SJanosch Frank 54*0af4b381SJanosch Frank asm volatile( 55*0af4b381SJanosch Frank " sigp %0,%1,0(%2)\n" 56*0af4b381SJanosch Frank : "+d" (status) : "d" (cpu), "d" (SIGP_STOP) : "cc"); 57*0af4b381SJanosch Frank } 58*0af4b381SJanosch Frank 59*0af4b381SJanosch Frank #endif /* __ASSEMBLER__ */ 60*0af4b381SJanosch Frank #endif /* ASM_S390X_SIGP_H */ 61