mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-14 17:26:42 +07:00
xen: add variable hypercall caller
Allow non-constant hypercall to be called, for privcmd. [ Impact: make arbitrary hypercalls; needed for privcmd ] Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
This commit is contained in:
parent
eba3ff8b99
commit
1246ae0bb9
@ -200,6 +200,23 @@ extern struct { char _entry[32]; } hypercall_page[];
|
||||
(type)__res; \
|
||||
})
|
||||
|
||||
static inline long
|
||||
privcmd_call(unsigned call,
|
||||
unsigned long a1, unsigned long a2,
|
||||
unsigned long a3, unsigned long a4,
|
||||
unsigned long a5)
|
||||
{
|
||||
__HYPERCALL_DECLS;
|
||||
__HYPERCALL_5ARG(a1, a2, a3, a4, a5);
|
||||
|
||||
asm volatile("call *%[call]"
|
||||
: __HYPERCALL_5PARAM
|
||||
: [call] "a" (&hypercall_page[call])
|
||||
: __HYPERCALL_CLOBBER5);
|
||||
|
||||
return (long)__res;
|
||||
}
|
||||
|
||||
static inline int
|
||||
HYPERVISOR_set_trap_table(struct trap_info *table)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user