Commit c66b31f3 authored by Tony Luck's avatar Tony Luck Committed by Tony Luck
Browse files

Pull pvops into release branch

parents 50fbe56c 7120569c
Loading
Loading
Loading
Loading
+5 −1
Original line number Original line Diff line number Diff line
@@ -202,7 +202,11 @@ extern long ia64_cmpxchg_called_with_bad_pointer (void);


#ifndef __ASSEMBLY__
#ifndef __ASSEMBLY__
#if defined(CONFIG_PARAVIRT) && defined(__KERNEL__)
#if defined(CONFIG_PARAVIRT) && defined(__KERNEL__)
#ifdef ASM_SUPPORTED
# define IA64_INTRINSIC_API(name)	paravirt_ ## name
#else
# define IA64_INTRINSIC_API(name)	pv_cpu_ops.name
# define IA64_INTRINSIC_API(name)	pv_cpu_ops.name
#endif
#define IA64_INTRINSIC_MACRO(name)	paravirt_ ## name
#define IA64_INTRINSIC_MACRO(name)	paravirt_ ## name
#else
#else
#define IA64_INTRINSIC_API(name)	ia64_native_ ## name
#define IA64_INTRINSIC_API(name)	ia64_native_ ## name
+6 −0
Original line number Original line Diff line number Diff line
@@ -16,6 +16,12 @@ struct mod_arch_specific {
	struct elf64_shdr *got;		/* global offset table */
	struct elf64_shdr *got;		/* global offset table */
	struct elf64_shdr *opd;		/* official procedure descriptors */
	struct elf64_shdr *opd;		/* official procedure descriptors */
	struct elf64_shdr *unwind;	/* unwind-table section */
	struct elf64_shdr *unwind;	/* unwind-table section */
#ifdef CONFIG_PARAVIRT
	struct elf64_shdr *paravirt_bundles;
					/* paravirt_alt_bundle_patch table */
	struct elf64_shdr *paravirt_insts;
					/* paravirt_alt_inst_patch table */
#endif
	unsigned long gp;		/* global-pointer for module */
	unsigned long gp;		/* global-pointer for module */


	void *core_unw_table;		/* core unwind-table cookie returned by unwinder */
	void *core_unw_table;		/* core unwind-table cookie returned by unwinder */
+13 −0
Original line number Original line Diff line number Diff line
@@ -30,6 +30,9 @@
#define __paravirt_work_processed_syscall_target \
#define __paravirt_work_processed_syscall_target \
						ia64_work_processed_syscall
						ia64_work_processed_syscall


#define paravirt_fsyscall_table			ia64_native_fsyscall_table
#define paravirt_fsys_bubble_down		ia64_native_fsys_bubble_down

#ifdef CONFIG_PARAVIRT_GUEST_ASM_CLOBBER_CHECK
#ifdef CONFIG_PARAVIRT_GUEST_ASM_CLOBBER_CHECK
# define PARAVIRT_POISON	0xdeadbeefbaadf00d
# define PARAVIRT_POISON	0xdeadbeefbaadf00d
# define CLOBBER(clob)				\
# define CLOBBER(clob)				\
@@ -74,6 +77,11 @@
(pred)	mov reg = psr			\
(pred)	mov reg = psr			\
	CLOBBER(clob)
	CLOBBER(clob)


#define MOV_FROM_ITC(pred, pred_clob, reg, clob)	\
(pred)	mov reg = ar.itc				\
	CLOBBER(clob)					\
	CLOBBER_PRED(pred_clob)

#define MOV_TO_IFA(reg, clob)	\
#define MOV_TO_IFA(reg, clob)	\
	mov cr.ifa = reg	\
	mov cr.ifa = reg	\
	CLOBBER(clob)
	CLOBBER(clob)
@@ -158,6 +166,11 @@
#define RSM_PSR_DT		\
#define RSM_PSR_DT		\
	rsm psr.dt
	rsm psr.dt


#define RSM_PSR_BE_I(clob0, clob1)	\
	rsm psr.be | psr.i		\
	CLOBBER(clob0)			\
	CLOBBER(clob1)

#define SSM_PSR_DT_AND_SRLZ_I	\
#define SSM_PSR_DT_AND_SRLZ_I	\
	ssm psr.dt		\
	ssm psr.dt		\
	;;			\
	;;			\
+38 −0
Original line number Original line Diff line number Diff line
/******************************************************************************
 * arch/ia64/include/asm/native/inst.h
 *
 * Copyright (c) 2008 Isaku Yamahata <yamahata at valinux co jp>
 *                    VA Linux Systems Japan K.K.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 */

#define __paravirt_start_gate_fsyscall_patchlist		\
	__ia64_native_start_gate_fsyscall_patchlist
#define __paravirt_end_gate_fsyscall_patchlist			\
	__ia64_native_end_gate_fsyscall_patchlist
#define __paravirt_start_gate_brl_fsys_bubble_down_patchlist	\
	__ia64_native_start_gate_brl_fsys_bubble_down_patchlist
#define __paravirt_end_gate_brl_fsys_bubble_down_patchlist	\
	__ia64_native_end_gate_brl_fsys_bubble_down_patchlist
#define __paravirt_start_gate_vtop_patchlist			\
	__ia64_native_start_gate_vtop_patchlist
#define __paravirt_end_gate_vtop_patchlist			\
	__ia64_native_end_gate_vtop_patchlist
#define __paravirt_start_gate_mckinley_e9_patchlist		\
	__ia64_native_start_gate_mckinley_e9_patchlist
#define __paravirt_end_gate_mckinley_e9_patchlist		\
	__ia64_native_end_gate_mckinley_e9_patchlist
+8 −0
Original line number Original line Diff line number Diff line
@@ -180,6 +180,11 @@
	IS_PRED_IN(pred)			\
	IS_PRED_IN(pred)			\
	IS_RREG_OUT(reg)			\
	IS_RREG_OUT(reg)			\
	IS_RREG_CLOB(clob)
	IS_RREG_CLOB(clob)
#define MOV_FROM_ITC(pred, pred_clob, reg, clob)	\
	IS_PRED_IN(pred)				\
	IS_PRED_CLOB(pred_clob)				\
	IS_RREG_OUT(reg)				\
	IS_RREG_CLOB(clob)
#define MOV_TO_IFA(reg, clob)			\
#define MOV_TO_IFA(reg, clob)			\
	IS_RREG_IN(reg)				\
	IS_RREG_IN(reg)				\
	IS_RREG_CLOB(clob)
	IS_RREG_CLOB(clob)
@@ -246,6 +251,9 @@
	IS_RREG_CLOB(clob2)
	IS_RREG_CLOB(clob2)
#define RSM_PSR_DT				\
#define RSM_PSR_DT				\
	nop 0
	nop 0
#define RSM_PSR_BE_I(clob0, clob1)		\
	IS_RREG_CLOB(clob0)			\
	IS_RREG_CLOB(clob1)
#define SSM_PSR_DT_AND_SRLZ_I			\
#define SSM_PSR_DT_AND_SRLZ_I			\
	nop 0
	nop 0
#define BSW_0(clob0, clob1, clob2)		\
#define BSW_0(clob0, clob1, clob2)		\
Loading