@@ -14,21 +14,13 @@ Copyright (C) 2008, 2009 Hector Martin "marcan" <
[email protected] >
14
14
static inline u32 read32 (u32 addr )
15
15
{
16
16
u32 data ;
17
- #ifdef __THUMBEB__
18
17
__asm__ volatile ("ldr\t%0, [%1]" : "=l" (data ) : "l" (addr ));
19
- #else
20
- __asm__ volatile ("ldr\t%0, [%1]" : "=r" (data ) : "r" (addr ));
21
- #endif
22
18
return data ;
23
19
}
24
20
25
21
static inline void write32 (u32 addr , u32 data )
26
22
{
27
- #ifdef __THUMBEB__
28
23
__asm__ volatile ("str\t%0, [%1]" : : "l" (data ), "l" (addr ));
29
- #else
30
- __asm__ volatile ("str\t%0, [%1]" : : "r" (data ), "r" (addr ));
31
- #endif
32
24
}
33
25
34
26
static inline u32 set32 (u32 addr , u32 set )
@@ -38,13 +30,8 @@ static inline u32 set32(u32 addr, u32 set)
38
30
"ldr\t%0, [%1]\n"
39
31
"\torr\t%0, %2\n"
40
32
"\tstr\t%0, [%1]"
41
- #ifdef __THUMBEB__
42
33
: "=&l" (data )
43
34
: "l" (addr ), "l" (set )
44
- #else
45
- : "=&r" (data )
46
- : "r " (addr ), "r" (set )
47
- #endif
48
35
);
49
36
return data ;
50
37
}
@@ -56,13 +43,8 @@ static inline u32 clear32(u32 addr, u32 clear)
56
43
"ldr\t%0, [%1]\n"
57
44
"\tbic\t%0, %2\n"
58
45
"\tstr\t%0, [%1]"
59
- #ifdef __THUMBEB__
60
46
: "=&l" (data )
61
47
: "l" (addr ), "l" (clear )
62
- #else
63
- : "=&r" (data )
64
- : "r " (addr ), "r" (clear )
65
- #endif
66
48
);
67
49
return data ;
68
50
}
@@ -76,35 +58,22 @@ static inline u32 mask32(u32 addr, u32 clear, u32 set)
76
58
"\tbic\t%0, %3\n"
77
59
"\torr\t%0, %2\n"
78
60
"\tstr\t%0, [%1]"
79
- #ifdef __THUMBEB__
80
61
: "=&l" (data )
81
62
: "l" (addr ), "l" (set ), "l" (clear )
82
- #else
83
- : "=&r" (data )
84
- : "r " (addr ), "r" (set ), "r" (clear )
85
- #endif
86
63
);
87
64
return data ;
88
65
}
89
66
90
67
static inline u16 read16 (u32 addr )
91
68
{
92
69
u32 data ;
93
- #ifdef __THUMBEB__
94
70
__asm__ volatile ("ldrh\t%0, [%1]" : "=l" (data ) : "l" (addr ));
95
- #else
96
- __asm__ volatile ("ldrh\t%0, [%1]" : "=r" (data ) : "r" (addr ));
97
- #endif
98
71
return data ;
99
72
}
100
73
101
74
static inline void write16 (u32 addr , u16 data )
102
75
{
103
- #ifdef __THUMBEB__
104
76
__asm__ volatile ("strh\t%0, [%1]" : : "l" (data ), "l" (addr ));
105
- #else
106
- __asm__ volatile ("strh\t%0, [%1]" : : "r" (data ), "r" (addr ));
107
- #endif
108
77
}
109
78
110
79
static inline u16 set16 (u32 addr , u16 set )
@@ -114,13 +83,8 @@ static inline u16 set16(u32 addr, u16 set)
114
83
"ldrh\t%0, [%1]\n"
115
84
"\torr\t%0, %2\n"
116
85
"\tstrh\t%0, [%1]"
117
- #ifdef __THUMBEB__
118
86
: "=&l" (data )
119
87
: "l" (addr ), "l" (set )
120
- #else
121
- : "=&r" (data )
122
- : "r " (addr ), "r" (set )
123
- #endif
124
88
125
89
);
126
90
return data ;
@@ -133,13 +97,8 @@ static inline u16 clear16(u32 addr, u16 clear)
133
97
"ldrh\t%0, [%1]\n"
134
98
"\tbic\t%0, %2\n"
135
99
"\tstrh\t%0, [%1]"
136
- #ifdef __THUMBEB__
137
100
: "=&l" (data )
138
101
: "l" (addr ), "l" (clear )
139
- #else
140
- : "=&r" (data )
141
- : "r " (addr ), "r" (clear )
142
- #endif
143
102
);
144
103
return data ;
145
104
}
@@ -153,35 +112,22 @@ static inline u16 mask16(u32 addr, u16 clear, u16 set)
153
112
"\tbic\t%0, %3\n"
154
113
"\torr\t%0, %2\n"
155
114
"\tstrh\t%0, [%1]"
156
- #ifdef __THUMBEB__
157
115
: "=&l" (data )
158
116
: "l" (addr ), "l" (set ), "l" (clear )
159
- #else
160
- : "=&r" (data )
161
- : "r " (addr ), "r" (set ), "r" (clear )
162
- #endif
163
117
);
164
118
return data ;
165
119
}
166
120
167
121
static inline u8 read8 (u32 addr )
168
122
{
169
123
u32 data ;
170
- #ifdef __THUMBEB__
171
124
__asm__ volatile ("ldrb\t%0, [%1]" : "=l" (data ) : "l" (addr ));
172
- #else
173
- __asm__ volatile ("ldrb\t%0, [%1]" : "=r" (data ) : "r" (addr ));
174
- #endif
175
125
return data ;
176
126
}
177
127
178
128
static inline void write8 (u32 addr , u8 data )
179
129
{
180
- #ifdef __THUMBEB__
181
130
__asm__ volatile ("strb\t%0, [%1]" : : "l" (data ), "l" (addr ));
182
- #else
183
- __asm__ volatile ("strb\t%0, [%1]" : : "r" (data ), "r" (addr ));
184
- #endif
185
131
}
186
132
187
133
static inline u8 set8 (u32 addr , u8 set )
@@ -191,13 +137,8 @@ static inline u8 set8(u32 addr, u8 set)
191
137
"ldrb\t%0, [%1]\n"
192
138
"\torr\t%0, %2\n"
193
139
"\tstrb\t%0, [%1]"
194
- #ifdef __THUMBEB__
195
140
: "=&l" (data )
196
141
: "l" (addr ), "l" (set )
197
- #else
198
- : "=&r" (data )
199
- : "r " (addr ), "r" (set )
200
- #endif
201
142
);
202
143
return data ;
203
144
}
@@ -209,13 +150,8 @@ static inline u8 clear8(u32 addr, u8 clear)
209
150
"ldrb\t%0, [%1]\n"
210
151
"\tbic\t%0, %2\n"
211
152
"\tstrb\t%0, [%1]"
212
- #ifdef __THUMBEB__
213
153
: "=&l" (data )
214
154
: "l" (addr ), "l" (clear )
215
- #else
216
- : "=&r" (data )
217
- : "r " (addr ), "r" (clear )
218
- #endif
219
155
);
220
156
return data ;
221
157
}
@@ -228,13 +164,8 @@ static inline u8 mask8(u32 addr, u8 clear, u8 set)
228
164
"\tbic\t%0, %3\n"
229
165
"\torr\t%0, %2\n"
230
166
"\tstrb\t%0, [%1]"
231
- #ifdef __THUMBEB__
232
167
: "=&l" (data )
233
168
: "l" (addr ), "l" (set ), "l" (clear )
234
- #else
235
- : "=&r" (data )
236
- : "r " (addr ), "r" (set ), "r" (clear )
237
- #endif
238
169
);
239
170
return data ;
240
171
}
0 commit comments