From 090bd9592df1e05e289e658c2530ae277a205318 Mon Sep 17 00:00:00 2001 From: Solomon Peachy Date: Tue, 3 Nov 2020 18:42:50 -0500 Subject: Remove the firmware decompressor and a few more other SH-stragglers. Change-Id: Ic568755afcccc6db1b6e791b1ed0d2588b90356f --- firmware/decompressor/Makefile | 52 ------------ firmware/decompressor/decompressor.c | 73 ----------------- firmware/decompressor/link.lds | 71 ----------------- firmware/decompressor/sh_nrv2e_d8.S | 149 ----------------------------------- firmware/decompressor/startup.S | 59 -------------- 5 files changed, 404 deletions(-) delete mode 100644 firmware/decompressor/Makefile delete mode 100644 firmware/decompressor/decompressor.c delete mode 100644 firmware/decompressor/link.lds delete mode 100644 firmware/decompressor/sh_nrv2e_d8.S delete mode 100644 firmware/decompressor/startup.S (limited to 'firmware/decompressor') 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 $( ) \___| < | \_\ ( <_> > < < - * 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 -- cgit v1.2.3