Commit 0a7d3244 authored by Isaku Yamahata's avatar Isaku Yamahata Committed by Tony Luck

ia64/pv_ops/bp/xen: implemented binary patchable pv_cpu_ops.

implemented xen binary patch for pv_cpu_ops.
Signed-off-by: default avatarIsaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
parent dae17da6
...@@ -82,8 +82,10 @@ extern unsigned long xen_thash(unsigned long addr); ...@@ -82,8 +82,10 @@ extern unsigned long xen_thash(unsigned long addr);
extern unsigned long xen_get_cpuid(int index); extern unsigned long xen_get_cpuid(int index);
extern unsigned long xen_get_pmd(int index); extern unsigned long xen_get_pmd(int index);
#ifndef ASM_SUPPORTED
extern unsigned long xen_get_eflag(void); /* see xen_ia64_getreg */ extern unsigned long xen_get_eflag(void); /* see xen_ia64_getreg */
extern void xen_set_eflag(unsigned long); /* see xen_ia64_setreg */ extern void xen_set_eflag(unsigned long); /* see xen_ia64_setreg */
#endif
/************************************************/ /************************************************/
/* Instructions paravirtualized for performance */ /* Instructions paravirtualized for performance */
...@@ -108,6 +110,7 @@ extern void xen_set_eflag(unsigned long); /* see xen_ia64_setreg */ ...@@ -108,6 +110,7 @@ extern void xen_set_eflag(unsigned long); /* see xen_ia64_setreg */
#define xen_get_virtual_pend() \ #define xen_get_virtual_pend() \
(*(((uint8_t *)XEN_MAPPEDREGS->interrupt_mask_addr) - 1)) (*(((uint8_t *)XEN_MAPPEDREGS->interrupt_mask_addr) - 1))
#ifndef ASM_SUPPORTED
/* Although all privileged operations can be left to trap and will /* Although all privileged operations can be left to trap and will
* be properly handled by Xen, some are frequent enough that we use * be properly handled by Xen, some are frequent enough that we use
* hyperprivops for performance. */ * hyperprivops for performance. */
...@@ -125,6 +128,7 @@ extern void xen_set_rr0_to_rr4(unsigned long val0, unsigned long val1, ...@@ -125,6 +128,7 @@ extern void xen_set_rr0_to_rr4(unsigned long val0, unsigned long val1,
unsigned long val4); unsigned long val4);
extern void xen_set_kr(unsigned long index, unsigned long val); extern void xen_set_kr(unsigned long index, unsigned long val);
extern void xen_ptcga(unsigned long addr, unsigned long size); extern void xen_ptcga(unsigned long addr, unsigned long size);
#endif /* !ASM_SUPPORTED */
#endif /* !__ASSEMBLY__ */ #endif /* !__ASSEMBLY__ */
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include <asm/intrinsics.h> #include <asm/intrinsics.h>
#include <asm/xen/privop.h> #include <asm/xen/privop.h>
#ifdef __INTEL_COMPILER
/* /*
* Hypercalls without parameter. * Hypercalls without parameter.
*/ */
...@@ -72,6 +73,7 @@ GLOBAL_ENTRY(xen_set_rr0_to_rr4) ...@@ -72,6 +73,7 @@ GLOBAL_ENTRY(xen_set_rr0_to_rr4)
br.ret.sptk.many rp br.ret.sptk.many rp
;; ;;
END(xen_set_rr0_to_rr4) END(xen_set_rr0_to_rr4)
#endif
GLOBAL_ENTRY(xen_send_ipi) GLOBAL_ENTRY(xen_send_ipi)
mov r14=r32 mov r14=r32
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment