>-----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
