summaryrefslogtreecommitdiffstats
path: root/firmware
diff options
context:
space:
mode:
authorSolomon Peachy <pizza@shaftnet.org>2020-11-03 18:42:50 -0500
committerSolomon Peachy <pizza@shaftnet.org>2020-11-03 23:43:32 +0000
commit090bd9592df1e05e289e658c2530ae277a205318 (patch)
treef6be20462fa97d0d20a2e2b3fbe6e43e06cd1b42 /firmware
parent066d471ae6dd34eda370c5f610adaefa1029bab9 (diff)
downloadrockbox-090bd9592df1e05e289e658c2530ae277a205318.tar.gz
rockbox-090bd9592df1e05e289e658c2530ae277a205318.tar.bz2
rockbox-090bd9592df1e05e289e658c2530ae277a205318.zip
Remove the firmware decompressor and a few more other SH-stragglers.
Change-Id: Ic568755afcccc6db1b6e791b1ed0d2588b90356f
Diffstat (limited to 'firmware')
-rw-r--r--firmware/decompressor/Makefile52
-rw-r--r--firmware/decompressor/decompressor.c73
-rw-r--r--firmware/decompressor/link.lds71
-rw-r--r--firmware/decompressor/sh_nrv2e_d8.S149
-rw-r--r--firmware/decompressor/startup.S59
5 files changed, 0 insertions, 404 deletions
diff --git a/firmware/decompressor/Makefile b/firmware/decompressor/Makefile
deleted file mode 100644
index 30bb04e480..0000000000
--- a/firmware/decompressor/Makefile
+++ /dev/null
@@ -1,52 +0,0 @@
-# __________ __ ___.
-# Open \______ \ ____ ____ | | _\_ |__ _______ ___
-# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
-# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
-# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
-# \/ \/ \/ \/ \/
-# $Id$
-#
-
-ifndef V
-SILENT=@
-endif
-PRINTS=$(SILENT)$(call info,$(1))
-
-LDS := link.lds
-LINKFILE = $(OBJDIR)/linkage.lds
-OBJS := $(OBJDIR)/decompressor.o $(OBJDIR)/uclimage.o \
- $(OBJDIR)/sh_nrv2e_d8.o $(OBJDIR)/startup.o
-CFLAGS = $(GCCOPTS)
-
-all: $(OBJDIR)/compressed.bin
-
-$(OBJDIR)/compressed.bin : $(OBJDIR)/compressed.elf
- $(call PRINTS,OBJCOPY $(@F))$(OC) -O binary $< $@
-
-$(OBJDIR)/compressed.elf : $(OBJS) $(LINKFILE)
- $(call PRINTS,LD $(@F))$(CC) $(GCCOPTS) -Os -nostdlib -o $@ $(OBJS) -T$(LINKFILE) -Wl,-Map,$(OBJDIR)/compressed.map
-
-$(LINKFILE): $(LDS)
- $(SILENT)mkdir -p $(dir $@)
- $(call PRINTS,Build LDS file)cat $< | $(CC) -DMEMORYSIZE=$(MEMORYSIZE) $(INCLUDES) $(TARGET) $(DEFINES) -E -P $(ROMBUILD) - >$@
-
-$(OBJDIR)/decompressor.o : decompressor.c $(OBJDIR)/uclimage.c
- $(SILENT)mkdir -p $(dir $@)
- $(call PRINTS,CC $<)$(CC) $(CFLAGS) -I$(OBJDIR) -c $< -o $@
-
-$(OBJDIR)/startup.o : startup.S
- $(SILENT)mkdir -p $(dir $@)
- $(call PRINTS,AS $<)$(CC) $(CFLAGS) -c $< -o $@
-
-$(OBJDIR)/sh_nrv2e_d8.o : sh_nrv2e_d8.S
- $(SILENT)mkdir -p $(dir $@)
- $(call PRINTS,AS $<)$(CC) $(CFLAGS) -c $< -o $@
-
-$(OBJDIR)/uclimage.o : $(OBJDIR)/uclimage.c
- $(SILENT)mkdir -p $(dir $@)
- $(call PRINTS,CC $(<F))$(CC) $(CFLAGS) -c $< -o $@
-
-$(OBJDIR)/uclimage.c : $(FLASHFILE) $(TOOLSDIR)/ucl2src.pl
- $(SILENT)mkdir -p $(dir $@)
- $(call PRINTS,UCL2SRC $(<F))perl -s $(TOOLSDIR)/ucl2src.pl -p=$(OBJDIR)/uclimage $<
-
diff --git a/firmware/decompressor/decompressor.c b/firmware/decompressor/decompressor.c
deleted file mode 100644
index 11888ef272..0000000000
--- a/firmware/decompressor/decompressor.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/***************************************************************************
- * __________ __ ___.
- * Open \______ \ ____ ____ | | _\_ |__ _______ ___
- * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
- * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
- * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
- * \/ \/ \/ \/ \/
- * $Id$
- *
- * Copyright (C) 2005 by Jens Arnold
- *
- * Self-extracting firmware loader to work around the 200KB size limit
- * for archos player and recorder v1
- * Decompresses a built-in UCL-compressed image (method 2e) and executes it.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ****************************************************************************/
-
-#include "uclimage.h"
-
-#define ICODE_ATTR __attribute__ ((section (".icode")))
-
-/* Symbols defined in the linker script */
-extern char iramcopy[], iramstart[], iramend[];
-extern char stackend[];
-extern char loadaddress[], dramend[];
-
-/* Prototypes */
-extern void start(void);
-
-void main(void) ICODE_ATTR;
-int ucl_nrv2e_decompress_8(const unsigned char *src, unsigned char *dst,
- unsigned long *dst_len) ICODE_ATTR;
-
-/* Vector table */
-void (*vbr[]) (void) __attribute__ ((section (".vectors"))) =
-{
- start, (void *)stackend,
- start, (void *)stackend,
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-};
-
-/** All subsequent functions are executed from IRAM **/
-
-#define ALIGNED_IMG_SIZE ((sizeof(image) + 3) & ~3)
-/* This will never return */
-void main(void)
-{
- unsigned long dst_len; /* dummy */
- unsigned long *src = (unsigned long *)image;
- unsigned long *dst = (unsigned long *)(dramend - ALIGNED_IMG_SIZE);
-
- do
- *dst++ = *src++;
- while (dst < (unsigned long *)dramend);
-
- ucl_nrv2e_decompress_8(dramend - ALIGNED_IMG_SIZE, loadaddress, &dst_len);
-
- asm(
- "mov.l @%0+,r0 \n"
- "jmp @r0 \n"
- "mov.l @%0+,r15 \n"
- : : "r"(loadaddress) : "r0"
- );
-}
diff --git a/firmware/decompressor/link.lds b/firmware/decompressor/link.lds
deleted file mode 100644
index 51c0460d42..0000000000
--- a/firmware/decompressor/link.lds
+++ /dev/null
@@ -1,71 +0,0 @@
-OUTPUT_FORMAT(elf32-sh)
-
-#define DRAMORIG 0x09000000
-#define DRAMSIZE (MEMORYSIZE * 0x00100000)
-#define IRAMORIG 0x0f000000
-#define IRAMSIZE 0x00001000
-
-MEMORY
-{
- IRAM : ORIGIN = IRAMORIG, LENGTH = IRAMSIZE
- DRAM : ORIGIN = DRAMORIG, LENGTH = DRAMSIZE
-}
-
-SECTIONS
-{
- .vectors :
- {
- _loadaddress = .;
- _dramend = . + DRAMSIZE;
- KEEP(*(.vectors))
- . = ALIGN(0x200);
- } > DRAM
-
- .text :
- {
- *(.start)
- *(.text)
- . = ALIGN(0x4);
- } > DRAM
-
- .rodata :
- {
- *(.rodata*)
- *(.rodata.str1.1)
- *(.rodata.str1.4)
- . = ALIGN(0x4);
- } > DRAM
-
- .data :
- {
- *(.data)
- . = ALIGN(0x4);
- _iramcopy = .;
- } > DRAM
-
- .iram IRAMORIG : AT ( _iramcopy )
- {
- _iramstart = .;
- *(.icode)
- *(.idata)
- . = ALIGN(0x4);
- _iramend = .;
- } > IRAM
-
- .stack :
- {
- _stackbegin = .;
- *(.stack)
- . += 0x0800;
- _stackend = .;
- } > IRAM
-
- .bss :
- {
- _edata = .;
- *(.bss)
- *(COMMON)
- . = ALIGN(0x4);
- _end = .;
- } > DRAM
-}
diff --git a/firmware/decompressor/sh_nrv2e_d8.S b/firmware/decompressor/sh_nrv2e_d8.S
deleted file mode 100644
index cf333e9c97..0000000000
--- a/firmware/decompressor/sh_nrv2e_d8.S
+++ /dev/null
@@ -1,149 +0,0 @@
-/***************************************************************************
- * __________ __ ___.
- * Open \______ \ ____ ____ | | _\_ |__ _______ ___
- * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
- * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
- * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
- * \/ \/ \/ \/ \/
- * $Id$
- *
- * Copyright (C) 2008 by Jens Arnold
- *
- * based on arm_nrv2e_d8.S -- ARM decompressor for NRV2E
- * Copyright (C) 1996-2008 Markus Franz Xaver Johannes Oberhumer
- * Copyright (C) 1996-2008 Laszlo Molnar
- * Copyright (C) 2000-2008 John F. Reiser
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ****************************************************************************/
-
-#define src r4
-#define dst r5
-#define len r6 /* overlaps 'cnt' */
-#define cnt r6 /* overlaps 'len' while reading an offset */
-#define tmp r7
-
-#define off r0 /* must be r0 because of indexed addressing */
-#define bits r1
-#define bitmask r2
-#define wrnk r3 /* -0x500 -M2_MAX_OFFSET before "wrinkle" */
-
-
-#define GETBIT \
- tst bits, bitmask; \
- bf 1f; \
- bsr get1_n2e; \
-1: \
- shll bits /* using the delay slot on purpose */
-
-#define getnextb(reg) GETBIT; rotcl reg
-#define jnextb0 GETBIT; bf
-#define jnextb1 GETBIT; bt
-
- .section .icode,"ax",@progbits
- .align 2
- .global _ucl_nrv2e_decompress_8
- .type _ucl_nrv2e_decompress_8,@function
-
-/* src_len = ucl_nrv2e_decompress_8(const unsigned char *src,
- * unsigned char *dst,
- * unsigned long *dst_len)
- */
-
-_ucl_nrv2e_decompress_8:
- sts.l pr, @-r15
- mov #-1, off ! off = -1 initial condition
- mov.l r6, @-r15
- mov #-5, wrnk
- mov.l r5, @-r15
- shll8 wrnk ! nrv2e -M2_MAX_OFFSET
- mov.l r4, @-r15
- mov #-1, bitmask
- shlr bitmask ! 0x7fffffff for testing before shifting
- bra top_n2e
- not bitmask, bits ! refill next time (MSB must be set)
-
-eof_n2e:
- mov.l @r15+, r0 ! r0 = orig_src
- mov.l @r15+, r1 ! r1 = orig_dst
- sub r0, src
- mov.l @r15+, r2 ! r2 = plen_dst
- sub r1, dst
- mov.l dst, @r2
- lds.l @r15+, pr
- rts
- mov src, r0
-
-lit_n2e:
- mov.b @src, tmp
- add #1, src ! Need to fill the pipeline latency anyway
- mov.b tmp, @dst
- add #1, dst
-top_n2e:
- jnextb1 lit_n2e
- bra getoff_n2e
- mov #1, cnt
-
-off_n2e:
- add #-1, cnt
- getnextb(cnt)
-getoff_n2e:
- getnextb(cnt)
- jnextb0 off_n2e
-
- mov #-4, tmp ! T=1 on entry, so this does
- addc cnt, tmp ! tmp = cnt - 3, T = (cnt >= 3)
- mov #0, len ! cnt and len share a reg!
- bf offprev_n2e ! cnt was 2
- mov.b @src+, off ! low 7+1 bits
- shll8 tmp
- extu.b off, off
- or tmp, off
- not off, off ! off = ~off
- tst off, off
- bt eof_n2e
- shar off
- bt lenlast_n2e
- bf lenmore_n2e ! always taken if the preceding bt isn't
-
-offprev_n2e:
- jnextb1 lenlast_n2e
-lenmore_n2e:
- mov #1, len
- jnextb1 lenlast_n2e
-len_n2e:
- getnextb(len)
- jnextb0 len_n2e
- bra gotlen_n2e
- mov #6-2, tmp
-
-get1_n2e: ! in: T bit set
- mov.b @src+, bits ! SH1 sign-extends on load
- rotcl bits ! LSB = T, T = MSB
- shll16 bits
- rts
- shll8 bits
-
-lenlast_n2e:
- getnextb(len) ! 0,1,2,3
- mov #2, tmp
-gotlen_n2e:
- cmp/gt off, wrnk ! too far away, so minimum match length is 3
- addc tmp, len
-copy_n2e:
- add #-1, len
- mov.b @(off,dst), tmp
- tst len, len
- mov.b tmp, @dst
- add #1, dst
- bf copy_n2e
- bt top_n2e ! always taken if the preceding bf isn't
-
- .size _ucl_nrv2e_decompress_8, .-_ucl_nrv2e_decompress_8
diff --git a/firmware/decompressor/startup.S b/firmware/decompressor/startup.S
deleted file mode 100644
index 1e5d6fa1ee..0000000000
--- a/firmware/decompressor/startup.S
+++ /dev/null
@@ -1,59 +0,0 @@
-/***************************************************************************
- * __________ __ ___.
- * Open \______ \ ____ ____ | | _\_ |__ _______ ___
- * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
- * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
- * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
- * \/ \/ \/ \/ \/
- * $Id$
- *
- * Copyright (C) 2005 by Jens Arnold
- * based on crt0.S by Linus Nielsen Feltzing
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ****************************************************************************/
- .section .start,"ax",@progbits
- .global _start
-_start:
- /* copy the .iram section */
- mov.l .iramcopy_k,r0
- mov.l .iram_k,r1
- mov.l .iramend_k,r2
- /* Note: We cannot put a PC relative load into the delay slot of a 'bra'
- instruction (the offset would be wrong), but there is nothing else to
- do before the loop, so the delay slot would be 'nop'. The cmp / bf
- sequence is the same length, but more efficient. */
- cmp/hi r1,r2
- bf .noiramcopy
-.iramloop:
- mov.l @r0+,r3
- mov.l r3,@r1
- add #4,r1
- cmp/hi r1,r2
- bt .iramloop
-.noiramcopy:
-
- /* call the mainline */
- mov.l .main_k,r0
- mov.l .stackend_k,r15
- jmp @r0
- nop
-
- .align 2
-.iramcopy_k:
- .long _iramcopy
-.iram_k:
- .long _iramstart
-.iramend_k:
- .long _iramend
-.stackend_k:
- .long _stackend
-.main_k:
- .long _main