1*e65bcc62SAndrew Jones #ifndef _ASMPOWERPC_HCALL_H_ 2*e65bcc62SAndrew Jones #define _ASMPOWERPC_HCALL_H_ 3*e65bcc62SAndrew Jones /* 4*e65bcc62SAndrew Jones * Copyright (C) 2016, Red Hat Inc, Andrew Jones <drjones@redhat.com> 5*e65bcc62SAndrew Jones * 6*e65bcc62SAndrew Jones * This work is licensed under the terms of the GNU LGPL, version 2. 7*e65bcc62SAndrew Jones */ 8*e65bcc62SAndrew Jones 9*e65bcc62SAndrew Jones #define SC1 0x44000022 10*e65bcc62SAndrew Jones #define SC1_REPLACEMENT 0x7c000268 11*e65bcc62SAndrew Jones 12*e65bcc62SAndrew Jones #define H_SUCCESS 0 13*e65bcc62SAndrew Jones #define H_HARDWARE -1 14*e65bcc62SAndrew Jones #define H_FUNCTION -2 15*e65bcc62SAndrew Jones #define H_PRIVILEGE -3 16*e65bcc62SAndrew Jones #define H_PARAMETER -4 17*e65bcc62SAndrew Jones 18*e65bcc62SAndrew Jones #define H_SET_DABR 0x28 19*e65bcc62SAndrew Jones #define H_PUT_TERM_CHAR 0x58 20*e65bcc62SAndrew Jones 21*e65bcc62SAndrew Jones #ifndef __ASSEMBLY__ 22*e65bcc62SAndrew Jones /* 23*e65bcc62SAndrew Jones * hcall_have_broken_sc1 checks if we're on a host with a broken sc1. 24*e65bcc62SAndrew Jones * Returns 0 if we're not. 25*e65bcc62SAndrew Jones */ 26*e65bcc62SAndrew Jones extern int hcall_have_broken_sc1(void); 27*e65bcc62SAndrew Jones 28*e65bcc62SAndrew Jones /* 29*e65bcc62SAndrew Jones * hcall is the hypercall wrapper function. unittests may do what 30*e65bcc62SAndrew Jones * they like, but the framework should make all hypercalls through 31*e65bcc62SAndrew Jones * here to ensure they use a working sc1 instruction. @nr is the 32*e65bcc62SAndrew Jones * hypercall number. 33*e65bcc62SAndrew Jones */ 34*e65bcc62SAndrew Jones extern unsigned long hcall(unsigned long nr, ...); 35*e65bcc62SAndrew Jones 36*e65bcc62SAndrew Jones #endif /* !__ASSEMBLY__ */ 37*e65bcc62SAndrew Jones #endif /* _ASMPOWERPC_HCALL_H_ */ 38