patch-2.3.4 linux/arch/sparc64/kernel/smp.c
Next file: linux/arch/sparc64/kernel/sys_sunos32.c
Previous file: linux/arch/sparc64/kernel/setup.c
Back to the patch index
Back to the overall index
- Lines: 36
- Date:
Thu May 27 09:55:21 1999
- Orig file:
v2.3.3/linux/arch/sparc64/kernel/smp.c
- Orig date:
Tue May 11 08:24:32 1999
diff -u --recursive --new-file v2.3.3/linux/arch/sparc64/kernel/smp.c linux/arch/sparc64/kernel/smp.c
@@ -272,25 +272,26 @@
static inline void xcall_deliver(u64 data0, u64 data1, u64 data2, u64 pstate, unsigned long cpu)
{
u64 result, target = (cpu << 14) | 0x70;
- int stuck;
+ int stuck, tmp;
#ifdef XCALL_DEBUG
printk("CPU[%d]: xcall(data[%016lx:%016lx:%016lx],tgt[%016lx])\n",
smp_processor_id(), data0, data1, data2, target);
#endif
again:
+ tmp = 0x40;
__asm__ __volatile__("
- wrpr %0, %1, %%pstate
- wr %%g0, %2, %%asi
- stxa %3, [0x40] %%asi
- stxa %4, [0x50] %%asi
- stxa %5, [0x60] %%asi
+ wrpr %1, %2, %%pstate
+ stxa %4, [%0] %3
+ stxa %5, [%0+%8] %3
+ add %0, %8, %0
+ stxa %6, [%0+%8] %3
membar #Sync
- stxa %%g0, [%6] %%asi
+ stxa %%g0, [%7] %3
membar #Sync"
- : /* No outputs */
+ : "=r" (tmp)
: "r" (pstate), "i" (PSTATE_IE), "i" (ASI_UDB_INTR_W),
- "r" (data0), "r" (data1), "r" (data2), "r" (target));
+ "r" (data0), "r" (data1), "r" (data2), "r" (target), "r" (0x10), "0" (tmp));
/* NOTE: PSTATE_IE is still clear. */
stuck = 100000;
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)