blob: d40ad918d3b9e540e21930a9940ec8b4f49781d0 [file] [log] [blame]
Daniel Krueger9d7164c2008-12-19 11:41:57 -08001/****************************************************************************
2
3 (c) SYSTEC electronic GmbH, D-07973 Greiz, August-Bebel-Str. 29
4 www.systec-electronic.com
5
6 Project: openPOWERLINK
7
8 Description: Abstract Memory Interface for x86 compatible
9
10 License:
11
12 Redistribution and use in source and binary forms, with or without
13 modification, are permitted provided that the following conditions
14 are met:
15
16 1. Redistributions of source code must retain the above copyright
17 notice, this list of conditions and the following disclaimer.
18
19 2. Redistributions in binary form must reproduce the above copyright
20 notice, this list of conditions and the following disclaimer in the
21 documentation and/or other materials provided with the distribution.
22
23 3. Neither the name of SYSTEC electronic GmbH nor the names of its
24 contributors may be used to endorse or promote products derived
25 from this software without prior written permission. For written
26 permission, please contact info@systec-electronic.com.
27
28 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
29 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
30 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
31 FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
32 COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
33 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
34 BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
35 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
36 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
37 LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
38 ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
39 POSSIBILITY OF SUCH DAMAGE.
40
41 Severability Clause:
42
43 If a provision of this License is or becomes illegal, invalid or
44 unenforceable in any jurisdiction, that shall not affect:
45 1. the validity or enforceability in that jurisdiction of any other
46 provision of this License; or
47 2. the validity or enforceability in other jurisdictions of that or
48 any other provision of this License.
49
50 -------------------------------------------------------------------------
51
52 $RCSfile: amix86.c,v $
53
54 $Author: D.Krueger $
55
56 $Revision: 1.3 $ $Date: 2008/04/17 21:36:32 $
57
58 $State: Exp $
59
60 Build Environment:
61 ...
62
63 -------------------------------------------------------------------------
64
65 Revision History:
66
67 r.s.: first implemetation
68
69 2006-06-13 d.k.: duplicate functions for little endian and big endian
70
71****************************************************************************/
72
73//#include "global.h"
74//#include "EplAmi.h"
75#include "EplInc.h"
76
Daniel Krueger9d7164c2008-12-19 11:41:57 -080077//---------------------------------------------------------------------------
78// typedef
79//---------------------------------------------------------------------------
80
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -080081typedef struct {
Greg Kroah-Hartmandcf53712009-03-23 12:57:39 -070082 u16 m_wWord;
Daniel Krueger9d7164c2008-12-19 11:41:57 -080083
84} twStruct;
85
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -080086typedef struct {
Greg Kroah-Hartmand539cfb2009-03-23 12:51:37 -070087 u32 m_dwDword;
Daniel Krueger9d7164c2008-12-19 11:41:57 -080088
89} tdwStruct;
90
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -080091typedef struct {
Greg Kroah-Hartmana5c30d92009-03-23 12:43:05 -070092 u64 m_qwQword;
Daniel Krueger9d7164c2008-12-19 11:41:57 -080093
94} tqwStruct;
95
Daniel Krueger9d7164c2008-12-19 11:41:57 -080096//=========================================================================//
97// //
98// P U B L I C F U N C T I O N S //
99// //
100//=========================================================================//
101
102//---------------------------------------------------------------------------
103//
104// Function: AmiSetXXXToBe()
105//
106// Description: writes the specified value to the absolute address in
107// big endian
108//
109// Parameters: pAddr_p = absolute address
110// xXXXVal_p = value
111//
112// Returns: (none)
113//
114// State:
115//
116//---------------------------------------------------------------------------
117
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700118//------------< write u8 in big endian >--------------------------
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800119/*
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700120void AmiSetByteToBe (void *pAddr_p, u8 bByteVal_p)
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800121{
122
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700123 *(u8 *)pAddr_p = bByteVal_p;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800124
125}
126*/
127
Greg Kroah-Hartmandcf53712009-03-23 12:57:39 -0700128//------------< write u16 in big endian >--------------------------
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800129
Greg Kroah-Hartmandcf53712009-03-23 12:57:39 -0700130void AmiSetWordToBe(void * pAddr_p, u16 wWordVal_p)
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800131{
Greg Kroah-Hartmanf15a88f2009-03-23 11:44:31 -0700132 twStruct *pwStruct;
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800133 twStruct wValue;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800134
Greg Kroah-Hartmandcf53712009-03-23 12:57:39 -0700135 wValue.m_wWord = (u16) ((wWordVal_p & 0x00FF) << 8); //LSB to MSB
136 wValue.m_wWord |= (u16) ((wWordVal_p & 0xFF00) >> 8); //MSB to LSB
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800137
Greg Kroah-Hartmanf15a88f2009-03-23 11:44:31 -0700138 pwStruct = (twStruct *) pAddr_p;
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800139 pwStruct->m_wWord = wValue.m_wWord;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800140
141}
142
Greg Kroah-Hartmand539cfb2009-03-23 12:51:37 -0700143//------------< write u32 in big endian >-------------------------
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800144
Greg Kroah-Hartmand539cfb2009-03-23 12:51:37 -0700145void AmiSetDwordToBe(void *pAddr_p, u32 dwDwordVal_p)
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800146{
Greg Kroah-Hartmanf15a88f2009-03-23 11:44:31 -0700147 tdwStruct *pdwStruct;
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800148 tdwStruct dwValue;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800149
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800150 dwValue.m_dwDword = ((dwDwordVal_p & 0x000000FF) << 24); //LSB to MSB
151 dwValue.m_dwDword |= ((dwDwordVal_p & 0x0000FF00) << 8);
152 dwValue.m_dwDword |= ((dwDwordVal_p & 0x00FF0000) >> 8);
153 dwValue.m_dwDword |= ((dwDwordVal_p & 0xFF000000) >> 24); //MSB to LSB
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800154
Greg Kroah-Hartmanf15a88f2009-03-23 11:44:31 -0700155 pdwStruct = (tdwStruct *) pAddr_p;
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800156 pdwStruct->m_dwDword = dwValue.m_dwDword;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800157
158}
159
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800160//---------------------------------------------------------------------------
161//
162// Function: AmiSetXXXToLe()
163//
164// Description: writes the specified value to the absolute address in
165// little endian
166//
167// Parameters: pAddr_p = absolute address
168// xXXXVal_p = value
169//
170// Returns: (none)
171//
172// State:
173//
174//---------------------------------------------------------------------------
175
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700176//------------< write u8 in little endian >--------------------------
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800177/*
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700178void AmiSetByteToLe (void *pAddr_p, u8 bByteVal_p)
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800179{
180
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700181 *(u8 *)pAddr_p = bByteVal_p;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800182
183}
184*/
185
Greg Kroah-Hartmandcf53712009-03-23 12:57:39 -0700186//------------< write u16 in little endian >--------------------------
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800187
Greg Kroah-Hartmandcf53712009-03-23 12:57:39 -0700188void AmiSetWordToLe(void *pAddr_p, u16 wWordVal_p)
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800189{
Greg Kroah-Hartmanf15a88f2009-03-23 11:44:31 -0700190 twStruct *pwStruct;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800191
Greg Kroah-Hartmanf15a88f2009-03-23 11:44:31 -0700192 pwStruct = (twStruct *) pAddr_p;
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800193 pwStruct->m_wWord = wWordVal_p;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800194
195}
196
Greg Kroah-Hartmand539cfb2009-03-23 12:51:37 -0700197//------------< write u32 in little endian >-------------------------
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800198
Greg Kroah-Hartmand539cfb2009-03-23 12:51:37 -0700199void AmiSetDwordToLe(void *pAddr_p, u32 dwDwordVal_p)
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800200{
Greg Kroah-Hartmanf15a88f2009-03-23 11:44:31 -0700201 tdwStruct *pdwStruct;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800202
Greg Kroah-Hartmanf15a88f2009-03-23 11:44:31 -0700203 pdwStruct = (tdwStruct *) pAddr_p;
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800204 pdwStruct->m_dwDword = dwDwordVal_p;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800205
206}
207
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800208//---------------------------------------------------------------------------
209//
210// Function: AmiGetXXXFromBe()
211//
212// Description: reads the specified value from the absolute address in
213// big endian
214//
215// Parameters: pAddr_p = absolute address
216//
217// Returns: XXX = value
218//
219// State:
220//
221//---------------------------------------------------------------------------
222
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700223//------------< read u8 in big endian >---------------------------
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800224/*
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700225u8 AmiGetByteFromBe (void *pAddr_p)
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800226{
227
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700228 return ( *(u8 *)pAddr_p );
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800229
230}
231*/
232
Greg Kroah-Hartmandcf53712009-03-23 12:57:39 -0700233//------------< read u16 in big endian >---------------------------
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800234
Greg Kroah-Hartmandcf53712009-03-23 12:57:39 -0700235u16 AmiGetWordFromBe(void *pAddr_p)
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800236{
Greg Kroah-Hartmanf15a88f2009-03-23 11:44:31 -0700237 twStruct *pwStruct;
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800238 twStruct wValue;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800239
Greg Kroah-Hartmanf15a88f2009-03-23 11:44:31 -0700240 pwStruct = (twStruct *) pAddr_p;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800241
Greg Kroah-Hartmandcf53712009-03-23 12:57:39 -0700242 wValue.m_wWord = (u16) ((pwStruct->m_wWord & 0x00FF) << 8); //LSB to MSB
243 wValue.m_wWord |= (u16) ((pwStruct->m_wWord & 0xFF00) >> 8); //MSB to LSB
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800244
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800245 return (wValue.m_wWord);
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800246
247}
248
Greg Kroah-Hartmand539cfb2009-03-23 12:51:37 -0700249//------------< read u32 in big endian >--------------------------
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800250
Greg Kroah-Hartmand539cfb2009-03-23 12:51:37 -0700251u32 AmiGetDwordFromBe(void *pAddr_p)
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800252{
Greg Kroah-Hartmanf15a88f2009-03-23 11:44:31 -0700253 tdwStruct *pdwStruct;
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800254 tdwStruct dwValue;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800255
Greg Kroah-Hartmanf15a88f2009-03-23 11:44:31 -0700256 pdwStruct = (tdwStruct *) pAddr_p;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800257
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800258 dwValue.m_dwDword = ((pdwStruct->m_dwDword & 0x000000FF) << 24); //LSB to MSB
259 dwValue.m_dwDword |= ((pdwStruct->m_dwDword & 0x0000FF00) << 8);
260 dwValue.m_dwDword |= ((pdwStruct->m_dwDword & 0x00FF0000) >> 8);
261 dwValue.m_dwDword |= ((pdwStruct->m_dwDword & 0xFF000000) >> 24); //MSB to LSB
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800262
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800263 return (dwValue.m_dwDword);
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800264
265}
266
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800267//---------------------------------------------------------------------------
268//
269// Function: AmiGetXXXFromLe()
270//
271// Description: reads the specified value from the absolute address in
272// little endian
273//
274// Parameters: pAddr_p = absolute address
275//
276// Returns: XXX = value
277//
278// State:
279//
280//---------------------------------------------------------------------------
281
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700282//------------< read u8 in little endian >---------------------------
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800283/*
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700284u8 AmiGetByteFromLe (void *pAddr_p)
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800285{
286
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700287 return ( *(u8 *)pAddr_p );
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800288
289}
290*/
291
Greg Kroah-Hartmandcf53712009-03-23 12:57:39 -0700292//------------< read u16 in little endian >---------------------------
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800293
Greg Kroah-Hartmandcf53712009-03-23 12:57:39 -0700294u16 AmiGetWordFromLe(void *pAddr_p)
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800295{
Greg Kroah-Hartmanf15a88f2009-03-23 11:44:31 -0700296 twStruct *pwStruct;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800297
Greg Kroah-Hartmanf15a88f2009-03-23 11:44:31 -0700298 pwStruct = (twStruct *) pAddr_p;
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800299 return (pwStruct->m_wWord);
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800300}
301
Greg Kroah-Hartmand539cfb2009-03-23 12:51:37 -0700302//------------< read u32 in little endian >--------------------------
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800303
Greg Kroah-Hartmand539cfb2009-03-23 12:51:37 -0700304u32 AmiGetDwordFromLe(void *pAddr_p)
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800305{
Greg Kroah-Hartmanf15a88f2009-03-23 11:44:31 -0700306 tdwStruct *pdwStruct;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800307
Greg Kroah-Hartmanf15a88f2009-03-23 11:44:31 -0700308 pdwStruct = (tdwStruct *) pAddr_p;
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800309 return (pdwStruct->m_dwDword);
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800310}
311
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800312//---------------------------------------------------------------------------
313//
314// Function: AmiSetDword24ToBe()
315//
316// Description: sets a 24 bit value to a buffer in big endian
317//
318// Parameters: pAddr_p = pointer to destination buffer
319// dwDwordVal_p = value to set
320//
321// Return: void
322//
323// State: not tested
324//
325//---------------------------------------------------------------------------
326
Greg Kroah-Hartmand539cfb2009-03-23 12:51:37 -0700327void AmiSetDword24ToBe(void *pAddr_p, u32 dwDwordVal_p)
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800328{
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700329 ((u8 *) pAddr_p)[0] = ((u8 *) & dwDwordVal_p)[2];
330 ((u8 *) pAddr_p)[1] = ((u8 *) & dwDwordVal_p)[1];
331 ((u8 *) pAddr_p)[2] = ((u8 *) & dwDwordVal_p)[0];
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800332}
333
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800334//---------------------------------------------------------------------------
335//
336// Function: AmiSetDword24ToLe()
337//
338// Description: sets a 24 bit value to a buffer in little endian
339//
340// Parameters: pAddr_p = pointer to destination buffer
341// dwDwordVal_p = value to set
342//
343// Return: void
344//
345// State: not tested
346//
347//---------------------------------------------------------------------------
348
Greg Kroah-Hartmand539cfb2009-03-23 12:51:37 -0700349void AmiSetDword24ToLe(void *pAddr_p, u32 dwDwordVal_p)
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800350{
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700351 ((u8 *) pAddr_p)[0] = ((u8 *) & dwDwordVal_p)[0];
352 ((u8 *) pAddr_p)[1] = ((u8 *) & dwDwordVal_p)[1];
353 ((u8 *) pAddr_p)[2] = ((u8 *) & dwDwordVal_p)[2];
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800354}
355
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800356//---------------------------------------------------------------------------
357//
358// Function: AmiGetDword24FromBe()
359//
360// Description: reads a 24 bit value from a buffer in big endian
361//
362// Parameters: pAddr_p = pointer to source buffer
363//
Greg Kroah-Hartmand539cfb2009-03-23 12:51:37 -0700364// Return: u32 = read value
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800365//
366// State: not tested
367//
368//---------------------------------------------------------------------------
Greg Kroah-Hartmand539cfb2009-03-23 12:51:37 -0700369u32 AmiGetDword24FromBe(void *pAddr_p)
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800370{
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800371 tdwStruct dwStruct;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800372
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800373 dwStruct.m_dwDword = AmiGetDwordFromBe(pAddr_p);
374 dwStruct.m_dwDword >>= 8;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800375
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800376 return (dwStruct.m_dwDword);
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800377}
378
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800379//---------------------------------------------------------------------------
380//
381// Function: AmiGetDword24FromLe()
382//
383// Description: reads a 24 bit value from a buffer in little endian
384//
385// Parameters: pAddr_p = pointer to source buffer
386//
Greg Kroah-Hartmand539cfb2009-03-23 12:51:37 -0700387// Return: u32 = read value
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800388//
389// State: not tested
390//
391//---------------------------------------------------------------------------
Greg Kroah-Hartmand539cfb2009-03-23 12:51:37 -0700392u32 AmiGetDword24FromLe(void *pAddr_p)
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800393{
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800394 tdwStruct dwStruct;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800395
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800396 dwStruct.m_dwDword = AmiGetDwordFromLe(pAddr_p);
397 dwStruct.m_dwDword &= 0x00FFFFFF;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800398
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800399 return (dwStruct.m_dwDword);
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800400}
401
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800402//#ifdef USE_VAR64
403
404//---------------------------------------------------------------------------
405//
406// Function: AmiSetQword64ToBe()
407//
408// Description: sets a 64 bit value to a buffer in big endian
409//
410// Parameters: pAddr_p = pointer to destination buffer
411// qwQwordVal_p = quadruple word value
412//
413// Return: void
414//
415// State: not tested
416//
417//---------------------------------------------------------------------------
Greg Kroah-Hartmana5c30d92009-03-23 12:43:05 -0700418void AmiSetQword64ToBe(void *pAddr_p, u64 qwQwordVal_p)
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800419{
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700420 ((u8 *) pAddr_p)[0] = ((u8 *) & qwQwordVal_p)[7];
421 ((u8 *) pAddr_p)[1] = ((u8 *) & qwQwordVal_p)[6];
422 ((u8 *) pAddr_p)[2] = ((u8 *) & qwQwordVal_p)[5];
423 ((u8 *) pAddr_p)[3] = ((u8 *) & qwQwordVal_p)[4];
424 ((u8 *) pAddr_p)[4] = ((u8 *) & qwQwordVal_p)[3];
425 ((u8 *) pAddr_p)[5] = ((u8 *) & qwQwordVal_p)[2];
426 ((u8 *) pAddr_p)[6] = ((u8 *) & qwQwordVal_p)[1];
427 ((u8 *) pAddr_p)[7] = ((u8 *) & qwQwordVal_p)[0];
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800428}
429
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800430//---------------------------------------------------------------------------
431//
432// Function: AmiSetQword64ToLe()
433//
434// Description: sets a 64 bit value to a buffer in little endian
435//
436// Parameters: pAddr_p = pointer to destination buffer
437// qwQwordVal_p = quadruple word value
438//
439// Return: void
440//
441// State: not tested
442//
443//---------------------------------------------------------------------------
Greg Kroah-Hartmana5c30d92009-03-23 12:43:05 -0700444void AmiSetQword64ToLe(void *pAddr_p, u64 qwQwordVal_p)
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800445{
Greg Kroah-Hartmana5c30d92009-03-23 12:43:05 -0700446 u64 *pqwDst;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800447
Greg Kroah-Hartmana5c30d92009-03-23 12:43:05 -0700448 pqwDst = (u64 *) pAddr_p;
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800449 *pqwDst = qwQwordVal_p;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800450}
451
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800452//---------------------------------------------------------------------------
453//
454// Function: AmiGetQword64FromBe()
455//
456// Description: reads a 64 bit value from a buffer in big endian
457//
458// Parameters: pAddr_p = pointer to source buffer
459//
460// Return: void
461//
462// State: not tested
463//
464//---------------------------------------------------------------------------
Greg Kroah-Hartmana5c30d92009-03-23 12:43:05 -0700465u64 AmiGetQword64FromBe(void *pAddr_p)
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800466{
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800467 tqwStruct qwStruct;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800468
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700469 ((u8 *) & qwStruct.m_qwQword)[0] = ((u8 *) pAddr_p)[7];
470 ((u8 *) & qwStruct.m_qwQword)[1] = ((u8 *) pAddr_p)[6];
471 ((u8 *) & qwStruct.m_qwQword)[2] = ((u8 *) pAddr_p)[5];
472 ((u8 *) & qwStruct.m_qwQword)[3] = ((u8 *) pAddr_p)[4];
473 ((u8 *) & qwStruct.m_qwQword)[4] = ((u8 *) pAddr_p)[3];
474 ((u8 *) & qwStruct.m_qwQword)[5] = ((u8 *) pAddr_p)[2];
475 ((u8 *) & qwStruct.m_qwQword)[6] = ((u8 *) pAddr_p)[1];
476 ((u8 *) & qwStruct.m_qwQword)[7] = ((u8 *) pAddr_p)[0];
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800477
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800478 return (qwStruct.m_qwQword);
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800479}
480
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800481//---------------------------------------------------------------------------
482//
483// Function: AmiGetQword64FromLe()
484//
485// Description: reads a 64 bit value from a buffer in little endian
486//
487// Parameters: pAddr_p = pointer to source buffer
488//
489// Return: void
490//
491// State: not tested
492//
493//---------------------------------------------------------------------------
Greg Kroah-Hartmana5c30d92009-03-23 12:43:05 -0700494u64 AmiGetQword64FromLe(void *pAddr_p)
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800495{
Greg Kroah-Hartmanf15a88f2009-03-23 11:44:31 -0700496 tqwStruct *pqwStruct;
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800497 tqwStruct qwStruct;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800498
Greg Kroah-Hartmanf15a88f2009-03-23 11:44:31 -0700499 pqwStruct = (tqwStruct *) pAddr_p;
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800500 qwStruct.m_qwQword = pqwStruct->m_qwQword;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800501
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800502 return (qwStruct.m_qwQword);
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800503}
504
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800505//---------------------------------------------------------------------------
506//
507// Function: AmiSetQword40ToBe()
508//
509// Description: sets a 40 bit value to a buffer in big endian
510//
511// Parameters: pAddr_p = pointer to destination buffer
512// qwQwordVal_p = quadruple word value
513//
514// Return: void
515//
516// State: not tested
517//
518//---------------------------------------------------------------------------
519
Greg Kroah-Hartmana5c30d92009-03-23 12:43:05 -0700520void AmiSetQword40ToBe(void *pAddr_p, u64 qwQwordVal_p)
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800521{
522
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700523 ((u8 *) pAddr_p)[0] = ((u8 *) & qwQwordVal_p)[4];
524 ((u8 *) pAddr_p)[1] = ((u8 *) & qwQwordVal_p)[3];
525 ((u8 *) pAddr_p)[2] = ((u8 *) & qwQwordVal_p)[2];
526 ((u8 *) pAddr_p)[3] = ((u8 *) & qwQwordVal_p)[1];
527 ((u8 *) pAddr_p)[4] = ((u8 *) & qwQwordVal_p)[0];
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800528
529}
530
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800531//---------------------------------------------------------------------------
532//
533// Function: AmiSetQword40ToLe()
534//
535// Description: sets a 40 bit value to a buffer in little endian
536//
537// Parameters: pAddr_p = pointer to destination buffer
538// qwQwordVal_p = quadruple word value
539//
540// Return: void
541//
542// State: not tested
543//
544//---------------------------------------------------------------------------
545
Greg Kroah-Hartmana5c30d92009-03-23 12:43:05 -0700546void AmiSetQword40ToLe(void *pAddr_p, u64 qwQwordVal_p)
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800547{
548
Greg Kroah-Hartmand539cfb2009-03-23 12:51:37 -0700549 ((u32 *) pAddr_p)[0] = ((u32 *) & qwQwordVal_p)[0];
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700550 ((u8 *) pAddr_p)[4] = ((u8 *) & qwQwordVal_p)[4];
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800551
552}
553
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800554//---------------------------------------------------------------------------
555//
556// Function: AmiGetQword40FromBe()
557//
558// Description: reads a 40 bit value from a buffer in big endian
559//
560// Parameters: pAddr_p = pointer to source buffer
561//
Greg Kroah-Hartmana5c30d92009-03-23 12:43:05 -0700562// Return: u64
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800563//
564// State: not tested
565//
566//---------------------------------------------------------------------------
567
Greg Kroah-Hartmana5c30d92009-03-23 12:43:05 -0700568u64 AmiGetQword40FromBe(void *pAddr_p)
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800569{
570
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800571 tqwStruct qwStruct;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800572
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800573 qwStruct.m_qwQword = AmiGetQword64FromBe(pAddr_p);
574 qwStruct.m_qwQword >>= 24;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800575
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800576 return (qwStruct.m_qwQword);
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800577
578}
579
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800580//---------------------------------------------------------------------------
581//
582// Function: AmiGetQword40FromLe()
583//
584// Description: reads a 40 bit value from a buffer in little endian
585//
586// Parameters: pAddr_p = pointer to source buffer
587//
Greg Kroah-Hartmana5c30d92009-03-23 12:43:05 -0700588// Return: u64
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800589//
590// State: not tested
591//
592//---------------------------------------------------------------------------
593
Greg Kroah-Hartmana5c30d92009-03-23 12:43:05 -0700594u64 AmiGetQword40FromLe(void *pAddr_p)
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800595{
596
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800597 tqwStruct qwStruct;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800598
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800599 qwStruct.m_qwQword = AmiGetQword64FromLe(pAddr_p);
600 qwStruct.m_qwQword &= 0x000000FFFFFFFFFFLL;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800601
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800602 return (qwStruct.m_qwQword);
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800603
604}
605
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800606//---------------------------------------------------------------------------
607//
608// Function: AmiSetQword48ToBe()
609//
610// Description: sets a 48 bit value to a buffer in big endian
611//
612// Parameters: pAddr_p = pointer to destination buffer
613// qwQwordVal_p = quadruple word value
614//
615// Return: void
616//
617// State: not tested
618//
619//---------------------------------------------------------------------------
620
Greg Kroah-Hartmana5c30d92009-03-23 12:43:05 -0700621void AmiSetQword48ToBe(void *pAddr_p, u64 qwQwordVal_p)
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800622{
623
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700624 ((u8 *) pAddr_p)[0] = ((u8 *) & qwQwordVal_p)[5];
625 ((u8 *) pAddr_p)[1] = ((u8 *) & qwQwordVal_p)[4];
626 ((u8 *) pAddr_p)[2] = ((u8 *) & qwQwordVal_p)[3];
627 ((u8 *) pAddr_p)[3] = ((u8 *) & qwQwordVal_p)[2];
628 ((u8 *) pAddr_p)[4] = ((u8 *) & qwQwordVal_p)[1];
629 ((u8 *) pAddr_p)[5] = ((u8 *) & qwQwordVal_p)[0];
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800630
631}
632
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800633//---------------------------------------------------------------------------
634//
635// Function: AmiSetQword48ToLe()
636//
637// Description: sets a 48 bit value to a buffer in little endian
638//
639// Parameters: pAddr_p = pointer to destination buffer
640// qwQwordVal_p = quadruple word value
641//
642// Return: void
643//
644// State: not tested
645//
646//---------------------------------------------------------------------------
647
Greg Kroah-Hartmana5c30d92009-03-23 12:43:05 -0700648void AmiSetQword48ToLe(void *pAddr_p, u64 qwQwordVal_p)
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800649{
650
Greg Kroah-Hartmand539cfb2009-03-23 12:51:37 -0700651 ((u32 *) pAddr_p)[0] = ((u32 *) & qwQwordVal_p)[0];
Greg Kroah-Hartmandcf53712009-03-23 12:57:39 -0700652 ((u16 *) pAddr_p)[2] = ((u16 *) & qwQwordVal_p)[2];
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800653
654}
655
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800656//---------------------------------------------------------------------------
657//
658// Function: AmiGetQword48FromBe()
659//
660// Description: reads a 48 bit value from a buffer in big endian
661//
662// Parameters: pAddr_p = pointer to source buffer
663//
Greg Kroah-Hartmana5c30d92009-03-23 12:43:05 -0700664// Return: u64
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800665//
666// State: not tested
667//
668//---------------------------------------------------------------------------
669
Greg Kroah-Hartmana5c30d92009-03-23 12:43:05 -0700670u64 AmiGetQword48FromBe(void *pAddr_p)
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800671{
672
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800673 tqwStruct qwStruct;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800674
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800675 qwStruct.m_qwQword = AmiGetQword64FromBe(pAddr_p);
676 qwStruct.m_qwQword >>= 16;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800677
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800678 return (qwStruct.m_qwQword);
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800679
680}
681
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800682//---------------------------------------------------------------------------
683//
684// Function: AmiGetQword48FromLe()
685//
686// Description: reads a 48 bit value from a buffer in little endian
687//
688// Parameters: pAddr_p = pointer to source buffer
689//
Greg Kroah-Hartmana5c30d92009-03-23 12:43:05 -0700690// Return: u64
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800691//
692// State: not tested
693//
694//---------------------------------------------------------------------------
695
Greg Kroah-Hartmana5c30d92009-03-23 12:43:05 -0700696u64 AmiGetQword48FromLe(void *pAddr_p)
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800697{
698
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800699 tqwStruct qwStruct;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800700
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800701 qwStruct.m_qwQword = AmiGetQword64FromLe(pAddr_p);
702 qwStruct.m_qwQword &= 0x0000FFFFFFFFFFFFLL;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800703
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800704 return (qwStruct.m_qwQword);
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800705
706}
707
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800708//---------------------------------------------------------------------------
709//
710// Function: AmiSetQword56ToBe()
711//
712// Description: sets a 56 bit value to a buffer in big endian
713//
714// Parameters: pAddr_p = pointer to destination buffer
715// qwQwordVal_p = quadruple word value
716//
717// Return: void
718//
719// State: not tested
720//
721//---------------------------------------------------------------------------
722
Greg Kroah-Hartmana5c30d92009-03-23 12:43:05 -0700723void AmiSetQword56ToBe(void *pAddr_p, u64 qwQwordVal_p)
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800724{
725
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700726 ((u8 *) pAddr_p)[0] = ((u8 *) & qwQwordVal_p)[6];
727 ((u8 *) pAddr_p)[1] = ((u8 *) & qwQwordVal_p)[5];
728 ((u8 *) pAddr_p)[2] = ((u8 *) & qwQwordVal_p)[4];
729 ((u8 *) pAddr_p)[3] = ((u8 *) & qwQwordVal_p)[3];
730 ((u8 *) pAddr_p)[4] = ((u8 *) & qwQwordVal_p)[2];
731 ((u8 *) pAddr_p)[5] = ((u8 *) & qwQwordVal_p)[1];
732 ((u8 *) pAddr_p)[6] = ((u8 *) & qwQwordVal_p)[0];
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800733
734}
735
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800736//---------------------------------------------------------------------------
737//
738// Function: AmiSetQword56ToLe()
739//
740// Description: sets a 56 bit value to a buffer in little endian
741//
742// Parameters: pAddr_p = pointer to destination buffer
743// qwQwordVal_p = quadruple word value
744//
745// Return: void
746//
747// State: not tested
748//
749//---------------------------------------------------------------------------
750
Greg Kroah-Hartmana5c30d92009-03-23 12:43:05 -0700751void AmiSetQword56ToLe(void *pAddr_p, u64 qwQwordVal_p)
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800752{
753
Greg Kroah-Hartmand539cfb2009-03-23 12:51:37 -0700754 ((u32 *) pAddr_p)[0] = ((u32 *) & qwQwordVal_p)[0];
Greg Kroah-Hartmandcf53712009-03-23 12:57:39 -0700755 ((u16 *) pAddr_p)[2] = ((u16 *) & qwQwordVal_p)[2];
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700756 ((u8 *) pAddr_p)[6] = ((u8 *) & qwQwordVal_p)[6];
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800757
758}
759
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800760//---------------------------------------------------------------------------
761//
762// Function: AmiGetQword56FromBe()
763//
764// Description: reads a 56 bit value from a buffer in big endian
765//
766// Parameters: pAddr_p = pointer to source buffer
767//
Greg Kroah-Hartmana5c30d92009-03-23 12:43:05 -0700768// Return: u64
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800769//
770// State: not tested
771//
772//---------------------------------------------------------------------------
773
Greg Kroah-Hartmana5c30d92009-03-23 12:43:05 -0700774u64 AmiGetQword56FromBe(void *pAddr_p)
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800775{
776
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800777 tqwStruct qwStruct;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800778
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800779 qwStruct.m_qwQword = AmiGetQword64FromBe(pAddr_p);
780 qwStruct.m_qwQword >>= 8;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800781
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800782 return (qwStruct.m_qwQword);
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800783
784}
785
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800786//---------------------------------------------------------------------------
787//
788// Function: AmiGetQword56FromLe()
789//
790// Description: reads a 56 bit value from a buffer in little endian
791//
792// Parameters: pAddr_p = pointer to source buffer
793//
Greg Kroah-Hartmana5c30d92009-03-23 12:43:05 -0700794// Return: u64
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800795//
796// State: not tested
797//
798//---------------------------------------------------------------------------
799
Greg Kroah-Hartmana5c30d92009-03-23 12:43:05 -0700800u64 AmiGetQword56FromLe(void *pAddr_p)
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800801{
802
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800803 tqwStruct qwStruct;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800804
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800805 qwStruct.m_qwQword = AmiGetQword64FromLe(pAddr_p);
806 qwStruct.m_qwQword &= 0x00FFFFFFFFFFFFFFLL;
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800807
Greg Kroah-Hartman833dfbe2008-12-19 17:11:52 -0800808 return (qwStruct.m_qwQword);
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800809
810}
811
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800812//---------------------------------------------------------------------------
813//
814// Function: AmiSetTimeOfDay()
815//
816// Description: sets a TIME_OF_DAY (CANopen) value to a buffer
817//
818// Parameters: pAddr_p = pointer to destination buffer
819// pTimeOfDay_p = pointer to struct TIME_OF_DAY
820//
821// Return: void
822//
823// State: not tested
824//
825//---------------------------------------------------------------------------
826
Greg Kroah-Hartmanf15a88f2009-03-23 11:44:31 -0700827void AmiSetTimeOfDay(void *pAddr_p, tTimeOfDay *pTimeOfDay_p)
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800828{
829
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700830 AmiSetDwordToLe(((u8 *) pAddr_p), pTimeOfDay_p->m_dwMs & 0x0FFFFFFF);
831 AmiSetWordToLe(((u8 *) pAddr_p) + 4, pTimeOfDay_p->m_wDays);
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800832
833}
834
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800835//---------------------------------------------------------------------------
836//
837// Function: AmiGetTimeOfDay()
838//
839// Description: reads a TIME_OF_DAY (CANopen) value from a buffer
840//
841// Parameters: pAddr_p = pointer to source buffer
842// pTimeOfDay_p = pointer to struct TIME_OF_DAY
843//
844// Return: void
845//
846// State: not tested
847//
848//---------------------------------------------------------------------------
849
Greg Kroah-Hartmanf15a88f2009-03-23 11:44:31 -0700850void AmiGetTimeOfDay(void *pAddr_p, tTimeOfDay *pTimeOfDay_p)
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800851{
852
Greg Kroah-Hartman2ed53cf2009-03-23 12:36:38 -0700853 pTimeOfDay_p->m_dwMs = AmiGetDwordFromLe(((u8 *) pAddr_p)) & 0x0FFFFFFF;
854 pTimeOfDay_p->m_wDays = AmiGetWordFromLe(((u8 *) pAddr_p) + 4);
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800855
856}
857
Daniel Krueger9d7164c2008-12-19 11:41:57 -0800858// EOF
859
860// Die letzte Zeile muß unbedingt eine leere Zeile sein, weil manche Compiler
861// damit ein Problem haben, wenn das nicht so ist (z.B. GNU oder Borland C++ Builder).