Xen 
 
Home About Xen.org Xen Xen Summit Wiki Mailing List Bug Tracker Xen Downloads
 
   
 

xen-changelog

[Xen-changelog] Remove the unused ia64 patch directory.

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] Remove the unused ia64 patch directory.
From: Xen patchbot -unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Fri, 26 Aug 2005 13:08:12 +0000
Delivery-date: Fri, 26 Aug 2005 13:06:36 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# 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 = &current->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 = &regs->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 = &regs->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