source: mainline/uspace/lib/c/arch/ia64/include/libarch/fibril_context.ag@ cf7ad06

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since cf7ad06 was 7947c34, checked in by Jakub Jermar <jakub@…>, 11 years ago

Autogenerate ia64 fibril context_t and its offsets.

Rewrite fibril context_save_arch() and context_restore_arch() to use the
new autogenerated offsets. Also improve instruction level parallelization
of these routines by eliminating some stops.

  • Property mode set to 100644
File size: 6.6 KB
Line 
1# Copyright (c) 2014 Jakub Jermar
2# All rights reserved.
3#
4# Redistribution and use in source and binary forms, with or without
5# modification, are permitted provided that the following conditions
6# are met:
7#
8# - Redistributions of source code must retain the above copyright
9# notice, this list of conditions and the following disclaimer.
10# - Redistributions in binary form must reproduce the above copyright
11# notice, this list of conditions and the following disclaimer in the
12# documentation and/or other materials provided with the distribution.
13# - The name of the author may not be used to endorse or promote products
14# derived from this software without specific prior written permission.
15#
16# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26#
27
28{
29 name : context,
30
31 includes : [
32 {
33 include : <sys/types.h>
34 }
35 ],
36
37 #
38 # Only save registers that must be preserved across function calls.
39 #
40 members : [
41 #
42 # Application registers
43 #
44 {
45 name : ar_pfs,
46 type : uint64_t
47 },
48 {
49 name : ar_unat_caller,
50 type : uint64_t
51 },
52 {
53 name : ar_unat_callee,
54 type : uint64_t
55 },
56 {
57 name : ar_rsc,
58 type : uint64_t
59 },
60 {
61 # ar_bsp
62 name : bsp,
63 type : uint64_t
64 },
65 {
66 name : ar_rnat,
67 type : uint64_t
68 },
69 {
70 name : ar_lc,
71 type : uint64_t
72 },
73
74
75 #
76 # General registers
77 #
78 {
79 name : r1,
80 type : uint64_t
81 },
82 {
83 name : r4,
84 type : uint64_t
85 },
86 {
87 name : r5,
88 type : uint64_t
89 },
90 {
91 name : r6,
92 type : uint64_t
93 },
94 {
95 name : r7,
96 type : uint64_t
97 },
98 {
99 # r12
100 name : sp,
101 type : uint64_t
102 },
103 {
104 # r13
105 name : tp,
106 type : uint64_t
107 },
108
109
110 #
111 # Branch registers
112 #
113 {
114 # b0
115 name : pc,
116 type : uint64_t
117 },
118 {
119 name : b1,
120 type : uint64_t
121 },
122 {
123 name : b2,
124 type : uint64_t
125 },
126 {
127 name : b3,
128 type : uint64_t
129 },
130 {
131 name : b4,
132 type : uint64_t
133 },
134 {
135 name : b5,
136 type : uint64_t
137 },
138
139
140 #
141 # Predicate registers
142 #
143 {
144 name : pr,
145 type : uint64_t
146 },
147
148 {
149 name : f2,
150 type : uint128_t
151 },
152 {
153 name : f3,
154 type : uint128_t
155 },
156 {
157 name : f4,
158 type : uint128_t
159 },
160 {
161 name : f5,
162 type : uint128_t
163 },
164
165 {
166 name : f16,
167 type : uint128_t
168 },
169 {
170 name : f17,
171 type : uint128_t
172 },
173 {
174 name : f18,
175 type : uint128_t
176 },
177 {
178 name : f19,
179 type : uint128_t
180 },
181 {
182 name : f20,
183 type : uint128_t
184 },
185 {
186 name : f21,
187 type : uint128_t
188 },
189 {
190 name : f22,
191 type : uint128_t
192 },
193 {
194 name : f23,
195 type : uint128_t
196 },
197 {
198 name : f24,
199 type : uint128_t
200 },
201 {
202 name : f25,
203 type : uint128_t
204 },
205 {
206 name : f26,
207 type : uint128_t
208 },
209 {
210 name : f27,
211 type : uint128_t
212 },
213 {
214 name : f28,
215 type : uint128_t
216 },
217 {
218 name : f29,
219 type : uint128_t
220 },
221 {
222 name : f30,
223 type : uint128_t
224 },
225 {
226 name : f31,
227 type : uint128_t
228 }
229
230 ]
231}
232
Note: See TracBrowser for help on using the repository browser.