You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

MSP430-Function-Attributes.html 8.8KB

3 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <!-- Copyright (C) 1988-2020 Free Software Foundation, Inc.
  4. Permission is granted to copy, distribute and/or modify this document
  5. under the terms of the GNU Free Documentation License, Version 1.3 or
  6. any later version published by the Free Software Foundation; with the
  7. Invariant Sections being "Funding Free Software", the Front-Cover
  8. Texts being (a) (see below), and with the Back-Cover Texts being (b)
  9. (see below). A copy of the license is included in the section entitled
  10. "GNU Free Documentation License".
  11. (a) The FSF's Front-Cover Text is:
  12. A GNU Manual
  13. (b) The FSF's Back-Cover Text is:
  14. You have freedom to copy and modify this GNU Manual, like GNU
  15. software. Copies published by the Free Software Foundation raise
  16. funds for GNU development. -->
  17. <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
  18. <head>
  19. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  20. <title>MSP430 Function Attributes (Using the GNU Compiler Collection (GCC))</title>
  21. <meta name="description" content="MSP430 Function Attributes (Using the GNU Compiler Collection (GCC))">
  22. <meta name="keywords" content="MSP430 Function Attributes (Using the GNU Compiler Collection (GCC))">
  23. <meta name="resource-type" content="document">
  24. <meta name="distribution" content="global">
  25. <meta name="Generator" content="makeinfo">
  26. <link href="index.html#Top" rel="start" title="Top">
  27. <link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
  28. <link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
  29. <link href="Function-Attributes.html#Function-Attributes" rel="up" title="Function Attributes">
  30. <link href="NDS32-Function-Attributes.html#NDS32-Function-Attributes" rel="next" title="NDS32 Function Attributes">
  31. <link href="MIPS-Function-Attributes.html#MIPS-Function-Attributes" rel="prev" title="MIPS Function Attributes">
  32. <style type="text/css">
  33. <!--
  34. a.summary-letter {text-decoration: none}
  35. blockquote.indentedblock {margin-right: 0em}
  36. blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
  37. blockquote.smallquotation {font-size: smaller}
  38. div.display {margin-left: 3.2em}
  39. div.example {margin-left: 3.2em}
  40. div.lisp {margin-left: 3.2em}
  41. div.smalldisplay {margin-left: 3.2em}
  42. div.smallexample {margin-left: 3.2em}
  43. div.smalllisp {margin-left: 3.2em}
  44. kbd {font-style: oblique}
  45. pre.display {font-family: inherit}
  46. pre.format {font-family: inherit}
  47. pre.menu-comment {font-family: serif}
  48. pre.menu-preformatted {font-family: serif}
  49. pre.smalldisplay {font-family: inherit; font-size: smaller}
  50. pre.smallexample {font-size: smaller}
  51. pre.smallformat {font-family: inherit; font-size: smaller}
  52. pre.smalllisp {font-size: smaller}
  53. span.nolinebreak {white-space: nowrap}
  54. span.roman {font-family: initial; font-weight: normal}
  55. span.sansserif {font-family: sans-serif; font-weight: normal}
  56. ul.no-bullet {list-style: none}
  57. -->
  58. </style>
  59. </head>
  60. <body lang="en">
  61. <a name="MSP430-Function-Attributes"></a>
  62. <div class="header">
  63. <p>
  64. Next: <a href="NDS32-Function-Attributes.html#NDS32-Function-Attributes" accesskey="n" rel="next">NDS32 Function Attributes</a>, Previous: <a href="MIPS-Function-Attributes.html#MIPS-Function-Attributes" accesskey="p" rel="prev">MIPS Function Attributes</a>, Up: <a href="Function-Attributes.html#Function-Attributes" accesskey="u" rel="up">Function Attributes</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
  65. </div>
  66. <hr>
  67. <a name="MSP430-Function-Attributes-1"></a>
  68. <h4 class="subsection">6.33.22 MSP430 Function Attributes</h4>
  69. <p>These function attributes are supported by the MSP430 back end:
  70. </p>
  71. <dl compact="compact">
  72. <dt><code>critical</code></dt>
  73. <dd><a name="index-critical-function-attribute_002c-MSP430"></a>
  74. <p>Critical functions disable interrupts upon entry and restore the
  75. previous interrupt state upon exit. Critical functions cannot also
  76. have the <code>naked</code>, <code>reentrant</code> or <code>interrupt</code> attributes.
  77. </p>
  78. <p>The MSP430 hardware ensures that interrupts are disabled on entry to
  79. <code>interrupt</code> functions, and restores the previous interrupt state
  80. on exit. The <code>critical</code> attribute is therefore redundant on
  81. <code>interrupt</code> functions.
  82. </p>
  83. </dd>
  84. <dt><code>interrupt</code></dt>
  85. <dd><a name="index-interrupt-function-attribute_002c-MSP430"></a>
  86. <p>Use this attribute to indicate
  87. that the specified function is an interrupt handler. The compiler generates
  88. function entry and exit sequences suitable for use in an interrupt handler
  89. when this attribute is present.
  90. </p>
  91. <p>You can provide an argument to the interrupt
  92. attribute which specifies a name or number. If the argument is a
  93. number it indicates the slot in the interrupt vector table (0 - 31) to
  94. which this handler should be assigned. If the argument is a name it
  95. is treated as a symbolic name for the vector slot. These names should
  96. match up with appropriate entries in the linker script. By default
  97. the names <code>watchdog</code> for vector 26, <code>nmi</code> for vector 30 and
  98. <code>reset</code> for vector 31 are recognized.
  99. </p>
  100. </dd>
  101. <dt><code>naked</code></dt>
  102. <dd><a name="index-naked-function-attribute_002c-MSP430"></a>
  103. <p>This attribute allows the compiler to construct the
  104. requisite function declaration, while allowing the body of the
  105. function to be assembly code. The specified function will not have
  106. prologue/epilogue sequences generated by the compiler. Only basic
  107. <code>asm</code> statements can safely be included in naked functions
  108. (see <a href="Basic-Asm.html#Basic-Asm">Basic Asm</a>). While using extended <code>asm</code> or a mixture of
  109. basic <code>asm</code> and C code may appear to work, they cannot be
  110. depended upon to work reliably and are not supported.
  111. </p>
  112. </dd>
  113. <dt><code>reentrant</code></dt>
  114. <dd><a name="index-reentrant-function-attribute_002c-MSP430"></a>
  115. <p>Reentrant functions disable interrupts upon entry and enable them
  116. upon exit. Reentrant functions cannot also have the <code>naked</code>
  117. or <code>critical</code> attributes. They can have the <code>interrupt</code>
  118. attribute.
  119. </p>
  120. </dd>
  121. <dt><code>wakeup</code></dt>
  122. <dd><a name="index-wakeup-function-attribute_002c-MSP430"></a>
  123. <p>This attribute only applies to interrupt functions. It is silently
  124. ignored if applied to a non-interrupt function. A wakeup interrupt
  125. function will rouse the processor from any low-power state that it
  126. might be in when the function exits.
  127. </p>
  128. </dd>
  129. <dt><code>lower</code></dt>
  130. <dt><code>upper</code></dt>
  131. <dt><code>either</code></dt>
  132. <dd><a name="index-lower-function-attribute_002c-MSP430"></a>
  133. <a name="index-upper-function-attribute_002c-MSP430"></a>
  134. <a name="index-either-function-attribute_002c-MSP430"></a>
  135. <p>On the MSP430 target these attributes can be used to specify whether
  136. the function or variable should be placed into low memory, high
  137. memory, or the placement should be left to the linker to decide. The
  138. attributes are only significant if compiling for the MSP430X
  139. architecture in the large memory model.
  140. </p>
  141. <p>The attributes work in conjunction with a linker script that has been
  142. augmented to specify where to place sections with a <code>.lower</code> and
  143. a <code>.upper</code> prefix. So, for example, as well as placing the
  144. <code>.data</code> section, the script also specifies the placement of a
  145. <code>.lower.data</code> and a <code>.upper.data</code> section. The intention
  146. is that <code>lower</code> sections are placed into a small but easier to
  147. access memory region and the upper sections are placed into a larger, but
  148. slower to access, region.
  149. </p>
  150. <p>The <code>either</code> attribute is special. It tells the linker to place
  151. the object into the corresponding <code>lower</code> section if there is
  152. room for it. If there is insufficient room then the object is placed
  153. into the corresponding <code>upper</code> section instead. Note that the
  154. placement algorithm is not very sophisticated. It does not attempt to
  155. find an optimal packing of the <code>lower</code> sections. It just makes
  156. one pass over the objects and does the best that it can. Using the
  157. <samp>-ffunction-sections</samp> and <samp>-fdata-sections</samp> command-line
  158. options can help the packing, however, since they produce smaller,
  159. easier to pack regions.
  160. </p></dd>
  161. </dl>
  162. <hr>
  163. <div class="header">
  164. <p>
  165. Next: <a href="NDS32-Function-Attributes.html#NDS32-Function-Attributes" accesskey="n" rel="next">NDS32 Function Attributes</a>, Previous: <a href="MIPS-Function-Attributes.html#MIPS-Function-Attributes" accesskey="p" rel="prev">MIPS Function Attributes</a>, Up: <a href="Function-Attributes.html#Function-Attributes" accesskey="u" rel="up">Function Attributes</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
  166. </div>
  167. </body>
  168. </html>