RTEMS
5.0.0
Main Page
Related Pages
Modules
+
Data Structures
Data Structures
Data Structure Index
+
Data Fields
+
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
+
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
+
Files
File List
+
Globals
+
All
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
+
Functions
_
a
b
c
d
e
f
g
h
i
l
m
n
o
p
q
r
s
t
u
v
w
x
z
+
Variables
_
a
b
c
d
e
f
g
i
l
m
n
o
p
r
s
t
v
w
+
Typedefs
a
b
c
d
e
f
g
h
i
l
m
o
p
q
r
s
t
u
v
w
x
+
Enumerations
a
b
c
e
h
i
l
m
o
p
q
r
s
t
w
+
Enumerator
a
c
d
i
l
m
p
r
s
t
w
+
Macros
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
•
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Modules
Pages
bsps
powerpc
include
libcpu
byteorder.h
1
/*
2
* byteorder.h
3
*
4
* This file contains inline implementation of function to
5
* deal with endian conversion.
6
*
7
* It is a stripped down version of linux ppc file...
8
*
9
* Copyright (C) 1999 Eric Valette (valette@crf.canon.fr)
10
* Canon Centre Recherche France.
11
*
12
* The license and distribution terms for this file may be
13
* found in the file LICENSE in this distribution or at
14
* http://www.rtems.org/license/LICENSE.
15
*/
16
17
#ifndef _LIBCPU_BYTEORDER_H
18
#define _LIBCPU_BYTEORDER_H
19
20
#ifdef __cplusplus
21
extern
"C"
{
22
#endif
23
24
static
inline
unsigned
ld_le16(
volatile
uint16_t *addr)
25
{
26
unsigned
val;
27
28
__asm__
volatile
(
"lhbrx %0,0,%1"
:
"=r"
(val) :
"r"
(addr),
"m"
(*addr));
29
return
val;
30
}
31
32
static
inline
void
st_le16(
volatile
uint16_t *addr,
unsigned
val)
33
{
34
__asm__
volatile
(
"sthbrx %1,0,%2"
:
"=m"
(*addr) :
"r"
(val),
"r"
(addr));
35
}
36
37
static
inline
unsigned
ld_le32(
volatile
uint32_t *addr)
38
{
39
unsigned
val;
40
41
__asm__
volatile
(
"lwbrx %0,0,%1"
:
"=r"
(val) :
"r"
(addr),
"m"
(*addr));
42
return
val;
43
}
44
45
static
inline
void
st_le32(
volatile
uint32_t *addr,
unsigned
val)
46
{
47
__asm__
volatile
(
"stwbrx %1,0,%2"
:
"=m"
(*addr) :
"r"
(val),
"r"
(addr));
48
}
49
50
#ifdef __cplusplus
51
}
52
#endif
53
54
#endif
/* _LIBCPU_BYTEORDER_H */
__asm__
register struct Per_CPU_Control *_SPARC_Per_CPU_current __asm__("g6")
The pointer to the current per-CPU control is available via register g6.
Generated by
1.8.13