[Xen-ia64-devel] [PATCH 03/15] ia64/pv_ops: add hooks to paravirtualize fsyscall implementation.

2009-03-04 Thread Isaku Yamahata
Add two hooks, paravirt_get_fsyscall_table() and
paravirt_get_fsys_bubble_doen() to paravirtualize fsyscall implementation.
This patch just add the hooks fsyscall and don't paravirtualize it.

Signed-off-by: Isaku Yamahata yamah...@valinux.co.jp
---
 arch/ia64/include/asm/native/inst.h |3 +++
 arch/ia64/include/asm/paravirt.h|   15 +++
 arch/ia64/kernel/Makefile   |4 ++--
 arch/ia64/kernel/fsys.S |   17 +
 arch/ia64/kernel/patch.c|   26 +++---
 arch/ia64/mm/init.c |3 ++-
 6 files changed, 54 insertions(+), 14 deletions(-)

diff --git a/arch/ia64/include/asm/native/inst.h 
b/arch/ia64/include/asm/native/inst.h
index 0a1026c..5e4e151 100644
--- a/arch/ia64/include/asm/native/inst.h
+++ b/arch/ia64/include/asm/native/inst.h
@@ -30,6 +30,9 @@
 #define __paravirt_work_processed_syscall_target \
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
 # define PARAVIRT_POISON   0xdeadbeefbaadf00d
 # define CLOBBER(clob) \
diff --git a/arch/ia64/include/asm/paravirt.h b/arch/ia64/include/asm/paravirt.h
index 2bf3636..56f69f9 100644
--- a/arch/ia64/include/asm/paravirt.h
+++ b/arch/ia64/include/asm/paravirt.h
@@ -22,6 +22,21 @@
 #ifndef __ASM_PARAVIRT_H
 #define __ASM_PARAVIRT_H
 
+#ifndef __ASSEMBLY__
+/**
+ * fsys related addresses
+ */
+struct pv_fsys_data {
+   unsigned long *fsyscall_table;
+   void *fsys_bubble_down;
+};
+
+extern struct pv_fsys_data pv_fsys_data;
+
+unsigned long *paravirt_get_fsyscall_table(void);
+char *paravirt_get_fsys_bubble_down(void);
+#endif
+
 #ifdef CONFIG_PARAVIRT_GUEST
 
 #define PARAVIRT_HYPERVISOR_TYPE_DEFAULT   0
diff --git a/arch/ia64/kernel/Makefile b/arch/ia64/kernel/Makefile
index c381ea9..1ab150e 100644
--- a/arch/ia64/kernel/Makefile
+++ b/arch/ia64/kernel/Makefile
@@ -111,9 +111,9 @@ include/asm-ia64/nr-irqs.h: arch/$(SRCARCH)/kernel/nr-irqs.s
 clean-files += $(objtree)/include/asm-ia64/nr-irqs.h
 
 #
-# native ivt.S and entry.S
+# native ivt.S, entry.S and fsys.S
 #
-ASM_PARAVIRT_OBJS = ivt.o entry.o
+ASM_PARAVIRT_OBJS = ivt.o entry.o fsys.o
 define paravirtualized_native
 AFLAGS_$(1) += -D__IA64_ASM_PARAVIRTUALIZED_NATIVE
 AFLAGS_pvchk-sed-$(1) += -D__IA64_ASM_PARAVIRTUALIZED_PVCHECK
diff --git a/arch/ia64/kernel/fsys.S b/arch/ia64/kernel/fsys.S
index c1625c7..788319f 100644
--- a/arch/ia64/kernel/fsys.S
+++ b/arch/ia64/kernel/fsys.S
@@ -25,6 +25,7 @@
 #include asm/unistd.h
 
 #include entry.h
+#include paravirt_inst.h
 
 /*
  * See Documentation/ia64/fsys.txt for details on fsyscalls.
@@ -602,7 +603,7 @@ ENTRY(fsys_fallback_syscall)
mov r26=ar.pfs
 END(fsys_fallback_syscall)
/* FALL THROUGH */
-GLOBAL_ENTRY(fsys_bubble_down)
+GLOBAL_ENTRY(paravirt_fsys_bubble_down)
.prologue
.altrp b6
.body
@@ -640,7 +641,7 @@ GLOBAL_ENTRY(fsys_bubble_down)
 *
 * PSR.BE : already is turned off in __kernel_syscall_via_epc()
 * PSR.AC : don't care (kernel normally turns PSR.AC on)
-* PSR.I  : already turned off by the time fsys_bubble_down gets
+* PSR.I  : already turned off by the time paravirt_fsys_bubble_down 
gets
 *  invoked
 * PSR.DFL: always 0 (kernel never turns it on)
 * PSR.DFH: don't care --- kernel never touches f32-f127 on its own
@@ -650,7 +651,7 @@ GLOBAL_ENTRY(fsys_bubble_down)
 * PSR.DB : don't care --- kernel never enables kernel-level
 *  breakpoints
 * PSR.TB : must be 0 already; if it wasn't zero on entry to
-*  __kernel_syscall_via_epc, the branch to fsys_bubble_down
+*  __kernel_syscall_via_epc, the branch to 
paravirt_fsys_bubble_down
 *  will trigger a taken branch; the taken-trap-handler then
 *  converts the syscall into a break-based system-call.
 */
@@ -741,14 +742,14 @@ GLOBAL_ENTRY(fsys_bubble_down)
nop.m 0
 (p8)   br.call.sptk.many b6=b6 // B(ignore return address)
br.cond.spnt ia64_trace_syscall // B
-END(fsys_bubble_down)
+END(paravirt_fsys_bubble_down)
 
.rodata
.align 8
-   .globl fsyscall_table
+   .globl paravirt_fsyscall_table
 
-   data8 fsys_bubble_down
-fsyscall_table:
+   data8 paravirt_fsys_bubble_down
+paravirt_fsyscall_table:
data8 fsys_ni_syscall
data8 0 // exit // 1025
data8 0 // read
@@ -1033,4 +1034,4 @@ fsyscall_table:
 
// fill in zeros for the remaining entries
.zero:
-   .space 

[Xen-ia64-devel] [PATCH 03/15] ia64/pv_ops: add hooks to paravirtualize fsyscall implementation.

2008-12-21 Thread Isaku Yamahata
Add two hooks, paravirt_get_fsyscall_table() and
paravirt_get_fsys_bubble_doen() to paravirtualize fsyscall implementation.
This patch just add the hooks fsyscall and don't paravirtualize it.

Signed-off-by: Isaku Yamahata yamah...@valinux.co.jp
---
 arch/ia64/include/asm/native/inst.h |3 +++
 arch/ia64/include/asm/paravirt.h|   15 +++
 arch/ia64/kernel/Makefile   |4 ++--
 arch/ia64/kernel/fsys.S |   17 +
 arch/ia64/kernel/patch.c|   26 +++---
 arch/ia64/mm/init.c |3 ++-
 6 files changed, 54 insertions(+), 14 deletions(-)

diff --git a/arch/ia64/include/asm/native/inst.h 
b/arch/ia64/include/asm/native/inst.h
index 0a1026c..5e4e151 100644
--- a/arch/ia64/include/asm/native/inst.h
+++ b/arch/ia64/include/asm/native/inst.h
@@ -30,6 +30,9 @@
 #define __paravirt_work_processed_syscall_target \
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
 # define PARAVIRT_POISON   0xdeadbeefbaadf00d
 # define CLOBBER(clob) \
diff --git a/arch/ia64/include/asm/paravirt.h b/arch/ia64/include/asm/paravirt.h
index 2bf3636..56f69f9 100644
--- a/arch/ia64/include/asm/paravirt.h
+++ b/arch/ia64/include/asm/paravirt.h
@@ -22,6 +22,21 @@
 #ifndef __ASM_PARAVIRT_H
 #define __ASM_PARAVIRT_H
 
+#ifndef __ASSEMBLY__
+/**
+ * fsys related addresses
+ */
+struct pv_fsys_data {
+   unsigned long *fsyscall_table;
+   void *fsys_bubble_down;
+};
+
+extern struct pv_fsys_data pv_fsys_data;
+
+unsigned long *paravirt_get_fsyscall_table(void);
+char *paravirt_get_fsys_bubble_down(void);
+#endif
+
 #ifdef CONFIG_PARAVIRT_GUEST
 
 #define PARAVIRT_HYPERVISOR_TYPE_DEFAULT   0
diff --git a/arch/ia64/kernel/Makefile b/arch/ia64/kernel/Makefile
index c381ea9..1ab150e 100644
--- a/arch/ia64/kernel/Makefile
+++ b/arch/ia64/kernel/Makefile
@@ -111,9 +111,9 @@ include/asm-ia64/nr-irqs.h: arch/$(SRCARCH)/kernel/nr-irqs.s
 clean-files += $(objtree)/include/asm-ia64/nr-irqs.h
 
 #
-# native ivt.S and entry.S
+# native ivt.S, entry.S and fsys.S
 #
-ASM_PARAVIRT_OBJS = ivt.o entry.o
+ASM_PARAVIRT_OBJS = ivt.o entry.o fsys.o
 define paravirtualized_native
 AFLAGS_$(1) += -D__IA64_ASM_PARAVIRTUALIZED_NATIVE
 AFLAGS_pvchk-sed-$(1) += -D__IA64_ASM_PARAVIRTUALIZED_PVCHECK
diff --git a/arch/ia64/kernel/fsys.S b/arch/ia64/kernel/fsys.S
index c1625c7..788319f 100644
--- a/arch/ia64/kernel/fsys.S
+++ b/arch/ia64/kernel/fsys.S
@@ -25,6 +25,7 @@
 #include asm/unistd.h
 
 #include entry.h
+#include paravirt_inst.h
 
 /*
  * See Documentation/ia64/fsys.txt for details on fsyscalls.
@@ -602,7 +603,7 @@ ENTRY(fsys_fallback_syscall)
mov r26=ar.pfs
 END(fsys_fallback_syscall)
/* FALL THROUGH */
-GLOBAL_ENTRY(fsys_bubble_down)
+GLOBAL_ENTRY(paravirt_fsys_bubble_down)
.prologue
.altrp b6
.body
@@ -640,7 +641,7 @@ GLOBAL_ENTRY(fsys_bubble_down)
 *
 * PSR.BE : already is turned off in __kernel_syscall_via_epc()
 * PSR.AC : don't care (kernel normally turns PSR.AC on)
-* PSR.I  : already turned off by the time fsys_bubble_down gets
+* PSR.I  : already turned off by the time paravirt_fsys_bubble_down 
gets
 *  invoked
 * PSR.DFL: always 0 (kernel never turns it on)
 * PSR.DFH: don't care --- kernel never touches f32-f127 on its own
@@ -650,7 +651,7 @@ GLOBAL_ENTRY(fsys_bubble_down)
 * PSR.DB : don't care --- kernel never enables kernel-level
 *  breakpoints
 * PSR.TB : must be 0 already; if it wasn't zero on entry to
-*  __kernel_syscall_via_epc, the branch to fsys_bubble_down
+*  __kernel_syscall_via_epc, the branch to 
paravirt_fsys_bubble_down
 *  will trigger a taken branch; the taken-trap-handler then
 *  converts the syscall into a break-based system-call.
 */
@@ -741,14 +742,14 @@ GLOBAL_ENTRY(fsys_bubble_down)
nop.m 0
 (p8)   br.call.sptk.many b6=b6 // B(ignore return address)
br.cond.spnt ia64_trace_syscall // B
-END(fsys_bubble_down)
+END(paravirt_fsys_bubble_down)
 
.rodata
.align 8
-   .globl fsyscall_table
+   .globl paravirt_fsyscall_table
 
-   data8 fsys_bubble_down
-fsyscall_table:
+   data8 paravirt_fsys_bubble_down
+paravirt_fsyscall_table:
data8 fsys_ni_syscall
data8 0 // exit // 1025
data8 0 // read
@@ -1033,4 +1034,4 @@ fsyscall_table:
 
// fill in zeros for the remaining entries
.zero:
-   .space 

[Xen-ia64-devel] [PATCH 03/15] ia64/pv_ops: add hooks to paravirtualize fsyscall implementation.

2008-12-11 Thread Isaku Yamahata
Add two hooks, paravirt_get_fsyscall_table() and
paravirt_get_fsys_bubble_doen() to paravirtualize fsyscall implementation.
This patch just add the hooks fsyscall and don't paravirtualize it.

Signed-off-by: Isaku Yamahata yamah...@valinux.co.jp
---
 arch/ia64/include/asm/native/inst.h |3 +++
 arch/ia64/include/asm/paravirt.h|   15 +++
 arch/ia64/kernel/Makefile   |4 ++--
 arch/ia64/kernel/fsys.S |   17 +
 arch/ia64/kernel/patch.c|   26 +++---
 arch/ia64/mm/init.c |2 +-
 6 files changed, 53 insertions(+), 14 deletions(-)

diff --git a/arch/ia64/include/asm/native/inst.h 
b/arch/ia64/include/asm/native/inst.h
index 0a1026c..5e4e151 100644
--- a/arch/ia64/include/asm/native/inst.h
+++ b/arch/ia64/include/asm/native/inst.h
@@ -30,6 +30,9 @@
 #define __paravirt_work_processed_syscall_target \
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
 # define PARAVIRT_POISON   0xdeadbeefbaadf00d
 # define CLOBBER(clob) \
diff --git a/arch/ia64/include/asm/paravirt.h b/arch/ia64/include/asm/paravirt.h
index 2bf3636..56f69f9 100644
--- a/arch/ia64/include/asm/paravirt.h
+++ b/arch/ia64/include/asm/paravirt.h
@@ -22,6 +22,21 @@
 #ifndef __ASM_PARAVIRT_H
 #define __ASM_PARAVIRT_H
 
+#ifndef __ASSEMBLY__
+/**
+ * fsys related addresses
+ */
+struct pv_fsys_data {
+   unsigned long *fsyscall_table;
+   void *fsys_bubble_down;
+};
+
+extern struct pv_fsys_data pv_fsys_data;
+
+unsigned long *paravirt_get_fsyscall_table(void);
+char *paravirt_get_fsys_bubble_down(void);
+#endif
+
 #ifdef CONFIG_PARAVIRT_GUEST
 
 #define PARAVIRT_HYPERVISOR_TYPE_DEFAULT   0
diff --git a/arch/ia64/kernel/Makefile b/arch/ia64/kernel/Makefile
index c381ea9..1ab150e 100644
--- a/arch/ia64/kernel/Makefile
+++ b/arch/ia64/kernel/Makefile
@@ -111,9 +111,9 @@ include/asm-ia64/nr-irqs.h: arch/$(SRCARCH)/kernel/nr-irqs.s
 clean-files += $(objtree)/include/asm-ia64/nr-irqs.h
 
 #
-# native ivt.S and entry.S
+# native ivt.S, entry.S and fsys.S
 #
-ASM_PARAVIRT_OBJS = ivt.o entry.o
+ASM_PARAVIRT_OBJS = ivt.o entry.o fsys.o
 define paravirtualized_native
 AFLAGS_$(1) += -D__IA64_ASM_PARAVIRTUALIZED_NATIVE
 AFLAGS_pvchk-sed-$(1) += -D__IA64_ASM_PARAVIRTUALIZED_PVCHECK
diff --git a/arch/ia64/kernel/fsys.S b/arch/ia64/kernel/fsys.S
index c1625c7..788319f 100644
--- a/arch/ia64/kernel/fsys.S
+++ b/arch/ia64/kernel/fsys.S
@@ -25,6 +25,7 @@
 #include asm/unistd.h
 
 #include entry.h
+#include paravirt_inst.h
 
 /*
  * See Documentation/ia64/fsys.txt for details on fsyscalls.
@@ -602,7 +603,7 @@ ENTRY(fsys_fallback_syscall)
mov r26=ar.pfs
 END(fsys_fallback_syscall)
/* FALL THROUGH */
-GLOBAL_ENTRY(fsys_bubble_down)
+GLOBAL_ENTRY(paravirt_fsys_bubble_down)
.prologue
.altrp b6
.body
@@ -640,7 +641,7 @@ GLOBAL_ENTRY(fsys_bubble_down)
 *
 * PSR.BE : already is turned off in __kernel_syscall_via_epc()
 * PSR.AC : don't care (kernel normally turns PSR.AC on)
-* PSR.I  : already turned off by the time fsys_bubble_down gets
+* PSR.I  : already turned off by the time paravirt_fsys_bubble_down 
gets
 *  invoked
 * PSR.DFL: always 0 (kernel never turns it on)
 * PSR.DFH: don't care --- kernel never touches f32-f127 on its own
@@ -650,7 +651,7 @@ GLOBAL_ENTRY(fsys_bubble_down)
 * PSR.DB : don't care --- kernel never enables kernel-level
 *  breakpoints
 * PSR.TB : must be 0 already; if it wasn't zero on entry to
-*  __kernel_syscall_via_epc, the branch to fsys_bubble_down
+*  __kernel_syscall_via_epc, the branch to 
paravirt_fsys_bubble_down
 *  will trigger a taken branch; the taken-trap-handler then
 *  converts the syscall into a break-based system-call.
 */
@@ -741,14 +742,14 @@ GLOBAL_ENTRY(fsys_bubble_down)
nop.m 0
 (p8)   br.call.sptk.many b6=b6 // B(ignore return address)
br.cond.spnt ia64_trace_syscall // B
-END(fsys_bubble_down)
+END(paravirt_fsys_bubble_down)
 
.rodata
.align 8
-   .globl fsyscall_table
+   .globl paravirt_fsyscall_table
 
-   data8 fsys_bubble_down
-fsyscall_table:
+   data8 paravirt_fsys_bubble_down
+paravirt_fsyscall_table:
data8 fsys_ni_syscall
data8 0 // exit // 1025
data8 0 // read
@@ -1033,4 +1034,4 @@ fsyscall_table:
 
// fill in zeros for the remaining entries
.zero:
-   .space