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