[IA64] stub to support dump_execution_state() on ia64
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Wed, 21 Jun 2006 09:56:20 +0000 (10:56 +0100)
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Wed, 21 Jun 2006 09:56:20 +0000 (10:56 +0100)
Also implement on_selected_cpus() for ia64.
Signed-off-by: Alex Williamson <alex.williamson@hp.com>
xen/arch/ia64/linux-xen/smp.c
xen/include/asm-ia64/debugger.h
xen/include/asm-ia64/xenprocessor.h

index 760349abf07e03463727dac3d568c780f55ae10a..8801d28f64ada25491bee3c232231705ecef4119 100644 (file)
@@ -421,6 +421,42 @@ smp_call_function (void (*func) (void *info), void *info, int nonatomic, int wai
 }
 EXPORT_SYMBOL(smp_call_function);
 
+#ifdef XEN
+int
+on_selected_cpus(cpumask_t selected, void (*func) (void *info), void *info,
+                 int retry, int wait)
+{
+       struct call_data_struct data;
+       unsigned int cpu, nr_cpus = cpus_weight(selected);
+
+       ASSERT(local_irq_is_enabled());
+
+       if (!nr_cpus)
+               return 0;
+
+       data.func = func;
+       data.info = info;
+       data.wait = wait;
+       atomic_set(&data.started, 0);
+       atomic_set(&data.finished, 0);
+
+       spin_lock(&call_lock);
+
+       call_data = &data;
+       wmb();
+
+       for_each_cpu_mask(cpu, selected)
+               send_IPI_single(cpu, IPI_CALL_FUNC);
+
+       while (atomic_read(wait ? &data.finished : &data.started) != nr_cpus)
+               cpu_relax();
+
+       spin_unlock(&call_lock);
+
+       return 0;
+}
+#endif
+
 /*
  * this function calls the 'stop' function on all other CPUs in the system.
  */
index d242f21b881fb105f6ad781e69c2d354fdab9f1c..e320ff68cca15b6b94055cb59f943e5140a70392 100644 (file)
 #include <xen/gdbstub.h>
 
 void show_registers(struct cpu_user_regs *regs);
-#define show_execution_state show_registers
+void dump_stack(void);
+
+static inline void
+show_execution_state(struct cpu_user_regs *regs)
+{
+    show_registers(regs);
+    dump_stack();
+}
 
 // NOTE: on xen struct pt_regs = struct cpu_user_regs
 //       see include/asm-ia64/linux-xen/asm/ptrace.h
index 865124b965df69b30d142d3704724200030b29fc..7a38f1bc8c3d3a7dae58f833d9fd5e690eae0caa 100644 (file)
@@ -237,4 +237,6 @@ typedef union {
     u64 itir;
 } ia64_itir_t;
 
+#define dump_execution_state() printk("FIXME: implement ia64 dump_execution_state()\n");
+
 #endif // _ASM_IA64_XENPROCESSOR_H