diff --git a/test-lm32/.gitignore b/test-lm32/.gitignore deleted file mode 100644 index f6ed4438cd8ed1c58fda678b6a5f64c3f171ea94..0000000000000000000000000000000000000000 --- a/test-lm32/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -spec-*cpu -spec-*cpu.bin \ No newline at end of file diff --git a/test-lm32/Makefile b/test-lm32/Makefile deleted file mode 100644 index 58f7575ad612349ebb482cdc0a66689f98936bf9..0000000000000000000000000000000000000000 --- a/test-lm32/Makefile +++ /dev/null @@ -1,36 +0,0 @@ - -CROSS_COMPILE ?= /opt/gcc-lm32/bin/lm32-elf- - -# classic cross-compilation tool-set -AS = $(CROSS_COMPILE)as -LD = $(CROSS_COMPILE)ld -CC = $(CROSS_COMPILE)gcc -CPP = $(CC) -E -AR = $(CROSS_COMPILE)ar -NM = $(CROSS_COMPILE)nm -STRIP = $(CROSS_COMPILE)strip -OBJCOPY = $(CROSS_COMPILE)objcopy -OBJDUMP = $(CROSS_COMPILE)objdump - - -CFLAGS += -ffreestanding -Os \ - -ffunction-sections -fdata-sections \ - -mmultiply-enabled -mbarrel-shift-enabled - -LDFLAGS = -nostdlib -static -T spec.lds - -ALL = $(patsubst %.c, %.bin, $(wildcard *.c)) - -%.bin: % - $(OBJCOPY) -O binary $* $*.bin - -all: $(ALL) - -clean: - rm -f $(ALL) *.o *~ - -spec-test00-cpu: crt0.o spec-test00-cpu.o - $(CC) $(LDFLAGS) $^ -o $@ - -# add the other unused targets, so the rule in ../Makefile works -modules install modules_install: diff --git a/test-lm32/README b/test-lm32/README deleted file mode 100644 index a0cdb92e05d8805ff4e109d446e4e1d03c321429..0000000000000000000000000000000000000000 --- a/test-lm32/README +++ /dev/null @@ -1,4 +0,0 @@ - -This directory includes test programs to be run on the lm32 that runs -within the spec. - diff --git a/test-lm32/crt0.S b/test-lm32/crt0.S deleted file mode 100644 index eca382680209c235195f9e68f09765b2909f00ca..0000000000000000000000000000000000000000 --- a/test-lm32/crt0.S +++ /dev/null @@ -1,259 +0,0 @@ -/**************************************************************************** -** -** Name: crt0ram.S -** -** Description: -** Implements boot-code that calls LatticeDDInit (that calls main()) -** Implements exception handlers (actually, redirectors) -** -** $Revision: $ -** -** Disclaimer: -** -** This source code is intended as a design reference which -** illustrates how these types of functions can be implemented. It -** is the user's responsibility to verify their design for -** consistency and functionality through the use of formal -** verification methods. Lattice Semiconductor provides no warranty -** regarding the use or functionality of this code. -** -** -------------------------------------------------------------------- -** -** Lattice Semiconductor Corporation -** 5555 NE Moore Court -** Hillsboro, OR 97214 -** U.S.A -** -** TEL: 1-800-Lattice (USA and Canada) -** (503)268-8001 (other locations) -** -** web: http://www.latticesemi.com -** email: techsupport@latticesemi.com -** -** -------------------------------------------------------------------------- -** -** Change History (Latest changes on top) -** -** Ver Date Description -** -------------------------------------------------------------------------- -** 3.8 Apr-15-2011 Added __MICO_USER_<handler>_HANDLER__ preprocessor to -** allow customers to implement their own handlers for: -** DATA_ABORT, INST_ABORT -** -** 3.1 Jun-18-2008 Added __MICO_NO_INTERRUPTS__ preprocessor -** option to exclude invoking MicoISRHandler -** to reduce code-size in apps that don't use -** interrupts -** -** 3.0 Mar-25-2008 Added Header -** -**--------------------------------------------------------------------------- -*****************************************************************************/ - -/* - * LatticeMico32 C startup code. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* From include/sys/signal.h */ -#define SIGINT 2 /* interrupt */ -#define SIGTRAP 5 /* trace trap */ -#define SIGFPE 8 /* arithmetic exception */ -#define SIGSEGV 11 /* segmentation violation */ - -//#define MICO32_FULL_CONTEXT_SAVE_RESTORE - - -/* Exception handlers - Must be 32 bytes long. */ - .section .boot, "ax", @progbits - - .global _start -_start: - - .global _reset_handler - .type _reset_handler, @function -_reset_handler: - xor r0, r0, r0 - wcsr IE, r0 - wcsr IM, r0 - mvhi r1, hi(_reset_handler) - ori r1, r1, lo(_reset_handler) - wcsr EBA, r1 - calli _crt0 - nop - .size _reset_handler, .-_reset_handler - -.extern _irq_entry -.org 0xc0 - .global _interrupt_handler - .type _interrupt_handler, @function -_interrupt_handler: - sw (sp+0), ra - calli _save_all - mvi r1, SIGINT -#ifndef __MICO_NO_INTERRUPTS__ - calli _irq_entry -#else - wcsr IE, r0 -#endif - bi _restore_all_and_return - nop - nop - nop - -.org 0x100 - .global _crt0 - .type _crt0, @function -_crt0: - /* Clear r0 */ - xor r0, r0, r0 - /* Setup stack and global pointer */ - mvhi sp, hi(_fstack) - ori sp, sp, lo(_fstack) - mvhi gp, hi(_gp) - ori gp, gp, lo(_gp) - - mvhi r1, hi(_fbss) - ori r1, r1, lo(_fbss) - mvi r2, 0 - mvhi r3, hi(_ebss) - ori r3, r3, lo(_ebss) - sub r3, r3, r1 - calli memset - mvi r1, 0 - mvi r2, 0 - mvi r3, 0 - calli main - -loopf: - bi loopf - - .global _save_all - .type _save_all, @function -_save_all: -#ifdef MICO32_FULL_CONTEXT_SAVE_RESTORE - addi sp, sp, -128 -#else - addi sp, sp, -60 -#endif - sw (sp+4), r1 - sw (sp+8), r2 - sw (sp+12), r3 - sw (sp+16), r4 - sw (sp+20), r5 - sw (sp+24), r6 - sw (sp+28), r7 - sw (sp+32), r8 - sw (sp+36), r9 - sw (sp+40), r10 -#ifdef MICO32_FULL_CONTEXT_SAVE_RESTORE - sw (sp+44), r11 - sw (sp+48), r12 - sw (sp+52), r13 - sw (sp+56), r14 - sw (sp+60), r15 - sw (sp+64), r16 - sw (sp+68), r17 - sw (sp+72), r18 - sw (sp+76), r19 - sw (sp+80), r20 - sw (sp+84), r21 - sw (sp+88), r22 - sw (sp+92), r23 - sw (sp+96), r24 - sw (sp+100), r25 - sw (sp+104), r26 - sw (sp+108), r27 - sw (sp+120), ea - sw (sp+124), ba - /* ra and sp need special handling, as they have been modified */ - lw r1, (sp+128) - sw (sp+116), r1 - mv r1, sp - addi r1, r1, 128 - sw (sp+112), r1 -#else - sw (sp+52), ea - sw (sp+56), ba - /* ra and sp need special handling, as they have been modified */ - lw r1, (sp+60) - sw (sp+48), r1 - mv r1, sp - addi r1, r1, 60 - sw (sp+44), r1 -#endif -// xor r1, r1, r1 -// wcsr ie, r1 - ret - .size _save_all, .-_save_all - - .global _restore_all_and_return - .type _restore_all_and_return, @function - /* Restore all registers and return from exception */ -_restore_all_and_return: -// addi r1, r0, 2 -// wcsr ie, r1 - lw r1, (sp+4) - lw r2, (sp+8) - lw r3, (sp+12) - lw r4, (sp+16) - lw r5, (sp+20) - lw r6, (sp+24) - lw r7, (sp+28) - lw r8, (sp+32) - lw r9, (sp+36) - lw r10, (sp+40) -#ifdef MICO32_FULL_CONTEXT_SAVE_RESTORE - lw r11, (sp+44) - lw r12, (sp+48) - lw r13, (sp+52) - lw r14, (sp+56) - lw r15, (sp+60) - lw r16, (sp+64) - lw r17, (sp+68) - lw r18, (sp+72) - lw r19, (sp+76) - lw r20, (sp+80) - lw r21, (sp+84) - lw r22, (sp+88) - lw r23, (sp+92) - lw r24, (sp+96) - lw r25, (sp+100) - lw r26, (sp+104) - lw r27, (sp+108) - lw ra, (sp+116) - lw ea, (sp+120) - lw ba, (sp+124) - /* Stack pointer must be restored last, in case it has been updated */ - lw sp, (sp+112) -#else - lw ra, (sp+48) - lw ea, (sp+52) - lw ba, (sp+56) - /* Stack pointer must be restored last, in case it has been updated */ - lw sp, (sp+44) -#endif - nop - eret - .size _restore_all_and_return, .-_restore_all_and_return - diff --git a/test-lm32/spec-test00-cpu.c b/test-lm32/spec-test00-cpu.c deleted file mode 100644 index dc8bf803a027db2456c0a61c4fe9ed52faca314d..0000000000000000000000000000000000000000 --- a/test-lm32/spec-test00-cpu.c +++ /dev/null @@ -1,16 +0,0 @@ - -/* Just a test to check it runs. Keep changing a meory location */ - -volatile int *p = (volatile int *)0x8000; /* static addr: easily found */ - -int main(void) -{ - *p = 0; - while (1) - (*p)++; -} - - -/* needed ... */ -void _irq_entry(void) -{} diff --git a/test-lm32/spec.lds b/test-lm32/spec.lds deleted file mode 100644 index 86ec2e947bf2c533516f2e7d2ff178e385417b71..0000000000000000000000000000000000000000 --- a/test-lm32/spec.lds +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Simulator Link script for Lattice Mico32. - * Contributed by Jon Beniston <jon@beniston.com> - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -OUTPUT_FORMAT("elf32-lm32") -ENTRY(_start) -/*INPUT() */ -GROUP(-lgcc -lc) - -MEMORY -{ - ram : ORIGIN = 0x00000000, LENGTH = 0x10000 -} - -SECTIONS -{ - - .boot : { *(.boot) } > ram - - /* Code */ - .text : - { - . = ALIGN(4); - _ftext = .; - _ftext_rom = LOADADDR(.text); - *(.text .stub .text.* .gnu.linkonce.t.*) - *(.gnu.warning) - KEEP (*(.init)) - KEEP (*(.fini)) - /* Constructors and destructors */ - KEEP (*crtbegin*.o(.ctors)) - KEEP (*(EXCLUDE_FILE (*crtend*.o ) .ctors)) - KEEP (*(SORT(.ctors.*))) - KEEP (*(.ctors)) - KEEP (*crtbegin*.o(.dtors)) - KEEP (*(EXCLUDE_FILE (*crtend*.o ) .dtors)) - KEEP (*(SORT(.dtors.*))) - KEEP (*(.dtors)) - KEEP (*(.jcr)) - _etext = .; - } > ram =0 - - /* Exception handlers */ - .eh_frame_hdr : { *(.eh_frame_hdr) } > ram - .eh_frame : { KEEP (*(.eh_frame)) } > ram - .gcc_except_table : { *(.gcc_except_table) *(.gcc_except_table.*) } > ram - - /* Read-only data */ - .rodata : - { - . = ALIGN(4); - _frodata = .; - _frodata_rom = LOADADDR(.rodata); - *(.rodata .rodata.* .gnu.linkonce.r.*) - *(.rodata1) - _erodata = .; - } > ram - - /* Data */ - .data : - { - . = ALIGN(4); - _fdata = .; - _fdata_rom = LOADADDR(.data); - *(.data .data.* .gnu.linkonce.d.*) - *(.data1) - SORT(CONSTRUCTORS) - _gp = ALIGN(16) + 0x7ff0; - *(.sdata .sdata.* .gnu.linkonce.s.*) - _edata = .; - } > ram - - /* BSS */ - .bss : - { - . = ALIGN(4); - _fbss = .; - *(.dynsbss) - *(.sbss .sbss.* .gnu.linkonce.sb.*) - *(.scommon) - *(.dynbss) - *(.bss .bss.* .gnu.linkonce.b.*) - *(COMMON) - . = ALIGN(4); - _ebss = .; - _end = .; - PROVIDE (end = .); - } > ram - - /* First location in stack is highest address in RAM */ - PROVIDE(_fstack = ORIGIN(ram) + LENGTH(ram) - 4); - - /* Stabs debugging sections. */ - .stab 0 : { *(.stab) } - .stabstr 0 : { *(.stabstr) } - .stab.excl 0 : { *(.stab.excl) } - .stab.exclstr 0 : { *(.stab.exclstr) } - .stab.index 0 : { *(.stab.index) } - .stab.indexstr 0 : { *(.stab.indexstr) } - .comment 0 : { *(.comment) } - - /* DWARF debug sections. - Symbols in the DWARF debugging sections are relative to the beginning - of the section so we begin them at 0. */ - /* DWARF 1 */ - .debug 0 : { *(.debug) } - .line 0 : { *(.line) } - /* GNU DWARF 1 extensions */ - .debug_srcinfo 0 : { *(.debug_srcinfo) } - .debug_sfnames 0 : { *(.debug_sfnames) } - /* DWARF 1.1 and DWARF 2 */ - .debug_aranges 0 : { *(.debug_aranges) } - .debug_pubnames 0 : { *(.debug_pubnames) } - /* DWARF 2 */ - .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line) } - .debug_frame 0 : { *(.debug_frame) } - .debug_str 0 : { *(.debug_str) } - .debug_loc 0 : { *(.debug_loc) } - .debug_macinfo 0 : { *(.debug_macinfo) } - /* SGI/MIPS DWARF 2 extensions */ - .debug_weaknames 0 : { *(.debug_weaknames) } - .debug_funcnames 0 : { *(.debug_funcnames) } - .debug_typenames 0 : { *(.debug_typenames) } - .debug_varnames 0 : { *(.debug_varnames) } -}