1#include <asm/page.h>
2#include <asm/asm_defns.h>
3#include <public/xen.h>
4
5        .section ".text.page_aligned", "ax", @progbits
6        .p2align PAGE_SHIFT
7
8GLOBAL(hypercall_page)
9         /* Poisoned with `ret` for safety before hypercalls are set up. */
10        .fill PAGE_SIZE, 1, 0xc3
11        .type hypercall_page, STT_OBJECT
12        .size hypercall_page, PAGE_SIZE
13
14/*
15 * Identify a specific hypercall in the hypercall page
16 * @param name Hypercall name.
17 */
18#define DECLARE_HYPERCALL(name)                                                 \
19        .globl HYPERCALL_ ## name;                                              \
20        .type  HYPERCALL_ ## name, STT_FUNC;                                    \
21        .size  HYPERCALL_ ## name, 32;                                          \
22        .set   HYPERCALL_ ## name, hypercall_page + __HYPERVISOR_ ## name * 32
23
24DECLARE_HYPERCALL(set_trap_table)
25DECLARE_HYPERCALL(mmu_update)
26DECLARE_HYPERCALL(set_gdt)
27DECLARE_HYPERCALL(stack_switch)
28DECLARE_HYPERCALL(set_callbacks)
29DECLARE_HYPERCALL(fpu_taskswitch)
30DECLARE_HYPERCALL(sched_op_compat)
31DECLARE_HYPERCALL(platform_op)
32DECLARE_HYPERCALL(set_debugreg)
33DECLARE_HYPERCALL(get_debugreg)
34DECLARE_HYPERCALL(update_descriptor)
35DECLARE_HYPERCALL(memory_op)
36DECLARE_HYPERCALL(multicall)
37DECLARE_HYPERCALL(update_va_mapping)
38DECLARE_HYPERCALL(set_timer_op)
39DECLARE_HYPERCALL(event_channel_op_compat)
40DECLARE_HYPERCALL(xen_version)
41DECLARE_HYPERCALL(console_io)
42DECLARE_HYPERCALL(physdev_op_compat)
43DECLARE_HYPERCALL(grant_table_op)
44DECLARE_HYPERCALL(vm_assist)
45DECLARE_HYPERCALL(update_va_mapping_otherdomain)
46DECLARE_HYPERCALL(iret)
47DECLARE_HYPERCALL(vcpu_op)
48DECLARE_HYPERCALL(set_segment_base)
49DECLARE_HYPERCALL(mmuext_op)
50DECLARE_HYPERCALL(xsm_op)
51DECLARE_HYPERCALL(nmi_op)
52DECLARE_HYPERCALL(sched_op)
53DECLARE_HYPERCALL(callback_op)
54DECLARE_HYPERCALL(xenoprof_op)
55DECLARE_HYPERCALL(event_channel_op)
56DECLARE_HYPERCALL(physdev_op)
57DECLARE_HYPERCALL(hvm_op)
58DECLARE_HYPERCALL(sysctl)
59DECLARE_HYPERCALL(domctl)
60DECLARE_HYPERCALL(kexec_op)
61DECLARE_HYPERCALL(argo_op)
62DECLARE_HYPERCALL(xenpmu_op)
63
64DECLARE_HYPERCALL(arch_0)
65DECLARE_HYPERCALL(arch_1)
66DECLARE_HYPERCALL(arch_2)
67DECLARE_HYPERCALL(arch_3)
68DECLARE_HYPERCALL(arch_4)
69DECLARE_HYPERCALL(arch_5)
70DECLARE_HYPERCALL(arch_6)
71DECLARE_HYPERCALL(arch_7)
72
73/*
74 * Local variables:
75 * tab-width: 8
76 * indent-tabs-mode: nil
77 * End:
78 */
79