ChangeSet 1.1423.5.6, 2005/05/10 16:29:32-06:00, djm@xxxxxxxxxxxxxxx
Minor adaptations for common ACPI update and other common changes
arch/ia64/domain.c | 4 ++--
arch/ia64/irq.c | 2 ++
arch/ia64/mm_init.c | 4 ++--
arch/ia64/patch/linux-2.6.11/unaligned.c | 23 +++++++++++++++++++----
arch/ia64/process.c | 4 ++--
arch/ia64/xenmisc.c | 8 ++++++++
include/asm-ia64/config.h | 8 ++++++++
include/asm-ia64/domain.h | 2 +-
8 files changed, 44 insertions(+), 11 deletions(-)
diff -Nru a/xen/arch/ia64/domain.c b/xen/arch/ia64/domain.c
--- a/xen/arch/ia64/domain.c 2005-05-11 03:04:09 -04:00
+++ b/xen/arch/ia64/domain.c 2005-05-11 03:04:09 -04:00
@@ -191,7 +191,7 @@
// stay on kernel stack because may get interrupts!
// ia64_ret_from_clone (which b0 gets in new_thread) switches
// to user stack
- ed->thread.on_ustack = 0;
+ ed->arch._thread.on_ustack = 0;
}
void arch_do_boot_vcpu(struct exec_domain *p)
@@ -261,7 +261,7 @@
printf("new_thread: ed=%p, start_pc=%p, regs=%p, sw=%p, new_rbs=%p,
IA64_STK_OFFSET=%p, &r8=%p\n",
ed,start_pc,regs,sw,new_rbs,IA64_STK_OFFSET,®s->r8);
sw->b0 = (unsigned long) &ia64_ret_from_clone;
- ed->thread.ksp = (unsigned long) sw - 16;
+ ed->arch._thread.ksp = (unsigned long) sw - 16;
//ed->thread_info->flags = 0;
printk("new_thread, about to call init_all_rr\n");
init_all_rr(ed);
diff -Nru a/xen/arch/ia64/irq.c b/xen/arch/ia64/irq.c
--- a/xen/arch/ia64/irq.c 2005-05-11 03:04:09 -04:00
+++ b/xen/arch/ia64/irq.c 2005-05-11 03:04:09 -04:00
@@ -1406,9 +1406,11 @@
desc->handler->startup(irq);
/* Attempt to bind the interrupt target to the correct CPU. */
+#if 0 /* FIXME CONFIG_SMP ??? */
if ( desc->handler->set_affinity != NULL )
desc->handler->set_affinity(
irq, apicid_to_phys_cpu_present(d->processor));
+#endif
}
else if ( !will_share || !action->shareable )
{
diff -Nru a/xen/arch/ia64/mm_init.c b/xen/arch/ia64/mm_init.c
--- a/xen/arch/ia64/mm_init.c 2005-05-11 03:04:09 -04:00
+++ b/xen/arch/ia64/mm_init.c 2005-05-11 03:04:09 -04:00
@@ -227,7 +227,7 @@
if (stack_size > MAX_USER_STACK_SIZE)
stack_size = MAX_USER_STACK_SIZE;
- current->thread.rbs_bot = STACK_TOP - stack_size;
+ current->arch._thread.rbs_bot = STACK_TOP - stack_size;
}
/*
@@ -255,7 +255,7 @@
if (vma) {
memset(vma, 0, sizeof(*vma));
vma->vm_mm = current->mm;
- vma->vm_start = current->thread.rbs_bot & PAGE_MASK;
+ vma->vm_start = current->arch._thread.rbs_bot & PAGE_MASK;
vma->vm_end = vma->vm_start + PAGE_SIZE;
vma->vm_page_prot = protection_map[VM_DATA_DEFAULT_FLAGS & 0x7];
vma->vm_flags =
VM_READ|VM_WRITE|VM_MAYREAD|VM_MAYWRITE|VM_GROWSUP;
diff -Nru a/xen/arch/ia64/patch/linux-2.6.11/unaligned.c
b/xen/arch/ia64/patch/linux-2.6.11/unaligned.c
--- a/xen/arch/ia64/patch/linux-2.6.11/unaligned.c 2005-05-11 03:04:09
-04:00
+++ b/xen/arch/ia64/patch/linux-2.6.11/unaligned.c 2005-05-11 03:04:09
-04:00
@@ -1,5 +1,5 @@
--- ../../linux-2.6.11/arch/ia64/kernel/unaligned.c 2005-03-02
00:38:25.000000000 -0700
-+++ arch/ia64/unaligned.c 2005-04-28 15:40:13.000000000 -0600
++++ arch/ia64/unaligned.c 2005-05-10 15:46:09.000000000 -0600
@@ -437,7 +437,11 @@
}
@@ -12,7 +12,31 @@
setreg (unsigned long regnum, unsigned long val, int nat, struct pt_regs
*regs)
{
struct switch_stack *sw = (struct switch_stack *) regs - 1;
-@@ -611,7 +615,11 @@
+@@ -522,7 +526,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 +589,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 +623,11 @@
}
@@ -24,7 +48,7 @@
getreg (unsigned long regnum, unsigned long *val, int *nat, struct pt_regs
*regs)
{
struct switch_stack *sw = (struct switch_stack *) regs - 1;
-@@ -1294,6 +1302,9 @@
+@@ -1294,6 +1310,9 @@
void
ia64_handle_unaligned (unsigned long ifa, struct pt_regs *regs)
{
@@ -34,7 +58,7 @@
struct ia64_psr *ipsr = ia64_psr(regs);
mm_segment_t old_fs = get_fs();
unsigned long bundle[2];
-@@ -1502,4 +1513,5 @@
+@@ -1502,4 +1521,5 @@
si.si_imm = 0;
force_sig_info(SIGBUS, &si, current);
goto done;
diff -Nru a/xen/arch/ia64/process.c b/xen/arch/ia64/process.c
--- a/xen/arch/ia64/process.c 2005-05-11 03:04:09 -04:00
+++ b/xen/arch/ia64/process.c 2005-05-11 03:04:09 -04:00
@@ -517,7 +517,7 @@
case 32: /* fp fault */
case 33: /* fp trap */
//result = handle_fpu_swa((vector == 32) ? 1 : 0, regs, isr);
- if ((result < 0) || (current->thread.flags &
IA64_THREAD_FPEMU_SIGFPE)) {
+ //if ((result < 0) || (current->thread.flags &
IA64_THREAD_FPEMU_SIGFPE)) {
//siginfo.si_signo = SIGFPE;
//siginfo.si_errno = 0;
//siginfo.si_code = FPE_FLTINV;
@@ -526,7 +526,7 @@
//siginfo.si_isr = isr;
//siginfo.si_imm = 0;
//force_sig_info(SIGFPE, &siginfo, current);
- }
+ //}
//return;
sprintf(buf, "FP fault/trap");
break;
diff -Nru a/xen/arch/ia64/xenmisc.c b/xen/arch/ia64/xenmisc.c
--- a/xen/arch/ia64/xenmisc.c 2005-05-11 03:04:09 -04:00
+++ b/xen/arch/ia64/xenmisc.c 2005-05-11 03:04:09 -04:00
@@ -79,6 +79,14 @@
raise_softirq(AC_TIMER_SOFTIRQ);
}
+unsigned long __hypercall_create_continuation(
+ unsigned int op, unsigned int nr_args, ...)
+{
+ printf("__hypercall_create_continuation: not implemented!!!\n");
+}
+
+///////////////////////////////
+
///////////////////////////////
// from arch/x86/apic.c
///////////////////////////////
diff -Nru a/xen/include/asm-ia64/config.h b/xen/include/asm-ia64/config.h
--- a/xen/include/asm-ia64/config.h 2005-05-11 03:04:09 -04:00
+++ b/xen/include/asm-ia64/config.h 2005-05-11 03:04:09 -04:00
@@ -258,6 +258,14 @@
#define seq_printf(a,b...) printf(b)
#define CONFIG_BLK_DEV_INITRD // needed to reserve memory for domain0
+//
+#define __smp_processor_id() (current->processor)
+
+// needed for newer ACPI code
+#define asmlinkage
+
+#define FORCE_CRASH() asm("break 0;;");
+
// these declarations got moved at some point, find a better place for them
extern int opt_noht;
extern int ht_per_core;
diff -Nru a/xen/include/asm-ia64/domain.h b/xen/include/asm-ia64/domain.h
--- a/xen/include/asm-ia64/domain.h 2005-05-11 03:04:09 -04:00
+++ b/xen/include/asm-ia64/domain.h 2005-05-11 03:04:09 -04:00
@@ -60,7 +60,7 @@
};
#define active_mm arch.active_mm
-#define thread arch._thread
+//#define thread arch._thread
// FOLLOWING FROM linux-2.6.7/include/sched.h
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|