diff options
Diffstat (limited to 'apps/plugins')
-rw-r--r-- | apps/plugins/rockboy/lcd.c | 119 |
1 files changed, 117 insertions, 2 deletions
diff --git a/apps/plugins/rockboy/lcd.c b/apps/plugins/rockboy/lcd.c index 9a7ead798f..872311d0e6 100644 --- a/apps/plugins/rockboy/lcd.c +++ b/apps/plugins/rockboy/lcd.c | |||
@@ -41,7 +41,11 @@ struct scan scan IDATA_ATTR; | |||
41 | #define WT (scan.wt) | 41 | #define WT (scan.wt) |
42 | #define WV (scan.wv) | 42 | #define WV (scan.wv) |
43 | 43 | ||
44 | byte patpix[4096][8][8]; | 44 | byte patpix[4096][8][8] |
45 | #if CONFIG_CPU == MCF5249 && !defined(SIMULATOR) | ||
46 | __attribute__ ((aligned(16))) /* to profit from burst mode */ | ||
47 | #endif | ||
48 | ; | ||
45 | byte patdirty[1024]; | 49 | byte patdirty[1024]; |
46 | byte anydirty; | 50 | byte anydirty; |
47 | 51 | ||
@@ -96,7 +100,7 @@ static byte *vdest; | |||
96 | void updatepatpix(void) | 100 | void updatepatpix(void) |
97 | { | 101 | { |
98 | int i, j; | 102 | int i, j; |
99 | #if CONFIG_CPU != SH7034 || defined(SIMULATOR) | 103 | #if ((CONFIG_CPU != SH7034) && (CONFIG_CPU != MCF5249)) || defined(SIMULATOR) |
100 | int k, a, c; | 104 | int k, a, c; |
101 | #endif | 105 | #endif |
102 | byte *vram = lcd.vbank[0]; | 106 | byte *vram = lcd.vbank[0]; |
@@ -179,6 +183,70 @@ void updatepatpix(void) | |||
179 | : /* clobbers */ | 183 | : /* clobbers */ |
180 | "r0", "r1", "r2" | 184 | "r0", "r1", "r2" |
181 | ); | 185 | ); |
186 | #elif CONFIG_CPU == MCF5249 && !defined(SIMULATOR) | ||
187 | asm volatile ( | ||
188 | "move.b (%2),%%d2 \n" | ||
189 | "move.b (1,%2),%%d1 \n" | ||
190 | |||
191 | "addq.l #8,%1 \n" | ||
192 | "clr.l %%d0 \n" | ||
193 | "lsr.l #1,%%d1 \n" | ||
194 | "addx.l %%d0,%%d0 \n" | ||
195 | "lsr.l #1,%%d2 \n" | ||
196 | "addx.l %%d0,%%d0 \n" | ||
197 | "move.b %%d0,-(%1) \n" | ||
198 | "lsl.l #6,%%d0 \n" | ||
199 | "lsr.l #1,%%d1 \n" | ||
200 | "addx.l %%d0,%%d0 \n" | ||
201 | "lsr.l #1,%%d2 \n" | ||
202 | "addx.l %%d0,%%d0 \n" | ||
203 | "move.b %%d0,-(%1) \n" | ||
204 | "lsl.l #6,%%d0 \n" | ||
205 | "lsr.l #1,%%d1 \n" | ||
206 | "addx.l %%d0,%%d0 \n" | ||
207 | "lsr.l #1,%%d2 \n" | ||
208 | "addx.l %%d0,%%d0 \n" | ||
209 | "move.b %%d0,-(%1) \n" | ||
210 | "lsl.l #6,%%d0 \n" | ||
211 | "lsr.l #1,%%d1 \n" | ||
212 | "addx.l %%d0,%%d0 \n" | ||
213 | "lsr.l #1,%%d2 \n" | ||
214 | "addx.l %%d0,%%d0 \n" | ||
215 | "move.l %%d0,(%0) \n" | ||
216 | "move.b %%d0,-(%1) \n" | ||
217 | "clr.l %%d0 \n" | ||
218 | "lsr.l #1,%%d1 \n" | ||
219 | "addx.l %%d0,%%d0 \n" | ||
220 | "lsr.l #1,%%d2 \n" | ||
221 | "addx.l %%d0,%%d0 \n" | ||
222 | "move.b %%d0,-(%1) \n" | ||
223 | "lsl.l #6,%%d0 \n" | ||
224 | "lsr.l #1,%%d1 \n" | ||
225 | "addx.l %%d0,%%d0 \n" | ||
226 | "lsr.l #1,%%d2 \n" | ||
227 | "addx.l %%d0,%%d0 \n" | ||
228 | "move.b %%d0,-(%1) \n" | ||
229 | "lsl.l #6,%%d0 \n" | ||
230 | "lsr.l #1,%%d1 \n" | ||
231 | "addx.l %%d0,%%d0 \n" | ||
232 | "lsr.l #1,%%d2 \n" | ||
233 | "addx.l %%d0,%%d0 \n" | ||
234 | "move.b %%d0,-(%1) \n" | ||
235 | "lsl.l #6,%%d0 \n" | ||
236 | "lsr.l #1,%%d1 \n" | ||
237 | "addx.l %%d0,%%d0 \n" | ||
238 | "lsr.l #1,%%d2 \n" | ||
239 | "addx.l %%d0,%%d0 \n" | ||
240 | "move.l %%d0,(4,%0) \n" | ||
241 | "move.b %%d0,-(%1) \n" | ||
242 | : /* outputs */ | ||
243 | : /* inputs */ | ||
244 | /* %0 */ "a"(patpix[i+1024][j]), | ||
245 | /* %1 */ "a"(patpix[i][j]), | ||
246 | /* %2 */ "a"(&vram[(i<<4)|(j<<1)]) | ||
247 | : /* clobbers */ | ||
248 | "d0", "d1", "d2" | ||
249 | ); | ||
182 | #else | 250 | #else |
183 | a = ((i<<4) | (j<<1)); | 251 | a = ((i<<4) | (j<<1)); |
184 | for (k = 0; k < 8; k++) | 252 | for (k = 0; k < 8; k++) |
@@ -270,6 +338,53 @@ void updatepatpix(void) | |||
270 | : /* clobbers */ | 338 | : /* clobbers */ |
271 | "r0", "r1" | 339 | "r0", "r1" |
272 | ); | 340 | ); |
341 | #elif CONFIG_CPU == MCF5249 && !defined(SIMULATOR) | ||
342 | asm volatile ( | ||
343 | "movem.l (%0),%%d0-%%d3 \n" | ||
344 | "move.l %%d0,%%d4 \n" | ||
345 | "move.l %%d1,%%d5 \n" | ||
346 | "movem.l %%d2-%%d5,(48,%1) \n" | ||
347 | "movem.l (16,%0),%%d0-%%d3 \n" | ||
348 | "move.l %%d0,%%d4 \n" | ||
349 | "move.l %%d1,%%d5 \n" | ||
350 | "movem.l %%d2-%%d5,(32,%1) \n" | ||
351 | "movem.l (32,%0),%%d0-%%d3 \n" | ||
352 | "move.l %%d0,%%d4 \n" | ||
353 | "move.l %%d1,%%d5 \n" | ||
354 | "movem.l %%d2-%%d5,(16,%1) \n" | ||
355 | "movem.l (48,%0),%%d0-%%d3 \n" | ||
356 | "move.l %%d0,%%d4 \n" | ||
357 | "move.l %%d1,%%d5 \n" | ||
358 | "movem.l %%d2-%%d5,(%1) \n" | ||
359 | |||
360 | "move.l %2,%%d0 \n" | ||
361 | "add.l %%d0,%0 \n" | ||
362 | "add.l %%d0,%1 \n" | ||
363 | |||
364 | "movem.l (%0),%%d0-%%d3 \n" | ||
365 | "move.l %%d0,%%d4 \n" | ||
366 | "move.l %%d1,%%d5 \n" | ||
367 | "movem.l %%d2-%%d5,(48,%1) \n" | ||
368 | "movem.l (16,%0),%%d0-%%d3 \n" | ||
369 | "move.l %%d0,%%d4 \n" | ||
370 | "move.l %%d1,%%d5 \n" | ||
371 | "movem.l %%d2-%%d5,(32,%1) \n" | ||
372 | "movem.l (32,%0),%%d0-%%d3 \n" | ||
373 | "move.l %%d0,%%d4 \n" | ||
374 | "move.l %%d1,%%d5 \n" | ||
375 | "movem.l %%d2-%%d5,(16,%1) \n" | ||
376 | "movem.l (48,%0),%%d0-%%d3 \n" | ||
377 | "move.l %%d0,%%d4 \n" | ||
378 | "move.l %%d1,%%d5 \n" | ||
379 | "movem.l %%d2-%%d5,(%1) \n" | ||
380 | : /* outputs */ | ||
381 | : /* inputs */ | ||
382 | /* %0 */ "a"(patpix[i][0]), | ||
383 | /* %1 */ "a"(patpix[i+2048][0]), | ||
384 | /* %2 */ "i"(1024*64) | ||
385 | : /* clobbers */ | ||
386 | "d0", "d1", "d2", "d3", "d4", "d5" | ||
387 | ); | ||
273 | #else | 388 | #else |
274 | for (j = 0; j < 8; j++) | 389 | for (j = 0; j < 8; j++) |
275 | { | 390 | { |