9.9.3 __eds__ Type Qualifier
The __eds__
qualifier indicates that the qualified object
has been located in an EDS accessible memory space and that the compiler should manage the
appropriate registers used to access this memory.
When used with pointers, it implies that the compiler should make few
assumptions as to the memory space in which the pointer target is located and that the
target may be in one of several memory spaces, which include: space(data)
(and its subsets), eds
, space(eedata)
,
space(prog)
, space(psv)
,
space(auto_psv)
, and on some devices space(pmp)
. Not
all devices support all memory spaces. For example:
__eds__ unsigned int __attribute__((eds)) myEDSvar;
__eds__ char * myEDSpointer;
The compiler will automatically assert the page
attribute
to scalar variable declarations; this allows the compiler to generate more efficient code
when accessing larger data types. Remember, scalar variables do not include structures or
arrays. To force paging of a structure or array, please manually use the
page
attribute and the compiler will prevent the object from crossing a
page boundary.
For read access to __eds__
qualified variables will
automatically manipulate the PSVPAG
or DSRPAG
register
(as appropriate). For devices that support extended data space memory, the compiler will
also manipulate the DSWPAG
register.
For more on this qualifier, see the 11.6 Extended Data Space Access [DD] section.