summaryrefslogtreecommitdiffstats
path: root/gbdk/docs/api/setjmp_8h_source.html
blob: bfce0c3f3e5535e53ad220f5888e82a7640dc8b3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
<!-- HTML header for doxygen 1.8.14-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="cache-control" content="max-age=86400"/>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.20"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>GBDK 2020 Docs: setjmp.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygen_extra.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">GBDK 2020 Docs
   &#160;<span id="projectnumber">4.0.6</span>
   </div>
   <div id="projectbrief">API Documentation for GBDK 2020</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.20 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('setjmp_8h_source.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">setjmp.h</div>  </div>
</div><!--header-->
<div class="contents">
<a href="setjmp_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*-------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">   setjmp.h - header file for setjmp &amp; longjmp ANSI routines</span></div>
<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">   Copyright (C) 1999, Sandeep Dutta . sandeep.dutta@usa.net</span></div>
<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment">   This library is free software; you can redistribute it and/or modify it</span></div>
<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">   under the terms of the GNU General Public License as published by the</span></div>
<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">   Free Software Foundation; either version 2, or (at your option) any</span></div>
<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">   later version.</span></div>
<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">   This library is distributed in the hope that it will be useful,</span></div>
<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment">   but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment">   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div>
<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment">   GNU General Public License for more details.</span></div>
<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment">   You should have received a copy of the GNU General Public License</span></div>
<div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment">   along with this library; see the file COPYING. If not, write to the</span></div>
<div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment">   Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston,</span></div>
<div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="comment">   MA 02110-1301, USA.</span></div>
<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="comment">   As a special exception, if you link this library with other files,</span></div>
<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="comment">   some of which are compiled with SDCC, to produce an executable,</span></div>
<div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="comment">   this library does not by itself cause the resulting executable to</span></div>
<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="comment">   be covered by the GNU General Public License. This exception does</span></div>
<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="comment">   not however invalidate any other reasons why the executable file</span></div>
<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="comment">   might be covered by the GNU General Public License.</span></div>
<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="comment">-------------------------------------------------------------------------*/</span></div>
<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160; </div>
<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#ifndef __SDCC_SETJMP_H</span></div>
<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#define __SDCC_SETJMP_H</span></div>
<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160; </div>
<div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="setjmp_8h.html#aebec2c4d6fc67c86fbb297bd79efb27c">   32</a></span>&#160;<span class="preprocessor">#define SP_SIZE     1</span></div>
<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160; </div>
<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#ifdef __SDCC_STACK_AUTO</span></div>
<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#define BP_SIZE     SP_SIZE</span></div>
<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="setjmp_8h.html#ae02ec77c070126e75761ab85226b62a7">   37</a></span>&#160;<span class="preprocessor">#define BP_SIZE     0</span></div>
<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160; </div>
<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="preprocessor">#ifdef __SDCC_USE_XSTACK</span></div>
<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">#define SPX_SIZE    1</span></div>
<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="setjmp_8h.html#ad27470e8d39238686f96b46d5b9deb40">   43</a></span>&#160;<span class="preprocessor">#define SPX_SIZE    0</span></div>
<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160; </div>
<div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="setjmp_8h.html#a0239bfe1e2b75fa5757c32a90d0c140d">   46</a></span>&#160;<span class="preprocessor">#define BPX_SIZE    SPX_SIZE</span></div>
<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160; </div>
<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="preprocessor">#ifdef __SDCC_MODEL_HUGE</span></div>
<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="preprocessor">#define RET_SIZE    3</span></div>
<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="setjmp_8h.html#a61c5519ad23b4ddbcc77c45352aac913">   51</a></span>&#160;<span class="preprocessor">#define RET_SIZE    2</span></div>
<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160; </div>
<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="preprocessor">#if defined (__SDCC_z80) || defined (__SDCC_z180) || defined (__SDCC_r2k) || defined (__SDCC_r3ka) || defined (__SDCC_tlcs90) || defined (__SDCC_ez80_z80) || defined (__SDCC_z80n)</span></div>
<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="setjmp_8h.html#a88bdd5a73c39b334f254a3ef5488880d">jmp_buf</a>[6]; <span class="comment">/* 2 for the stack pointer, 2 for the return address, 2 for the frame pointer. */</span></div>
<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="preprocessor">#elif defined (__SDCC_ds390) || defined (__SDCC_stm8) &amp;&amp; defined (__SDCC_MODEL_LARGE)</span></div>
<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="setjmp_8h.html#a88bdd5a73c39b334f254a3ef5488880d">jmp_buf</a>[5]; <span class="comment">/* 2 for the stack pointer, 3 for the return address. */</span></div>
<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="preprocessor">#elif defined (__SDCC_stm8) || defined (__SDCC_gbz80) || defined (__SDCC_hc08) || defined (__SDCC_s08)</span></div>
<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="setjmp_8h.html#a88bdd5a73c39b334f254a3ef5488880d">jmp_buf</a>[4]; <span class="comment">/* 2 for the stack pointer, 2 for the return address. */</span></div>
<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="preprocessor">#elif defined (__SDCC_pdk13) || defined (__SDCC_pdk14) || defined (__SDCC_pdk15)</span></div>
<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="setjmp_8h.html#a88bdd5a73c39b334f254a3ef5488880d">jmp_buf</a>[3]; <span class="comment">/* 1 for the stack pointer, 2 for the return address. */</span></div>
<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="setjmp_8h.html#a88bdd5a73c39b334f254a3ef5488880d">   63</a></span>&#160;<span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="setjmp_8h.html#a88bdd5a73c39b334f254a3ef5488880d">jmp_buf</a>[<a class="code" href="setjmp_8h.html#a61c5519ad23b4ddbcc77c45352aac913">RET_SIZE</a> + <a class="code" href="setjmp_8h.html#aebec2c4d6fc67c86fbb297bd79efb27c">SP_SIZE</a> + <a class="code" href="setjmp_8h.html#ae02ec77c070126e75761ab85226b62a7">BP_SIZE</a> + <a class="code" href="setjmp_8h.html#ad27470e8d39238686f96b46d5b9deb40">SPX_SIZE</a> + <a class="code" href="setjmp_8h.html#a0239bfe1e2b75fa5757c32a90d0c140d">BPX_SIZE</a>];</div>
<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160; </div>
<div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="setjmp_8h.html#af04f5d4b814aaac060bca4e9dea7c2a1">   66</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="setjmp_8h.html#af04f5d4b814aaac060bca4e9dea7c2a1">__setjmp</a> (<a class="code" href="setjmp_8h.html#a88bdd5a73c39b334f254a3ef5488880d">jmp_buf</a>) <a class="code" href="asm_2types_8h.html#a0971918860055db2e50dacea4da8f3bc">OLDCALL</a>;</div>
<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160; </div>
<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;<span class="comment">/* C99 might require setjmp to be a macro. The standard seems self-contradicting on this issue. */</span></div>
<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;<span class="comment">/* However, it is clear that the standards allow setjmp to be a macro. */</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="setjmp_8h.html#a27d1a255c7e0d69afec2367bb85b60b0">   70</a></span>&#160;<span class="preprocessor">#define setjmp(jump_buf) __setjmp(jump_buf)</span></div>
<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160; </div>
<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<span class="preprocessor">#ifndef __SDCC_HIDE_LONGJMP</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="setjmp_8h.html#ae8f437ea759f560a09affd1bab9acb74">   73</a></span>&#160;_Noreturn <span class="keywordtype">void</span> <a class="code" href="setjmp_8h.html#ae8f437ea759f560a09affd1bab9acb74">longjmp</a>(<a class="code" href="setjmp_8h.html#a88bdd5a73c39b334f254a3ef5488880d">jmp_buf</a>, <span class="keywordtype">int</span>) <a class="code" href="asm_2types_8h.html#a0971918860055db2e50dacea4da8f3bc">OLDCALL</a>;</div>
<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160; </div>
<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;<span class="preprocessor">#undef RET_SIZE</span></div>
<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;<span class="preprocessor">#undef SP_SIZE</span></div>
<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;<span class="preprocessor">#undef BP_SIZE</span></div>
<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;<span class="preprocessor">#undef SPX_SIZE</span></div>
<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;<span class="preprocessor">#undef BPX_SIZE</span></div>
<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160; </div>
<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160; </div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<div class="ttc" id="asetjmp_8h_html_af04f5d4b814aaac060bca4e9dea7c2a1"><div class="ttname"><a href="setjmp_8h.html#af04f5d4b814aaac060bca4e9dea7c2a1">__setjmp</a></div><div class="ttdeci">int __setjmp(jmp_buf) OLDCALL</div></div>
<div class="ttc" id="asetjmp_8h_html_ad27470e8d39238686f96b46d5b9deb40"><div class="ttname"><a href="setjmp_8h.html#ad27470e8d39238686f96b46d5b9deb40">SPX_SIZE</a></div><div class="ttdeci">#define SPX_SIZE</div><div class="ttdef"><b>Definition:</b> setjmp.h:43</div></div>
<div class="ttc" id="asetjmp_8h_html_ae02ec77c070126e75761ab85226b62a7"><div class="ttname"><a href="setjmp_8h.html#ae02ec77c070126e75761ab85226b62a7">BP_SIZE</a></div><div class="ttdeci">#define BP_SIZE</div><div class="ttdef"><b>Definition:</b> setjmp.h:37</div></div>
<div class="ttc" id="asetjmp_8h_html_a61c5519ad23b4ddbcc77c45352aac913"><div class="ttname"><a href="setjmp_8h.html#a61c5519ad23b4ddbcc77c45352aac913">RET_SIZE</a></div><div class="ttdeci">#define RET_SIZE</div><div class="ttdef"><b>Definition:</b> setjmp.h:51</div></div>
<div class="ttc" id="asetjmp_8h_html_a88bdd5a73c39b334f254a3ef5488880d"><div class="ttname"><a href="setjmp_8h.html#a88bdd5a73c39b334f254a3ef5488880d">jmp_buf</a></div><div class="ttdeci">unsigned char jmp_buf[RET_SIZE+SP_SIZE+BP_SIZE+SPX_SIZE+BPX_SIZE]</div><div class="ttdef"><b>Definition:</b> setjmp.h:63</div></div>
<div class="ttc" id="aasm_2types_8h_html_a0971918860055db2e50dacea4da8f3bc"><div class="ttname"><a href="asm_2types_8h.html#a0971918860055db2e50dacea4da8f3bc">OLDCALL</a></div><div class="ttdeci">#define OLDCALL</div><div class="ttdef"><b>Definition:</b> types.h:19</div></div>
<div class="ttc" id="asetjmp_8h_html_a0239bfe1e2b75fa5757c32a90d0c140d"><div class="ttname"><a href="setjmp_8h.html#a0239bfe1e2b75fa5757c32a90d0c140d">BPX_SIZE</a></div><div class="ttdeci">#define BPX_SIZE</div><div class="ttdef"><b>Definition:</b> setjmp.h:46</div></div>
<div class="ttc" id="asetjmp_8h_html_ae8f437ea759f560a09affd1bab9acb74"><div class="ttname"><a href="setjmp_8h.html#ae8f437ea759f560a09affd1bab9acb74">longjmp</a></div><div class="ttdeci">_Noreturn void longjmp(jmp_buf, int) OLDCALL</div></div>
<div class="ttc" id="asetjmp_8h_html_aebec2c4d6fc67c86fbb297bd79efb27c"><div class="ttname"><a href="setjmp_8h.html#aebec2c4d6fc67c86fbb297bd79efb27c">SP_SIZE</a></div><div class="ttdeci">#define SP_SIZE</div><div class="ttdef"><b>Definition:</b> setjmp.h:32</div></div>
<!-- HTML footer for doxygen 1.8.14-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
</div>
</body>
</html>