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.

170 lines
7.9KB

  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>ARC Function Attributes (Using the GNU Compiler Collection (GCC))</title>
  21. <meta name="description" content="ARC Function Attributes (Using the GNU Compiler Collection (GCC))">
  22. <meta name="keywords" content="ARC 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="ARM-Function-Attributes.html#ARM-Function-Attributes" rel="next" title="ARM Function Attributes">
  31. <link href="AMD-GCN-Function-Attributes.html#AMD-GCN-Function-Attributes" rel="prev" title="AMD GCN 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="ARC-Function-Attributes"></a>
  62. <div class="header">
  63. <p>
  64. Next: <a href="ARM-Function-Attributes.html#ARM-Function-Attributes" accesskey="n" rel="next">ARM Function Attributes</a>, Previous: <a href="AMD-GCN-Function-Attributes.html#AMD-GCN-Function-Attributes" accesskey="p" rel="prev">AMD GCN 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="ARC-Function-Attributes-1"></a>
  68. <h4 class="subsection">6.33.4 ARC Function Attributes</h4>
  69. <p>These function attributes are supported by the ARC back end:
  70. </p>
  71. <dl compact="compact">
  72. <dt><code>interrupt</code></dt>
  73. <dd><a name="index-interrupt-function-attribute_002c-ARC"></a>
  74. <p>Use this attribute to indicate
  75. that the specified function is an interrupt handler. The compiler generates
  76. function entry and exit sequences suitable for use in an interrupt handler
  77. when this attribute is present.
  78. </p>
  79. <p>On the ARC, you must specify the kind of interrupt to be handled
  80. in a parameter to the interrupt attribute like this:
  81. </p>
  82. <div class="smallexample">
  83. <pre class="smallexample">void f () __attribute__ ((interrupt (&quot;ilink1&quot;)));
  84. </pre></div>
  85. <p>Permissible values for this parameter are: <code>ilink1</code><!-- /@w --> and
  86. <code>ilink2</code><!-- /@w --> for ARCv1 architecture, and <code>ilink</code><!-- /@w --> and
  87. <code>firq</code><!-- /@w --> for ARCv2 architecture.
  88. </p>
  89. </dd>
  90. <dt><code>long_call</code></dt>
  91. <dt><code>medium_call</code></dt>
  92. <dt><code>short_call</code></dt>
  93. <dd><a name="index-long_005fcall-function-attribute_002c-ARC"></a>
  94. <a name="index-medium_005fcall-function-attribute_002c-ARC"></a>
  95. <a name="index-short_005fcall-function-attribute_002c-ARC"></a>
  96. <a name="index-indirect-calls_002c-ARC"></a>
  97. <p>These attributes specify how a particular function is called.
  98. These attributes override the
  99. <samp>-mlong-calls</samp> and <samp>-mmedium-calls</samp> (see <a href="ARC-Options.html#ARC-Options">ARC Options</a>)
  100. command-line switches and <code>#pragma long_calls</code> settings.
  101. </p>
  102. <p>For ARC, a function marked with the <code>long_call</code> attribute is
  103. always called using register-indirect jump-and-link instructions,
  104. thereby enabling the called function to be placed anywhere within the
  105. 32-bit address space. A function marked with the <code>medium_call</code>
  106. attribute will always be close enough to be called with an unconditional
  107. branch-and-link instruction, which has a 25-bit offset from
  108. the call site. A function marked with the <code>short_call</code>
  109. attribute will always be close enough to be called with a conditional
  110. branch-and-link instruction, which has a 21-bit offset from
  111. the call site.
  112. </p>
  113. </dd>
  114. <dt><code>jli_always</code></dt>
  115. <dd><a name="index-jli_005falways-function-attribute_002c-ARC"></a>
  116. <p>Forces a particular function to be called using <code>jli</code>
  117. instruction. The <code>jli</code> instruction makes use of a table stored
  118. into <code>.jlitab</code> section, which holds the location of the functions
  119. which are addressed using this instruction.
  120. </p>
  121. </dd>
  122. <dt><code>jli_fixed</code></dt>
  123. <dd><a name="index-jli_005ffixed-function-attribute_002c-ARC"></a>
  124. <p>Identical like the above one, but the location of the function in the
  125. <code>jli</code> table is known and given as an attribute parameter.
  126. </p>
  127. </dd>
  128. <dt><code>secure_call</code></dt>
  129. <dd><a name="index-secure_005fcall-function-attribute_002c-ARC"></a>
  130. <p>This attribute allows one to mark secure-code functions that are
  131. callable from normal mode. The location of the secure call function
  132. into the <code>sjli</code> table needs to be passed as argument.
  133. </p>
  134. </dd>
  135. <dt><code>naked</code></dt>
  136. <dd><a name="index-naked-function-attribute_002c-ARC"></a>
  137. <p>This attribute allows the compiler to construct the requisite function
  138. declaration, while allowing the body of the function to be assembly
  139. code. The specified function will not have prologue/epilogue
  140. sequences generated by the compiler. Only basic <code>asm</code> statements
  141. can safely be included in naked functions (see <a href="Basic-Asm.html#Basic-Asm">Basic Asm</a>). While
  142. using extended <code>asm</code> or a mixture of basic <code>asm</code> and C code
  143. may appear to work, they cannot be depended upon to work reliably and
  144. are not supported.
  145. </p>
  146. </dd>
  147. </dl>
  148. <hr>
  149. <div class="header">
  150. <p>
  151. Next: <a href="ARM-Function-Attributes.html#ARM-Function-Attributes" accesskey="n" rel="next">ARM Function Attributes</a>, Previous: <a href="AMD-GCN-Function-Attributes.html#AMD-GCN-Function-Attributes" accesskey="p" rel="prev">AMD GCN 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>
  152. </div>
  153. </body>
  154. </html>