summaryrefslogtreecommitdiff
path: root/apps/plugins/lib
diff options
context:
space:
mode:
authorSolomon Peachy <pizza@shaftnet.org>2020-07-15 19:40:55 -0400
committerSolomon Peachy <pizza@shaftnet.org>2020-07-24 21:20:13 +0000
commit092c340a2062fa98b7387fc5fd63578ddae7d0b6 (patch)
tree98ec96946eeb2ae709cb0528cc6998e21bb9b290 /apps/plugins/lib
parent17f7cc92c258bc456a27c3e7c5a19c9409851879 (diff)
downloadrockbox-092c340a2062fa98b7387fc5fd63578ddae7d0b6.tar.gz
rockbox-092c340a2062fa98b7387fc5fd63578ddae7d0b6.zip
[1/4] Remove SH support and all archos targets
This removes all code specific to SH targets Change-Id: I7980523785d2596e65c06430f4638eec74a06061
Diffstat (limited to 'apps/plugins/lib')
-rw-r--r--apps/plugins/lib/SOURCES2
-rw-r--r--apps/plugins/lib/grey_core.c30
-rw-r--r--apps/plugins/lib/grey_draw.c3
-rw-r--r--apps/plugins/lib/grey_sh.S137
-rw-r--r--apps/plugins/lib/helper.c14
-rw-r--r--apps/plugins/lib/pluginlib_actions.c39
-rw-r--r--apps/plugins/lib/xlcd_scroll.c143
7 files changed, 4 insertions, 364 deletions
diff --git a/apps/plugins/lib/SOURCES b/apps/plugins/lib/SOURCES
index 1149f35bac..82b9fba4a5 100644
--- a/apps/plugins/lib/SOURCES
+++ b/apps/plugins/lib/SOURCES
@@ -21,8 +21,6 @@ grey_scroll.c
21 21
22#ifdef CPU_COLDFIRE 22#ifdef CPU_COLDFIRE
23grey_coldfire.S 23grey_coldfire.S
24#elif CONFIG_CPU == SH7034
25grey_sh.S
26#endif 24#endif
27 25
28#endif /* HAVE_LCD_BITMAP && LCD_DEPTH < 4 */ 26#endif /* HAVE_LCD_BITMAP && LCD_DEPTH < 4 */
diff --git a/apps/plugins/lib/grey_core.c b/apps/plugins/lib/grey_core.c
index bb6823522d..55d0684103 100644
--- a/apps/plugins/lib/grey_core.c
+++ b/apps/plugins/lib/grey_core.c
@@ -36,35 +36,7 @@
36 36
37#ifndef SIMULATOR 37#ifndef SIMULATOR
38 38
39#if defined ARCHOS_RECORDER /* verified */ \ 39#if defined IAUDIO_M3 /* verified */
40 || defined ARCHOS_FMRECORDER /* should be identical */ \
41 || defined ARCHOS_RECORDERV2 /* should be identical */ \
42 || defined ARCHOS_ONDIOFM /* verified */ \
43 || defined ARCHOS_ONDIOSP /* verified */
44/* Average measurements of a Recorder v1, an Ondio FM, a backlight-modded
45 * Ondio FM, and an Ondio SP. */
46static const unsigned char lcdlinear[256] = {
47 5, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 29, 31, 33, 35,
48 37, 39, 40, 42, 43, 45, 46, 48, 49, 50, 51, 53, 54, 55, 57, 58,
49 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 68, 69, 70, 71, 71, 72,
50 73, 74, 74, 75, 76, 77, 77, 78, 79, 79, 80, 80, 81, 81, 82, 82,
51 83, 84, 84, 85, 86, 86, 87, 87, 88, 88, 89, 89, 90, 90, 91, 91,
52 92, 92, 93, 93, 94, 94, 95, 95, 96, 96, 97, 98, 98, 99, 100, 100,
53101, 101, 102, 103, 103, 104, 105, 105, 106, 106, 107, 107, 108, 108, 109, 109,
54110, 110, 111, 112, 112, 113, 114, 114, 115, 115, 116, 117, 117, 118, 119, 119,
55120, 120, 121, 122, 123, 123, 124, 125, 126, 126, 127, 128, 129, 129, 130, 131,
56132, 132, 133, 134, 135, 135, 136, 137, 138, 138, 139, 140, 140, 141, 141, 142,
57143, 144, 145, 146, 147, 147, 148, 149, 150, 151, 152, 153, 154, 154, 155, 156,
58157, 158, 159, 160, 161, 161, 162, 163, 164, 165, 166, 167, 168, 168, 169, 170,
59171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 184, 185, 186, 187,
60188, 189, 191, 192, 194, 195, 197, 198, 199, 200, 202, 203, 204, 205, 207, 208,
61209, 210, 212, 213, 215, 216, 218, 219, 220, 221, 222, 223, 225, 226, 227, 228,
62229, 230, 232, 233, 234, 235, 237, 238, 239, 240, 242, 243, 244, 246, 247, 248
63};
64/* The actual LCD scanrate varies a lot with temperature on these targets */
65#define LCD_SCANRATE 67 /* Hz */
66
67#elif defined IAUDIO_M3 /* verified */
68/* Average measurements of 2 iAudio remotes connected to an M3. */ 40/* Average measurements of 2 iAudio remotes connected to an M3. */
69static const unsigned char lcdlinear[256] = { 41static const unsigned char lcdlinear[256] = {
70 5, 9, 13, 17, 21, 26, 30, 34, 38, 42, 46, 50, 54, 58, 62, 66, 42 5, 9, 13, 17, 21, 26, 30, 34, 38, 42, 46, 50, 54, 58, 62, 66,
diff --git a/apps/plugins/lib/grey_draw.c b/apps/plugins/lib/grey_draw.c
index 64dabc2fb3..298ffbe16e 100644
--- a/apps/plugins/lib/grey_draw.c
+++ b/apps/plugins/lib/grey_draw.c
@@ -758,8 +758,7 @@ void grey_ub_gray_bitmap_part(const unsigned char *src, int src_x, int src_y,
758 + (~yc & _GREY_BMASK); 758 + (~yc & _GREY_BMASK);
759#endif /* LCD_PIXELFORMAT */ 759#endif /* LCD_PIXELFORMAT */
760 760
761#if ((LCD_PIXELFORMAT == VERTICAL_PACKING) && (LCD_DEPTH == 1) && (CONFIG_CPU == SH7034)) \ 761#if ((LCD_PIXELFORMAT == VERTICAL_PACKING) && (LCD_DEPTH == 2) && defined(CPU_COLDFIRE)) \
762 || ((LCD_PIXELFORMAT == VERTICAL_PACKING) && (LCD_DEPTH == 2) && defined(CPU_COLDFIRE)) \
763 || ((LCD_PIXELFORMAT == VERTICAL_INTERLEAVED) && defined(CPU_COLDFIRE)) 762 || ((LCD_PIXELFORMAT == VERTICAL_INTERLEAVED) && defined(CPU_COLDFIRE))
764 _grey_line1(width, dst + idx, src, _grey_info.gvalue); 763 _grey_line1(width, dst + idx, src, _grey_info.gvalue);
765#else 764#else
diff --git a/apps/plugins/lib/grey_sh.S b/apps/plugins/lib/grey_sh.S
deleted file mode 100644
index 5714f95f8c..0000000000
--- a/apps/plugins/lib/grey_sh.S
+++ /dev/null
@@ -1,137 +0,0 @@
1/***************************************************************************
2* __________ __ ___.
3* Open \______ \ ____ ____ | | _\_ |__ _______ ___
4* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7* \/ \/ \/ \/ \/
8* $Id$
9*
10* New greyscale framework
11* SH1 assembler routines
12*
13* This is a generic framework to display 129 shades of grey on low-depth
14* bitmap LCDs (Archos b&w, Iriver & Ipod 4-grey) within plugins.
15*
16* Copyright (C) 2008 Jens Arnold
17*
18* This program is free software; you can redistribute it and/or
19* modify it under the terms of the GNU General Public License
20* as published by the Free Software Foundation; either version 2
21* of the License, or (at your option) any later version.
22*
23* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
24* KIND, either express or implied.
25*
26****************************************************************************/
27
28#include "config.h"
29/* Plugins should not normally do this, but we need to check a macro, and
30 * plugin.h would confuse the assembler. */
31
32 .text
33 .global __grey_line1
34 .type __grey_line1, @function
35
36#if (LCD_PIXELFORMAT == VERTICAL_PACKING) && (LCD_DEPTH == 1)
37
38/****************************************************************************
39 * void _grey_line1(int width, r4
40 * unsigned char *dst, r5
41 * const unsigned char *src, r6
42 * const unsigned char *lut); r7
43 */
44
45__grey_line1:
46 mov #1, r0
47 tst r0, r6
48 bt .p1_h_end
49
50 mov.b @r6+, r0
51 extu.b r0, r0
52 mov.b @(r0, r7), r0
53 add #-1, r4
54 mov.b r0, @r5
55 add #8, r5
56.p1_h_end:
57
58 mov #2, r0
59 cmp/hs r0, r4
60 bf .p2_t_end
61 tst r0, r6
62 bt .p2_h_end
63
64 mov.w @r6+, r1
65 extu.b r1, r0
66 mov.b @(r0, r7), r0
67 shlr8 r1
68 mov.b r0, @(8, r5)
69 extu.b r1, r0
70 mov.b @(r0, r7), r0
71 add #-2, r4
72 mov.b r0, @r5
73 add #16, r5
74.p2_h_end:
75
76 add #-4, r4
77 cmp/pz r4
78 bf .p4_end
79
80 add r6, r4
81
82.p4_loop:
83 mov.l @r6+, r1
84 swap.w r1, r2
85 extu.b r2, r0
86 mov.b @(r0, r7), r0
87 shlr8 r2
88 mov.b r0, @(8, r5)
89 extu.b r2, r0
90 mov.b @(r0, r7), r2
91 extu.b r1, r0
92 mov.b r2, @r5
93 add #16, r5
94 mov.b @(r0, r7), r0
95 shlr8 r1
96 mov.b r0, @(8, r5)
97 extu.b r1, r0
98 mov.b @(r0, r7), r0
99 cmp/hs r6, r4
100 mov.b r0, @r5
101 add #16, r5
102 bt .p4_loop
103
104 /* No need to correct the count, we're only testing bits from now on. */
105
106.p4_end:
107 mov #2, r0
108 tst r0, r4
109 bt .p2_t_end
110
111 mov.w @r6+, r1
112 extu.b r1, r0
113 mov.b @(r0, r7), r0
114 shlr8 r1
115 mov.b r0, @(8, r5)
116 extu.b r1, r0
117 mov.b @(r0, r7), r0
118 mov.b r0, @r5
119 add #16, r5
120.p2_t_end:
121
122 mov #1, r0
123 tst r0, r4
124 bt .p1_t_end
125
126 mov.b @r6+, r0
127 extu.b r0, r0
128 mov.b @(r0, r7), r0
129 rts
130 mov.b r0, @r5
131.p1_t_end:
132
133 rts
134 nop
135 .size __grey_line1, . - __grey_line1
136
137#endif
diff --git a/apps/plugins/lib/helper.c b/apps/plugins/lib/helper.c
index 506903e808..6eb3498791 100644
--- a/apps/plugins/lib/helper.c
+++ b/apps/plugins/lib/helper.c
@@ -22,20 +22,6 @@
22#include "plugin.h" 22#include "plugin.h"
23#include "helper.h" 23#include "helper.h"
24 24
25#ifdef CPU_SH
26/* Lookup table for using the BIT_N() macro in plugins */
27const unsigned bit_n_table[32] = {
28 1LU<< 0, 1LU<< 1, 1LU<< 2, 1LU<< 3,
29 1LU<< 4, 1LU<< 5, 1LU<< 6, 1LU<< 7,
30 1LU<< 8, 1LU<< 9, 1LU<<10, 1LU<<11,
31 1LU<<12, 1LU<<13, 1LU<<14, 1LU<<15,
32 1LU<<16, 1LU<<17, 1LU<<18, 1LU<<19,
33 1LU<<20, 1LU<<21, 1LU<<22, 1LU<<23,
34 1LU<<24, 1LU<<25, 1LU<<26, 1LU<<27,
35 1LU<<28, 1LU<<29, 1LU<<30, 1LU<<31
36};
37#endif
38
39/* Force the backlight on */ 25/* Force the backlight on */
40void backlight_force_on(void) 26void backlight_force_on(void)
41{ 27{
diff --git a/apps/plugins/lib/pluginlib_actions.c b/apps/plugins/lib/pluginlib_actions.c
index e5b48c2f6a..c580074d5e 100644
--- a/apps/plugins/lib/pluginlib_actions.c
+++ b/apps/plugins/lib/pluginlib_actions.c
@@ -51,16 +51,6 @@ const struct button_mapping pla_remote_ctx[] =
51 { PLA_DOWN_REPEAT, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_NONE}, 51 { PLA_DOWN_REPEAT, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_NONE},
52 { PLA_LEFT_REPEAT, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE}, 52 { PLA_LEFT_REPEAT, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE},
53 { PLA_RIGHT_REPEAT, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE}, 53 { PLA_RIGHT_REPEAT, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE},
54#elif (CONFIG_KEYPAD == PLAYER_PAD) || \
55 (CONFIG_KEYPAD == RECORDER_PAD)
56 { PLA_UP, BUTTON_RC_VOL_UP, BUTTON_NONE},
57 { PLA_DOWN, BUTTON_RC_VOL_DOWN, BUTTON_NONE},
58 { PLA_LEFT, BUTTON_RC_LEFT, BUTTON_NONE},
59 { PLA_RIGHT, BUTTON_RC_RIGHT, BUTTON_NONE},
60 { PLA_UP_REPEAT, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE},
61 { PLA_DOWN_REPEAT, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE},
62 { PLA_LEFT_REPEAT, BUTTON_RC_LEFT|BUTTON_REPEAT, BUTTON_NONE},
63 { PLA_RIGHT_REPEAT, BUTTON_RC_RIGHT|BUTTON_REPEAT, BUTTON_NONE},
64#elif (CONFIG_REMOTE_KEYPAD == MROBE_REMOTE) 54#elif (CONFIG_REMOTE_KEYPAD == MROBE_REMOTE)
65 { PLA_UP, BUTTON_RC_PLAY, BUTTON_NONE}, 55 { PLA_UP, BUTTON_RC_PLAY, BUTTON_NONE},
66 { PLA_DOWN, BUTTON_RC_DOWN, BUTTON_NONE}, 56 { PLA_DOWN, BUTTON_RC_DOWN, BUTTON_NONE},
@@ -101,9 +91,7 @@ const struct button_mapping pla_main_ctx[] =
101 || (CONFIG_KEYPAD == IRIVER_H300_PAD) \ 91 || (CONFIG_KEYPAD == IRIVER_H300_PAD) \
102 || (CONFIG_KEYPAD == IAUDIO_X5M5_PAD) \ 92 || (CONFIG_KEYPAD == IAUDIO_X5M5_PAD) \
103 || (CONFIG_KEYPAD == GIGABEAT_PAD) \ 93 || (CONFIG_KEYPAD == GIGABEAT_PAD) \
104 || (CONFIG_KEYPAD == RECORDER_PAD) \
105 || (CONFIG_KEYPAD == IRIVER_IFP7XX_PAD) \ 94 || (CONFIG_KEYPAD == IRIVER_IFP7XX_PAD) \
106 || (CONFIG_KEYPAD == ONDIO_PAD) \
107 || (CONFIG_KEYPAD == SANSA_C200_PAD) \ 95 || (CONFIG_KEYPAD == SANSA_C200_PAD) \
108 || (CONFIG_KEYPAD == GIGABEAT_S_PAD) \ 96 || (CONFIG_KEYPAD == GIGABEAT_S_PAD) \
109 || (CONFIG_KEYPAD == MROBE100_PAD) \ 97 || (CONFIG_KEYPAD == MROBE100_PAD) \
@@ -145,15 +133,6 @@ const struct button_mapping pla_main_ctx[] =
145 { PLA_DOWN_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE }, 133 { PLA_DOWN_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE },
146 { PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, 134 { PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
147 { PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, 135 { PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
148#elif (CONFIG_KEYPAD == PLAYER_PAD)
149 { PLA_UP, BUTTON_PLAY, BUTTON_NONE },
150 { PLA_DOWN, BUTTON_STOP, BUTTON_NONE },
151 { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE },
152 { PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
153 { PLA_UP_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE },
154 { PLA_DOWN_REPEAT, BUTTON_STOP|BUTTON_REPEAT, BUTTON_NONE },
155 { PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
156 { PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
157#elif (CONFIG_KEYPAD == IRIVER_H10_PAD) 136#elif (CONFIG_KEYPAD == IRIVER_H10_PAD)
158 { PLA_UP, BUTTON_SCROLL_UP, BUTTON_NONE }, 137 { PLA_UP, BUTTON_SCROLL_UP, BUTTON_NONE },
159 { PLA_DOWN, BUTTON_SCROLL_DOWN, BUTTON_NONE }, 138 { PLA_DOWN, BUTTON_SCROLL_DOWN, BUTTON_NONE },
@@ -339,24 +318,6 @@ const struct button_mapping pla_main_ctx[] =
339 {PLA_SELECT, BUTTON_SELECT, BUTTON_NONE}, 318 {PLA_SELECT, BUTTON_SELECT, BUTTON_NONE},
340 {PLA_SELECT_REL, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT}, 319 {PLA_SELECT_REL, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT},
341 {PLA_SELECT_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE}, 320 {PLA_SELECT_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE},
342#elif (CONFIG_KEYPAD == RECORDER_PAD)
343 {PLA_CANCEL, BUTTON_ON, BUTTON_NONE},
344 {PLA_EXIT, BUTTON_OFF, BUTTON_NONE},
345 {PLA_SELECT, BUTTON_PLAY, BUTTON_NONE},
346 {PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY},
347 {PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE},
348#elif (CONFIG_KEYPAD == ONDIO_PAD)
349 {PLA_CANCEL, BUTTON_OFF|BUTTON_REL, BUTTON_OFF},
350 {PLA_EXIT, BUTTON_OFF|BUTTON_REPEAT, BUTTON_NONE},
351 {PLA_SELECT, BUTTON_MENU, BUTTON_NONE},
352 {PLA_SELECT_REL, BUTTON_MENU|BUTTON_REL, BUTTON_MENU},
353 {PLA_SELECT_REPEAT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_NONE},
354#elif (CONFIG_KEYPAD == PLAYER_PAD)
355 {PLA_CANCEL, BUTTON_MENU|BUTTON_REL, BUTTON_MENU},
356 {PLA_EXIT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_NONE},
357 {PLA_SELECT, BUTTON_ON, BUTTON_NONE},
358 {PLA_SELECT_REL, BUTTON_ON|BUTTON_REL, BUTTON_ON},
359 {PLA_SELECT_REPEAT, BUTTON_ON|BUTTON_REPEAT, BUTTON_NONE},
360#elif (CONFIG_KEYPAD == SANSA_FUZE_PAD) 321#elif (CONFIG_KEYPAD == SANSA_FUZE_PAD)
361 {PLA_CANCEL, BUTTON_HOME|BUTTON_REL, BUTTON_HOME}, 322 {PLA_CANCEL, BUTTON_HOME|BUTTON_REL, BUTTON_HOME},
362 {PLA_EXIT, BUTTON_HOME|BUTTON_REPEAT, BUTTON_NONE}, 323 {PLA_EXIT, BUTTON_HOME|BUTTON_REPEAT, BUTTON_NONE},
diff --git a/apps/plugins/lib/xlcd_scroll.c b/apps/plugins/lib/xlcd_scroll.c
index f2fc71ea47..e0fead71be 100644
--- a/apps/plugins/lib/xlcd_scroll.c
+++ b/apps/plugins/lib/xlcd_scroll.c
@@ -396,77 +396,7 @@ void xlcd_scroll_up(int count)
396 { 396 {
397#if LCD_PIXELFORMAT == VERTICAL_PACKING 397#if LCD_PIXELFORMAT == VERTICAL_PACKING
398 398
399#if (CONFIG_CPU == SH7034) && (LCD_DEPTH == 1) 399#if defined(CPU_COLDFIRE) && (LCD_DEPTH == 2)
400 asm (
401 "mov #0,r4 \n" /* x = 0 */
402 "mova .su_shifttbl,r0 \n" /* calculate jump destination for */
403 "mov.b @(r0,%[cnt]),%[cnt] \n" /* shift amount from table */
404 "bra .su_cloop \n" /* skip table */
405 "add r0,%[cnt] \n"
406
407 ".align 2 \n"
408 ".su_shifttbl: \n" /* shift jump offset table */
409 ".byte .su_shift0 - .su_shifttbl \n"
410 ".byte .su_shift1 - .su_shifttbl \n"
411 ".byte .su_shift2 - .su_shifttbl \n"
412 ".byte .su_shift3 - .su_shifttbl \n"
413 ".byte .su_shift4 - .su_shifttbl \n"
414 ".byte .su_shift5 - .su_shifttbl \n"
415 ".byte .su_shift6 - .su_shifttbl \n"
416 ".byte .su_shift7 - .su_shifttbl \n"
417
418 ".su_cloop: \n" /* repeat for every column */
419 "mov %[addr],r2 \n" /* get start address */
420 "mov #0,r3 \n" /* current_row = 0 */
421 "mov #0,r1 \n" /* fill with zero */
422
423 ".su_iloop: \n" /* repeat for all rows */
424 "sub %[wide],r2 \n" /* address -= width */
425 "mov.b @r2,r0 \n" /* get data byte */
426 "shll8 r1 \n" /* old data to 2nd byte */
427 "extu.b r0,r0 \n" /* extend unsigned */
428 "or r1,r0 \n" /* combine old data */
429 "jmp @%[cnt] \n" /* jump into shift "path" */
430 "extu.b r0,r1 \n" /* store data for next round */
431
432 ".su_shift6: \n" /* shift right by 0..7 bits */
433 "shll2 r0 \n"
434 "bra .su_shift0 \n"
435 "shlr8 r0 \n"
436 ".su_shift4: \n"
437 "shlr2 r0 \n"
438 ".su_shift2: \n"
439 "bra .su_shift0 \n"
440 "shlr2 r0 \n"
441 ".su_shift7: \n"
442 "shlr2 r0 \n"
443 ".su_shift5: \n"
444 "shlr2 r0 \n"
445 ".su_shift3: \n"
446 "shlr2 r0 \n"
447 ".su_shift1: \n"
448 "shlr r0 \n"
449 ".su_shift0: \n"
450
451 "mov.b r0,@r2 \n" /* store data */
452 "add #1,r3 \n" /* current_row++ */
453 "cmp/hi r3,%[rows] \n" /* current_row < bheight - shift ? */
454 "bt .su_iloop \n"
455
456 "add #1,%[addr] \n" /* start_address++ */
457 "add #1,r4 \n" /* x++ */
458 "cmp/hi r4,%[wide] \n" /* x < width ? */
459 "bt .su_cloop \n"
460 : /* outputs */
461 : /* inputs */
462 [addr]"r"(rb->lcd_framebuffer + blocklen * LCD_FBWIDTH),
463 [wide]"r"(LCD_FBWIDTH),
464 [rows]"r"(blocklen),
465 [cnt] "r"(bitcount)
466 : /* clobbers */
467 "r0", "r1", "r2", "r3", "r4"
468 );
469#elif defined(CPU_COLDFIRE) && (LCD_DEPTH == 2)
470 asm ( 400 asm (
471 "move.l %[wide],%%d3\n" /* columns = width */ 401 "move.l %[wide],%%d3\n" /* columns = width */
472 402
@@ -590,76 +520,7 @@ void xlcd_scroll_down(int count)
590 { 520 {
591#if LCD_PIXELFORMAT == VERTICAL_PACKING 521#if LCD_PIXELFORMAT == VERTICAL_PACKING
592 522
593#if (CONFIG_CPU == SH7034) && (LCD_DEPTH == 1) 523#if defined(CPU_COLDFIRE) && (LCD_DEPTH == 2)
594 asm (
595 "mov #0,r4 \n" /* x = 0 */
596 "mova .sd_shifttbl,r0 \n" /* calculate jump destination for */
597 "mov.b @(r0,%[cnt]),%[cnt] \n" /* shift amount from table */
598 "bra .sd_cloop \n" /* skip table */
599 "add r0,%[cnt] \n"
600
601 ".align 2 \n"
602 ".sd_shifttbl: \n" /* shift jump offset table */
603 ".byte .sd_shift0 - .sd_shifttbl \n"
604 ".byte .sd_shift1 - .sd_shifttbl \n"
605 ".byte .sd_shift2 - .sd_shifttbl \n"
606 ".byte .sd_shift3 - .sd_shifttbl \n"
607 ".byte .sd_shift4 - .sd_shifttbl \n"
608 ".byte .sd_shift5 - .sd_shifttbl \n"
609 ".byte .sd_shift6 - .sd_shifttbl \n"
610 ".byte .sd_shift7 - .sd_shifttbl \n"
611
612 ".sd_cloop: \n" /* repeat for every column */
613 "mov %[addr],r2 \n" /* get start address */
614 "mov #0,r3 \n" /* current_row = 0 */
615 "mov #0,r1 \n" /* fill with zero */
616
617 ".sd_iloop: \n" /* repeat for all rows */
618 "shlr8 r1 \n" /* shift right to get residue */
619 "mov.b @r2,r0 \n" /* get data byte */
620 "jmp @%[cnt] \n" /* jump into shift "path" */
621 "extu.b r0,r0 \n" /* extend unsigned */
622
623 ".sd_shift6: \n" /* shift left by 0..7 bits */
624 "shll8 r0 \n"
625 "bra .sd_shift0 \n"
626 "shlr2 r0 \n"
627 ".sd_shift4: \n"
628 "shll2 r0 \n"
629 ".sd_shift2: \n"
630 "bra .sd_shift0 \n"
631 "shll2 r0 \n"
632 ".sd_shift7: \n"
633 "shll2 r0 \n"
634 ".sd_shift5: \n"
635 "shll2 r0 \n"
636 ".sd_shift3: \n"
637 "shll2 r0 \n"
638 ".sd_shift1: \n"
639 "shll r0 \n"
640 ".sd_shift0: \n"
641
642 "or r0,r1 \n" /* combine with last residue */
643 "mov.b r1,@r2 \n" /* store data */
644 "add %[wide],r2 \n" /* address += width */
645 "add #1,r3 \n" /* current_row++ */
646 "cmp/hi r3,%[rows] \n" /* current_row < bheight - shift ? */
647 "bt .sd_iloop \n"
648
649 "add #1,%[addr] \n" /* start_address++ */
650 "add #1,r4 \n" /* x++ */
651 "cmp/hi r4,%[wide] \n" /* x < width ? */
652 "bt .sd_cloop \n"
653 : /* outputs */
654 : /* inputs */
655 [addr]"r"(rb->lcd_framebuffer + blockcount * LCD_FBWIDTH),
656 [wide]"r"(LCD_WIDTH),
657 [rows]"r"(blocklen),
658 [cnt] "r"(bitcount)
659 : /* clobbers */
660 "r0", "r1", "r2", "r3", "r4"
661 );
662#elif defined(CPU_COLDFIRE) && (LCD_DEPTH == 2)
663 asm ( 524 asm (
664 "move.l %[wide],%%d3\n" /* columns = width */ 525 "move.l %[wide],%%d3\n" /* columns = width */
665 526