# HG changeset patch
# User kaf24@xxxxxxxxxxxxxxxxxxxx
# Node ID 2b95125015a59eeb086b3748f9415ac440133b4d
# Parent 5978be010beca73a6b88ae68d2e120c531bb0edd
Remove the unused ia64 patch directory.
Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.11/cpumask.h
--- a/xen/arch/ia64/patch/linux-2.6.11/cpumask.h Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,12 +0,0 @@
---- ../../linux-2.6.11/include/linux/cpumask.h 2005-03-02 00:38:00.000000000
-0700
-+++ include/asm-ia64/linux/cpumask.h 2005-04-28 13:21:20.000000000 -0600
-@@ -342,7 +342,9 @@
- */
-
- extern cpumask_t cpu_possible_map;
-+#ifndef XEN
- extern cpumask_t cpu_online_map;
-+#endif
- extern cpumask_t cpu_present_map;
-
- #if NR_CPUS > 1
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.11/efi.c
--- a/xen/arch/ia64/patch/linux-2.6.11/efi.c Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,50 +0,0 @@
---- ../../linux-2.6.11/arch/ia64/kernel/efi.c 2005-03-02 00:37:47.000000000
-0700
-+++ arch/ia64/efi.c 2005-06-09 06:15:36.000000000 -0600
-@@ -320,6 +320,16 @@
- if (!(md->attribute & EFI_MEMORY_WB))
- continue;
-
-+#ifdef XEN
-+// this works around a problem in the ski bootloader
-+{
-+ extern long running_on_sim;
-+ if (running_on_sim && md->type != EFI_CONVENTIONAL_MEMORY)
-+ continue;
-+}
-+// this is a temporary hack to avoid CONFIG_VIRTUAL_MEM_MAP
-+ if (md->phys_addr >= 0x100000000) continue;
-+#endif
- /*
- * granule_addr is the base of md's first granule.
- * [granule_addr - first_non_wb_addr) is guaranteed to
-@@ -719,6 +729,30 @@
- return 0;
- }
-
-+#ifdef XEN
-+// variation of efi_get_iobase which returns entire memory descriptor
-+efi_memory_desc_t *
-+efi_get_io_md (void)
-+{
-+ void *efi_map_start, *efi_map_end, *p;
-+ efi_memory_desc_t *md;
-+ u64 efi_desc_size;
-+
-+ efi_map_start = __va(ia64_boot_param->efi_memmap);
-+ efi_map_end = efi_map_start + ia64_boot_param->efi_memmap_size;
-+ efi_desc_size = ia64_boot_param->efi_memdesc_size;
-+
-+ for (p = efi_map_start; p < efi_map_end; p += efi_desc_size) {
-+ md = p;
-+ if (md->type == EFI_MEMORY_MAPPED_IO_PORT_SPACE) {
-+ if (md->attribute & EFI_MEMORY_UC)
-+ return md;
-+ }
-+ }
-+ return 0;
-+}
-+#endif
-+
- u32
- efi_mem_type (unsigned long phys_addr)
- {
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.11/entry.S
--- a/xen/arch/ia64/patch/linux-2.6.11/entry.S Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,237 +0,0 @@
---- ../../linux-2.6.11/arch/ia64/kernel/entry.S 2005-03-02
00:37:50.000000000 -0700
-+++ arch/ia64/entry.S 2005-05-23 16:49:23.000000000 -0600
-@@ -46,6 +46,7 @@
-
- #include "minstate.h"
-
-+#ifndef XEN
- /*
- * execve() is special because in case of success, we need to
- * setup a null register window frame.
-@@ -174,6 +175,7 @@
- mov rp=loc0
- br.ret.sptk.many rp
- END(sys_clone)
-+#endif /* !XEN */
-
- /*
- * prev_task <- ia64_switch_to(struct task_struct *next)
-@@ -191,7 +193,11 @@
- movl r25=init_task
- mov r27=IA64_KR(CURRENT_STACK)
- adds r21=IA64_TASK_THREAD_KSP_OFFSET,in0
-+#ifdef XEN
-+ dep r20=0,in0,60,4 // physical address of "next"
-+#else
- dep r20=0,in0,61,3 // physical address of "next"
-+#endif
- ;;
- st8 [r22]=sp // save kernel stack pointer of old task
- shr.u r26=r20,IA64_GRANULE_SHIFT
-@@ -220,6 +226,16 @@
- br.ret.sptk.many rp // boogie on out in new context
-
- .map:
-+#ifdef XEN
-+ // avoid overlapping with kernel TR
-+ movl r25=KERNEL_START
-+ dep r23=0,in0,0,KERNEL_TR_PAGE_SHIFT
-+ ;;
-+ cmp.eq p7,p0=r25,r23
-+ ;;
-+(p7) mov IA64_KR(CURRENT_STACK)=r26 // remember last page we mapped...
-+(p7) br.cond.sptk .done
-+#endif
- rsm psr.ic // interrupts (psr.i) are already
disabled here
- movl r25=PAGE_KERNEL
- ;;
-@@ -376,7 +392,11 @@
- * - b7 holds address to return to
- * - must not touch r8-r11
- */
-+#ifdef XEN
-+GLOBAL_ENTRY(load_switch_stack)
-+#else
- ENTRY(load_switch_stack)
-+#endif
- .prologue
- .altrp b7
-
-@@ -470,6 +490,7 @@
- br.cond.sptk.many b7
- END(load_switch_stack)
-
-+#ifndef XEN
- GLOBAL_ENTRY(__ia64_syscall)
- .regstk 6,0,0,0
- mov r15=in5 // put syscall number in place
-@@ -588,6 +609,7 @@
- }
- .ret4: br.cond.sptk ia64_leave_kernel
- END(ia64_strace_leave_kernel)
-+#endif
-
- GLOBAL_ENTRY(ia64_ret_from_clone)
- PT_REGS_UNWIND_INFO(0)
-@@ -604,6 +626,15 @@
- */
- br.call.sptk.many rp=ia64_invoke_schedule_tail
- }
-+#ifdef XEN
-+ // new domains are cloned but not exec'ed so switch to user mode here
-+ cmp.ne pKStk,pUStk=r0,r0
-+#ifdef CONFIG_VTI
-+ br.cond.spnt ia64_leave_hypervisor
-+#else // CONFIG_VTI
-+ br.cond.spnt ia64_leave_kernel
-+#endif // CONFIG_VTI
-+#else
- .ret8:
- adds r2=TI_FLAGS+IA64_TASK_SIZE,r13
- ;;
-@@ -614,6 +645,7 @@
- ;;
- cmp.ne p6,p0=r2,r0
- (p6) br.cond.spnt .strace_check_retval
-+#endif
- ;; // added stop bits to prevent
r8 dependency
- END(ia64_ret_from_clone)
- // fall through
-@@ -700,19 +732,27 @@
- .work_processed_syscall:
- adds r2=PT(LOADRS)+16,r12
- adds r3=PT(AR_BSPSTORE)+16,r12
-+#ifdef XEN
-+ ;;
-+#else
- adds r18=TI_FLAGS+IA64_TASK_SIZE,r13
- ;;
- (p6) ld4 r31=[r18] // load
current_thread_info()->flags
-+#endif
- ld8 r19=[r2],PT(B6)-PT(LOADRS) // load ar.rsc value for
"loadrs"
- mov b7=r0 // clear b7
- ;;
- ld8 r23=[r3],PT(R11)-PT(AR_BSPSTORE) // load ar.bspstore (may be
garbage)
- ld8 r18=[r2],PT(R9)-PT(B6) // load b6
-+#ifndef XEN
- (p6) and r15=TIF_WORK_MASK,r31 // any work other than
TIF_SYSCALL_TRACE?
-+#endif
- ;;
- mov r16=ar.bsp // M2 get existing backing
store pointer
-+#ifndef XEN
- (p6) cmp4.ne.unc p6,p0=r15, r0 // any special work pending?
- (p6) br.cond.spnt .work_pending_syscall
-+#endif
- ;;
- // start restoring the state saved on the kernel stack (struct pt_regs):
- ld8 r9=[r2],PT(CR_IPSR)-PT(R9)
-@@ -757,7 +797,11 @@
- ;;
- ld8.fill r12=[r2] // restore r12 (sp)
- ld8.fill r15=[r3] // restore r15
-+#ifdef XEN
-+ movl r3=THIS_CPU(ia64_phys_stacked_size_p8)
-+#else
- addl r3=THIS_CPU(ia64_phys_stacked_size_p8),r0
-+#endif
- ;;
- (pUStk) ld4 r3=[r3] // r3 = cpu_data->phys_stacked_size_p8
- (pUStk) st1 [r14]=r17
-@@ -814,9 +858,18 @@
- (pUStk) cmp.eq.unc p6,p0=r0,r0 // p6 <- pUStk
- #endif
- .work_processed_kernel:
-+#ifdef XEN
-+ alloc loc0=ar.pfs,0,1,1,0
-+ adds out0=16,r12
-+ ;;
-+(p6) br.call.sptk.many b0=deliver_pending_interrupt
-+ mov ar.pfs=loc0
-+ mov r31=r0
-+#else
- adds r17=TI_FLAGS+IA64_TASK_SIZE,r13
- ;;
- (p6) ld4 r31=[r17] // load
current_thread_info()->flags
-+#endif
- adds r21=PT(PR)+16,r12
- ;;
-
-@@ -828,17 +881,20 @@
- ld8 r28=[r2],8 // load b6
- adds r29=PT(R24)+16,r12
-
-- ld8.fill r16=[r3],PT(AR_CSD)-PT(R16)
-+ ld8.fill r16=[r3]
- adds r30=PT(AR_CCV)+16,r12
- (p6) and r19=TIF_WORK_MASK,r31 // any work other than
TIF_SYSCALL_TRACE?
- ;;
-+ adds r3=PT(AR_CSD)-PT(R16),r3
- ld8.fill r24=[r29]
- ld8 r15=[r30] // load ar.ccv
- (p6) cmp4.ne.unc p6,p0=r19, r0 // any special work pending?
- ;;
- ld8 r29=[r2],16 // load b7
- ld8 r30=[r3],16 // load ar.csd
-+#ifndef XEN
- (p6) br.cond.spnt .work_pending
-+#endif
- ;;
- ld8 r31=[r2],16 // load ar.ssd
- ld8.fill r8=[r3],16
-@@ -934,7 +990,11 @@
- shr.u r18=r19,16 // get byte size of existing "dirty" partition
- ;;
- mov r16=ar.bsp // get existing backing store pointer
-+#ifdef XEN
-+ movl r17=THIS_CPU(ia64_phys_stacked_size_p8)
-+#else
- addl r17=THIS_CPU(ia64_phys_stacked_size_p8),r0
-+#endif
- ;;
- ld4 r17=[r17] // r17 = cpu_data->phys_stacked_size_p8
- (pKStk) br.cond.dpnt skip_rbs_switch
-@@ -1069,6 +1129,7 @@
- mov pr=r31,-1 // I0
- rfi // B
-
-+#ifndef XEN
- /*
- * On entry:
- * r20 = ¤t->thread_info->pre_count (if CONFIG_PREEMPT)
-@@ -1130,6 +1191,7 @@
- ld8 r8=[r2]
- ld8 r10=[r3]
- br.cond.sptk.many .work_processed_syscall // re-check
-+#endif
-
- END(ia64_leave_kernel)
-
-@@ -1166,6 +1228,7 @@
- br.ret.sptk.many rp
- END(ia64_invoke_schedule_tail)
-
-+#ifndef XEN
- /*
- * Setup stack and call do_notify_resume_user(). Note that pSys and
pNonSys need to
- * be set up by the caller. We declare 8 input registers so the system
call
-@@ -1264,6 +1327,7 @@
- mov ar.unat=r9
- br.many b7
- END(sys_rt_sigreturn)
-+#endif
-
- GLOBAL_ENTRY(ia64_prepare_handle_unaligned)
- .prologue
-@@ -1278,6 +1342,7 @@
- br.cond.sptk.many rp // goes to
ia64_leave_kernel
- END(ia64_prepare_handle_unaligned)
-
-+#ifndef XEN
- //
- // unw_init_running(void (*callback)(info, arg), void *arg)
- //
-@@ -1585,3 +1650,4 @@
- data8 sys_ni_syscall
-
- .org sys_call_table + 8*NR_syscalls // guard against failures to
increase NR_syscalls
-+#endif
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.11/entry.h
--- a/xen/arch/ia64/patch/linux-2.6.11/entry.h Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,37 +0,0 @@
----
/home/adsharma/disk2/xen-ia64/test3.bk/xen/../../linux-2.6.11/arch/ia64/kernel/entry.h
2005-03-01 23:38:07.000000000 -0800
-+++ /home/adsharma/disk2/xen-ia64/test3.bk/xen/arch/ia64/entry.h
2005-05-18 14:00:53.000000000 -0700
-@@ -7,6 +7,12 @@
- #define PRED_LEAVE_SYSCALL 1 /* TRUE iff leave from syscall */
- #define PRED_KERNEL_STACK 2 /* returning to kernel-stacks? */
- #define PRED_USER_STACK 3 /* returning to user-stacks? */
-+#ifdef CONFIG_VTI
-+#define PRED_EMUL 2 /* Need to save r4-r7 for inst emulation */
-+#define PRED_NON_EMUL 3 /* No need to save r4-r7 for normal path */
-+#define PRED_BN0 6 /* Guest is in bank 0 */
-+#define PRED_BN1 7 /* Guest is in bank 1 */
-+#endif // CONFIG_VTI
- #define PRED_SYSCALL 4 /* inside a system call? */
- #define PRED_NON_SYSCALL 5 /* complement of PRED_SYSCALL */
-
-@@ -17,12 +23,21 @@
- # define pLvSys PASTE(p,PRED_LEAVE_SYSCALL)
- # define pKStk PASTE(p,PRED_KERNEL_STACK)
- # define pUStk PASTE(p,PRED_USER_STACK)
-+#ifdef CONFIG_VTI
-+# define pEml PASTE(p,PRED_EMUL)
-+# define pNonEml PASTE(p,PRED_NON_EMUL)
-+# define pBN0 PASTE(p,PRED_BN0)
-+# define pBN1 PASTE(p,PRED_BN1)
-+#endif // CONFIG_VTI
- # define pSys PASTE(p,PRED_SYSCALL)
- # define pNonSys PASTE(p,PRED_NON_SYSCALL)
- #endif
-
- #define PT(f) (IA64_PT_REGS_##f##_OFFSET)
- #define SW(f) (IA64_SWITCH_STACK_##f##_OFFSET)
-+#ifdef CONFIG_VTI
-+#define VPD(f) (VPD_##f##_START_OFFSET)
-+#endif // CONFIG_VTI
-
- #define PT_REGS_SAVES(off) \
- .unwabi 3, 'i'; \
diff -r 5978be010bec -r 2b95125015a5
xen/arch/ia64/patch/linux-2.6.11/gcc_intrin.h
--- a/xen/arch/ia64/patch/linux-2.6.11/gcc_intrin.h Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,69 +0,0 @@
----
/home/adsharma/disk2/xen-ia64/test3.bk/xen/../../linux-2.6.11/include/asm-ia64/gcc_intrin.h
2005-03-01 23:38:08.000000000 -0800
-+++ /home/adsharma/disk2/xen-ia64/test3.bk/xen/include/asm-ia64/gcc_intrin.h
2005-05-18 14:00:53.000000000 -0700
-@@ -368,6 +368,66 @@
- #define ia64_mf() asm volatile ("mf" ::: "memory")
- #define ia64_mfa() asm volatile ("mf.a" ::: "memory")
-
-+#ifdef CONFIG_VTI
-+/*
-+ * Flushrs instruction stream.
-+ */
-+#define ia64_flushrs() asm volatile ("flushrs;;":::"memory")
-+
-+#define ia64_loadrs() asm volatile ("loadrs;;":::"memory")
-+
-+#define ia64_get_rsc() \
-+({ \
-+ unsigned long val; \
-+ asm volatile ("mov %0=ar.rsc;;" : "=r"(val) :: "memory"); \
-+ val; \
-+})
-+
-+#define ia64_set_rsc(val) \
-+ asm volatile ("mov ar.rsc=%0;;" :: "r"(val) : "memory")
-+
-+#define ia64_get_bspstore() \
-+({ \
-+ unsigned long val; \
-+ asm volatile ("mov %0=ar.bspstore;;" : "=r"(val) :: "memory"); \
-+ val; \
-+})
-+
-+#define ia64_set_bspstore(val) \
-+ asm volatile ("mov ar.bspstore=%0;;" :: "r"(val) : "memory")
-+
-+#define ia64_get_rnat() \
-+({ \
-+ unsigned long val; \
-+ asm volatile ("mov %0=ar.rnat;" : "=r"(val) :: "memory"); \
-+ val; \
-+})
-+
-+#define ia64_set_rnat(val) \
-+ asm volatile ("mov ar.rnat=%0;;" :: "r"(val) : "memory")
-+
-+#define ia64_ttag(addr)
\
-+({
\
-+ __u64 ia64_intri_res;
\
-+ asm volatile ("ttag %0=%1" : "=r"(ia64_intri_res) : "r" (addr));
\
-+ ia64_intri_res;
\
-+})
-+
-+#define ia64_get_dcr() \
-+({ \
-+ __u64 result; \
-+ asm volatile ("mov %0=cr.dcr" : "=r"(result) : ); \
-+ result; \
-+})
-+
-+#define ia64_set_dcr(val) \
-+({ \
-+ asm volatile ("mov cr.dcr=%0" :: "r"(val) ); \
-+})
-+
-+#endif // CONFIG_VTI
-+
-+
- #define ia64_invala() asm volatile ("invala" ::: "memory")
-
- #define ia64_thash(addr)
\
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.11/hardirq.h
--- a/xen/arch/ia64/patch/linux-2.6.11/hardirq.h Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,14 +0,0 @@
---- ../../linux-2.6.11/include/linux/hardirq.h 2005-03-02 00:38:00.000000000
-0700
-+++ include/asm-ia64/linux/hardirq.h 2005-04-28 16:34:39.000000000 -0600
-@@ -60,7 +60,11 @@
- */
- #define in_irq() (hardirq_count())
- #define in_softirq() (softirq_count())
-+#ifndef XEN
- #define in_interrupt() (irq_count())
-+#else
-+#define in_interrupt() 0 // FIXME LATER
-+#endif
-
- #if defined(CONFIG_PREEMPT) && !defined(CONFIG_PREEMPT_BKL)
- # define in_atomic() ((preempt_count() & ~PREEMPT_ACTIVE) != kernel_locked())
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.11/head.S
--- a/xen/arch/ia64/patch/linux-2.6.11/head.S Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,120 +0,0 @@
----
/home/adsharma/disk2/xen-ia64/xeno-unstable-rebase.bk/xen/../../linux-2.6.11/arch/ia64/kernel/head.S
2005-03-01 23:38:13.000000000 -0800
-+++ /home/adsharma/disk2/xen-ia64/xeno-unstable-rebase.bk/xen/arch/ia64/head.S
2005-05-18 12:40:50.000000000 -0700
-@@ -76,21 +76,21 @@
- * We initialize all of them to prevent inadvertently assuming
- * something about the state of address translation early in boot.
- */
-- mov r6=((ia64_rid(IA64_REGION_ID_KERNEL, (0<<61)) << 8) | (PAGE_SHIFT
<< 2) | 1)
-+ movl r6=((ia64_rid(IA64_REGION_ID_KERNEL, (0<<61)) << 8) | (PAGE_SHIFT
<< 2) | 1)
- movl r7=(0<<61)
-- mov r8=((ia64_rid(IA64_REGION_ID_KERNEL, (1<<61)) << 8) | (PAGE_SHIFT
<< 2) | 1)
-+ movl r8=((ia64_rid(IA64_REGION_ID_KERNEL, (1<<61)) << 8) | (PAGE_SHIFT
<< 2) | 1)
- movl r9=(1<<61)
-- mov r10=((ia64_rid(IA64_REGION_ID_KERNEL, (2<<61)) << 8) | (PAGE_SHIFT
<< 2) | 1)
-+ movl r10=((ia64_rid(IA64_REGION_ID_KERNEL, (2<<61)) << 8) | (PAGE_SHIFT
<< 2) | 1)
- movl r11=(2<<61)
-- mov r12=((ia64_rid(IA64_REGION_ID_KERNEL, (3<<61)) << 8) | (PAGE_SHIFT
<< 2) | 1)
-+ movl r12=((ia64_rid(IA64_REGION_ID_KERNEL, (3<<61)) << 8) | (PAGE_SHIFT
<< 2) | 1)
- movl r13=(3<<61)
-- mov r14=((ia64_rid(IA64_REGION_ID_KERNEL, (4<<61)) << 8) | (PAGE_SHIFT
<< 2) | 1)
-+ movl r14=((ia64_rid(IA64_REGION_ID_KERNEL, (4<<61)) << 8) | (PAGE_SHIFT
<< 2) | 1)
- movl r15=(4<<61)
-- mov r16=((ia64_rid(IA64_REGION_ID_KERNEL, (5<<61)) << 8) | (PAGE_SHIFT
<< 2) | 1)
-+ movl r16=((ia64_rid(IA64_REGION_ID_KERNEL, (5<<61)) << 8) | (PAGE_SHIFT
<< 2) | 1)
- movl r17=(5<<61)
-- mov r18=((ia64_rid(IA64_REGION_ID_KERNEL, (6<<61)) << 8) |
(IA64_GRANULE_SHIFT << 2))
-+ movl r18=((ia64_rid(IA64_REGION_ID_KERNEL, (6<<61)) << 8) |
(IA64_GRANULE_SHIFT << 2))
- movl r19=(6<<61)
-- mov r20=((ia64_rid(IA64_REGION_ID_KERNEL, (7<<61)) << 8) |
(IA64_GRANULE_SHIFT << 2))
-+ movl r20=((ia64_rid(IA64_REGION_ID_KERNEL, (7<<61)) << 8) |
(IA64_GRANULE_SHIFT << 2))
- movl r21=(7<<61)
- ;;
- mov rr[r7]=r6
-@@ -129,8 +129,13 @@
- /*
- * Switch into virtual mode:
- */
-+#ifdef CONFIG_VTI
-+ movl r16=(IA64_PSR_IT|IA64_PSR_IC|IA64_PSR_DT|IA64_PSR_RT|IA64_PSR_DFH \
-+ |IA64_PSR_DI)
-+#else // CONFIG_VTI
- movl
r16=(IA64_PSR_IT|IA64_PSR_IC|IA64_PSR_DT|IA64_PSR_RT|IA64_PSR_DFH|IA64_PSR_BN \
- |IA64_PSR_DI)
-+#endif // CONFIG_VTI
- ;;
- mov cr.ipsr=r16
- movl r17=1f
-@@ -143,7 +148,11 @@
- 1: // now we are in virtual mode
-
- // set IVT entry point---can't access I/O ports without it
-+#ifdef CONFIG_VTI
-+ movl r3=vmx_ia64_ivt
-+#else // CONFIG_VTI
- movl r3=ia64_ivt
-+#endif // CONFIG_VTI
- ;;
- mov cr.iva=r3
- movl r2=FPSR_DEFAULT
-@@ -187,7 +196,11 @@
- dep r18=0,r3,0,12
- ;;
- or r18=r17,r18
-+#ifdef XEN
-+ dep r2=-1,r3,60,4 // IMVA of task
-+#else
- dep r2=-1,r3,61,3 // IMVA of task
-+#endif
- ;;
- mov r17=rr[r2]
- shr.u r16=r3,IA64_GRANULE_SHIFT
-@@ -207,8 +220,15 @@
-
- .load_current:
- // load the "current" pointer (r13) and ar.k6 with the current task
-+#ifdef CONFIG_VTI
-+ mov r21=r2 // virtual address
-+ ;;
-+ bsw.1
-+ ;;
-+#else // CONFIG_VTI
- mov IA64_KR(CURRENT)=r2 // virtual address
- mov IA64_KR(CURRENT_STACK)=r16
-+#endif // CONFIG_VTI
- mov r13=r2
- /*
- * Reserve space at the top of the stack for "struct pt_regs". Kernel
threads
-@@ -227,7 +247,11 @@
- ;;
- mov ar.rsc=0x3 // place RSE in eager mode
-
-+#ifdef XEN
-+(isBP) dep r28=-1,r28,60,4 // make address virtual
-+#else
- (isBP) dep r28=-1,r28,61,3 // make address virtual
-+#endif
- (isBP) movl r2=ia64_boot_param
- ;;
- (isBP) st8 [r2]=r28 // save the address of the boot param
area passed by the bootloader
-@@ -254,7 +278,9 @@
- br.call.sptk.many b0=console_print
-
- self: hint @pause
-+ ;;
- br.sptk.many self // endless loop
-+ ;;
- END(_start)
-
- GLOBAL_ENTRY(ia64_save_debug_regs)
-@@ -850,7 +876,11 @@
- * intermediate precision so that we can produce a full 64-bit result.
- */
- GLOBAL_ENTRY(sched_clock)
-+#ifdef XEN
-+ movl r8=THIS_CPU(cpu_info) + IA64_CPUINFO_NSEC_PER_CYC_OFFSET
-+#else
- addl r8=THIS_CPU(cpu_info) + IA64_CPUINFO_NSEC_PER_CYC_OFFSET,r0
-+#endif
- mov.m r9=ar.itc // fetch cycle-counter
(35 cyc)
- ;;
- ldf8 f8=[r8]
diff -r 5978be010bec -r 2b95125015a5
xen/arch/ia64/patch/linux-2.6.11/hpsim_ssc.h
--- a/xen/arch/ia64/patch/linux-2.6.11/hpsim_ssc.h Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,26 +0,0 @@
----
/home/adsharma/disk2/xen-ia64/xeno-unstable-rebase.bk/xen/../../linux-2.6.11/arch/ia64/hp/sim/hpsim_ssc.h
2005-03-01 23:38:17.000000000 -0800
-+++
/home/adsharma/disk2/xen-ia64/xeno-unstable-rebase.bk/xen/include/asm-ia64/hpsim_ssc.h
2005-05-18 12:40:19.000000000 -0700
-@@ -33,4 +33,23 @@
- */
- extern long ia64_ssc (long arg0, long arg1, long arg2, long arg3, int nr);
-
-+#ifdef XEN
-+/* Note: These are declared in linux/arch/ia64/hp/sim/simscsi.c but belong
-+ * in linux/include/asm-ia64/hpsim_ssc.h, hence their addition here */
-+#define SSC_OPEN 50
-+#define SSC_CLOSE 51
-+#define SSC_READ 52
-+#define SSC_WRITE 53
-+#define SSC_GET_COMPLETION 54
-+#define SSC_WAIT_COMPLETION 55
-+
-+#define SSC_WRITE_ACCESS 2
-+#define SSC_READ_ACCESS 1
-+
-+struct ssc_disk_req {
-+ unsigned long addr;
-+ unsigned long len;
-+};
-+#endif
-+
- #endif /* _IA64_PLATFORM_HPSIM_SSC_H */
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.11/ia64regs.h
--- a/xen/arch/ia64/patch/linux-2.6.11/ia64regs.h Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,38 +0,0 @@
----
/home/adsharma/disk2/xen-ia64/test3.bk/xen/../../linux-2.6.11/include/asm-ia64/ia64regs.h
2005-03-01 23:38:07.000000000 -0800
-+++ /home/adsharma/disk2/xen-ia64/test3.bk/xen/include/asm-ia64/ia64regs.h
2005-05-18 14:00:53.000000000 -0700
-@@ -87,6 +87,35 @@
- #define _IA64_REG_CR_LRR0 4176
- #define _IA64_REG_CR_LRR1 4177
-
-+#ifdef CONFIG_VTI
-+#define IA64_REG_CR_DCR 0
-+#define IA64_REG_CR_ITM 1
-+#define IA64_REG_CR_IVA 2
-+#define IA64_REG_CR_PTA 8
-+#define IA64_REG_CR_IPSR 16
-+#define IA64_REG_CR_ISR 17
-+#define IA64_REG_CR_IIP 19
-+#define IA64_REG_CR_IFA 20
-+#define IA64_REG_CR_ITIR 21
-+#define IA64_REG_CR_IIPA 22
-+#define IA64_REG_CR_IFS 23
-+#define IA64_REG_CR_IIM 24
-+#define IA64_REG_CR_IHA 25
-+#define IA64_REG_CR_LID 64
-+#define IA64_REG_CR_IVR 65
-+#define IA64_REG_CR_TPR 66
-+#define IA64_REG_CR_EOI 67
-+#define IA64_REG_CR_IRR0 68
-+#define IA64_REG_CR_IRR1 69
-+#define IA64_REG_CR_IRR2 70
-+#define IA64_REG_CR_IRR3 71
-+#define IA64_REG_CR_ITV 72
-+#define IA64_REG_CR_PMV 73
-+#define IA64_REG_CR_CMCV 74
-+#define IA64_REG_CR_LRR0 80
-+#define IA64_REG_CR_LRR1 81
-+#endif // CONFIG_VTI
-+
- /* Indirect Registers for getindreg() and setindreg() */
-
- #define _IA64_REG_INDR_CPUID 9000 /* getindreg only */
diff -r 5978be010bec -r 2b95125015a5
xen/arch/ia64/patch/linux-2.6.11/interrupt.h
--- a/xen/arch/ia64/patch/linux-2.6.11/interrupt.h Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,27 +0,0 @@
----
/home/adsharma/disk2/xen-ia64/xeno-unstable-rebase.bk/xen/../../linux-2.6.11/include/linux/interrupt.h
2005-03-01 23:38:09.000000000 -0800
-+++
/home/adsharma/disk2/xen-ia64/xeno-unstable-rebase.bk/xen/include/asm-ia64/linux/interrupt.h
2005-05-18 12:40:50.000000000 -0700
-@@ -33,6 +33,7 @@
- #define IRQ_HANDLED (1)
- #define IRQ_RETVAL(x) ((x) != 0)
-
-+#ifndef XEN
- struct irqaction {
- irqreturn_t (*handler)(int, void *, struct pt_regs *);
- unsigned long flags;
-@@ -49,6 +50,7 @@
- irqreturn_t (*handler)(int, void *, struct pt_regs *),
- unsigned long, const char *, void *);
- extern void free_irq(unsigned int, void *);
-+#endif
-
-
- #ifdef CONFIG_GENERIC_HARDIRQS
-@@ -121,7 +123,7 @@
- };
-
- asmlinkage void do_softirq(void);
--extern void open_softirq(int nr, void (*action)(struct softirq_action*), void
*data);
-+//extern void open_softirq(int nr, void (*action)(struct softirq_action*),
void *data);
- extern void softirq_init(void);
- #define __raise_softirq_irqoff(nr) do { local_softirq_pending() |= 1UL <<
(nr); } while (0)
- extern void FASTCALL(raise_softirq_irqoff(unsigned int nr));
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.11/io.h
--- a/xen/arch/ia64/patch/linux-2.6.11/io.h Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,14 +0,0 @@
----
/home/adsharma/disk2/xen-ia64/xeno-unstable-rebase.bk/xen/../../linux-2.6.11/include/asm-ia64/io.h
2005-03-01 23:38:34.000000000 -0800
-+++
/home/adsharma/disk2/xen-ia64/xeno-unstable-rebase.bk/xen/include/asm-ia64/io.h
2005-05-18 12:40:50.000000000 -0700
-@@ -23,7 +23,11 @@
- #define __SLOW_DOWN_IO do { } while (0)
- #define SLOW_DOWN_IO do { } while (0)
-
-+#ifdef XEN
-+#define __IA64_UNCACHED_OFFSET 0xe800000000000000UL
-+#else
- #define __IA64_UNCACHED_OFFSET 0xc000000000000000UL /* region 6 */
-+#endif
-
- /*
- * The legacy I/O space defined by the ia64 architecture supports only 65536
ports, but
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.11/irq_ia64.c
--- a/xen/arch/ia64/patch/linux-2.6.11/irq_ia64.c Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,126 +0,0 @@
----
/home/adsharma/disk2/xen-ia64/xeno-unstable-rebase.bk/xen/../../linux-2.6.11/arch/ia64/kernel/irq_ia64.c
2005-03-01 23:38:07.000000000 -0800
-+++
/home/adsharma/disk2/xen-ia64/xeno-unstable-rebase.bk/xen/arch/ia64/irq_ia64.c
2005-05-18 12:40:51.000000000 -0700
-@@ -106,6 +106,9 @@
- unsigned long saved_tpr;
-
- #if IRQ_DEBUG
-+#ifdef XEN
-+ xen_debug_irq(vector, regs);
-+#endif
- {
- unsigned long bsp, sp;
-
-@@ -148,6 +151,9 @@
- ia64_setreg(_IA64_REG_CR_TPR, vector);
- ia64_srlz_d();
-
-+#ifdef XEN
-+ if (!xen_do_IRQ(vector))
-+#endif
- __do_IRQ(local_vector_to_irq(vector), regs);
-
- /*
-@@ -167,6 +173,103 @@
- irq_exit();
- }
-
-+#ifdef CONFIG_VTI
-+#define vmx_irq_enter() \
-+ add_preempt_count(HARDIRQ_OFFSET);
-+
-+/* Now softirq will be checked when leaving hypervisor, or else
-+ * scheduler irq will be executed too early.
-+ */
-+#define vmx_irq_exit(void) \
-+ sub_preempt_count(HARDIRQ_OFFSET);
-+/*
-+ * That's where the IVT branches when we get an external
-+ * interrupt. This branches to the correct hardware IRQ handler via
-+ * function ptr.
-+ */
-+void
-+vmx_ia64_handle_irq (ia64_vector vector, struct pt_regs *regs)
-+{
-+ unsigned long saved_tpr;
-+ int wake_dom0 = 0;
-+
-+
-+#if IRQ_DEBUG
-+ {
-+ unsigned long bsp, sp;
-+
-+ /*
-+ * Note: if the interrupt happened while executing in
-+ * the context switch routine (ia64_switch_to), we may
-+ * get a spurious stack overflow here. This is
-+ * because the register and the memory stack are not
-+ * switched atomically.
-+ */
-+ bsp = ia64_getreg(_IA64_REG_AR_BSP);
-+ sp = ia64_getreg(_IA64_REG_AR_SP);
-+
-+ if ((sp - bsp) < 1024) {
-+ static unsigned char count;
-+ static long last_time;
-+
-+ if (jiffies - last_time > 5*HZ)
-+ count = 0;
-+ if (++count < 5) {
-+ last_time = jiffies;
-+ printk("ia64_handle_irq: DANGER: less than "
-+ "1KB of free stack space!!\n"
-+ "(bsp=0x%lx, sp=%lx)\n", bsp, sp);
-+ }
-+ }
-+ }
-+#endif /* IRQ_DEBUG */
-+
-+ /*
-+ * Always set TPR to limit maximum interrupt nesting depth to
-+ * 16 (without this, it would be ~240, which could easily lead
-+ * to kernel stack overflows).
-+ */
-+ vmx_irq_enter();
-+ saved_tpr = ia64_getreg(_IA64_REG_CR_TPR);
-+ ia64_srlz_d();
-+ while (vector != IA64_SPURIOUS_INT_VECTOR) {
-+ if (!IS_RESCHEDULE(vector)) {
-+ ia64_setreg(_IA64_REG_CR_TPR, vector);
-+ ia64_srlz_d();
-+
-+ if (vector != IA64_TIMER_VECTOR) {
-+ /* FIXME: Leave IRQ re-route later */
-+ vmx_vcpu_pend_interrupt(dom0->vcpu[0],vector);
-+ wake_dom0 = 1;
-+ }
-+ else { // FIXME: Handle Timer only now
-+ __do_IRQ(local_vector_to_irq(vector), regs);
-+ }
-+
-+ /*
-+ * Disable interrupts and send EOI:
-+ */
-+ local_irq_disable();
-+ ia64_setreg(_IA64_REG_CR_TPR, saved_tpr);
-+ }
-+ else {
-+ printf("Oops: RESCHEDULE IPI absorbed by HV\n");
-+ }
-+ ia64_eoi();
-+ vector = ia64_get_ivr();
-+ }
-+ /*
-+ * This must be done *after* the ia64_eoi(). For example, the keyboard
softirq
-+ * handler needs to be able to wait for further keyboard interrupts,
which can't
-+ * come through until ia64_eoi() has been done.
-+ */
-+ vmx_irq_exit();
-+ if ( wake_dom0 && current != dom0 )
-+ vcpu_wake(dom0->vcpu[0]);
-+}
-+#endif
-+
-+
- #ifdef CONFIG_HOTPLUG_CPU
- /*
- * This function emulates a interrupt processing when a cpu is about to be
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.11/kregs.h
--- a/xen/arch/ia64/patch/linux-2.6.11/kregs.h Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,66 +0,0 @@
----
/home/adsharma/disk2/xen-ia64/xeno-unstable-rebase.bk/xen/../../linux-2.6.11/include/asm-ia64/kregs.h
2005-03-01 23:37:49.000000000 -0800
-+++
/home/adsharma/disk2/xen-ia64/xeno-unstable-rebase.bk/xen/include/asm-ia64/kregs.h
2005-05-18 12:40:50.000000000 -0700
-@@ -29,8 +29,21 @@
- */
- #define IA64_TR_KERNEL 0 /* itr0, dtr0: maps kernel
image (code & data) */
- #define IA64_TR_PALCODE 1 /* itr1: maps PALcode as
required by EFI */
-+#ifdef CONFIG_VTI
-+#define IA64_TR_XEN_IN_DOM 6 /* itr6, dtr6: Double mapping for xen
image in domain space */
-+#endif // CONFIG_VTI
- #define IA64_TR_PERCPU_DATA 1 /* dtr1: percpu data */
- #define IA64_TR_CURRENT_STACK 2 /* dtr2: maps kernel's memory- &
register-stacks */
-+#ifdef XEN
-+#define IA64_TR_SHARED_INFO 3 /* dtr3: page shared with domain */
-+#define IA64_TR_VHPT 4 /* dtr4: vhpt */
-+#define IA64_TR_ARCH_INFO 5
-+#ifdef CONFIG_VTI
-+#define IA64_TR_VHPT_IN_DOM 5 /* dtr5: Double mapping for vhpt table
in domain space */
-+#define IA64_TR_RR7_SWITCH_STUB 7 /* dtr7: mapping for rr7 switch
stub */
-+#define IA64_TEMP_PHYSICAL 8 /* itr8, dtr8: temp mapping for guest
physical memory 256M */
-+#endif // CONFIG_VTI
-+#endif
-
- /* Processor status register bits: */
- #define IA64_PSR_BE_BIT 1
-@@ -66,6 +78,9 @@
- #define IA64_PSR_ED_BIT 43
- #define IA64_PSR_BN_BIT 44
- #define IA64_PSR_IA_BIT 45
-+#ifdef CONFIG_VTI
-+#define IA64_PSR_VM_BIT 46
-+#endif // CONFIG_VTI
-
- /* A mask of PSR bits that we generally don't want to inherit across a
clone2() or an
- execve(). Only list flags here that need to be cleared/set for BOTH
clone2() and
-@@ -107,6 +122,9 @@
- #define IA64_PSR_ED (__IA64_UL(1) << IA64_PSR_ED_BIT)
- #define IA64_PSR_BN (__IA64_UL(1) << IA64_PSR_BN_BIT)
- #define IA64_PSR_IA (__IA64_UL(1) << IA64_PSR_IA_BIT)
-+#ifdef CONFIG_VTI
-+#define IA64_PSR_VM (__IA64_UL(1) << IA64_PSR_VM_BIT)
-+#endif // CONFIG_VTI
-
- /* User mask bits: */
- #define IA64_PSR_UM (IA64_PSR_BE | IA64_PSR_UP | IA64_PSR_AC | IA64_PSR_MFL
| IA64_PSR_MFH)
-@@ -160,4 +178,21 @@
- #define IA64_ISR_CODE_LFETCH 4
- #define IA64_ISR_CODE_PROBEF 5
-
-+#ifdef XEN
-+/* Interruption Function State */
-+#define IA64_IFS_V_BIT 63
-+#define IA64_IFS_V (__IA64_UL(1) << IA64_IFS_V_BIT)
-+
-+/* Page Table Address */
-+#define IA64_PTA_VE_BIT 0
-+#define IA64_PTA_SIZE_BIT 2
-+#define IA64_PTA_VF_BIT 8
-+#define IA64_PTA_BASE_BIT 15
-+
-+#define IA64_PTA_VE (__IA64_UL(1) << IA64_PTA_VE_BIT)
-+#define IA64_PTA_SIZE (__IA64_UL(0x3f) << IA64_PTA_SIZE_BIT)
-+#define IA64_PTA_VF (__IA64_UL(1) << IA64_PTA_VF_BIT)
-+#define IA64_PTA_BASE (__IA64_UL(0) - ((__IA64_UL(1) << IA64_PTA_BASE_BIT)))
-+#endif
-+
- #endif /* _ASM_IA64_kREGS_H */
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.11/mca_asm.h
--- a/xen/arch/ia64/patch/linux-2.6.11/mca_asm.h Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,32 +0,0 @@
----
/home/adsharma/disk2/xen-ia64/xeno-unstable-rebase.bk/xen/../../linux-2.6.11/include/asm-ia64/mca_asm.h
2005-03-01 23:38:38.000000000 -0800
-+++
/home/adsharma/disk2/xen-ia64/xeno-unstable-rebase.bk/xen/include/asm-ia64/mca_asm.h
2005-05-18 12:40:19.000000000 -0700
-@@ -26,8 +26,13 @@
- * direct mapped to physical addresses.
- * 1. Lop off bits 61 thru 63 in the virtual address
- */
-+#ifdef XEN
-+#define INST_VA_TO_PA(addr)
\
-+ dep addr = 0, addr, 60, 4
-+#else // XEN
- #define INST_VA_TO_PA(addr)
\
- dep addr = 0, addr, 61, 3
-+#endif // XEN
- /*
- * This macro converts a data virtual address to a physical address
- * Right now for simulation purposes the virtual addresses are
-@@ -42,9 +47,15 @@
- * direct mapped to physical addresses.
- * 1. Put 0x7 in bits 61 thru 63.
- */
-+#ifdef XEN
-+#define DATA_PA_TO_VA(addr,temp)
\
-+ mov temp = 0xf ;;
\
-+ dep addr = temp, addr, 60, 4
-+#else // XEN
- #define DATA_PA_TO_VA(addr,temp)
\
- mov temp = 0x7 ;;
\
- dep addr = temp, addr, 61, 3
-+#endif // XEN
-
- #define GET_THIS_PADDR(reg, var) \
- mov reg = IA64_KR(PER_CPU_DATA);; \
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.11/minstate.h
--- a/xen/arch/ia64/patch/linux-2.6.11/minstate.h Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,25 +0,0 @@
- minstate.h | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-Index: linux-2.6.11-xendiffs/arch/ia64/kernel/minstate.h
-===================================================================
---- linux-2.6.11-xendiffs.orig/arch/ia64/kernel/minstate.h 2005-04-06
22:51:31.170261541 -0500
-+++ linux-2.6.11-xendiffs/arch/ia64/kernel/minstate.h 2005-04-06
22:54:03.210575034 -0500
-@@ -48,7 +48,7 @@
- (pUStk) mov r24=ar.rnat;
\
- (pUStk) addl r1=IA64_STK_OFFSET-IA64_PT_REGS_SIZE,r1; /* compute base
of memory stack */ \
- (pUStk) mov r23=ar.bspstore; /* save
ar.bspstore */ \
--(pUStk) dep r22=-1,r22,61,3; /* compute kernel
virtual addr of RBS */ \
-+(pUStk) dep r22=-1,r22,60,4; /* compute kernel
virtual addr of RBS */ \
- ;;
\
- (pKStk) addl r1=-IA64_PT_REGS_SIZE,r1; /* if in kernel mode,
use sp (r12) */ \
- (pUStk) mov ar.bspstore=r22; /* switch to kernel RBS
*/ \
-@@ -57,7 +57,7 @@
- (pUStk) mov ar.rsc=0x3; /* set eager mode, pl 0, little-endian,
loadrs=0 */ \
-
- #define MINSTATE_END_SAVE_MIN_PHYS
\
-- dep r12=-1,r12,61,3; /* make sp a kernel virtual address */
\
-+ dep r12=-1,r12,60,4; /* make sp a kernel virtual address */
\
- ;;
-
- #ifdef MINSTATE_VIRT
diff -r 5978be010bec -r 2b95125015a5
xen/arch/ia64/patch/linux-2.6.11/mm_contig.c
--- a/xen/arch/ia64/patch/linux-2.6.11/mm_contig.c Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,47 +0,0 @@
---- ../../linux-2.6.11/arch/ia64/mm/contig.c 2005-03-02 00:37:55.000000000
-0700
-+++ arch/ia64/mm_contig.c 2005-04-28 16:13:52.000000000 -0600
-@@ -35,6 +35,7 @@
- *
- * Just walks the pages in the system and describes where they're allocated.
- */
-+#ifndef XEN
- void
- show_mem (void)
- {
-@@ -63,6 +64,7 @@
- printk("%d pages swap cached\n", cached);
- printk("%ld pages in page table cache\n", pgtable_cache_size);
- }
-+#endif
-
- /* physical address where the bootmem map is located */
- unsigned long bootmap_start;
-@@ -140,6 +142,7 @@
- * Walk the EFI memory map and find usable memory for the system, taking
- * into account reserved areas.
- */
-+#ifndef XEN
- void
- find_memory (void)
- {
-@@ -168,6 +171,7 @@
-
- find_initrd();
- }
-+#endif
-
- #ifdef CONFIG_SMP
- /**
-@@ -225,6 +229,7 @@
- * Set up the page tables.
- */
-
-+#ifndef XEN
- void
- paging_init (void)
- {
-@@ -297,3 +302,4 @@
- #endif /* !CONFIG_VIRTUAL_MEM_MAP */
- zero_page_memmap_ptr = virt_to_page(ia64_imva(empty_zero_page));
- }
-+#endif /* !CONFIG_XEN */
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.11/page.h
--- a/xen/arch/ia64/patch/linux-2.6.11/page.h Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,74 +0,0 @@
----
/home/adsharma/xeno-unstable-ia64-staging.bk/xen/../../linux-2.6.11/include/asm-ia64/page.h
2005-03-01 23:37:48.000000000 -0800
-+++ /home/adsharma/xeno-unstable-ia64-staging.bk/xen/include/asm-ia64/page.h
2005-05-20 09:36:02.000000000 -0700
-@@ -32,6 +32,7 @@
- #define PAGE_ALIGN(addr) (((addr) + PAGE_SIZE - 1) & PAGE_MASK)
-
- #define PERCPU_PAGE_SHIFT 16 /* log2() of max. size of per-CPU area
*/
-+
- #define PERCPU_PAGE_SIZE (__IA64_UL_CONST(1) << PERCPU_PAGE_SHIFT)
-
- #define RGN_MAP_LIMIT ((1UL << (4*PAGE_SHIFT - 12)) - PAGE_SIZE) /* per
region addr limit */
-@@ -95,9 +96,15 @@
- #endif
-
- #ifndef CONFIG_DISCONTIGMEM
-+#ifdef XEN
-+# define pfn_valid(pfn) (0)
-+# define page_to_pfn(_page) ((unsigned long)((_page) - frame_table))
-+# define pfn_to_page(_pfn) (frame_table + (_pfn))
-+#else
- # define pfn_valid(pfn) (((pfn) < max_mapnr) &&
ia64_pfn_valid(pfn))
- # define page_to_pfn(page) ((unsigned long) (page - mem_map))
- # define pfn_to_page(pfn) (mem_map + (pfn))
-+#endif
- #else
- extern struct page *vmem_map;
- extern unsigned long max_low_pfn;
-@@ -109,6 +116,11 @@
- #define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT)
- #define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT)
-
-+#ifdef XEN
-+#define page_to_virt(_page) phys_to_virt(page_to_phys(_page))
-+#define phys_to_page(kaddr) pfn_to_page(((kaddr) >> PAGE_SHIFT))
-+#endif
-+
- typedef union ia64_va {
- struct {
- unsigned long off : 61; /* intra-region offset */
-@@ -124,8 +136,23 @@
- * expressed in this way to ensure they result in a single "dep"
- * instruction.
- */
-+#ifdef XEN
-+typedef union xen_va {
-+ struct {
-+ unsigned long off : 60;
-+ unsigned long reg : 4;
-+ } f;
-+ unsigned long l;
-+ void *p;
-+} xen_va;
-+
-+// xen/drivers/console.c uses __va in a declaration (should be fixed!)
-+#define __pa(x) ({xen_va _v; _v.l = (long) (x); _v.f.reg = 0;
_v.l;})
-+#define __va(x) ({xen_va _v; _v.l = (long) (x); _v.f.reg = -1;
_v.p;})
-+#else
- #define __pa(x) ({ia64_va _v; _v.l = (long) (x); _v.f.reg = 0;
_v.l;})
- #define __va(x) ({ia64_va _v; _v.l = (long) (x); _v.f.reg = -1;
_v.p;})
-+#endif
-
- #define REGION_NUMBER(x) ({ia64_va _v; _v.l = (long) (x); _v.f.reg;})
- #define REGION_OFFSET(x) ({ia64_va _v; _v.l = (long) (x); _v.f.off;})
-@@ -197,7 +224,11 @@
- # define __pgprot(x) (x)
- #endif /* !STRICT_MM_TYPECHECKS */
-
-+#ifdef XEN
-+#define PAGE_OFFSET __IA64_UL_CONST(0xf000000000000000)
-+#else
- #define PAGE_OFFSET __IA64_UL_CONST(0xe000000000000000)
-+#endif
-
- #define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE |
\
- VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC
| \
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.11/pal.S
--- a/xen/arch/ia64/patch/linux-2.6.11/pal.S Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,26 +0,0 @@
----
/home/adsharma/disk2/xen-ia64/xeno-unstable-rebase.bk/xen/../../linux-2.6.11/arch/ia64/kernel/pal.S
2005-03-01 23:38:33.000000000 -0800
-+++ /home/adsharma/disk2/xen-ia64/xeno-unstable-rebase.bk/xen/arch/ia64/pal.S
2005-05-18 12:40:19.000000000 -0700
-@@ -166,7 +166,11 @@
- adds r8 = 1f-1b,r8 // calculate return address for call
- ;;
- mov loc4=ar.rsc // save RSE configuration
-+#ifdef XEN
-+ dep.z loc2=loc2,0,60 // convert pal entry point to physical
-+#else // XEN
- dep.z loc2=loc2,0,61 // convert pal entry point to physical
-+#endif // XEN
- tpa r8=r8 // convert rp to physical
- ;;
- mov b7 = loc2 // install target to branch reg
-@@ -225,7 +229,11 @@
- mov loc3 = psr // save psr
- ;;
- mov loc4=ar.rsc // save RSE configuration
-+#ifdef XEN
-+ dep.z loc2=loc2,0,60 // convert pal entry point to physical
-+#else // XEN
- dep.z loc2=loc2,0,61 // convert pal entry point to physical
-+#endif // XEN
- ;;
- mov ar.rsc=0 // put RSE in enforced lazy, LE mode
- movl r16=PAL_PSR_BITS_TO_CLEAR
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.11/pal.h
--- a/xen/arch/ia64/patch/linux-2.6.11/pal.h Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,12 +0,0 @@
----
/home/adsharma/disk2/xen-ia64/test3.bk/xen/../../linux-2.6.11/include/asm-ia64/pal.h
2005-03-01 23:38:13.000000000 -0800
-+++ /home/adsharma/disk2/xen-ia64/test3.bk/xen/include/asm-ia64/pal.h
2005-05-18 14:00:53.000000000 -0700
-@@ -1559,6 +1559,9 @@
- return iprv.status;
- }
-
-+#ifdef CONFIG_VTI
-+#include <asm/vmx_pal.h>
-+#endif // CONFIG_VTI
- #endif /* __ASSEMBLY__ */
-
- #endif /* _ASM_IA64_PAL_H */
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.11/pgalloc.h
--- a/xen/arch/ia64/patch/linux-2.6.11/pgalloc.h Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,76 +0,0 @@
---- ../../linux-2.6.11/include/asm-ia64/pgalloc.h 2005-03-02
00:37:31.000000000 -0700
-+++ include/asm-ia64/pgalloc.h 2005-06-09 13:40:48.000000000 -0600
-@@ -61,7 +61,12 @@
- pgd_t *pgd = pgd_alloc_one_fast(mm);
-
- if (unlikely(pgd == NULL)) {
-+#ifdef XEN
-+ pgd = (pgd_t *)alloc_xenheap_page();
-+ memset(pgd,0,PAGE_SIZE);
-+#else
- pgd = (pgd_t *)__get_free_page(GFP_KERNEL|__GFP_ZERO);
-+#endif
- }
- return pgd;
- }
-@@ -104,7 +109,12 @@
- static inline pmd_t*
- pmd_alloc_one (struct mm_struct *mm, unsigned long addr)
- {
-+#ifdef XEN
-+ pmd_t *pmd = (pmd_t *)alloc_xenheap_page();
-+ memset(pmd,0,PAGE_SIZE);
-+#else
- pmd_t *pmd = (pmd_t
*)__get_free_page(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO);
-+#endif
-
- return pmd;
- }
-@@ -136,7 +146,12 @@
- static inline struct page *
- pte_alloc_one (struct mm_struct *mm, unsigned long addr)
- {
-+#ifdef XEN
-+ struct page *pte = alloc_xenheap_page();
-+ memset(pte,0,PAGE_SIZE);
-+#else
- struct page *pte = alloc_pages(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO, 0);
-+#endif
-
- return pte;
- }
-@@ -144,7 +159,12 @@
- static inline pte_t *
- pte_alloc_one_kernel (struct mm_struct *mm, unsigned long addr)
- {
-+#ifdef XEN
-+ pte_t *pte = (pte_t *)alloc_xenheap_page();
-+ memset(pte,0,PAGE_SIZE);
-+#else
- pte_t *pte = (pte_t
*)__get_free_page(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO);
-+#endif
-
- return pte;
- }
-@@ -152,13 +172,21 @@
- static inline void
- pte_free (struct page *pte)
- {
-+#ifdef XEN
-+ free_xenheap_page(pte);
-+#else
- __free_page(pte);
-+#endif
- }
-
- static inline void
- pte_free_kernel (pte_t *pte)
- {
-+#ifdef XEN
-+ free_xenheap_page((unsigned long) pte);
-+#else
- free_page((unsigned long) pte);
-+#endif
- }
-
- #define __pte_free_tlb(tlb, pte) tlb_remove_page((tlb), (pte))
diff -r 5978be010bec -r 2b95125015a5
xen/arch/ia64/patch/linux-2.6.11/processor.h
--- a/xen/arch/ia64/patch/linux-2.6.11/processor.h Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,37 +0,0 @@
----
/home/adsharma/xeno-unstable-ia64-staging.bk/xen/../../linux-2.6.11/include/asm-ia64/processor.h
2005-03-01 23:37:58.000000000 -0800
-+++
/home/adsharma/xeno-unstable-ia64-staging.bk/xen/include/asm-ia64/processor.h
2005-05-20 09:36:02.000000000 -0700
-@@ -94,7 +94,11 @@
- #ifdef CONFIG_NUMA
- #include <asm/nodedata.h>
- #endif
-+#ifdef XEN
-+#include <asm/xenprocessor.h>
-+#endif
-
-+#ifndef XEN
- /* like above but expressed as bitfields for more efficient access: */
- struct ia64_psr {
- __u64 reserved0 : 1;
-@@ -133,6 +137,7 @@
- __u64 bn : 1;
- __u64 reserved4 : 19;
- };
-+#endif
-
- /*
- * CPU type, hardware bug flags, and per-CPU state. Frequently used
-@@ -408,12 +413,14 @@
- */
-
- /* Return TRUE if task T owns the fph partition of the CPU we're running on.
*/
-+#ifndef XEN
- #define ia64_is_local_fpu_owner(t)
\
- ({
\
- struct task_struct *__ia64_islfo_task = (t);
\
- (__ia64_islfo_task->thread.last_fph_cpu == smp_processor_id()
\
- && __ia64_islfo_task == (struct task_struct *)
ia64_get_kr(IA64_KR_FPU_OWNER)); \
- })
-+#endif
-
- /* Mark task T as owning the fph partition of the CPU we're running on. */
- #define ia64_set_local_fpu_owner(t) do {
\
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.11/ptrace.h
--- a/xen/arch/ia64/patch/linux-2.6.11/ptrace.h Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,20 +0,0 @@
----
/home/adsharma/disk2/xen-ia64/test3.bk/xen/../../linux-2.6.11/include/asm-ia64/ptrace.h
2005-03-01 23:38:38.000000000 -0800
-+++ /home/adsharma/disk2/xen-ia64/test3.bk/xen/include/asm-ia64/ptrace.h
2005-05-18 14:00:53.000000000 -0700
-@@ -95,6 +95,9 @@
- * (because the memory stack pointer MUST ALWAYS be aligned this way)
- *
- */
-+#ifdef XEN
-+#include <public/arch-ia64.h>
-+#else
- struct pt_regs {
- /* The following registers are saved by SAVE_MIN: */
- unsigned long b6; /* scratch */
-@@ -170,6 +173,7 @@
- struct ia64_fpreg f10; /* scratch */
- struct ia64_fpreg f11; /* scratch */
- };
-+#endif
-
- /*
- * This structure contains the addition registers that need to
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.11/series
--- a/xen/arch/ia64/patch/linux-2.6.11/series Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,40 +0,0 @@
-bootmem.h
-current.h
-efi.c
-efi.h
-entry.S
-gcc_intrin.h
-hardirq.h
-head.S
-hpsim_irq.c
-hpsim_ssc.h
-hw_irq.h
-ide.h
-init_task.c
-init_task.h
-interrupt.h
-io.h
-irq.h
-irq_ia64.c
-ivt.S
-kregs.h
-lds.S
-linuxtime.h
-minstate.h
-mm_bootmem.c
-mm_contig.c
-mmzone.h
-page_alloc.c
-page.h
-processor.h
-sal.h
-setup.c
-slab.c
-slab.h
-system.h
-time.c
-kernel-time.c
-tlb.c
-types.h
-unaligned.c
-wait.h
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.11/setup.c
--- a/xen/arch/ia64/patch/linux-2.6.11/setup.c Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,151 +0,0 @@
---- ../../linux-2.6.11/arch/ia64/kernel/setup.c 2005-03-02
00:37:49.000000000 -0700
-+++ arch/ia64/setup.c 2005-06-03 10:14:24.000000000 -0600
-@@ -51,6 +51,10 @@
- #include <asm/smp.h>
- #include <asm/system.h>
- #include <asm/unistd.h>
-+#ifdef CONFIG_VTI
-+#include <asm/vmx.h>
-+#endif // CONFIG_VTI
-+#include <asm/io.h>
-
- #if defined(CONFIG_SMP) && (IA64_CPU_SIZE > PAGE_SIZE)
- # error "struct cpuinfo_ia64 too big!"
-@@ -127,7 +131,16 @@
- range_end = min(end, rsvd_region[i].start);
-
- if (range_start < range_end)
-+#ifdef XEN
-+ {
-+ /* init_boot_pages requires "ps, pe" */
-+ printk("Init boot pages: 0x%lx -> 0x%lx.\n",
-+ __pa(range_start), __pa(range_end));
-+ (*func)(__pa(range_start), __pa(range_end), 0);
-+ }
-+#else
- call_pernode_memory(__pa(range_start), range_end -
range_start, func);
-+#endif
-
- /* nothing more available in this segment */
- if (range_end == end) return 0;
-@@ -185,7 +198,12 @@
- n++;
-
- rsvd_region[n].start = (unsigned long) ia64_imva((void *)KERNEL_START);
-+#ifdef XEN
-+ /* Reserve xen image/bitmap/xen-heap */
-+ rsvd_region[n].end = rsvd_region[n].start + xenheap_size;
-+#else
- rsvd_region[n].end = (unsigned long) ia64_imva(_end);
-+#endif
- n++;
-
- #ifdef CONFIG_BLK_DEV_INITRD
-@@ -299,17 +317,25 @@
- }
-
- void __init
-+#ifdef XEN
-+early_setup_arch (char **cmdline_p)
-+#else
- setup_arch (char **cmdline_p)
-+#endif
- {
- unw_init();
-
- ia64_patch_vtop((u64) __start___vtop_patchlist, (u64)
__end___vtop_patchlist);
-
- *cmdline_p = __va(ia64_boot_param->command_line);
-+#ifdef XEN
-+ efi_init();
-+#else
- strlcpy(saved_command_line, *cmdline_p, COMMAND_LINE_SIZE);
-
- efi_init();
- io_port_init();
-+#endif
-
- #ifdef CONFIG_IA64_GENERIC
- {
-@@ -336,6 +362,11 @@
- }
- #endif
-
-+#ifdef XEN
-+ early_cmdline_parse(cmdline_p);
-+ cmdline_parse(*cmdline_p);
-+#undef CONFIG_ACPI_BOOT
-+#endif
- if (early_console_setup(*cmdline_p) == 0)
- mark_bsp_online();
-
-@@ -351,8 +382,18 @@
- # endif
- #endif /* CONFIG_APCI_BOOT */
-
-+#ifndef XEN
- find_memory();
-+#else
-+ io_port_init();
-+}
-
-+void __init
-+late_setup_arch (char **cmdline_p)
-+{
-+#undef CONFIG_ACPI_BOOT
-+ acpi_table_init();
-+#endif
- /* process SAL system table: */
- ia64_sal_init(efi.sal_systab);
-
-@@ -360,6 +401,10 @@
- cpu_physical_id(0) = hard_smp_processor_id();
- #endif
-
-+#ifdef CONFIG_VTI
-+ identify_vmx_feature();
-+#endif // CONFIG_VTI
-+
- cpu_init(); /* initialize the bootstrap CPU */
-
- #ifdef CONFIG_ACPI_BOOT
-@@ -492,12 +537,14 @@
- {
- }
-
-+#ifndef XEN
- struct seq_operations cpuinfo_op = {
- .start = c_start,
- .next = c_next,
- .stop = c_stop,
- .show = show_cpuinfo
- };
-+#endif
-
- void
- identify_cpu (struct cpuinfo_ia64 *c)
-@@ -551,6 +598,12 @@
- }
- c->unimpl_va_mask = ~((7L<<61) | ((1L << (impl_va_msb + 1)) - 1));
- c->unimpl_pa_mask = ~((1L<<63) | ((1L << phys_addr_size) - 1));
-+
-+#ifdef CONFIG_VTI
-+ /* If vmx feature is on, do necessary initialization for vmx */
-+ if (vmx_enabled)
-+ vmx_init_env();
-+#endif
- }
-
- void
-@@ -659,7 +712,11 @@
- | IA64_DCR_DA | IA64_DCR_DD |
IA64_DCR_LC));
- atomic_inc(&init_mm.mm_count);
- current->active_mm = &init_mm;
-+#ifdef XEN
-+ if (current->domain->arch.mm)
-+#else
- if (current->mm)
-+#endif
- BUG();
-
- ia64_mmu_init(ia64_imva(cpu_data));
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.11/sn_sal.h
--- a/xen/arch/ia64/patch/linux-2.6.11/sn_sal.h Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,33 +0,0 @@
---- /data/lwork/attica1/edwardsg/linux-2.6.11/include/asm-ia64/sn/sn_sal.h
2005-03-02 01:38:33 -06:00
-+++ include/asm-ia64/sn/sn_sal.h 2005-06-01 14:31:47 -05:00
-@@ -123,6 +123,7 @@
- #define SALRET_ERROR (-3)
-
-
-+#ifndef XEN
- /**
- * sn_sal_rev_major - get the major SGI SAL revision number
- *
-@@ -226,6 +227,7 @@ ia64_sn_get_klconfig_addr(nasid_t nasid)
- }
- return ret_stuff.v0 ? __va(ret_stuff.v0) : NULL;
- }
-+#endif /* !XEN */
-
- /*
- * Returns the next console character.
-@@ -304,6 +306,7 @@ ia64_sn_console_putb(const char *buf, in
- return (u64)0;
- }
-
-+#ifndef XEN
- /*
- * Print a platform error record
- */
-@@ -987,5 +990,5 @@ ia64_sn_hwperf_op(nasid_t nasid, u64 opc
- *v0 = (int) rv.v0;
- return (int) rv.status;
- }
--
-+#endif /* !XEN */
- #endif /* _ASM_IA64_SN_SN_SAL_H */
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.11/system.h
--- a/xen/arch/ia64/patch/linux-2.6.11/system.h Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,38 +0,0 @@
----
/home/adsharma/xeno-unstable-ia64-staging.bk/xen/../../linux-2.6.11/include/asm-ia64/system.h
2005-03-01 23:38:07.000000000 -0800
-+++ /home/adsharma/xeno-unstable-ia64-staging.bk/xen/include/asm-ia64/system.h
2005-05-20 09:36:02.000000000 -0700
-@@ -18,14 +18,19 @@
- #include <asm/page.h>
- #include <asm/pal.h>
- #include <asm/percpu.h>
-+#ifdef XEN
-+#include <asm/xensystem.h>
-+#endif
-
- #define GATE_ADDR __IA64_UL_CONST(0xa000000000000000)
- /*
- * 0xa000000000000000+2*PERCPU_PAGE_SIZE
- * - 0xa000000000000000+3*PERCPU_PAGE_SIZE remain unmapped (guard page)
- */
-+#ifndef XEN
- #define KERNEL_START __IA64_UL_CONST(0xa000000100000000)
- #define PERCPU_ADDR (-PERCPU_PAGE_SIZE)
-+#endif
-
- #ifndef __ASSEMBLY__
-
-@@ -218,6 +223,7 @@
- # define PERFMON_IS_SYSWIDE() (0)
- #endif
-
-+#ifndef XEN
- #define IA64_HAS_EXTRA_STATE(t)
\
- ((t)->thread.flags & (IA64_THREAD_DBG_VALID|IA64_THREAD_PM_VALID)
\
- || IS_IA32_PROCESS(ia64_task_regs(t)) || PERFMON_IS_SYSWIDE())
-@@ -230,6 +236,7 @@
- ia64_psr(ia64_task_regs(next))->dfh = !ia64_is_local_fpu_owner(next);
\
- (last) = ia64_switch_to((next));
\
- } while (0)
-+#endif
-
- #ifdef CONFIG_SMP
- /*
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.11/time.c
--- a/xen/arch/ia64/patch/linux-2.6.11/time.c Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,56 +0,0 @@
---- ../../linux-2.6.11/arch/ia64/kernel/time.c 2005-03-02 00:37:50.000000000
-0700
-+++ arch/ia64/time.c 2005-05-02 11:19:29.000000000 -0600
-@@ -29,6 +29,9 @@
- #include <asm/sal.h>
- #include <asm/sections.h>
- #include <asm/system.h>
-+#ifdef XEN
-+#include <linux/jiffies.h> // not included by xen/sched.h
-+#endif
-
- extern unsigned long wall_jiffies;
-
-@@ -45,6 +48,7 @@
-
- #endif
-
-+#ifndef XEN
- static struct time_interpolator itc_interpolator = {
- .shift = 16,
- .mask = 0xffffffffffffffffLL,
-@@ -110,6 +114,7 @@
- } while (time_after_eq(ia64_get_itc(), new_itm));
- return IRQ_HANDLED;
- }
-+#endif
-
- /*
- * Encapsulate access to the itm structure for SMP.
-@@ -212,6 +217,7 @@
- + itc_freq/2)/itc_freq;
-
- if (!(sal_platform_features & IA64_SAL_PLATFORM_FEATURE_ITC_DRIFT)) {
-+#ifndef XEN
- itc_interpolator.frequency = local_cpu_data->itc_freq;
- itc_interpolator.drift = itc_drift;
- #ifdef CONFIG_SMP
-@@ -228,12 +234,14 @@
- if (!nojitter) itc_interpolator.jitter = 1;
- #endif
- register_time_interpolator(&itc_interpolator);
-+#endif
- }
-
- /* Setup the CPU local timer tick */
- ia64_cpu_local_tick();
- }
-
-+#ifndef XEN
- static struct irqaction timer_irqaction = {
- .handler = timer_interrupt,
- .flags = SA_INTERRUPT,
-@@ -253,3 +261,4 @@
- */
- set_normalized_timespec(&wall_to_monotonic, -xtime.tv_sec,
-xtime.tv_nsec);
- }
-+#endif
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.11/tlb.c
--- a/xen/arch/ia64/patch/linux-2.6.11/tlb.c Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,38 +0,0 @@
---- ../../linux-2.6.11/arch/ia64/mm/tlb.c 2005-03-02 00:38:38.000000000
-0700
-+++ arch/ia64/tlb.c 2005-05-02 10:23:09.000000000 -0600
-@@ -43,6 +43,9 @@
- void
- wrap_mmu_context (struct mm_struct *mm)
- {
-+#ifdef XEN
-+printf("wrap_mmu_context: called, not implemented\n");
-+#else
- unsigned long tsk_context, max_ctx = ia64_ctx.max_ctx;
- struct task_struct *tsk;
- int i;
-@@ -83,6 +86,7 @@
- put_cpu();
- }
- local_flush_tlb_all();
-+#endif
- }
-
- void
-@@ -132,6 +136,9 @@
- void
- flush_tlb_range (struct vm_area_struct *vma, unsigned long start, unsigned
long end)
- {
-+#ifdef XEN
-+printf("flush_tlb_range: called, not implemented\n");
-+#else
- struct mm_struct *mm = vma->vm_mm;
- unsigned long size = end - start;
- unsigned long nbits;
-@@ -163,6 +170,7 @@
- # endif
-
- ia64_srlz_i(); /* srlz.i implies srlz.d */
-+#endif
- }
- EXPORT_SYMBOL(flush_tlb_range);
-
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.11/types.h
--- a/xen/arch/ia64/patch/linux-2.6.11/types.h Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,44 +0,0 @@
---- ../../linux-2.6.11/include/asm-ia64/types.h 2005-03-04
10:26:30.000000000 -0700
-+++ include/asm-ia64/types.h 2005-04-11 15:23:49.000000000 -0600
-@@ -1,5 +1,12 @@
- #ifndef _ASM_IA64_TYPES_H
- #define _ASM_IA64_TYPES_H
-+#ifdef XEN
-+#ifndef __ASSEMBLY__
-+typedef unsigned long ssize_t;
-+typedef unsigned long size_t;
-+typedef long long loff_t;
-+#endif
-+#endif
-
- /*
- * This file is never included by application software unless explicitly
requested (e.g.,
-@@ -61,6 +68,28 @@
- typedef __s64 s64;
- typedef __u64 u64;
-
-+#ifdef XEN
-+/*
-+ * Below are truly Linux-specific types that should never collide with
-+ * any application/library that wants linux/types.h.
-+ */
-+
-+#ifdef __CHECKER__
-+#define __bitwise __attribute__((bitwise))
-+#else
-+#define __bitwise
-+#endif
-+
-+typedef __u16 __bitwise __le16;
-+typedef __u16 __bitwise __be16;
-+typedef __u32 __bitwise __le32;
-+typedef __u32 __bitwise __be32;
-+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
-+typedef __u64 __bitwise __le64;
-+typedef __u64 __bitwise __be64;
-+#endif
-+#endif
-+
- #define BITS_PER_LONG 64
-
- /* DMA addresses are 64-bits wide, in general. */
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.11/uaccess.h
--- a/xen/arch/ia64/patch/linux-2.6.11/uaccess.h Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,41 +0,0 @@
---- ../../linux-2.6.11/include/asm-ia64/uaccess.h 2005-03-02
00:37:53.000000000 -0700
-+++ include/asm-ia64/uaccess.h 2005-06-21 21:53:20.000000000 -0600
-@@ -32,6 +32,10 @@
- * David Mosberger-Tang <davidm@xxxxxxxxxx>
- */
-
-+#ifdef CONFIG_VTI
-+#include <asm/vmx_uaccess.h>
-+#else // CONFIG_VTI
-+
- #include <linux/compiler.h>
- #include <linux/errno.h>
- #include <linux/sched.h>
-@@ -60,6 +64,11 @@
- * address TASK_SIZE is never valid. We also need to make sure that the
address doesn't
- * point inside the virtually mapped linear page table.
- */
-+#ifdef XEN
-+/* VT-i reserves bit 60 for the VMM; guest addresses have bit 60 = bit 59 */
-+#define IS_VMM_ADDRESS(addr) ((((addr) >> 60) ^ ((addr) >> 59)) & 1)
-+#define __access_ok(addr, size, segment) (!IS_VMM_ADDRESS((unsigned
long)(addr)))
-+#else
- #define __access_ok(addr, size, segment)
\
- ({
\
- __chk_user_ptr(addr);
\
-@@ -67,6 +76,7 @@
- && ((segment).seg == KERNEL_DS.seg
\
- || likely(REGION_OFFSET((unsigned long) (addr)) <
RGN_MAP_LIMIT))); \
- })
-+#endif
- #define access_ok(type, addr, size) __access_ok((addr), (size), get_fs())
-
- static inline int
-@@ -343,6 +353,7 @@
- __su_ret; \
- })
-
-+#endif // CONFIG_VTI
- /* Generic code can't deal with the location-relative format that we use for
compactness. */
- #define ARCH_HAS_SORT_EXTABLE
- #define ARCH_HAS_SEARCH_EXTABLE
diff -r 5978be010bec -r 2b95125015a5
xen/arch/ia64/patch/linux-2.6.11/unaligned.c
--- a/xen/arch/ia64/patch/linux-2.6.11/unaligned.c Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,227 +0,0 @@
----
/home/adsharma/disk2/xen-ia64/xeno-unstable-rebase.bk/xen/../../linux-2.6.11/arch/ia64/kernel/unaligned.c
2005-03-01 23:38:25.000000000 -0800
-+++
/home/adsharma/disk2/xen-ia64/xeno-unstable-rebase.bk/xen/arch/ia64/unaligned.c
2005-05-18 12:40:50.000000000 -0700
-@@ -201,7 +201,11 @@
-
- RPT(r1), RPT(r2), RPT(r3),
-
-+#ifdef CONFIG_VTI
-+ RPT(r4), RPT(r5), RPT(r6), RPT(r7),
-+#else //CONFIG_VTI
- RSW(r4), RSW(r5), RSW(r6), RSW(r7),
-+#endif //CONFIG_VTI
-
- RPT(r8), RPT(r9), RPT(r10), RPT(r11),
- RPT(r12), RPT(r13), RPT(r14), RPT(r15),
-@@ -291,6 +295,121 @@
- return reg;
- }
-
-+#ifdef CONFIG_VTI
-+static void
-+set_rse_reg (struct pt_regs *regs, unsigned long r1, unsigned long val,
unsigned long nat)
-+{
-+ struct switch_stack *sw = (struct switch_stack *) regs - 1;
-+ unsigned long *bsp, *bspstore, *addr, *rnat_addr, *ubs_end;
-+ unsigned long *kbs = (void *) current + IA64_RBS_OFFSET;
-+ unsigned long rnats, nat_mask;
-+ unsigned long old_rsc,new_rsc;
-+ unsigned long on_kbs,rnat;
-+ long sof = (regs->cr_ifs) & 0x7f;
-+ long sor = 8 * ((regs->cr_ifs >> 14) & 0xf);
-+ long rrb_gr = (regs->cr_ifs >> 18) & 0x7f;
-+ long ridx = r1 - 32;
-+
-+ if (ridx >= sof) {
-+ /* this should never happen, as the "rsvd register fault" has
higher priority */
-+ DPRINT("ignoring write to r%lu; only %lu registers are
allocated!\n", r1, sof);
-+ return;
-+ }
-+
-+ if (ridx < sor)
-+ ridx = rotate_reg(sor, rrb_gr, ridx);
-+
-+ old_rsc=ia64_get_rsc();
-+ new_rsc=old_rsc&(~0x3);
-+ ia64_set_rsc(new_rsc);
-+
-+ bspstore = ia64_get_bspstore();
-+ bsp =kbs + (regs->loadrs >> 19);//16+3
-+
-+ addr = ia64_rse_skip_regs(bsp, -sof + ridx);
-+ nat_mask = 1UL << ia64_rse_slot_num(addr);
-+ rnat_addr = ia64_rse_rnat_addr(addr);
-+
-+ if(addr >= bspstore){
-+
-+ ia64_flushrs ();
-+ ia64_mf ();
-+ *addr = val;
-+ bspstore = ia64_get_bspstore();
-+ rnat = ia64_get_rnat ();
-+ if(bspstore < rnat_addr){
-+ rnat=rnat&(~nat_mask);
-+ }else{
-+ *rnat_addr = (*rnat_addr)&(~nat_mask);
-+ }
-+ ia64_mf();
-+ ia64_loadrs();
-+ ia64_set_rnat(rnat);
-+ }else{
-+
-+ rnat = ia64_get_rnat ();
-+ *addr = val;
-+ if(bspstore < rnat_addr){
-+ rnat=rnat&(~nat_mask);
-+ }else{
-+ *rnat_addr = (*rnat_addr)&(~nat_mask);
-+ }
-+ ia64_set_bspstore (bspstore);
-+ ia64_set_rnat(rnat);
-+ }
-+ ia64_set_rsc(old_rsc);
-+}
-+
-+
-+static void
-+get_rse_reg (struct pt_regs *regs, unsigned long r1, unsigned long *val,
unsigned long *nat)
-+{
-+ struct switch_stack *sw = (struct switch_stack *) regs - 1;
-+ unsigned long *bsp, *addr, *rnat_addr, *ubs_end, *bspstore;
-+ unsigned long *kbs = (void *) current + IA64_RBS_OFFSET;
-+ unsigned long rnats, nat_mask;
-+ unsigned long on_kbs;
-+ unsigned long old_rsc, new_rsc;
-+ long sof = (regs->cr_ifs) & 0x7f;
-+ long sor = 8 * ((regs->cr_ifs >> 14) & 0xf);
-+ long rrb_gr = (regs->cr_ifs >> 18) & 0x7f;
-+ long ridx = r1 - 32;
-+
-+ if (ridx >= sof) {
-+ /* read of out-of-frame register returns an undefined value; 0
in our case. */
-+ DPRINT("ignoring read from r%lu; only %lu registers are
allocated!\n", r1, sof);
-+ panic("wrong stack register number");
-+ }
-+
-+ if (ridx < sor)
-+ ridx = rotate_reg(sor, rrb_gr, ridx);
-+
-+ old_rsc=ia64_get_rsc();
-+ new_rsc=old_rsc&(~(0x3));
-+ ia64_set_rsc(new_rsc);
-+
-+ bspstore = ia64_get_bspstore();
-+ bsp =kbs + (regs->loadrs >> 19); //16+3;
-+
-+ addr = ia64_rse_skip_regs(bsp, -sof + ridx);
-+ nat_mask = 1UL << ia64_rse_slot_num(addr);
-+ rnat_addr = ia64_rse_rnat_addr(addr);
-+
-+ if(addr >= bspstore){
-+
-+ ia64_flushrs ();
-+ ia64_mf ();
-+ bspstore = ia64_get_bspstore();
-+ }
-+ *val=*addr;
-+ if(bspstore < rnat_addr){
-+ *nat=!!(ia64_get_rnat()&nat_mask);
-+ }else{
-+ *nat = !!((*rnat_addr)&nat_mask);
-+ }
-+ ia64_set_rsc(old_rsc);
-+}
-+#else // CONFIG_VTI
- static void
- set_rse_reg (struct pt_regs *regs, unsigned long r1, unsigned long val, int
nat)
- {
-@@ -435,9 +554,14 @@
- *nat = 0;
- return;
- }
-+#endif // CONFIG_VTI
-
-
-+#ifdef XEN
-+void
-+#else
- static void
-+#endif
- setreg (unsigned long regnum, unsigned long val, int nat, struct pt_regs
*regs)
- {
- struct switch_stack *sw = (struct switch_stack *) regs - 1;
-@@ -466,7 +590,11 @@
- unat = &sw->ar_unat;
- } else {
- addr = (unsigned long)regs;
-+#ifdef CONFIG_VTI
-+ unat = ®s->eml_unat;
-+#else //CONFIG_VTI
- unat = &sw->caller_unat;
-+#endif //CONFIG_VTI
- }
- DPRINT("tmp_base=%lx switch_stack=%s offset=%d\n",
- addr, unat==&sw->ar_unat ? "yes":"no", GR_OFFS(regnum));
-@@ -522,7 +650,11 @@
- */
- if (regnum >= IA64_FIRST_ROTATING_FR) {
- ia64_sync_fph(current);
-+#ifdef XEN
-+ current->arch._thread.fph[fph_index(regs, regnum)] = *fpval;
-+#else
- current->thread.fph[fph_index(regs, regnum)] = *fpval;
-+#endif
- } else {
- /*
- * pt_regs or switch_stack ?
-@@ -581,7 +713,11 @@
- */
- if (regnum >= IA64_FIRST_ROTATING_FR) {
- ia64_flush_fph(current);
-+#ifdef XEN
-+ *fpval = current->arch._thread.fph[fph_index(regs, regnum)];
-+#else
- *fpval = current->thread.fph[fph_index(regs, regnum)];
-+#endif
- } else {
- /*
- * f0 = 0.0, f1= 1.0. Those registers are constant and are thus
-@@ -611,7 +747,11 @@
- }
-
-
-+#ifdef XEN
-+void
-+#else
- static void
-+#endif
- getreg (unsigned long regnum, unsigned long *val, int *nat, struct pt_regs
*regs)
- {
- struct switch_stack *sw = (struct switch_stack *) regs - 1;
-@@ -640,7 +780,11 @@
- unat = &sw->ar_unat;
- } else {
- addr = (unsigned long)regs;
-+#ifdef CONFIG_VTI
-+ unat = ®s->eml_unat;;
-+#else //CONFIG_VTI
- unat = &sw->caller_unat;
-+#endif //CONFIG_VTI
- }
-
- DPRINT("addr_base=%lx offset=0x%x\n", addr, GR_OFFS(regnum));
-@@ -1294,6 +1438,9 @@
- void
- ia64_handle_unaligned (unsigned long ifa, struct pt_regs *regs)
- {
-+#ifdef XEN
-+printk("ia64_handle_unaligned: called, not working yet\n");
-+#else
- struct ia64_psr *ipsr = ia64_psr(regs);
- mm_segment_t old_fs = get_fs();
- unsigned long bundle[2];
-@@ -1502,4 +1649,5 @@
- si.si_imm = 0;
- force_sig_info(SIGBUS, &si, current);
- goto done;
-+#endif
- }
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.7/bootmem.h
--- a/xen/arch/ia64/patch/linux-2.6.7/bootmem.h Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,12 +0,0 @@
---- /home/djm/src/xen/xeno-ia64.bk/xen/linux-2.6.7/include/linux/bootmem.h
2004-06-15 23:19:52.000000000 -0600
-+++ /home/djm/src/xen/xeno-ia64.bk/xen/include/asm-ia64/linux/bootmem.h
2004-08-25 19:28:13.000000000 -0600
-@@ -41,7 +41,9 @@
- extern void __init free_bootmem (unsigned long addr, unsigned long size);
- extern void * __init __alloc_bootmem (unsigned long size, unsigned long
align, unsigned long goal);
- #ifndef CONFIG_HAVE_ARCH_BOOTMEM_NODE
-+#ifndef XEN
- extern void __init reserve_bootmem (unsigned long addr, unsigned long size);
-+#endif
- #define alloc_bootmem(x) \
- __alloc_bootmem((x), SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS))
- #define alloc_bootmem_low(x) \
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.7/current.h
--- a/xen/arch/ia64/patch/linux-2.6.7/current.h Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,17 +0,0 @@
---- /home/djm/src/xen/xeno-ia64.bk/xen/linux-2.6.7/include/asm-ia64/current.h
2004-06-15 23:19:52.000000000 -0600
-+++ /home/djm/src/xen/xeno-ia64.bk/xen/include/asm-ia64/current.h
2004-08-25 19:28:12.000000000 -0600
-@@ -12,6 +12,14 @@
- * In kernel mode, thread pointer (r13) is used to point to the current task
- * structure.
- */
-+#ifdef XEN
-+struct domain;
-+#define get_current() ((struct vcpu *) ia64_getreg(_IA64_REG_TP))
-+#define current get_current()
-+//#define set_current(d) ia64_setreg(_IA64_REG_TP,(void *)d);
-+#define set_current(d) (ia64_r13 = (void *)d)
-+#else
- #define current ((struct task_struct *) ia64_getreg(_IA64_REG_TP))
-+#endif
-
- #endif /* _ASM_IA64_CURRENT_H */
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.7/efi.c
--- a/xen/arch/ia64/patch/linux-2.6.7/efi.c Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,85 +0,0 @@
---- /home/djm/src/xen/xeno-ia64.bk/xen/linux-2.6.7/arch/ia64/kernel/efi.c
2004-06-15 23:18:55.000000000 -0600
-+++ /home/djm/src/xen/xeno-ia64.bk/xen/arch/ia64/efi.c 2004-12-17
13:47:03.000000000 -0700
-@@ -25,6 +25,9 @@
- #include <linux/types.h>
- #include <linux/time.h>
- #include <linux/efi.h>
-+#ifdef XEN
-+#include <xen/sched.h>
-+#endif
-
- #include <asm/io.h>
- #include <asm/kregs.h>
-@@ -49,7 +52,10 @@
- {
\
- struct ia64_fpreg fr[6];
\
- efi_status_t ret;
\
-+ efi_time_cap_t *atc = NULL;
\
-
\
-+ if (tc)
\
-+ atc = adjust_arg(tc);
\
- ia64_save_scratch_fpregs(fr);
\
- ret = efi_call_##prefix((efi_get_time_t *) __va(runtime->get_time),
adjust_arg(tm), \
- adjust_arg(tc));
\
-@@ -201,6 +207,7 @@
- if ((*efi.get_time)(&tm, 0) != EFI_SUCCESS)
- return;
-
-+ dummy();
- ts->tv_sec = mktime(tm.year, tm.month, tm.day, tm.hour, tm.minute,
tm.second);
- ts->tv_nsec = tm.nanosecond;
- }
-@@ -303,6 +310,10 @@
- if (!(md->attribute & EFI_MEMORY_WB))
- continue;
-
-+#ifdef XEN
-+// this is a temporary hack to avoid CONFIG_VIRTUAL_MEM_MAP
-+ if (md->phys_addr >= 0x100000000) continue;
-+#endif
- /*
- * granule_addr is the base of md's first granule.
- * [granule_addr - first_non_wb_addr) is guaranteed to
-@@ -456,9 +467,11 @@
-
- cpu = smp_processor_id();
-
-+#ifndef XEN
- /* insert this TR into our list for MCA recovery purposes */
- ia64_mca_tlb_list[cpu].pal_base = vaddr & mask;
- ia64_mca_tlb_list[cpu].pal_paddr =
pte_val(mk_pte_phys(md->phys_addr, PAGE_KERNEL));
-+#endif
- }
- }
-
-@@ -680,6 +693,30 @@
- return 0;
- }
-
-+#ifdef XEN
-+// variation of efi_get_iobase which returns entire memory descriptor
-+efi_memory_desc_t *
-+efi_get_io_md (void)
-+{
-+ void *efi_map_start, *efi_map_end, *p;
-+ efi_memory_desc_t *md;
-+ u64 efi_desc_size;
-+
-+ efi_map_start = __va(ia64_boot_param->efi_memmap);
-+ efi_map_end = efi_map_start + ia64_boot_param->efi_memmap_size;
-+ efi_desc_size = ia64_boot_param->efi_memdesc_size;
-+
-+ for (p = efi_map_start; p < efi_map_end; p += efi_desc_size) {
-+ md = p;
-+ if (md->type == EFI_MEMORY_MAPPED_IO_PORT_SPACE) {
-+ if (md->attribute & EFI_MEMORY_UC)
-+ return md;
-+ }
-+ }
-+ return 0;
-+}
-+#endif
-+
- u32
- efi_mem_type (unsigned long phys_addr)
- {
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.7/efi.h
--- a/xen/arch/ia64/patch/linux-2.6.7/efi.h Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,13 +0,0 @@
---- /home/djm/src/xen/xeno-ia64.bk/xen/linux-2.6.7/include/linux/efi.h
2004-06-15 23:20:03.000000000 -0600
-+++ /home/djm/src/xen/xeno-ia64.bk/xen/include/asm-ia64/linux/efi.h
2004-08-25 19:28:13.000000000 -0600
-@@ -15,8 +15,10 @@
- #include <linux/string.h>
- #include <linux/time.h>
- #include <linux/types.h>
-+#ifndef XEN
- #include <linux/proc_fs.h>
- #include <linux/rtc.h>
-+#endif
- #include <linux/ioport.h>
-
- #include <asm/page.h>
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.7/entry.S
--- a/xen/arch/ia64/patch/linux-2.6.7/entry.S Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,195 +0,0 @@
---- ../../linux-2.6.7/arch/ia64/kernel/entry.S 2005-03-24 19:39:56.000000000
-0700
-+++ arch/ia64/entry.S 2005-04-01 12:56:01.000000000 -0700
-@@ -35,7 +35,9 @@
-
- #include <asm/asmmacro.h>
- #include <asm/cache.h>
-+#ifndef XEN
- #include <asm/errno.h>
-+#endif
- #include <asm/kregs.h>
- #include <asm/offsets.h>
- #include <asm/pgtable.h>
-@@ -46,6 +48,23 @@
-
- #include "minstate.h"
-
-+#ifdef XEN
-+#define sys_execve 0
-+#define do_fork 0
-+#define syscall_trace 0
-+#define schedule 0
-+#define do_notify_resume_user 0
-+#define ia64_rt_sigsuspend 0
-+#define ia64_rt_sigreturn 0
-+#define ia64_handle_unaligned 0
-+#define errno 0
-+#define sys_ni_syscall 0
-+#define unw_init_frame_info 0
-+#define sys_call_table 0
-+#endif
-+
-+ /*
-+
- /*
- * execve() is special because in case of success, we need to
- * setup a null register window frame.
-@@ -178,11 +197,14 @@
- DO_SAVE_SWITCH_STACK
- .body
-
-+#ifdef XEN
-+//#undef IA64_TASK_THREAD_KSP_OFFSET
-+//#define IA64_TASK_THREAD_KSP_OFFSET 0x38
- adds r22=IA64_TASK_THREAD_KSP_OFFSET,r13
- movl r25=init_task
- mov r27=IA64_KR(CURRENT_STACK)
- adds r21=IA64_TASK_THREAD_KSP_OFFSET,in0
-- dep r20=0,in0,61,3 // physical address of "current"
-+ dep r20=0,in0,60,4 // physical address of "current"
- ;;
- st8 [r22]=sp // save kernel stack pointer of old task
- shr.u r26=r20,IA64_GRANULE_SHIFT
-@@ -194,6 +216,22 @@
- (p6) cmp.eq p7,p6=r26,r27
- (p6) br.cond.dpnt .map
- ;;
-+#else
-+ adds r22=IA64_TASK_THREAD_KSP_OFFSET,r13
-+ mov r27=IA64_KR(CURRENT_STACK)
-+ dep r20=0,in0,61,3 // physical address of "current"
-+ ;;
-+ st8 [r22]=sp // save kernel stack pointer of old task
-+ shr.u r26=r20,IA64_GRANULE_SHIFT
-+ adds r21=IA64_TASK_THREAD_KSP_OFFSET,in0
-+ ;;
-+ /*
-+ * If we've already mapped this task's page, we can skip doing it again.
-+ */
-+ cmp.eq p7,p6=r26,r27
-+(p6) br.cond.dpnt .map
-+ ;;
-+#endif
- .done:
- (p6) ssm psr.ic // if we we had to map, renable the
psr.ic bit FIRST!!!
- ;;
-@@ -211,6 +249,16 @@
- br.ret.sptk.many rp // boogie on out in new context
-
- .map:
-+#ifdef XEN
-+ // avoid overlapping with kernel TR
-+ movl r25=KERNEL_START
-+ dep r23=0,in0,0,KERNEL_TR_PAGE_SHIFT
-+ ;;
-+ cmp.eq p7,p0=r25,r23
-+ ;;
-+(p7) mov IA64_KR(CURRENT_STACK)=r26 // remember last page we mapped...
-+(p7) br.cond.sptk .done
-+#endif
- rsm psr.ic // interrupts (psr.i) are already
disabled here
- movl r25=PAGE_KERNEL
- ;;
-@@ -367,7 +415,11 @@
- * - b7 holds address to return to
- * - must not touch r8-r11
- */
-+#ifdef XEN
-+GLOBAL_ENTRY(load_switch_stack)
-+#else
- ENTRY(load_switch_stack)
-+#endif
- .prologue
- .altrp b7
-
-@@ -595,6 +647,11 @@
- */
- br.call.sptk.many rp=ia64_invoke_schedule_tail
- }
-+#ifdef XEN
-+ // new domains are cloned but not exec'ed so switch to user mode here
-+ cmp.ne pKStk,pUStk=r0,r0
-+ br.cond.spnt ia64_leave_kernel
-+#else
- .ret8:
- adds r2=TI_FLAGS+IA64_TASK_SIZE,r13
- ;;
-@@ -603,6 +660,7 @@
- mov r8=0
- tbit.nz p6,p0=r2,TIF_SYSCALL_TRACE
- (p6) br.cond.spnt .strace_check_retval
-+#endif
- ;; // added stop bits to prevent
r8 dependency
- END(ia64_ret_from_clone)
- // fall through
-@@ -684,9 +742,14 @@
- #endif /* CONFIG_PREEMPT */
- adds r16=PT(LOADRS)+16,r12
- adds r17=PT(AR_BSPSTORE)+16,r12
-+#ifdef XEN
-+ mov r31=r0
-+ ;;
-+#else
- adds r18=TI_FLAGS+IA64_TASK_SIZE,r13
- ;;
- (p6) ld4 r31=[r18] // load
current_thread_info()->flags
-+#endif
- ld8 r19=[r16],PT(B6)-PT(LOADRS) // load ar.rsc value for
"loadrs"
- nop.i 0
- ;;
-@@ -745,7 +808,11 @@
- mov b7=r0 // clear b7
- ;;
- (pUStk) st1 [r14]=r3
-+#ifdef XEN
-+ movl r17=THIS_CPU(ia64_phys_stacked_size_p8)
-+#else
- addl r17=THIS_CPU(ia64_phys_stacked_size_p8),r0
-+#endif
- ;;
- mov r16=ar.bsp // get existing backing store pointer
- srlz.i // ensure interruption collection is off
-@@ -796,9 +863,18 @@
- ;;
- (p6) cmp.eq.unc p6,p0=r21,r0 // p6 <- p6 && (r21 == 0)
- #endif /* CONFIG_PREEMPT */
-+#ifdef XEN
-+ alloc loc0=ar.pfs,0,1,1,0
-+ adds out0=16,r12
-+ ;;
-+(p6) br.call.sptk.many b0=deliver_pending_interrupt
-+ mov ar.pfs=loc0
-+ mov r31=r0
-+#else
- adds r17=TI_FLAGS+IA64_TASK_SIZE,r13
- ;;
- (p6) ld4 r31=[r17] // load
current_thread_info()->flags
-+#endif
- adds r21=PT(PR)+16,r12
- ;;
-
-@@ -912,7 +988,11 @@
- shr.u r18=r19,16 // get byte size of existing "dirty" partition
- ;;
- mov r16=ar.bsp // get existing backing store pointer
-+#ifdef XEN
-+ movl r17=THIS_CPU(ia64_phys_stacked_size_p8)
-+#else
- addl r17=THIS_CPU(ia64_phys_stacked_size_p8),r0
-+#endif
- ;;
- ld4 r17=[r17] // r17 = cpu_data->phys_stacked_size_p8
- (pKStk) br.cond.dpnt skip_rbs_switch
-@@ -1264,6 +1344,7 @@
- br.ret.sptk.many rp
- END(unw_init_running)
-
-+#ifndef XEN
- .rodata
- .align 8
- .globl sys_call_table
-@@ -1526,3 +1607,4 @@
- data8 sys_ni_syscall
-
- .org sys_call_table + 8*NR_syscalls // guard against failures to
increase NR_syscalls
-+#endif
diff -r 5978be010bec -r 2b95125015a5
xen/arch/ia64/patch/linux-2.6.7/gcc_intrin.h
--- a/xen/arch/ia64/patch/linux-2.6.7/gcc_intrin.h Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,20 +0,0 @@
----
/home/djm/src/xen/xeno-ia64.bk/xen/linux-2.6.7/include/asm-ia64/gcc_intrin.h
2005-01-23 13:23:36.000000000 -0700
-+++ /home/djm/src/xen/xeno-ia64.bk/xen/include/asm-ia64/gcc_intrin.h
2004-08-25 19:28:13.000000000 -0600
-@@ -92,6 +92,9 @@
-
- #define ia64_hint_pause 0
-
-+#ifdef XEN
-+#define ia64_hint(mode) 0
-+#else
- #define ia64_hint(mode) \
- ({ \
- switch (mode) { \
-@@ -100,6 +103,7 @@
- break; \
- } \
- })
-+#endif
-
-
- /* Integer values for mux1 instruction */
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.7/hardirq.h
--- a/xen/arch/ia64/patch/linux-2.6.7/hardirq.h Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,22 +0,0 @@
---- /home/djm/src/xen/xeno-ia64.bk/xen/linux-2.6.7/include/asm-ia64/hardirq.h
2004-06-15 23:19:02.000000000 -0600
-+++ /home/djm/src/xen/xeno-ia64.bk/xen/include/asm-ia64/hardirq.h
2004-12-17 13:47:03.000000000 -0700
-@@ -81,10 +81,19 @@
- */
- #define in_irq() (hardirq_count())
- #define in_softirq() (softirq_count())
-+#ifdef XEN
- #define in_interrupt() (irq_count())
-+#else
-+#define in_interrupt() 0 // FIXME LATER
-+#endif
-
-+#ifdef XEN
-+#define hardirq_trylock(cpu) (!in_interrupt())
-+#define hardirq_endlock(cpu) do { } while (0)
-+#else
- #define hardirq_trylock() (!in_interrupt())
- #define hardirq_endlock() do { } while (0)
-+#endif
-
- #ifdef CONFIG_PREEMPT
- # include <linux/smp_lock.h>
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.7/head.S
--- a/xen/arch/ia64/patch/linux-2.6.7/head.S Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,93 +0,0 @@
---- ../../linux-2.6.7/arch/ia64/kernel/head.S 2005-03-24 19:39:56.000000000
-0700
-+++ arch/ia64/head.S 2005-04-01 12:56:01.000000000 -0700
-@@ -1,3 +1,8 @@
-+#ifdef XEN
-+#define console_print printf
-+#define kernel_thread_helper 0
-+#define sys_exit 0
-+#endif
- /*
- * Here is where the ball gets rolling as far as the kernel is concerned.
- * When control is transferred to _start, the bootload has already
-@@ -166,7 +171,11 @@
- dep r18=0,r3,0,12
- ;;
- or r18=r17,r18
-+#ifdef XEN
-+ dep r2=-1,r3,60,4 // IMVA of task
-+#else
- dep r2=-1,r3,61,3 // IMVA of task
-+#endif
- ;;
- mov r17=rr[r2]
- ;;
-@@ -205,7 +214,11 @@
- ;;
- mov ar.rsc=0x3 // place RSE in eager mode
-
-+#ifdef XEN
-+(isBP) dep r28=-1,r28,60,4 // make address virtual
-+#else
- (isBP) dep r28=-1,r28,61,3 // make address virtual
-+#endif
- (isBP) movl r2=ia64_boot_param
- ;;
- (isBP) st8 [r2]=r28 // save the address of the boot param
area passed by the bootloader
-@@ -238,14 +251,30 @@
- br.call.sptk.many rp=sys_fw_init
- .ret1:
- #endif
-+#ifdef XEN
-+ alloc r2=ar.pfs,8,0,2,0
-+ ;;
-+#define fake_mbi_magic 0
-+#define MULTIBOOT_INFO_SIZE 1024
-+ .rodata
-+fake_mbi:
-+ .skip MULTIBOOT_INFO_SIZE
-+ .previous
-+ movl out0=fake_mbi
-+ ;;
-+ br.call.sptk.many rp=cmain
-+#else
- br.call.sptk.many rp=start_kernel
-+#endif
- .ret2: addl r3=@ltoff(halt_msg),gp
- ;;
- alloc r2=ar.pfs,8,0,2,0
- ;;
- ld8 out0=[r3]
- br.call.sptk.many b0=console_print
-+ ;;
- self: br.sptk.many self // endless loop
-+ ;;
- END(_start)
-
- GLOBAL_ENTRY(ia64_save_debug_regs)
-@@ -781,8 +810,13 @@
- movl r18=KERNEL_START
- dep r3=0,r3,KERNEL_TR_PAGE_SHIFT,64-KERNEL_TR_PAGE_SHIFT
- dep r14=0,r14,KERNEL_TR_PAGE_SHIFT,64-KERNEL_TR_PAGE_SHIFT
-+#ifdef XEN
-+ dep r17=-1,r17,60,4
-+ dep sp=-1,sp,60,4
-+#else
- dep r17=-1,r17,61,3
- dep sp=-1,sp,61,3
-+#endif
- ;;
- or r3=r3,r18
- or r14=r14,r18
-@@ -838,7 +872,12 @@
- * intermediate precision so that we can produce a full 64-bit result.
- */
- GLOBAL_ENTRY(sched_clock)
-+#ifdef XEN
-+ break 0;; // FIX IA64_CPUINFO_NSEC_PER_CYC_OFFSET
-+ //movl r8=THIS_CPU(cpu_info) + IA64_CPUINFO_NSEC_PER_CYC_OFFSET
-+#else
- addl r8=THIS_CPU(cpu_info) + IA64_CPUINFO_NSEC_PER_CYC_OFFSET,r0
-+#endif
- mov.m r9=ar.itc // fetch cycle-counter
(35 cyc)
- ;;
- ldf8 f8=[r8]
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.7/hpsim_irq.c
--- a/xen/arch/ia64/patch/linux-2.6.7/hpsim_irq.c Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,36 +0,0 @@
----
/home/djm/src/xen/xeno-ia64.bk/xen/linux-2.6.7/arch/ia64/hp/sim/hpsim_irq.c
2004-06-15 23:20:26.000000000 -0600
-+++ /home/djm/src/xen/xeno-ia64.bk/xen/arch/ia64/hpsim_irq.c 2004-11-01
17:54:15.000000000 -0700
-@@ -9,7 +9,17 @@
- #include <linux/kernel.h>
- #include <linux/sched.h>
- #include <linux/irq.h>
-+#ifdef XEN
-+#include <asm/hw_irq.h>
-+#endif
-
-+#if 1
-+void __init
-+hpsim_irq_init (void)
-+{
-+ printf("*** hpsim_irq_init called: NOT NEEDED?!?!?\n");
-+}
-+#else
- static unsigned int
- hpsim_irq_startup (unsigned int irq)
- {
-@@ -19,6 +29,10 @@
- static void
- hpsim_irq_noop (unsigned int irq)
- {
-+#if 1
-+printf("hpsim_irq_noop: irq=%d\n",irq);
-+while(irq);
-+#endif
- }
-
- static struct hw_interrupt_type irq_type_hp_sim = {
-@@ -44,3 +58,4 @@
- idesc->handler = &irq_type_hp_sim;
- }
- }
-+#endif
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.7/hpsim_ssc.h
--- a/xen/arch/ia64/patch/linux-2.6.7/hpsim_ssc.h Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,26 +0,0 @@
----
/home/djm/src/xen/xeno-ia64.bk/xen/linux-2.6.7/arch/ia64/hp/sim/hpsim_ssc.h
2004-06-15 23:19:43.000000000 -0600
-+++ /home/djm/src/xen/xeno-ia64.bk/xen/include/asm-ia64/hpsim_ssc.h
2004-08-29 01:04:23.000000000 -0600
-@@ -33,4 +33,23 @@
- */
- extern long ia64_ssc (long arg0, long arg1, long arg2, long arg3, int nr);
-
-+#ifdef XEN
-+/* Note: These are declared in linux/arch/ia64/hp/sim/simscsi.c but belong
-+ * in linux/include/asm-ia64/hpsim_ssc.h, hence their addition here */
-+#define SSC_OPEN 50
-+#define SSC_CLOSE 51
-+#define SSC_READ 52
-+#define SSC_WRITE 53
-+#define SSC_GET_COMPLETION 54
-+#define SSC_WAIT_COMPLETION 55
-+
-+#define SSC_WRITE_ACCESS 2
-+#define SSC_READ_ACCESS 1
-+
-+struct ssc_disk_req {
-+ unsigned long addr;
-+ unsigned long len;
-+};
-+#endif
-+
- #endif /* _IA64_PLATFORM_HPSIM_SSC_H */
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.7/hw_irq.h
--- a/xen/arch/ia64/patch/linux-2.6.7/hw_irq.h Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,24 +0,0 @@
---- /home/djm/src/xen/xeno-ia64.bk/xen/linux-2.6.7/include/asm-ia64/hw_irq.h
2004-06-15 23:19:22.000000000 -0600
-+++ /home/djm/src/xen/xeno-ia64.bk/xen/include/asm-ia64/hw_irq.h
2004-08-27 09:07:38.000000000 -0600
-@@ -9,7 +9,9 @@
- #include <linux/interrupt.h>
- #include <linux/sched.h>
- #include <linux/types.h>
-+#ifndef XEN
- #include <linux/profile.h>
-+#endif
-
- #include <asm/machvec.h>
- #include <asm/ptrace.h>
-@@ -96,7 +98,11 @@
- * Default implementations for the irq-descriptor API:
- */
-
-+#ifdef XEN
-+#define _irq_desc irq_desc
-+#else
- extern irq_desc_t _irq_desc[NR_IRQS];
-+#endif
-
- #ifndef CONFIG_IA64_GENERIC
- static inline irq_desc_t *
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.7/ide.h
--- a/xen/arch/ia64/patch/linux-2.6.7/ide.h Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,35 +0,0 @@
---- /home/djm/src/xen/xeno-ia64.bk/xen/linux-2.6.7/include/asm-ia64/ide.h
2004-06-15 23:19:36.000000000 -0600
-+++ /home/djm/src/xen/xeno-ia64.bk/xen/include/asm-ia64/ide.h 2004-08-25
19:28:13.000000000 -0600
-@@ -64,6 +64,32 @@
- #define ide_init_default_irq(base) ide_default_irq(base)
- #endif
-
-+#ifdef XEN
-+// this is moved to linux/ide.h in newer versions of linux
-+typedef union {
-+ unsigned all : 8; /* all of the bits together */
-+ struct {
-+ unsigned head : 4; /* always zeros here */
-+ unsigned unit : 1; /* drive select number, 0 or 1
*/
-+ unsigned bit5 : 1; /* always 1 */
-+ unsigned lba : 1; /* using LBA instead of CHS */
-+ unsigned bit7 : 1; /* always 1 */
-+ } b;
-+} select_t;
-+
-+typedef union {
-+ unsigned all : 8; /* all of the bits together */
-+ struct {
-+ unsigned bit0 : 1;
-+ unsigned nIEN : 1; /* device INTRQ to host */
-+ unsigned SRST : 1; /* host soft reset bit */
-+ unsigned bit3 : 1; /* ATA-2 thingy */
-+ unsigned reserved456 : 3;
-+ unsigned HOB : 1; /* 48-bit address ordering */
-+ } b;
-+} control_t;
-+#endif
-+
- #include <asm-generic/ide_iops.h>
-
- #endif /* __KERNEL__ */
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.7/init_task.c
--- a/xen/arch/ia64/patch/linux-2.6.7/init_task.c Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,35 +0,0 @@
----
/home/djm/src/xen/xeno-ia64.bk/xen/linux-2.6.7/arch/ia64/kernel/init_task.c
2004-06-15 23:20:26.000000000 -0600
-+++ /home/djm/src/xen/xeno-ia64.bk/xen/arch/ia64/init_task.c 2004-08-27
00:06:35.000000000 -0600
-@@ -15,10 +15,12 @@
- #include <asm/uaccess.h>
- #include <asm/pgtable.h>
-
-+#ifndef XEN
- static struct fs_struct init_fs = INIT_FS;
- static struct files_struct init_files = INIT_FILES;
- static struct signal_struct init_signals = INIT_SIGNALS(init_signals);
- static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand);
-+#endif
- struct mm_struct init_mm = INIT_MM(init_mm);
-
- EXPORT_SYMBOL(init_mm);
-@@ -33,13 +35,19 @@
-
- union {
- struct {
-+#ifdef XEN
-+ struct domain task;
-+#else
- struct task_struct task;
- struct thread_info thread_info;
-+#endif
- } s;
- unsigned long stack[KERNEL_STACK_SIZE/sizeof (unsigned long)];
- } init_task_mem asm ("init_task") __attribute__((section(".data.init_task")))
= {{
- .task = INIT_TASK(init_task_mem.s.task),
-+#ifndef XEN
- .thread_info = INIT_THREAD_INFO(init_task_mem.s.task)
-+#endif
- }};
-
- EXPORT_SYMBOL(init_task);
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.7/init_task.h
--- a/xen/arch/ia64/patch/linux-2.6.7/init_task.h Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,53 +0,0 @@
---- /home/djm/src/xen/xeno-ia64.bk/xen/linux-2.6.7/include/linux/init_task.h
2004-06-15 23:18:57.000000000 -0600
-+++ /home/djm/src/xen/xeno-ia64.bk/xen/include/asm-ia64/linux/init_task.h
2004-11-15 17:06:20.000000000 -0700
-@@ -31,6 +31,18 @@
- .max_reqs = ~0U, \
- }
-
-+#ifdef XEN
-+#define INIT_MM(name) \
-+{ \
-+ .mm_rb = RB_ROOT, \
-+ .pgd = swapper_pg_dir, \
-+ .mm_users = ATOMIC_INIT(2), \
-+ .mm_count = ATOMIC_INIT(1), \
-+ .page_table_lock = SPIN_LOCK_UNLOCKED, \
-+ .mmlist = LIST_HEAD_INIT(name.mmlist), \
-+ .cpu_vm_mask = CPU_MASK_ALL, \
-+}
-+#else
- #define INIT_MM(name) \
- { \
- .mm_rb = RB_ROOT, \
-@@ -43,6 +55,7 @@
- .cpu_vm_mask = CPU_MASK_ALL, \
- .default_kioctx = INIT_KIOCTX(name.default_kioctx, name), \
- }
-+#endif
-
- #define INIT_SIGNALS(sig) { \
- .count = ATOMIC_INIT(1), \
-@@ -64,6 +77,15 @@
- * INIT_TASK is used to set up the first task table, touch at
- * your own risk!. Base=0, limit=0x1fffff (=2MB)
- */
-+#ifdef XEN
-+#define INIT_TASK(tsk) \
-+{ \
-+ /*processor: 0,*/ \
-+ /*domain_id: IDLE_DOMAIN_ID,*/ \
-+ /*domain_flags: DOMF_idle_domain,*/ \
-+ refcnt: ATOMIC_INIT(1) \
-+}
-+#else
- #define INIT_TASK(tsk) \
- { \
- .state = 0, \
-@@ -113,6 +135,7 @@
- .switch_lock = SPIN_LOCK_UNLOCKED, \
- .journal_info = NULL, \
- }
-+#endif
-
-
-
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.7/interrupt.h
--- a/xen/arch/ia64/patch/linux-2.6.7/interrupt.h Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,18 +0,0 @@
---- /home/djm/src/xen/xeno-ia64.bk/xen/linux-2.6.7/include/linux/interrupt.h
2004-06-15 23:19:29.000000000 -0600
-+++ /home/djm/src/xen/xeno-ia64.bk/xen/include/asm-ia64/linux/interrupt.h
2004-08-25 19:28:13.000000000 -0600
-@@ -32,6 +32,7 @@
- #define IRQ_HANDLED (1)
- #define IRQ_RETVAL(x) ((x) != 0)
-
-+#ifndef XEN
- struct irqaction {
- irqreturn_t (*handler)(int, void *, struct pt_regs *);
- unsigned long flags;
-@@ -46,6 +47,7 @@
- irqreturn_t (*handler)(int, void *, struct pt_regs *),
- unsigned long, const char *, void *);
- extern void free_irq(unsigned int, void *);
-+#endif
-
- /*
- * Temporary defines for UP kernels, until all code gets fixed.
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.7/io.h
--- a/xen/arch/ia64/patch/linux-2.6.7/io.h Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,14 +0,0 @@
---- /home/djm/src/xen/xeno-ia64.bk/xen/linux-2.6.7/include/asm-ia64/io.h
2004-06-15 23:18:57.000000000 -0600
-+++ /home/djm/src/xen/xeno-ia64.bk/xen/include/asm-ia64/io.h 2004-11-05
16:53:36.000000000 -0700
-@@ -23,7 +23,11 @@
- #define __SLOW_DOWN_IO do { } while (0)
- #define SLOW_DOWN_IO do { } while (0)
-
-+#ifdef XEN
-+#define __IA64_UNCACHED_OFFSET 0xdffc000000000000 /* region 6 */
-+#else
- #define __IA64_UNCACHED_OFFSET 0xc000000000000000 /* region 6 */
-+#endif
-
- /*
- * The legacy I/O space defined by the ia64 architecture supports only 65536
ports, but
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.7/irq.h
--- a/xen/arch/ia64/patch/linux-2.6.7/irq.h Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,18 +0,0 @@
---- /home/djm/src/xen/xeno-ia64.bk/xen/linux-2.6.7/include/asm-ia64/irq.h
2005-01-23 13:23:36.000000000 -0700
-+++ /home/djm/src/xen/xeno-ia64.bk/xen/include/asm-ia64/irq.h 2004-08-25
19:28:13.000000000 -0600
-@@ -30,6 +30,15 @@
- extern void enable_irq (unsigned int);
- extern void set_irq_affinity_info (unsigned int irq, int dest, int redir);
-
-+#ifdef XEN
-+// dup'ed from signal.h to avoid changes to includes
-+#define SA_NOPROFILE 0x02000000
-+#define SA_SHIRQ 0x04000000
-+#define SA_RESTART 0x10000000
-+#define SA_INTERRUPT 0x20000000
-+#define SA_SAMPLE_RANDOM SA_RESTART
-+#endif
-+
- #ifdef CONFIG_SMP
- extern void move_irq(int irq);
- #else
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.7/irq_ia64.c
--- a/xen/arch/ia64/patch/linux-2.6.7/irq_ia64.c Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,82 +0,0 @@
---- /home/djm/linux-2.6.7/arch/ia64/kernel/irq_ia64.c 2004-06-15
23:19:13.000000000 -0600
-+++ arch/ia64/irq_ia64.c 2005-02-17 13:17:16.000000000 -0700
-@@ -17,18 +17,26 @@
- #include <linux/config.h>
- #include <linux/module.h>
-
-+#ifndef XEN
- #include <linux/jiffies.h>
-+#endif
- #include <linux/errno.h>
- #include <linux/init.h>
- #include <linux/interrupt.h>
- #include <linux/ioport.h>
-+#ifndef XEN
- #include <linux/kernel_stat.h>
-+#endif
- #include <linux/slab.h>
-+#ifndef XEN
- #include <linux/ptrace.h>
- #include <linux/random.h> /* for rand_initialize_irq() */
- #include <linux/signal.h>
-+#endif
- #include <linux/smp.h>
-+#ifndef XEN
- #include <linux/smp_lock.h>
-+#endif
- #include <linux/threads.h>
-
- #include <asm/bitops.h>
-@@ -101,6 +109,24 @@
- ia64_handle_irq (ia64_vector vector, struct pt_regs *regs)
- {
- unsigned long saved_tpr;
-+#if 0
-+//FIXME: For debug only, can be removed
-+ static char firstirq = 1;
-+ static char firsttime[256];
-+ static char firstpend[256];
-+ if (firstirq) {
-+ int i;
-+ for (i=0;i<256;i++) firsttime[i] = 1;
-+ for (i=0;i<256;i++) firstpend[i] = 1;
-+ firstirq = 0;
-+ }
-+ if (firsttime[vector]) {
-+ printf("**** (entry) First received int on vector=%d,itc=%lx\n",
-+ (unsigned long) vector, ia64_get_itc());
-+ firsttime[vector] = 0;
-+ }
-+#endif
-+
-
- #if IRQ_DEBUG
- {
-@@ -145,6 +171,27 @@
- ia64_setreg(_IA64_REG_CR_TPR, vector);
- ia64_srlz_d();
-
-+#ifdef XEN
-+ if (vector != 0xef) {
-+ extern void vcpu_pend_interrupt(void *, int);
-+#if 0
-+ if (firsttime[vector]) {
-+ printf("**** (iterate) First received int on
vector=%d,itc=%lx\n",
-+ (unsigned long) vector, ia64_get_itc());
-+ firsttime[vector] = 0;
-+ }
-+ if (firstpend[vector]) {
-+ printf("**** First pended int on vector=%d,itc=%lx\n",
-+ (unsigned long) vector,ia64_get_itc());
-+ firstpend[vector] = 0;
-+ }
-+#endif
-+ //FIXME: TEMPORARY HACK!!!!
-+ vcpu_pend_interrupt(dom0->vcpu[0],vector);
-+ vcpu_wake(dom0->vcpu[0]);
-+ }
-+ else
-+#endif
- do_IRQ(local_vector_to_irq(vector), regs);
-
- /*
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.7/ivt.S
--- a/xen/arch/ia64/patch/linux-2.6.7/ivt.S Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,528 +0,0 @@
---- ../../linux-2.6.7/arch/ia64/kernel/ivt.S 2004-06-15 23:18:59.000000000
-0600
-+++ arch/ia64/ivt.S 2005-04-01 12:56:01.000000000 -0700
-@@ -1,3 +1,21 @@
-+
-+#ifdef XEN
-+//#define CONFIG_DISABLE_VHPT // FIXME: change when VHPT is enabled??
-+// these are all hacked out for now as the entire IVT
-+// will eventually be replaced... just want to use it
-+// for startup code to handle TLB misses
-+//#define ia64_leave_kernel 0
-+//#define ia64_ret_from_syscall 0
-+//#define ia64_handle_irq 0
-+//#define ia64_fault 0
-+#define ia64_illegal_op_fault 0
-+#define ia64_prepare_handle_unaligned 0
-+#define ia64_bad_break 0
-+#define ia64_trace_syscall 0
-+#define sys_call_table 0
-+#define sys_ni_syscall 0
-+#include <asm/vhpt.h>
-+#endif
- /*
- * arch/ia64/kernel/ivt.S
- *
-@@ -76,6 +94,13 @@
- mov r19=n;; /* prepare to save predicates */
\
- br.sptk.many dispatch_to_fault_handler
-
-+#ifdef XEN
-+#define REFLECT(n)
\
-+ mov r31=pr;
\
-+ mov r19=n;; /* prepare to save predicates */
\
-+ br.sptk.many dispatch_reflection
-+#endif
-+
- .section .text.ivt,"ax"
-
- .align 32768 // align on 32KB boundary
-@@ -213,6 +238,13 @@
- // 0x0400 Entry 1 (size 64 bundles) ITLB (21)
- ENTRY(itlb_miss)
- DBG_FAULT(1)
-+#ifdef XEN
-+ VHPT_CCHAIN_LOOKUP(itlb_miss,i)
-+#ifdef VHPT_GLOBAL
-+ br.cond.sptk page_fault
-+ ;;
-+#endif
-+#endif
- /*
- * The ITLB handler accesses the L3 PTE via the virtually mapped linear
- * page table. If a nested TLB miss occurs, we switch into physical
-@@ -257,6 +289,13 @@
- // 0x0800 Entry 2 (size 64 bundles) DTLB (9,48)
- ENTRY(dtlb_miss)
- DBG_FAULT(2)
-+#ifdef XEN
-+ VHPT_CCHAIN_LOOKUP(dtlb_miss,d)
-+#ifdef VHPT_GLOBAL
-+ br.cond.sptk page_fault
-+ ;;
-+#endif
-+#endif
- /*
- * The DTLB handler accesses the L3 PTE via the virtually mapped linear
- * page table. If a nested TLB miss occurs, we switch into physical
-@@ -301,6 +340,13 @@
- // 0x0c00 Entry 3 (size 64 bundles) Alt ITLB (19)
- ENTRY(alt_itlb_miss)
- DBG_FAULT(3)
-+#ifdef XEN
-+//#ifdef VHPT_GLOBAL
-+// VHPT_CCHAIN_LOOKUP(alt_itlb_miss,i)
-+// br.cond.sptk page_fault
-+// ;;
-+//#endif
-+#endif
- mov r16=cr.ifa // get address that caused the TLB miss
- movl r17=PAGE_KERNEL
- mov r21=cr.ipsr
-@@ -339,6 +385,13 @@
- // 0x1000 Entry 4 (size 64 bundles) Alt DTLB (7,46)
- ENTRY(alt_dtlb_miss)
- DBG_FAULT(4)
-+#ifdef XEN
-+//#ifdef VHPT_GLOBAL
-+// VHPT_CCHAIN_LOOKUP(alt_dtlb_miss,d)
-+// br.cond.sptk page_fault
-+// ;;
-+//#endif
-+#endif
- mov r16=cr.ifa // get address that caused the TLB miss
- movl r17=PAGE_KERNEL
- mov r20=cr.isr
-@@ -368,6 +421,17 @@
- cmp.ne p8,p0=r0,r23
- (p9) cmp.eq.or.andcm p6,p7=IA64_ISR_CODE_LFETCH,r22 // check isr.code field
- (p8) br.cond.spnt page_fault
-+#ifdef XEN
-+ ;;
-+ // FIXME: inadequate test, this is where we test for Xen address
-+ // note that 0xf000 (cached) and 0xd000 (uncached) addresses
-+ // should be OK. (Though no I/O is done in Xen, EFI needs uncached
-+ // addresses and some domain EFI calls are passed through)
-+ tbit.nz p0,p8=r16,60
-+(p8) br.cond.spnt page_fault
-+//(p8) br.cond.spnt 0
-+ ;;
-+#endif
-
- dep r21=-1,r21,IA64_PSR_ED_BIT,1
- or r19=r19,r17 // insert PTE control bits into r19
-@@ -448,6 +512,9 @@
-
/////////////////////////////////////////////////////////////////////////////////////////
- // 0x1800 Entry 6 (size 64 bundles) Instruction Key Miss (24)
- ENTRY(ikey_miss)
-+#ifdef XEN
-+ REFLECT(6)
-+#endif
- DBG_FAULT(6)
- FAULT(6)
- END(ikey_miss)
-@@ -460,9 +527,16 @@
- srlz.i
- ;;
- SAVE_MIN_WITH_COVER
-+#ifdef XEN
-+ alloc r15=ar.pfs,0,0,4,0
-+ mov out0=cr.ifa
-+ mov out1=cr.isr
-+ mov out3=cr.itir
-+#else
- alloc r15=ar.pfs,0,0,3,0
- mov out0=cr.ifa
- mov out1=cr.isr
-+#endif
- adds r3=8,r2 // set up second base pointer
- ;;
- ssm psr.ic | PSR_DEFAULT_BITS
-@@ -483,6 +557,9 @@
-
/////////////////////////////////////////////////////////////////////////////////////////
- // 0x1c00 Entry 7 (size 64 bundles) Data Key Miss (12,51)
- ENTRY(dkey_miss)
-+#ifdef XEN
-+ REFLECT(7)
-+#endif
- DBG_FAULT(7)
- FAULT(7)
- END(dkey_miss)
-@@ -491,6 +568,9 @@
-
/////////////////////////////////////////////////////////////////////////////////////////
- // 0x2000 Entry 8 (size 64 bundles) Dirty-bit (54)
- ENTRY(dirty_bit)
-+#ifdef XEN
-+ REFLECT(8)
-+#endif
- DBG_FAULT(8)
- /*
- * What we do here is to simply turn on the dirty bit in the PTE. We
need to
-@@ -553,6 +633,9 @@
-
/////////////////////////////////////////////////////////////////////////////////////////
- // 0x2400 Entry 9 (size 64 bundles) Instruction Access-bit (27)
- ENTRY(iaccess_bit)
-+#ifdef XEN
-+ REFLECT(9)
-+#endif
- DBG_FAULT(9)
- // Like Entry 8, except for instruction access
- mov r16=cr.ifa // get the address that caused
the fault
-@@ -618,6 +701,9 @@
-
/////////////////////////////////////////////////////////////////////////////////////////
- // 0x2800 Entry 10 (size 64 bundles) Data Access-bit (15,55)
- ENTRY(daccess_bit)
-+#ifdef XEN
-+ REFLECT(10)
-+#endif
- DBG_FAULT(10)
- // Like Entry 8, except for data access
- mov r16=cr.ifa // get the address that caused
the fault
-@@ -686,6 +772,16 @@
- * to prevent leaking bits from kernel to user level.
- */
- DBG_FAULT(11)
-+#ifdef XEN
-+ mov r16=cr.isr
-+ mov r17=cr.iim
-+ mov r31=pr
-+ ;;
-+ cmp.eq p7,p0=r0,r17 // is this a psuedo-cover?
-+ // FIXME: may also need to check slot==2?
-+(p7) br.sptk.many dispatch_privop_fault
-+ br.sptk.many dispatch_break_fault
-+#endif
- mov r16=IA64_KR(CURRENT) // r16 = current task; 12 cycle
read lat.
- mov r17=cr.iim
- mov r18=__IA64_BREAK_SYSCALL
-@@ -696,7 +792,9 @@
- mov r27=ar.rsc
- mov r26=ar.pfs
- mov r28=cr.iip
-+#ifndef XEN
- mov r31=pr // prepare to save predicates
-+#endif
- mov r20=r1
- ;;
- adds r16=IA64_TASK_THREAD_ON_USTACK_OFFSET,r16
-@@ -792,6 +890,36 @@
- DBG_FAULT(13)
- FAULT(13)
-
-+#ifdef XEN
-+ // There is no particular reason for this code to be here, other than
that
-+ // there happens to be space here that would go unused otherwise. If
this
-+ // fault ever gets "unreserved", simply moved the following code to a
more
-+ // suitable spot...
-+
-+ENTRY(dispatch_break_fault)
-+ SAVE_MIN_WITH_COVER
-+ ;;
-+ alloc r14=ar.pfs,0,0,4,0 // now it's safe (must be first in insn group!)
-+ mov out0=cr.ifa
-+ adds out1=16,sp
-+ mov out2=cr.isr // FIXME: pity to make this slow access twice
-+ mov out3=cr.iim // FIXME: pity to make this slow access twice
-+
-+ ssm psr.ic | PSR_DEFAULT_BITS
-+ ;;
-+ srlz.i // guarantee that interruption
collection is on
-+ ;;
-+(p15) ssm psr.i // restore psr.i
-+ adds r3=8,r2 // set up second base pointer
-+ ;;
-+ SAVE_REST
-+ movl r14=ia64_leave_kernel
-+ ;;
-+ mov rp=r14
-+ br.sptk.many ia64_prepare_handle_break
-+END(dispatch_break_fault)
-+#endif
-+
- .org ia64_ivt+0x3800
-
/////////////////////////////////////////////////////////////////////////////////////////
- // 0x3800 Entry 14 (size 64 bundles) Reserved
-@@ -842,9 +970,11 @@
- * - ar.fpsr: set to kernel settings
- */
- GLOBAL_ENTRY(ia64_syscall_setup)
-+#ifndef XEN
- #if PT(B6) != 0
- # error This code assumes that b6 is the first field in pt_regs.
- #endif
-+#endif
- st8 [r1]=r19 // save b6
- add r16=PT(CR_IPSR),r1 // initialize first base pointer
- add r17=PT(R11),r1 // initialize second base
pointer
-@@ -974,6 +1104,37 @@
- DBG_FAULT(16)
- FAULT(16)
-
-+#ifdef XEN
-+ // There is no particular reason for this code to be here, other than
that
-+ // there happens to be space here that would go unused otherwise. If
this
-+ // fault ever gets "unreserved", simply moved the following code to a
more
-+ // suitable spot...
-+
-+ENTRY(dispatch_privop_fault)
-+ SAVE_MIN_WITH_COVER
-+ ;;
-+ alloc r14=ar.pfs,0,0,4,0 // now it's safe (must be first
in insn group!)
-+ mov out0=cr.ifa
-+ adds out1=16,sp
-+ mov out2=cr.isr // FIXME: pity to make this slow access twice
-+ mov out3=cr.itir
-+
-+ ssm psr.ic | PSR_DEFAULT_BITS
-+ ;;
-+ srlz.i // guarantee that interruption
collection is on
-+ ;;
-+(p15) ssm psr.i // restore psr.i
-+ adds r3=8,r2 // set up second base pointer
-+ ;;
-+ SAVE_REST
-+ movl r14=ia64_leave_kernel
-+ ;;
-+ mov rp=r14
-+ br.sptk.many ia64_prepare_handle_privop
-+END(dispatch_privop_fault)
-+#endif
-+
-+
- .org ia64_ivt+0x4400
-
/////////////////////////////////////////////////////////////////////////////////////////
- // 0x4400 Entry 17 (size 64 bundles) Reserved
-@@ -1090,6 +1251,9 @@
-
/////////////////////////////////////////////////////////////////////////////////////////
- // 0x5000 Entry 20 (size 16 bundles) Page Not Present (10,22,49)
- ENTRY(page_not_present)
-+#ifdef XEN
-+ REFLECT(20)
-+#endif
- DBG_FAULT(20)
- mov r16=cr.ifa
- rsm psr.dt
-@@ -1110,6 +1274,9 @@
-
/////////////////////////////////////////////////////////////////////////////////////////
- // 0x5100 Entry 21 (size 16 bundles) Key Permission (13,25,52)
- ENTRY(key_permission)
-+#ifdef XEN
-+ REFLECT(21)
-+#endif
- DBG_FAULT(21)
- mov r16=cr.ifa
- rsm psr.dt
-@@ -1123,6 +1290,9 @@
-
/////////////////////////////////////////////////////////////////////////////////////////
- // 0x5200 Entry 22 (size 16 bundles) Instruction Access Rights (26)
- ENTRY(iaccess_rights)
-+#ifdef XEN
-+ REFLECT(22)
-+#endif
- DBG_FAULT(22)
- mov r16=cr.ifa
- rsm psr.dt
-@@ -1136,6 +1306,9 @@
-
/////////////////////////////////////////////////////////////////////////////////////////
- // 0x5300 Entry 23 (size 16 bundles) Data Access Rights (14,53)
- ENTRY(daccess_rights)
-+#ifdef XEN
-+ REFLECT(23)
-+#endif
- DBG_FAULT(23)
- mov r16=cr.ifa
- rsm psr.dt
-@@ -1153,8 +1326,13 @@
- mov r16=cr.isr
- mov r31=pr
- ;;
-+#ifdef XEN
-+ cmp4.ge p6,p0=0x20,r16
-+(p6) br.sptk.many dispatch_privop_fault
-+#else
- cmp4.eq p6,p0=0,r16
- (p6) br.sptk.many dispatch_illegal_op_fault
-+#endif
- ;;
- mov r19=24 // fault number
- br.sptk.many dispatch_to_fault_handler
-@@ -1164,6 +1342,9 @@
-
/////////////////////////////////////////////////////////////////////////////////////////
- // 0x5500 Entry 25 (size 16 bundles) Disabled FP-Register (35)
- ENTRY(disabled_fp_reg)
-+#ifdef XEN
-+ REFLECT(25)
-+#endif
- DBG_FAULT(25)
- rsm psr.dfh // ensure we can access fph
- ;;
-@@ -1177,6 +1358,9 @@
-
/////////////////////////////////////////////////////////////////////////////////////////
- // 0x5600 Entry 26 (size 16 bundles) Nat Consumption (11,23,37,50)
- ENTRY(nat_consumption)
-+#ifdef XEN
-+ REFLECT(26)
-+#endif
- DBG_FAULT(26)
- FAULT(26)
- END(nat_consumption)
-@@ -1185,6 +1369,10 @@
-
/////////////////////////////////////////////////////////////////////////////////////////
- // 0x5700 Entry 27 (size 16 bundles) Speculation (40)
- ENTRY(speculation_vector)
-+#ifdef XEN
-+ // this probably need not reflect...
-+ REFLECT(27)
-+#endif
- DBG_FAULT(27)
- /*
- * A [f]chk.[as] instruction needs to take the branch to the recovery
code but
-@@ -1228,6 +1416,9 @@
-
/////////////////////////////////////////////////////////////////////////////////////////
- // 0x5900 Entry 29 (size 16 bundles) Debug (16,28,56)
- ENTRY(debug_vector)
-+#ifdef XEN
-+ REFLECT(29)
-+#endif
- DBG_FAULT(29)
- FAULT(29)
- END(debug_vector)
-@@ -1236,6 +1427,9 @@
-
/////////////////////////////////////////////////////////////////////////////////////////
- // 0x5a00 Entry 30 (size 16 bundles) Unaligned Reference (57)
- ENTRY(unaligned_access)
-+#ifdef XEN
-+ REFLECT(30)
-+#endif
- DBG_FAULT(30)
- mov r16=cr.ipsr
- mov r31=pr // prepare to save predicates
-@@ -1247,6 +1441,9 @@
-
/////////////////////////////////////////////////////////////////////////////////////////
- // 0x5b00 Entry 31 (size 16 bundles) Unsupported Data Reference (57)
- ENTRY(unsupported_data_reference)
-+#ifdef XEN
-+ REFLECT(31)
-+#endif
- DBG_FAULT(31)
- FAULT(31)
- END(unsupported_data_reference)
-@@ -1255,6 +1452,9 @@
-
/////////////////////////////////////////////////////////////////////////////////////////
- // 0x5c00 Entry 32 (size 16 bundles) Floating-Point Fault (64)
- ENTRY(floating_point_fault)
-+#ifdef XEN
-+ REFLECT(32)
-+#endif
- DBG_FAULT(32)
- FAULT(32)
- END(floating_point_fault)
-@@ -1263,6 +1463,9 @@
-
/////////////////////////////////////////////////////////////////////////////////////////
- // 0x5d00 Entry 33 (size 16 bundles) Floating Point Trap (66)
- ENTRY(floating_point_trap)
-+#ifdef XEN
-+ REFLECT(33)
-+#endif
- DBG_FAULT(33)
- FAULT(33)
- END(floating_point_trap)
-@@ -1271,6 +1474,9 @@
-
/////////////////////////////////////////////////////////////////////////////////////////
- // 0x5e00 Entry 34 (size 16 bundles) Lower Privilege Transfer Trap (66)
- ENTRY(lower_privilege_trap)
-+#ifdef XEN
-+ REFLECT(34)
-+#endif
- DBG_FAULT(34)
- FAULT(34)
- END(lower_privilege_trap)
-@@ -1279,6 +1485,9 @@
-
/////////////////////////////////////////////////////////////////////////////////////////
- // 0x5f00 Entry 35 (size 16 bundles) Taken Branch Trap (68)
- ENTRY(taken_branch_trap)
-+#ifdef XEN
-+ REFLECT(35)
-+#endif
- DBG_FAULT(35)
- FAULT(35)
- END(taken_branch_trap)
-@@ -1287,6 +1496,9 @@
-
/////////////////////////////////////////////////////////////////////////////////////////
- // 0x6000 Entry 36 (size 16 bundles) Single Step Trap (69)
- ENTRY(single_step_trap)
-+#ifdef XEN
-+ REFLECT(36)
-+#endif
- DBG_FAULT(36)
- FAULT(36)
- END(single_step_trap)
-@@ -1343,6 +1555,9 @@
-
/////////////////////////////////////////////////////////////////////////////////////////
- // 0x6900 Entry 45 (size 16 bundles) IA-32 Exeception
(17,18,29,41,42,43,44,58,60,61,62,72,73,75,76,77)
- ENTRY(ia32_exception)
-+#ifdef XEN
-+ REFLECT(45)
-+#endif
- DBG_FAULT(45)
- FAULT(45)
- END(ia32_exception)
-@@ -1351,6 +1566,9 @@
-
/////////////////////////////////////////////////////////////////////////////////////////
- // 0x6a00 Entry 46 (size 16 bundles) IA-32 Intercept (30,31,59,70,71)
- ENTRY(ia32_intercept)
-+#ifdef XEN
-+ REFLECT(46)
-+#endif
- DBG_FAULT(46)
- #ifdef CONFIG_IA32_SUPPORT
- mov r31=pr
-@@ -1381,6 +1599,9 @@
-
/////////////////////////////////////////////////////////////////////////////////////////
- // 0x6b00 Entry 47 (size 16 bundles) IA-32 Interrupt (74)
- ENTRY(ia32_interrupt)
-+#ifdef XEN
-+ REFLECT(47)
-+#endif
- DBG_FAULT(47)
- #ifdef CONFIG_IA32_SUPPORT
- mov r31=pr
-@@ -1510,6 +1731,39 @@
- DBG_FAULT(67)
- FAULT(67)
-
-+#ifdef XEN
-+ .org ia64_ivt+0x8000
-+ENTRY(dispatch_reflection)
-+ /*
-+ * Input:
-+ * psr.ic: off
-+ * r19: intr type (offset into ivt, see ia64_int.h)
-+ * r31: contains saved predicates (pr)
-+ */
-+ SAVE_MIN_WITH_COVER_R19
-+ alloc r14=ar.pfs,0,0,5,0
-+ mov out4=r15
-+ mov out0=cr.ifa
-+ adds out1=16,sp
-+ mov out2=cr.isr
-+ mov out3=cr.iim
-+// mov out3=cr.itir
-+
-+ ssm psr.ic | PSR_DEFAULT_BITS
-+ ;;
-+ srlz.i // guarantee that interruption
collection is on
-+ ;;
-+(p15) ssm psr.i // restore psr.i
-+ adds r3=8,r2 // set up second base pointer
-+ ;;
-+ SAVE_REST
-+ movl r14=ia64_leave_kernel
-+ ;;
-+ mov rp=r14
-+ br.sptk.many ia64_prepare_handle_reflection
-+END(dispatch_reflection)
-+#endif
-+
- #ifdef CONFIG_IA32_SUPPORT
-
- /*
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.7/kregs.h
--- a/xen/arch/ia64/patch/linux-2.6.7/kregs.h Fri Aug 26 11:02:14 2005
+++ /dev/null Fri Aug 26 13:06:49 2005
@@ -1,13 +0,0 @@
---- /home/djm/src/xen/xeno-ia64.bk/xen/linux-2.6.7/include/asm-ia64/kregs.h
2004-06-15 23:19:01.000000000 -0600
-+++ /home/djm/src/xen/xeno-ia64.bk/xen/include/asm-ia64/kregs.h
2004-09-17 18:27:22.000000000 -0600
-@@ -30,6 +30,10 @@
- #define IA64_TR_PALCODE 1 /* itr1: maps PALcode as
required by EFI */
- #define IA64_TR_PERCPU_DATA 1 /* dtr1: percpu data */
- #define IA64_TR_CURRENT_STACK 2 /* dtr2: maps kernel's memory- &
register-stacks */
-+#ifdef XEN
-+#define IA64_TR_SHARED_INFO 3 /* dtr3: page shared with domain */
-+#define IA64_TR_VHPT 4 /* dtr4: vhpt */
-+#endif
-
- /* Processor status register bits: */
- #define IA64_PSR_BE_BIT 1
diff -r 5978be010bec -r 2b95125015a5 xen/arch/ia64/patch/linux-2.6.7/lds.S
--- a/xen/arch/ia64/patch/linux-2.6.7/lds.S Fr |