This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] rs6000: Extend TARGET_NO_LWSYNC to cover more processors


On Tue, Mar 27, 2012 at 5:21 PM, Meador Inge <meadori@codesourcery.com> wrote:
> Hi All,
>
> This patch fixes an issue reported by one of our customers where an instruction
> exception gets raised when using '__sync_fetch_and_add' on a PowerPC 440
> processor. ?The instruction causing the exception is 'lwsync'. ?Luckily Joseph
> laid the groundwork when solving a similar issue for e500 cores [1] by adding a
> new macro ('TARGET_NO_LWSYNC') for controlling whether 'lwsync' is available .
>
> This patch extends the 'TARGET_NO_LWSYNC' macro to include the PowerPC 440
> and 603 processors. ?The 440 because that is what the problem was reported
> against and the 603 because problems have been reported elsewhere [4] about
> that. ?It doesn't seem like 'lwsync' is supported on 603 processors anyway. ?I
> looked at the IBM [2] and Freescale [3] manuals and both use the heavyweight
> implementation of 'sync' (i.e. the 'sync' bit L=0).

Meador,

Something does not make sense about this patch.  Other than unique
issues with e500, lwsync should be accepted everywhere.  On older
processors, the L bit is ignored and it is treated as hwsync.  So I do
not understand the need for explicit TARGET_NO_LWSYNC on PPC440 or
PPC603.

Is this some sort of PPC440 errata for the specific 440 being used by
Mentor's customer?

Thanks, David


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]