http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55300
Bug #: 55300 Summary: [SH] Add support for store queue address space Classification: Unclassified Product: gcc Version: 4.8.0 Status: UNCONFIRMED Severity: enhancement Priority: P3 Component: target AssignedTo: unassig...@gcc.gnu.org ReportedBy: olege...@gcc.gnu.org Target: sh4*-*-* On SH4* targets there is a store queue (SQ) resource. While the management of the SQ resource (i.e. how user code obtains a pointer to the SQ) is beyond the scope of the compiler, there is one thing that it could help with. The usage of the SQ has some restrictions on the memory accesses that are valid in the SQ area: * Reads from SQ area are not valid (return garbage or zero, don't remember) * Writes must be 32 bit or 64 bit wide User code that utilizes the SQ to write data could, for example, do so by obtaining a pointer to the SQ area from the system, then cast the pointer to some user defined data struct to be filled in and write data to the SQ area by setting members in the struct. However, the members of such a struct must all be accessed with 32 or 64 bit mem refs. For example this would be invalid: struct { int a, b, c; char d0,d1,d2,d3; int x[4]; }; If I'm not mistaken, such invalid mem refs can be avoided by adding a target specific address space.