This is the mail archive of the gcc@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]

RFC embedded c proposal


Hi,

I'm working on a patch on [AVR-]GCC to support multiple memoryspaces. The AVR has more than one memoryspace (code + data), and thus a modification to GCC is needed.

This standard proposal from ISO/IEC:

http://std.dkuug.dk/JTC1/SC22/WG14/www/docs/n1021.pdf

contains issues about C extension in respect of embedded processors. In section 3.1.2. it suggests syntax for multiple memoryspaces:

	_X char a, b, c;
		// Declares three characters in address space _X

	_X const int *p;
		// Declares a pointer in the generic address space
		// that points to a constant int object in address
		// space _X

	_X struct { int a; char b; } *_Y q;
		// Declares a pointer in address space _Y that points
		// to a structure in address space _X

Now, if I were to implement this into GCC, what would be best method of implementation? Consider:

a) Add the appropriate _X keywords for the target at hand (which in this case could be _Progmem, _Flash, _Code or similar)

*or*

b) Declare an __attribute__, e.g. __attribute__((progmem)), that will become a part of the type decleration:

__attribute__((progmem)) char a, b, c; // Works today in GCC

__attribute__((progmem)) int *p; // Does not work


Which of these two methods would be best suited for gcc?



Regards, Svein


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