diff --git a/apps/apps.make b/apps/apps.make index bd67557..9c2d72f 100644 --- a/apps/apps.make +++ b/apps/apps.make @@ -24,3 +24,5 @@ features $(BUILDDIR)/apps/features $(BUILDDIR)/apps/genlang-features: $(APPSDIR) grep -v "^\#" | grep -v "^$$" > $(BUILDDIR)/apps/features; \ for f in `cat $(BUILDDIR)/apps/features`; do feat="$$feat:$$f" ; done ; \ echo "$$feat" >$(BUILDDIR)/apps/genlang-features + +ASMDEFS_SRC += $(APPSDIR)/core_asmdefs.c diff --git a/apps/core_asmdefs.c b/apps/core_asmdefs.c new file mode 100644 index 0000000..7583b09 --- /dev/null +++ b/apps/core_asmdefs.c @@ -0,0 +1,9 @@ +#include +#include + +const int AD_pix8_size = +#ifdef HAVE_LCD_COLOR + sizeof(struct uint8_rgb); +#else + 1; +#endif diff --git a/apps/plugins/SOURCES b/apps/plugins/SOURCES index 92d1ae6..2a7004c 100644 --- a/apps/plugins/SOURCES +++ b/apps/plugins/SOURCES @@ -47,6 +47,7 @@ disktidy.c flipit.c #ifdef HAVE_LCD_BITMAP /* Not for the Player */ +test_core_jpeg.c rockblox1d.c brickmania.c maze.c diff --git a/apps/recorder/jpeg_idct_arm.S b/apps/recorder/jpeg_idct_arm.S index 75e3e4d..d41b7a6 100644 --- a/apps/recorder/jpeg_idct_arm.S +++ b/apps/recorder/jpeg_idct_arm.S @@ -22,6 +22,7 @@ * ****************************************************************************/ #include "config.h" +#include "apps/core_asmdefs.h" .section .text .align 2 @@ -130,13 +131,8 @@ jpeg_idct2h: mvnhi r5, r5, asr #31 cmp r4, #255 mvnhi r4, r4, asr #31 -#ifdef HAVE_LCD_COLOR strb r5, [r1] - strb r4, [r1, #4] -#else - strb r5, [r1] - strb r4, [r1, #1] -#endif + strb r4, [r1, #pix8_size] add r0, r0, #16 add r1, r1, r3 cmp r0, r2 @@ -152,13 +148,8 @@ jpeg_idct2h: usat r4, #8, r12, asr #21 sxth r12, r12 usat r12, #8, r12, asr #5 -#ifdef HAVE_LCD_COLOR - strb r4, [r1] - strb r12, [r1, #4] -#else strb r4, [r1] - strb r12, [r1, #1] -#endif + strb r12, [r1, #pix8_size] add r0, r0, #16 add r1, r1, r3 cmp r0, r2 @@ -325,17 +316,10 @@ jpeg_idct4h: mvnhi r4, r4, asr #31 cmp r5, #255 mvnhi r5, r5, asr #31 -#ifdef HAVE_LCD_COLOR - strb r9, [r1] - strb r8, [r1, #4] - strb r4, [r1, #8] - strb r5, [r1, #12] -#else strb r9, [r1] - strb r8, [r1, #1] - strb r4, [r1, #2] - strb r5, [r1, #3] -#endif + strb r8, [r1, #pix8_size] + strb r4, [r1, #2*pix8_size] + strb r5, [r1, #3*pix8_size] add r0, r0, #16 add r1, r1, r3 cmp r0, r2 @@ -372,17 +356,10 @@ jpeg_idct4h: mvnhi r12, r12, asr #31 cmp r9, #255 mvnhi r9, r9, asr #31 -#ifdef HAVE_LCD_COLOR strb r6, [r1] - strb r14, [r1, #4] - strb r12, [r1, #8] - strb r9, [r1, #12] -#else - strb r6, [r1] - strb r14, [r1, #1] - strb r12, [r1, #2] - strb r9, [r1, #3] -#endif + strb r14, [r1, #pix8_size] + strb r12, [r1, #2*pix8_size] + strb r9, [r1, #3*pix8_size] add r0, r0, #16 add r1, r1, r3 cmp r0, r2 @@ -410,17 +387,10 @@ jpeg_idct4h: usat r6, #8, r6, asr #18 usat r12, #8, r12, asr #18 usat r14, #8, r14, asr #18 -#ifdef HAVE_LCD_COLOR - strb r8, [r1] - strb r6, [r1, #12] - strb r12, [r1, #4] - strb r14, [r1, #8] -#else strb r8, [r1] - strb r6, [r1, #3] - strb r12, [r1, #1] - strb r14, [r1, #2] -#endif + strb r6, [r1, #3*pix8_size] + strb r12, [r1, #pix8_size] + strb r14, [r1, #2*pix8_size] add r0, r0, #16 add r1, r1, r3 cmp r0, r2 @@ -645,25 +615,14 @@ jpeg_idct8h: mov r8, r8, asr #21 cmp r8, #255 mvnhi r8, r8, asr #31 -#ifdef HAVE_LCD_COLOR - strb r8, [r1] - strb r8, [r1, #4] - strb r8, [r1, #8] - strb r8, [r1, #12] - strb r8, [r1, #16] - strb r8, [r1, #20] - strb r8, [r1, #24] - strb r8, [r1, #28] -#else strb r8, [r1] - strb r8, [r1, #1] - strb r8, [r1, #2] - strb r8, [r1, #3] - strb r8, [r1, #4] - strb r8, [r1, #5] - strb r8, [r1, #6] - strb r8, [r1, #7] -#endif + strb r8, [r1, #pix8_size] + strb r8, [r1, #2*pix8_size] + strb r8, [r1, #3*pix8_size] + strb r8, [r1, #4*pix8_size] + strb r8, [r1, #5*pix8_size] + strb r8, [r1, #6*pix8_size] + strb r8, [r1, #7*pix8_size] add r1, r1, r3 cmp r0, r2 bcc 1b @@ -752,25 +711,14 @@ jpeg_idct8h: mov r14, r14, asr #18 cmp r14, #255 mvnhi r14, r14, asr #31 -#ifdef HAVE_LCD_COLOR - strb r12, [r1] - strb r4, [r1, #4] - strb r10, [r1, #8] - strb r8, [r1, #12] - strb r9, [r1, #16] - strb r11, [r1, #20] - strb r5, [r1, #24] - strb r14, [r1, #28] -#else strb r12, [r1] - strb r4, [r1, #1] - strb r10, [r1, #2] - strb r8, [r1, #3] - strb r9, [r1, #4] - strb r11, [r1, #5] - strb r5, [r1, #6] - strb r14, [r1, #7] -#endif + strb r4, [r1, #pix8_size] + strb r10, [r1, #2*pix8_size] + strb r8, [r1, #3*pix8_size] + strb r9, [r1, #4*pix8_size] + strb r11, [r1, #5*pix8_size] + strb r5, [r1, #6*pix8_size] + strb r14, [r1, #7*pix8_size] #else /* ARMv5+ */ add r12, r14, r4, lsl #16 orrs r9, r6, r7 @@ -779,25 +727,14 @@ jpeg_idct8h: mov r12, r12, asr #21 cmp r12, #255 mvnhi r12, r12, asr #31 -#ifdef HAVE_LCD_COLOR strb r12, [r1] - strb r12, [r1, #4] - strb r12, [r1, #8] - strb r12, [r1, #12] - strb r12, [r1, #16] - strb r12, [r1, #20] - strb r12, [r1, #24] - strb r12, [r1, #28] -#else - strb r12, [r1] - strb r12, [r1, #1] - strb r12, [r1, #2] - strb r12, [r1, #3] - strb r12, [r1, #4] - strb r12, [r1, #5] - strb r12, [r1, #6] - strb r12, [r1, #7] -#endif + strb r12, [r1, #pix8_size] + strb r12, [r1, #2*pix8_size] + strb r12, [r1, #3*pix8_size] + strb r12, [r1, #4*pix8_size] + strb r12, [r1, #5*pix8_size] + strb r12, [r1, #6*pix8_size] + strb r12, [r1, #7*pix8_size] add r1, r1, r3 cmp r0, r2 bcc 1b @@ -869,25 +806,14 @@ jpeg_idct8h: mov r11, r11, asr #18 cmp r11, #255 mvnhi r11, r11, asr #31 -#ifdef HAVE_LCD_COLOR - strb r10, [r1] - strb r12, [r1, #4] - strb r8, [r1, #8] - strb r6, [r1, #12] - strb r7, [r1, #16] - strb r9, [r1, #20] - strb r14, [r1, #24] - strb r11, [r1, #28] -#else strb r10, [r1] - strb r12, [r1, #1] - strb r8, [r1, #2] - strb r6, [r1, #3] - strb r7, [r1, #4] - strb r9, [r1, #5] - strb r14, [r1, #6] - strb r11, [r1, #7] -#endif + strb r12, [r1, #pix8_size] + strb r8, [r1, #2*pix8_size] + strb r6, [r1, #3*pix8_size] + strb r7, [r1, #4*pix8_size] + strb r9, [r1, #5*pix8_size] + strb r14, [r1, #6*pix8_size] + strb r11, [r1, #7*pix8_size] #endif add r1, r1, r3 cmp r0, r2 @@ -1009,25 +935,14 @@ jpeg_idct8h: bne 2f sxth r4, r4 usat r4, #8, r4, asr #5 -#ifdef HAVE_LCD_COLOR - strb r4, [r1] - strb r4, [r1, #4] - strb r4, [r1, #8] - strb r4, [r1, #12] - strb r4, [r1, #16] - strb r4, [r1, #20] - strb r4, [r1, #24] - strb r4, [r1, #28] -#else strb r4, [r1] - strb r4, [r1, #1] - strb r4, [r1, #2] - strb r4, [r1, #3] - strb r4, [r1, #4] - strb r4, [r1, #5] - strb r4, [r1, #6] - strb r4, [r1, #7] -#endif + strb r4, [r1, #pix8_size] + strb r4, [r1, #2*pix8_size] + strb r4, [r1, #3*pix8_size] + strb r4, [r1, #4*pix8_size] + strb r4, [r1, #5*pix8_size] + strb r4, [r1, #6*pix8_size] + strb r4, [r1, #7*pix8_size] add r1, r1, r3 cmp r0, r2 bcc 1b @@ -1083,25 +998,14 @@ jpeg_idct8h: usat r10, #8, r10, asr #18 usat r7, #8, r7, asr #18 usat r8, #8, r8, asr #18 -#ifdef HAVE_LCD_COLOR - strb r6, [r1] - strb r4, [r1, #4] - strb r9, [r1, #8] - strb r14, [r1, #12] - strb r12, [r1, #16] - strb r10, [r1, #20] - strb r7, [r1, #24] - strb r8, [r1, #28] -#else strb r6, [r1] - strb r4, [r1, #1] - strb r9, [r1, #2] - strb r14, [r1, #3] - strb r12, [r1, #4] - strb r10, [r1, #5] - strb r7, [r1, #6] - strb r8, [r1, #7] -#endif + strb r4, [r1, #pix8_size] + strb r9, [r1, #2*pix8_size] + strb r14, [r1, #3*pix8_size] + strb r12, [r1, #4*pix8_size] + strb r10, [r1, #5*pix8_size] + strb r7, [r1, #6*pix8_size] + strb r8, [r1, #7*pix8_size] cmp r0, r2 add r1, r1, r3 bcc 1b diff --git a/tools/addtargetdir.pl b/tools/addtargetdir.pl index 2c08d32..7cffb1d 100755 --- a/tools/addtargetdir.pl +++ b/tools/addtargetdir.pl @@ -14,30 +14,23 @@ use File::Basename; my $rbroot = $ARGV[0]; my $builddir = $ARGV[1]; +undef $/; -my $target2; +my $target; +my $src; -for () { - if (/^([^:]+): (\S+) (.*)/) { - my ($target, $src, $rest) = ($1, $2, $3); - my $dir = dirname $src; - $dir =~ s/^.*$rbroot//; - print "$builddir$dir/$target: $src $rest\n"; - } - elsif (/^([^:]+): \\/) { - # target and source on different lines - $target2 = $1; - } - elsif ($target2) { - if (/^\s+([^ ]+) (.*)/) { - my ($src, $rest) = ($1, $2); +for (split(/[\s\\]+/m, )) { + /^(\/)?[^:]+(\:)?$/; + if (!($2 && ($target=$&))) { + $src = $&; + if ($target) { my $dir = dirname $src; $dir =~ s/^.*$rbroot//; - print "$builddir$dir/$target2: $src $rest\n"; - $target2 = ""; + print "\n$builddir$dir/$target"; + $target = ""; + } elsif (!$1) { + $src = "$builddir/$src"; } - } - else { - print $_; + print " \\\n $src"; } } diff --git a/tools/configure b/tools/configure index e543919..a839277 100755 --- a/tools/configure +++ b/tools/configure @@ -246,57 +246,48 @@ coldfirecc () { } arm7tdmicc () { - prefixtools arm-elf- + prefixtools arm-elf-eabi- GCCOPTS="$CCOPTS -mcpu=arm7tdmi" - if test "X$1" != "Xshort"; then - GCCOPTS="$GCCOPTS -mlong-calls" - fi GCCOPTIMIZE="-fomit-frame-pointer" endian="little" gccchoice="4.0.3" } arm9tdmicc () { - prefixtools arm-elf- + prefixtools arm-elf-eabi- GCCOPTS="$CCOPTS -mcpu=arm9tdmi" - if test "$modelname" != "gigabeatf" -a "$t_manufacturer" != "as3525"; then - GCCOPTS="$GCCOPTS -mlong-calls" - fi GCCOPTIMIZE="-fomit-frame-pointer" endian="little" gccchoice="4.0.3" } arm940tbecc () { - prefixtools arm-elf- - GCCOPTS="$CCOPTS -mbig-endian -mcpu=arm940t -mlong-calls" + prefixtools arm-elf-eabi- + GCCOPTS="$CCOPTS -mbig-endian -mcpu=arm940t" GCCOPTIMIZE="-fomit-frame-pointer" endian="big" gccchoice="4.0.3" } arm946cc () { - prefixtools arm-elf- - GCCOPTS="$CCOPTS -mcpu=arm9e -mlong-calls" + prefixtools arm-elf-eabi- + GCCOPTS="$CCOPTS -mcpu=arm946e-s" GCCOPTIMIZE="-fomit-frame-pointer" endian="little" gccchoice="4.0.3" } arm926ejscc () { - prefixtools arm-elf- - GCCOPTS="$CCOPTS -mcpu=arm926ej-s -mlong-calls" + prefixtools arm-elf-eabi- + GCCOPTS="$CCOPTS -mcpu=arm926ej-s" GCCOPTIMIZE="-fomit-frame-pointer" endian="little" gccchoice="4.0.3" } arm1136jfscc () { - prefixtools arm-elf- + prefixtools arm-elf-eabi- GCCOPTS="$CCOPTS -mcpu=arm1136jf-s" - if test "$modelname" != "gigabeats"; then - GCCOPTS="$GCCOPTS -mlong-calls" - fi GCCOPTIMIZE="-fomit-frame-pointer" endian="little" gccchoice="4.0.3" @@ -1082,7 +1073,7 @@ fi modelname="ifp7xx" target="-DIRIVER_IFP7XX" memory=1 - arm7tdmicc short + arm7tdmicc tool="cp" bmp2rb_mono="$rootdir/tools/bmp2rb -f 0" bmp2rb_native="$rootdir/tools/bmp2rb -f 0" diff --git a/tools/functions.make b/tools/functions.make index 6748962..16ba959 100644 --- a/tools/functions.make +++ b/tools/functions.make @@ -25,6 +25,13 @@ preprocess = $(shell $(CC) $(PPCFLAGS) $(2) -E -P -x c -include config.h $(1) | preprocess2file = $(shell $(CC) $(PPCFLAGS) $(3) -E -P -x c -include config.h $(1) | \ grep -v '^\#' | grep -v "^$$" > $(2)) +#asmdefs2file = $(shell -x $(CC) $(PPCFLAGS) $(3) -S -x c -include config.h $(1) | \ +# perl -ne "if (/^AD_(\w+):$/) {$$var=$$1} else { /^\W\.word\W(.*)$$/ && $$var && print '#define $$var $$1\n' ; $$var=0 }" \ +# > $(2)) + +asmdefs2file = $(shell $(CC) $(PPCFLAGS) $(3) -S -x c -o - -include config.h $(1) | \ + perl -ne 'if(/^AD_(\w+):$$/){$$var=$$1}else{/^\W\.word\W(.*)$$/ && $$var && print "\#define $$var $$1\n";$$var=0}' > $2) + c2obj = $(addsuffix .o,$(basename $(subst $(ROOTDIR),$(BUILDDIR),$(1)))) # calculate dependencies for a list of source files $(2) and output them @@ -32,13 +39,11 @@ c2obj = $(addsuffix .o,$(basename $(subst $(ROOTDIR),$(BUILDDIR),$(1)))) mkdepfile = $(shell \ $(CC) $(PPCFLAGS) $(OTHER_INC) -MG -MM -include config.h $(2) | \ $(TOOLSDIR)/addtargetdir.pl $(ROOTDIR) $(BUILDDIR) | \ - sed -e "s: lang.h: $(BUILDDIR)/lang/lang_core.o:" \ - -e "s: sysfont.h: $(BUILDDIR)/sysfont.h:" \ - -e "s: max_language_size.h: $(BUILDDIR)/lang/max_language_size.h:" \ + sed -e "s:/lang.h:/lang/lang_core.o:" \ + -e 's:_asmdefs.o:_asmdefs.h:g' \ + -e "s:/max_language_size.h:/lang/max_language_size.h:" \ -e "s: bitmaps/: $(BUILDDIR)/bitmaps/:g" \ - -e "s: pluginbitmaps/: $(BUILDDIR)/pluginbitmaps/:g" \ - -e "s: lib/: $(APPSDIR)/plugins/lib/:g" \ - -e "s: codeclib.h: $(APPSDIR)/codecs/lib/codeclib.h:g" \ + -e "s: asmdefs/: $(BUILDDIR)/asmdefs/:g" \ >> $(1)_) # function to create .bmp dependencies diff --git a/tools/rockboxdev.sh b/tools/rockboxdev.sh index 508b1ad..2c83b91 100755 --- a/tools/rockboxdev.sh +++ b/tools/rockboxdev.sh @@ -182,8 +182,11 @@ case $arch in esac ;; [Aa]) - target="arm-elf" - gccpatch="rockbox-multilibs-arm-elf-gcc-4.0.3_2.diff" + target="arm-elf-eabi" + gccpatch="rockbox-fixes-multilib-gcc-4.3.3_1.diff" + gccconfigure="--disable-libssp --disable-lib-unwind-exceptions" + binutils="2.19.51" + gccver="4.3.3" ;; [Ii]) target="mipsel-elf" @@ -226,7 +229,12 @@ echo "" if test -f "$dlwhere/binutils-$binutils.tar.bz2"; then echo "binutils $binutils already downloaded" else - getfile binutils-$binutils.tar.bz2 $GNU_MIRROR/binutils + #check for snapshot release + if [ "${binutils##*.*.}" -gt 49 ] ; then + getfile binutils-$binutils.tar.bz2 'ftp://sourceware.org/pub/binutils/snapshots' + else + getfile binutils-$binutils.tar.bz2 $GNU_MIRROR/binutils + fi fi if test -f "$dlwhere/gcc-core-$gccver.tar.bz2"; then diff --git a/tools/root.make b/tools/root.make index 0058637..01d619f 100644 --- a/tools/root.make +++ b/tools/root.make @@ -96,6 +96,7 @@ $(DEPFILE) dep: @echo foo > /dev/null # there must be a "real" command in the rule $(call mkdepfile,$(DEPFILE),$(SRC)) $(call mkdepfile,$(DEPFILE),$(OTHER_SRC)) + $(call mkdepfile,$(DEPFILE),$(ASMDEFS_SRC)) @mv $(DEPFILE)_ $(DEPFILE) $(call bmpdepfile,$(DEPFILE),$(BMP) $(PBMP)) @@ -326,6 +327,11 @@ $(BUILDDIR)/%.o: $(ROOTDIR)/%.S $(SILENT)mkdir -p $(dir $@) $(call PRINTS,CC $(subst $(ROOTDIR)/,,$<))$(CC) $(CFLAGS) -c $< -o $@ +$(BUILDDIR)/%_asmdefs.h: $(ROOTDIR)/%_asmdefs.c + $(call PRINTS,ASMDEFS $(@F)) + $(SILENT)mkdir -p $(dir $@) + $(call asmdefs2file,$<,$@) + Makefile: $(TOOLSDIR)/configure $(SILENT)echo "*** tools/configure is newer than Makefile. You should run 'make reconf'."