xref: /kvm-unit-tests/lib/powerpc/asm/rtas.h (revision f1ccf5d2165b6c0e33630f0718814029cd414f13)
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  */
8*f1ccf5d2SLaurent Vivier 
9*f1ccf5d2SLaurent Vivier #ifndef __ASSEMBLY__
10*f1ccf5d2SLaurent 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);
242f9ce69eSAndrew Jones extern int rtas_token(const char *service);
252f9ce69eSAndrew Jones extern int rtas_call(int token, int nargs, int nret, int *outputs, ...);
262f9ce69eSAndrew Jones 
272f9ce69eSAndrew Jones extern void rtas_power_off(void);
28*f1ccf5d2SLaurent Vivier #endif /* __ASSEMBLY__ */
29*f1ccf5d2SLaurent Vivier 
30*f1ccf5d2SLaurent Vivier #define RTAS_MSR_MASK 0xfffffffffffffffe
312f9ce69eSAndrew Jones 
322f9ce69eSAndrew Jones #endif /* _ASMPOWERPC_RTAS_H_ */
33