xref: /kvm-unit-tests/lib/powerpc/asm/rtas.h (revision 0cc3a351b925928827baa4b69cf0e46ff5837083)
12f9ce69eSAndrew Jones #ifndef _ASMPOWERPC_RTAS_H_
22f9ce69eSAndrew Jones #define _ASMPOWERPC_RTAS_H_
32f9ce69eSAndrew Jones /*
42f9ce69eSAndrew Jones  * Copyright (C) 2016, Red Hat Inc, Andrew Jones <drjones@redhat.com>
52f9ce69eSAndrew Jones  *
62f9ce69eSAndrew Jones  * This work is licensed under the terms of the GNU LGPL, version 2.
72f9ce69eSAndrew Jones  */
8f1ccf5d2SLaurent Vivier 
9*0cc3a351SSean Christopherson #ifndef __ASSEMBLER__
10f1ccf5d2SLaurent Vivier 
112f9ce69eSAndrew Jones #include <libcflat.h>
122f9ce69eSAndrew Jones 
132f9ce69eSAndrew Jones #define RTAS_UNKNOWN_SERVICE	(-1)
142f9ce69eSAndrew Jones 
152f9ce69eSAndrew Jones struct rtas_args {
162f9ce69eSAndrew Jones 	u32 token;
172f9ce69eSAndrew Jones 	u32 nargs;
182f9ce69eSAndrew Jones 	u32 nret;
192f9ce69eSAndrew Jones 	u32 args[16];
202f9ce69eSAndrew Jones 	u32 *rets;
212f9ce69eSAndrew Jones };
222f9ce69eSAndrew Jones 
232f9ce69eSAndrew Jones extern void rtas_init(void);
242565dce1SThomas Huth extern int rtas_token(const char *service, uint32_t *token);
252f9ce69eSAndrew Jones extern int rtas_call(int token, int nargs, int nret, int *outputs, ...);
26789a8e69SNicholas Piggin extern int rtas_call_unlocked(struct rtas_args *args, int token, int nargs, int nret, int *outputs, ...);
272f9ce69eSAndrew Jones 
282f9ce69eSAndrew Jones extern void rtas_power_off(void);
29789a8e69SNicholas Piggin extern void rtas_stop_self(void);
30*0cc3a351SSean Christopherson #endif /* __ASSEMBLER__ */
31f1ccf5d2SLaurent Vivier 
32f1ccf5d2SLaurent Vivier #define RTAS_MSR_MASK 0xfffffffffffffffe
332f9ce69eSAndrew Jones 
342f9ce69eSAndrew Jones #endif /* _ASMPOWERPC_RTAS_H_ */
35