Subject: Re: 1.5S vs sparc/MP
To: Simon J. Gerraty <sjg@quick.com.au>
From: Paul Kranenburg <pk@cs.few.eur.nl>
List: tech-smp
Date: 03/02/2001 08:55:00
> --- sparc/locore.s 2000/08/31 16:59:12 1.134
> +++ sparc/locore.s 2001/02/27 06:57:35
> @@ -4870,6 +4870,9 @@ ENTRY(snapshot)
> * and when returning a child to user mode after a fork(2).
> */
> ENTRY(proc_trampoline)
> +#ifdef MULTIPROCESSOR
> + call _C_LABEL(proc_trampoline_mp)
> +#endif
> call %l0 ! re-use current frame
> mov %l1, %o0
>
> which hopefully takes care of that.
This code fills the delay slot of the call instruction with another
call instruction. That is a recipe for disaster..
Try adding a `nop', e.g.:
call _C_LABEL(proc_trampoline_mp)
nop