[PATCH-V2 1/1] sparc: Fix context switch on SMP
Daniel Cederman
cederman at gaisler.com
Mon Nov 16 12:14:36 UTC 2015
I was unsure if the ET bit was always set or not for newly created task
contexts, or if this was the first place that traps got enabled for a
new task. If it is always set we can remove that instruction.
On 2015-11-16 11:27, Sebastian Huber wrote:
>
>
> On 16/11/15 11:06, Daniel Cederman wrote:
>> @@ -202,6 +193,13 @@ try_update_is_executing:
>> ! The next load is in a delay slot, which is all right
>> #endif
>> + ld [%o1 + PSR_OFFSET], %g1 ! g1 = heir psr
>> + andn %g1, SPARC_PSR_CWP_MASK, %g1 ! g1 = heir psr w/o cwp
>> + or %g1, %g3, %g1 ! g1 = heir psr with cwp
>> + or %g1, SPARC_PSR_ET_MASK, %g1 ! g1 = heir psr traps
>> enabled
>
> Do we really need the "or %g1, SPARC_PSR_ET_MASK, %g1"? I think we
> should simply use the value of the saved PSR and omit this step.
>
>> + mov %g1, %psr ! restore status
>> register and
>> + ! **** ENABLE TRAPS ****
>> +
>> ld [%o1 + G5_OFFSET], %g5 ! restore the global
>> registers
>> ld [%o1 + G7_OFFSET], %g7
>
--
Daniel Cederman
Software Engineer
Cobham Gaisler
More information about the devel
mailing list