>-----Original Message-----
>From: Mike Frysinger [mailto:[email protected]] 
>Sent: Wednesday, January 13, 2010 11:50 AM
>To: Song, Barry
>Cc: [email protected]; 
>[email protected]
>Subject: Re: [Linux-kernel-commits] [8142] 
>trunk/arch/blackfin: task [#4437], use long call for kernel XIP
>
>On Tue, Jan 12, 2010 at 21:27, Song, Barry wrote:
>>From: Mike Frysinger [mailto:[email protected]]
>>>On Mon, Jan 11, 2010 at 22:20,  <[email protected]> wrote:
>>>> @@ -90,7 +102,13 @@
>>>>      r0 += 24;
>>>>      [--sp] = rets;
>>>>      SP += -12;
>>>> +#if defined(CONFIG_ROMKERNEL)
>>>> +        p5.l = _bfin_clone;
>>>> +        p5.h = _bfin_clone;
>>>> +        call ( p5 );
>>>> +#else
>>>>      call _bfin_clone;
>>>> +#endif
>>>>      SP += 12;
>>>>      rets = [sp++];
>>>>      rts;
>>>> @@ -101,7 +119,13 @@
>>>>      r0 += 24;
>>>>      [--sp] = rets;
>>>>      SP += -12;
>>>> +#if defined(CONFIG_ROMKERNEL)
>>>> +        p5.l = _do_rt_sigreturn;
>>>> +        p5.h = _do_rt_sigreturn;
>>>> +        call ( p5 );
>>>> +#else
>>>>      call _do_rt_sigreturn;
>>>> +#endif
>>>>      SP += 12;
>>>>      rets = [sp++];
>>>>      rts;
>>>
>>>are you sure using p4/p5 in these short function calls is safe ?
>>>those arent scratch registers based on our ABI, they're call 
>preserved
>>>which means if they are modified in a func, that func must
>>>save/restore them.
>>
>> I am not compelety sure all cases are ok. But I have tried to avoid p
>> registers confliction, startup linux and run some basic tests. Things
>> are ok.
>> If there are problems later, that can be a bug report.
>
>that's probably a really bad idea.  this would manifest as random
>hard-to-reproduce crashes.  the sys_{vfork,clone,rt_sigreturn}
>probably are fine, but should be fixed because it's trivial and
>they're exported for C code to call.  system_call should be documented
>as an internal func.  all the rest seem to be behind save/restore all.
Looks fine to me.

>-mike
>
_______________________________________________
Linux-kernel-commits mailing list
[email protected]
https://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits

Reply via email to