ia64/pv_ops/xen: preliminary to paravirtualizing fsys.S for xen.
This is a preliminary patch to paravirtualizing fsys.S. compile fsys.S twice one for native and one for xen, and switch them at run tine. Later fsys.S will be paravirtualized. Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp> Signed-off-by: Tony Luck <tony.luck@intel.com>
This commit is contained in:
committed by
Tony Luck
parent
dd97d5cb54
commit
533bd15623
@@ -33,6 +33,9 @@
|
|||||||
#define __paravirt_work_processed_syscall_target \
|
#define __paravirt_work_processed_syscall_target \
|
||||||
xen_work_processed_syscall
|
xen_work_processed_syscall
|
||||||
|
|
||||||
|
#define paravirt_fsyscall_table xen_fsyscall_table
|
||||||
|
#define paravirt_fsys_bubble_down xen_fsys_bubble_down
|
||||||
|
|
||||||
#define MOV_FROM_IFA(reg) \
|
#define MOV_FROM_IFA(reg) \
|
||||||
movl reg = XSI_IFA; \
|
movl reg = XSI_IFA; \
|
||||||
;; \
|
;; \
|
||||||
|
@@ -10,7 +10,7 @@ obj-$(CONFIG_IA64_GENERIC) += machvec.o
|
|||||||
AFLAGS_xenivt.o += -D__IA64_ASM_PARAVIRTUALIZED_XEN
|
AFLAGS_xenivt.o += -D__IA64_ASM_PARAVIRTUALIZED_XEN
|
||||||
|
|
||||||
# xen multi compile
|
# xen multi compile
|
||||||
ASM_PARAVIRT_MULTI_COMPILE_SRCS = ivt.S entry.S
|
ASM_PARAVIRT_MULTI_COMPILE_SRCS = ivt.S entry.S fsys.S
|
||||||
ASM_PARAVIRT_OBJS = $(addprefix xen-,$(ASM_PARAVIRT_MULTI_COMPILE_SRCS:.S=.o))
|
ASM_PARAVIRT_OBJS = $(addprefix xen-,$(ASM_PARAVIRT_MULTI_COMPILE_SRCS:.S=.o))
|
||||||
obj-y += $(ASM_PARAVIRT_OBJS)
|
obj-y += $(ASM_PARAVIRT_OBJS)
|
||||||
define paravirtualized_xen
|
define paravirtualized_xen
|
||||||
|
@@ -24,6 +24,7 @@
|
|||||||
#include <linux/irq.h>
|
#include <linux/irq.h>
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/pm.h>
|
#include <linux/pm.h>
|
||||||
|
#include <linux/unistd.h>
|
||||||
|
|
||||||
#include <asm/xen/hypervisor.h>
|
#include <asm/xen/hypervisor.h>
|
||||||
#include <asm/xen/xencomm.h>
|
#include <asm/xen/xencomm.h>
|
||||||
@@ -165,6 +166,18 @@ static const struct pv_init_ops xen_init_ops __initconst = {
|
|||||||
.post_smp_prepare_boot_cpu = xen_post_smp_prepare_boot_cpu,
|
.post_smp_prepare_boot_cpu = xen_post_smp_prepare_boot_cpu,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
* pv_fsys_data
|
||||||
|
* addresses for fsys
|
||||||
|
*/
|
||||||
|
|
||||||
|
extern unsigned long xen_fsyscall_table[NR_syscalls];
|
||||||
|
extern char xen_fsys_bubble_down[];
|
||||||
|
struct pv_fsys_data xen_fsys_data __initdata = {
|
||||||
|
.fsyscall_table = (unsigned long *)xen_fsyscall_table,
|
||||||
|
.fsys_bubble_down = (void *)xen_fsys_bubble_down,
|
||||||
|
};
|
||||||
|
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
* pv_cpu_ops
|
* pv_cpu_ops
|
||||||
* intrinsics hooks.
|
* intrinsics hooks.
|
||||||
@@ -355,6 +368,7 @@ xen_setup_pv_ops(void)
|
|||||||
xen_info_init();
|
xen_info_init();
|
||||||
pv_info = xen_info;
|
pv_info = xen_info;
|
||||||
pv_init_ops = xen_init_ops;
|
pv_init_ops = xen_init_ops;
|
||||||
|
pv_fsys_data = xen_fsys_data;
|
||||||
pv_cpu_ops = xen_cpu_ops;
|
pv_cpu_ops = xen_cpu_ops;
|
||||||
pv_iosapic_ops = xen_iosapic_ops;
|
pv_iosapic_ops = xen_iosapic_ops;
|
||||||
pv_irq_ops = xen_irq_ops;
|
pv_irq_ops = xen_irq_ops;
|
||||||
|
Reference in New Issue
Block a user