xref: /kvm-unit-tests/lib/powerpc/asm/rtas.h (revision 2565dce15eb32678f45a2b126ce374b634eb2b6c)
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 
9f1ccf5d2SLaurent Vivier #ifndef __ASSEMBLY__
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);
24*2565dce1SThomas 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, ...);
262f9ce69eSAndrew Jones 
272f9ce69eSAndrew Jones extern void rtas_power_off(void);
28f1ccf5d2SLaurent Vivier #endif /* __ASSEMBLY__ */
29f1ccf5d2SLaurent Vivier 
30f1ccf5d2SLaurent Vivier #define RTAS_MSR_MASK 0xfffffffffffffffe
312f9ce69eSAndrew Jones 
322f9ce69eSAndrew Jones #endif /* _ASMPOWERPC_RTAS_H_ */
33