• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/arch/ia64/xen/
1/*
2 * Support routines for Xen hypercalls
3 *
4 * Copyright (C) 2005 Dan Magenheimer <dan.magenheimer@hp.com>
5 * Copyright (C) 2008 Yaozu (Eddie) Dong <eddie.dong@intel.com>
6 */
7
8#include <asm/asmmacro.h>
9#include <asm/intrinsics.h>
10#include <asm/xen/privop.h>
11
12#ifdef __INTEL_COMPILER
13/*
14 * Hypercalls without parameter.
15 */
16#define __HCALL0(name,hcall)		\
17	GLOBAL_ENTRY(name);		\
18	break	hcall;			\
19	br.ret.sptk.many rp;		\
20	END(name)
21
22/*
23 * Hypercalls with 1 parameter.
24 */
25#define __HCALL1(name,hcall)		\
26	GLOBAL_ENTRY(name);		\
27	mov r8=r32;			\
28	break	hcall;			\
29	br.ret.sptk.many rp;		\
30	END(name)
31
32/*
33 * Hypercalls with 2 parameters.
34 */
35#define __HCALL2(name,hcall)		\
36	GLOBAL_ENTRY(name);		\
37	mov r8=r32;			\
38	mov r9=r33;			\
39	break	hcall;			\
40	br.ret.sptk.many rp;		\
41	END(name)
42
43__HCALL0(xen_get_psr, HYPERPRIVOP_GET_PSR)
44__HCALL0(xen_get_ivr, HYPERPRIVOP_GET_IVR)
45__HCALL0(xen_get_tpr, HYPERPRIVOP_GET_TPR)
46__HCALL0(xen_hyper_ssm_i, HYPERPRIVOP_SSM_I)
47
48__HCALL1(xen_set_tpr, HYPERPRIVOP_SET_TPR)
49__HCALL1(xen_eoi, HYPERPRIVOP_EOI)
50__HCALL1(xen_thash, HYPERPRIVOP_THASH)
51__HCALL1(xen_set_itm, HYPERPRIVOP_SET_ITM)
52__HCALL1(xen_get_rr, HYPERPRIVOP_GET_RR)
53__HCALL1(xen_fc, HYPERPRIVOP_FC)
54__HCALL1(xen_get_cpuid, HYPERPRIVOP_GET_CPUID)
55__HCALL1(xen_get_pmd, HYPERPRIVOP_GET_PMD)
56
57__HCALL2(xen_ptcga, HYPERPRIVOP_PTC_GA)
58__HCALL2(xen_set_rr, HYPERPRIVOP_SET_RR)
59__HCALL2(xen_set_kr, HYPERPRIVOP_SET_KR)
60
61GLOBAL_ENTRY(xen_set_rr0_to_rr4)
62	mov r8=r32
63	mov r9=r33
64	mov r10=r34
65	mov r11=r35
66	mov r14=r36
67	XEN_HYPER_SET_RR0_TO_RR4
68	br.ret.sptk.many rp
69	;;
70END(xen_set_rr0_to_rr4)
71#endif
72
73GLOBAL_ENTRY(xen_send_ipi)
74	mov r14=r32
75	mov r15=r33
76	mov r2=0x400
77	break 0x1000
78	;;
79	br.ret.sptk.many rp
80	;;
81END(xen_send_ipi)
82
83GLOBAL_ENTRY(__hypercall)
84	mov r2=r37
85	break 0x1000
86	br.ret.sptk.many b0
87	;;
88END(__hypercall)
89