| #ifndef _ASMPOWERPC_HCALL_H_ |
| #define _ASMPOWERPC_HCALL_H_ |
| /* |
| * Copyright (C) 2016, Red Hat Inc, Andrew Jones <drjones@redhat.com> |
| * |
| * This work is licensed under the terms of the GNU LGPL, version 2. |
| */ |
| |
| #define SC1 0x44000022 |
| #define SC1_REPLACEMENT 0x7c000268 |
| |
| #define H_SUCCESS 0 |
| #define H_HARDWARE -1 |
| #define H_FUNCTION -2 |
| #define H_PRIVILEGE -3 |
| #define H_PARAMETER -4 |
| |
| #define H_SET_SPRG0 0x24 |
| #define H_SET_DABR 0x28 |
| #define H_PAGE_INIT 0x2c |
| #define H_REGISTER_VPA 0xDC |
| #define H_CEDE 0xE0 |
| #define H_GET_TERM_CHAR 0x54 |
| #define H_PUT_TERM_CHAR 0x58 |
| #define H_RANDOM 0x300 |
| #define H_SET_MODE 0x31C |
| |
| #define KVMPPC_HCALL_BASE 0xf000 |
| #define KVMPPC_H_RTAS (KVMPPC_HCALL_BASE + 0x0) |
| |
| #ifndef __ASSEMBLY__ |
| /* |
| * hcall_have_broken_sc1 checks if we're on a host with a broken sc1. |
| * Returns 0 if we're not. |
| */ |
| extern int hcall_have_broken_sc1(void); |
| |
| /* |
| * hcall is the hypercall wrapper function. unittests may do what |
| * they like, but the framework should make all hypercalls through |
| * here to ensure they use a working sc1 instruction. @nr is the |
| * hypercall number. |
| */ |
| extern unsigned long hcall(unsigned long nr, ...); |
| |
| #endif /* !__ASSEMBLY__ */ |
| #endif /* _ASMPOWERPC_HCALL_H_ */ |