]> git.kernelconcepts.de Git - karo-tx-redboot.git/blob - doc/html/ref/hal-interfaces.html
Initial revision
[karo-tx-redboot.git] / doc / html / ref / hal-interfaces.html
1 <!-- Copyright (C) 2003 Red Hat, Inc.                                -->
2 <!-- This material may be distributed only subject to the terms      -->
3 <!-- and conditions set forth in the Open Publication License, v1.0  -->
4 <!-- or later (the latest version is presently available at          -->
5 <!-- http://www.opencontent.org/openpub/).                           -->
6 <!-- Distribution of the work or derivative of the work in any       -->
7 <!-- standard (paper) book form is prohibited unless prior           -->
8 <!-- permission is obtained from the copyright holder.               -->
9 <HTML
10 ><HEAD
11 ><TITLE
12 >HAL Interfaces</TITLE
13 ><meta name="MSSmartTagsPreventParsing" content="TRUE">
14 <META
15 NAME="GENERATOR"
16 CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
17 "><LINK
18 REL="HOME"
19 TITLE="eCos Reference Manual"
20 HREF="ecos-ref.html"><LINK
21 REL="UP"
22 TITLE="The eCos Hardware Abstraction Layer (HAL)"
23 HREF="the-ecos-hardware-abstraction-layer.html"><LINK
24 REL="PREVIOUS"
25 TITLE="General principles"
26 HREF="hal-general-principles.html"><LINK
27 REL="NEXT"
28 TITLE="Architecture Characterization"
29 HREF="hal-architecture-characterization.html"></HEAD
30 ><BODY
31 CLASS="CHAPTER"
32 BGCOLOR="#FFFFFF"
33 TEXT="#000000"
34 LINK="#0000FF"
35 VLINK="#840084"
36 ALINK="#0000FF"
37 ><DIV
38 CLASS="NAVHEADER"
39 ><TABLE
40 SUMMARY="Header navigation table"
41 WIDTH="100%"
42 BORDER="0"
43 CELLPADDING="0"
44 CELLSPACING="0"
45 ><TR
46 ><TH
47 COLSPAN="3"
48 ALIGN="center"
49 >eCos Reference Manual</TH
50 ></TR
51 ><TR
52 ><TD
53 WIDTH="10%"
54 ALIGN="left"
55 VALIGN="bottom"
56 ><A
57 HREF="hal-general-principles.html"
58 ACCESSKEY="P"
59 >Prev</A
60 ></TD
61 ><TD
62 WIDTH="80%"
63 ALIGN="center"
64 VALIGN="bottom"
65 ></TD
66 ><TD
67 WIDTH="10%"
68 ALIGN="right"
69 VALIGN="bottom"
70 ><A
71 HREF="hal-architecture-characterization.html"
72 ACCESSKEY="N"
73 >Next</A
74 ></TD
75 ></TR
76 ></TABLE
77 ><HR
78 ALIGN="LEFT"
79 WIDTH="100%"></DIV
80 ><DIV
81 CLASS="CHAPTER"
82 ><H1
83 ><A
84 NAME="HAL-INTERFACES">Chapter 9. HAL Interfaces</H1
85 ><DIV
86 CLASS="TOC"
87 ><DL
88 ><DT
89 ><B
90 >Table of Contents</B
91 ></DT
92 ><DT
93 ><A
94 HREF="hal-interfaces.html#HAL-BASE-DEFINITIONS"
95 >Base Definitions</A
96 ></DT
97 ><DT
98 ><A
99 HREF="hal-architecture-characterization.html"
100 >Architecture Characterization</A
101 ></DT
102 ><DT
103 ><A
104 HREF="hal-interrupt-handling.html"
105 >Interrupt Handling</A
106 ></DT
107 ><DT
108 ><A
109 HREF="hal-input-and-output.html"
110 >HAL I/O</A
111 ></DT
112 ><DT
113 ><A
114 HREF="hal-cache-control.html"
115 >Cache Control</A
116 ></DT
117 ><DT
118 ><A
119 HREF="hal-linker-scripts.html"
120 >Linker Scripts</A
121 ></DT
122 ><DT
123 ><A
124 HREF="hal-diagnostic-support.html"
125 >Diagnostic Support</A
126 ></DT
127 ><DT
128 ><A
129 HREF="hal-smp-support.html"
130 >SMP Support</A
131 ></DT
132 ></DL
133 ></DIV
134 ><P
135 >This section describes the main HAL interfaces. </P
136 ><DIV
137 CLASS="SECTION"
138 ><H1
139 CLASS="SECTION"
140 ><A
141 NAME="HAL-BASE-DEFINITIONS">Base Definitions</H1
142 ><P
143 >These are definitions that characterize the properties of the base
144 architecture that are used to compile the portable parts of the
145 kernel. They are concerned with such things a portable type
146 definitions, endianness, and labeling.</P
147 ><P
148 >These definitions are supplied by the
149 <TT
150 CLASS="FILENAME"
151 >cyg/hal/basetype.h</TT
152 > header file which is supplied
153 by the architecture HAL. It is included automatically by
154 <TT
155 CLASS="FILENAME"
156 >cyg/infra/cyg_type.h</TT
157 >.</P
158 ><DIV
159 CLASS="SECTION"
160 ><H2
161 CLASS="SECTION"
162 ><A
163 NAME="AEN7743">Byte order</H2
164 ><P
165 ></P
166 ><DIV
167 CLASS="VARIABLELIST"
168 ><DL
169 ><DT
170 ><TT
171 CLASS="VARNAME"
172 >CYG_BYTEORDER</TT
173 ></DT
174 ><DD
175 ><P
176 >      This defines the byte order of the target and must be set to either
177       <TT
178 CLASS="VARNAME"
179 >CYG_LSBFIRST</TT
180 > or <TT
181 CLASS="VARNAME"
182 >CYG_MSBFIRST</TT
183 >.
184       </P
185 ></DD
186 ></DL
187 ></DIV
188 ></DIV
189 ><DIV
190 CLASS="SECTION"
191 ><H2
192 CLASS="SECTION"
193 ><A
194 NAME="AEN7753">Label Translation</H2
195 ><P
196 ></P
197 ><DIV
198 CLASS="VARIABLELIST"
199 ><DL
200 ><DT
201 ><TT
202 CLASS="FUNCTION"
203 >CYG_LABEL_NAME(name)</TT
204 ></DT
205 ><DD
206 ><P
207 >      This is a wrapper used in some C and C&#0043;&#0043; files which
208       use labels defined in assembly code or the linker script.
209       It need only be defined if the default implementation in
210       <TT
211 CLASS="FILENAME"
212 >cyg/infra/cyg_type.h</TT
213 >, which passes the name
214       argument unaltered, is inadequate. It should be paired with
215       <TT
216 CLASS="FUNCTION"
217 >CYG_LABEL_DEFN()</TT
218 >.
219       </P
220 ></DD
221 ><DT
222 ><TT
223 CLASS="FUNCTION"
224 >CYG_LABEL_DEFN(name)</TT
225 ></DT
226 ><DD
227 ><P
228 >      This is a wrapper used in assembler sources and linker scripts
229       which define labels.  It need only be defined if the default
230       implementation in
231       <TT
232 CLASS="FILENAME"
233 >cyg/infra/cyg_type.h</TT
234 >, which passes the name
235       argument unaltered, is inadequate. The most usual alternative
236       definition of this macro prepends an underscore to the label
237       name. 
238       </P
239 ></DD
240 ></DL
241 ></DIV
242 ></DIV
243 ><DIV
244 CLASS="SECTION"
245 ><H2
246 CLASS="SECTION"
247 ><A
248 NAME="AEN7769">Base types</H2
249 ><TABLE
250 BORDER="5"
251 BGCOLOR="#E0E0F0"
252 WIDTH="70%"
253 ><TR
254 ><TD
255 ><PRE
256 CLASS="PROGRAMLISTING"
257 >       cyg_halint8
258         cyg_halint16
259         cyg_halint32
260         cyg_halint64
261         cyg_halcount8
262         cyg_halcount16
263         cyg_halcount32
264         cyg_halcount64
265         cyg_halbool</PRE
266 ></TD
267 ></TR
268 ></TABLE
269 ><P
270 >These macros define the C base types that should be used to define
271 variables of the given size. They only need to be defined if the
272 default types specified in <TT
273 CLASS="FILENAME"
274 >cyg/infra/cyg_type.h</TT
275 >
276 cannot be used. Note that these are only the base types, they will be
277 composed with <TT
278 CLASS="LITERAL"
279 >signed</TT
280 > and
281 <TT
282 CLASS="LITERAL"
283 >unsigned</TT
284 > to form full type specifications.</P
285 ></DIV
286 ><DIV
287 CLASS="SECTION"
288 ><H2
289 CLASS="SECTION"
290 ><A
291 NAME="AEN7776">Atomic types</H2
292 ><TABLE
293 BORDER="5"
294 BGCOLOR="#E0E0F0"
295 WIDTH="70%"
296 ><TR
297 ><TD
298 ><PRE
299 CLASS="PROGRAMLISTING"
300 >       cyg_halatomic CYG_ATOMIC</PRE
301 ></TD
302 ></TR
303 ></TABLE
304 ><P
305 >These types are guaranteed to be read or written in a single
306 uninterruptible operation. It is architecture defined what size this
307 type is, but it will be at least a byte.</P
308 ></DIV
309 ></DIV
310 ></DIV
311 ><DIV
312 CLASS="NAVFOOTER"
313 ><HR
314 ALIGN="LEFT"
315 WIDTH="100%"><TABLE
316 SUMMARY="Footer navigation table"
317 WIDTH="100%"
318 BORDER="0"
319 CELLPADDING="0"
320 CELLSPACING="0"
321 ><TR
322 ><TD
323 WIDTH="33%"
324 ALIGN="left"
325 VALIGN="top"
326 ><A
327 HREF="hal-general-principles.html"
328 ACCESSKEY="P"
329 >Prev</A
330 ></TD
331 ><TD
332 WIDTH="34%"
333 ALIGN="center"
334 VALIGN="top"
335 ><A
336 HREF="ecos-ref.html"
337 ACCESSKEY="H"
338 >Home</A
339 ></TD
340 ><TD
341 WIDTH="33%"
342 ALIGN="right"
343 VALIGN="top"
344 ><A
345 HREF="hal-architecture-characterization.html"
346 ACCESSKEY="N"
347 >Next</A
348 ></TD
349 ></TR
350 ><TR
351 ><TD
352 WIDTH="33%"
353 ALIGN="left"
354 VALIGN="top"
355 >General principles</TD
356 ><TD
357 WIDTH="34%"
358 ALIGN="center"
359 VALIGN="top"
360 ><A
361 HREF="the-ecos-hardware-abstraction-layer.html"
362 ACCESSKEY="U"
363 >Up</A
364 ></TD
365 ><TD
366 WIDTH="33%"
367 ALIGN="right"
368 VALIGN="top"
369 >Architecture Characterization</TD
370 ></TR
371 ></TABLE
372 ></DIV
373 ></BODY
374 ></HTML
375 >