re PR target/49824 ([avr] Missing documentation for OS_task and OS_main attributes)

PR target/49824
	* doc/extend.texi (Declaring Attributes of Functions):
	Document OS_main and OS_task attributes.
	(Specifying Attributes of Variables): Move up
	subsection "AVR Variable Attributes" as of alphabetical order.


Co-Authored-By: Georg-Johann Lay <avr@gjlay.de>

From-SVN: r180385
This commit is contained in:
Anatoly Sokolov 2011-10-24 18:45:51 +04:00 committed by Georg-Johann Lay
parent 7b7b1813da
commit 3d33d151c1
2 changed files with 49 additions and 10 deletions

View File

@ -1,3 +1,12 @@
2011-10-24 Anatoly Sokolov <aesok@post.ru>
Georg-Johann Lay <avr@gjlay.de>
PR target/49824
* doc/extend.texi (Declaring Attributes of Functions):
Document OS_main and OS_task attributes.
(Specifying Attributes of Variables): Move up
subsection "AVR Variable Attributes" as of alphabetical order.
2011-10-24 Richard Guenther <rguenther@suse.de>
* tree-vect-stmts.c (vect_get_vec_def_for_operand): Convert constants

View File

@ -3029,6 +3029,33 @@ compiled with more aggressive optimization options that produce faster
and larger code, while other functions can be called with less
aggressive options.
@item OS_main/OS_task
@cindex @code{OS_main} AVR function attribute
@cindex @code{OS_task} AVR function attribute
On AVR, functions with the @code{OS_main} or @code{OS_task} attribute
do not save/restore any call-saved register in their prologue/epilogue.
The @code{OS_main} attribute can be used when there @emph{is
guarantee} that interrupts are disabled at the time when the function
is entered. This will save resources when the stack pointer has to be
changed to set up a frame for local variables.
The @code{OS_task} attribute can be used when there is @emph{no
guarantee} that interrupts are disabled at that time when the function
is entered like for, e@.g@. task functions in a multi-threading operating
system. In that case, changing the stack pointer register will be
guarded by save/clear/restore of the global interrupt enable flag.
The differences to the @code{naked} function attrubute are:
@itemize @bullet
@item @code{naked} functions do not have a return instruction whereas
@code{OS_main} and @code{OS_task} functions will have a @code{RET} or
@code{RETI} return instruction.
@item @code{naked} functions do not set up a frame for local variables
or a frame pointer whereas @code{OS_main} and @code{OS_task} do this
as needed.
@end itemize
@item pcs
@cindex @code{pcs} function attribute
@ -4525,6 +4552,19 @@ The @code{dllexport} attribute is described in @ref{Function Attributes}.
@end table
@subsection AVR Variable Attributes
@table @code
@item progmem
@cindex @code{progmem} AVR variable attribute
The @code{progmem} attribute is used on the AVR to place data in the program
memory address space (flash). This is accomplished by putting
respective variables into a section whose name starts with @code{.progmem}.
AVR is a Harvard architecture processor and data and reas only data
normally resides in the data memory address space (RAM).
@end table
@subsection Blackfin Variable Attributes
Three attributes are currently defined for the Blackfin.
@ -4794,16 +4834,6 @@ placed in either the @code{.bss_below100} section or the
@end table
@subsection AVR Variable Attributes
@table @code
@item progmem
@cindex @code{progmem} variable attribute
The @code{progmem} attribute is used on the AVR to place data in the Program
Memory address space. The AVR is a Harvard Architecture processor and data
normally resides in the Data Memory address space.
@end table
@node Type Attributes
@section Specifying Attributes of Types
@cindex attribute of types