Index: libgloss/README =================================================================== RCS file: /cvs/src/src/libgloss/README,v retrieving revision 1.3 diff -c -p -r1.3 README *** libgloss/README 8 Feb 2007 21:22:05 -0000 1.3 --- libgloss/README 17 Dec 2008 22:33:44 -0000 *************** m68k - Motorola MVME135 and IDP board. F *** 5,7 **** --- 5,8 ---- mep - Toshiba Media Processor. pa - WinBond and Oki boards with a PA. mips - R3000 support. Array Tech LSI33k based RAID disk controller. + lm32 - Lattice Mico32 simulator. Index: libgloss/configure.in =================================================================== RCS file: /cvs/src/src/libgloss/configure.in,v retrieving revision 1.22 diff -c -p -r1.22 configure.in *** libgloss/configure.in 8 Feb 2007 21:22:05 -0000 1.22 --- libgloss/configure.in 17 Dec 2008 22:33:46 -0000 *************** case "${target}" in *** 100,105 **** --- 100,109 ---- AC_CONFIG_SUBDIRS(frv) config_testsuite=true ;; + lm32*-*-*) + AC_CONFIG_SUBDIRS(lm32) + config_testsuite=true + ;; mcore-*-*) AC_CONFIG_SUBDIRS(mcore) config_testsuite=true Index: libgloss/libnosys/configure.in =================================================================== RCS file: /cvs/src/src/libgloss/libnosys/configure.in,v retrieving revision 1.8 diff -c -p -r1.8 configure.in *** libgloss/libnosys/configure.in 14 Aug 2008 22:00:45 -0000 1.8 --- libgloss/libnosys/configure.in 17 Dec 2008 22:33:47 -0000 *************** case "${target}" in *** 63,68 **** --- 63,70 ---- ;; i[3456]86-*-sco*) ;; + lm32-*-*) + ;; m32r-*-*) ;; mn10?00-*-*) Index: libgloss/lm32/Makefile.in =================================================================== RCS file: libgloss/lm32/Makefile.in diff -N libgloss/lm32/Makefile.in *** /dev/null 1 Jan 1970 00:00:00 -0000 --- libgloss/lm32/Makefile.in 17 Dec 2008 22:33:47 -0000 *************** *** 0 **** --- 1,101 ---- + + VPATH = @srcdir@ @srcdir@/.. + srcdir = @srcdir@ + objdir = . + srcroot = $(srcdir)/../.. + objroot = $(objdir)/../.. + + mkinstalldirs = $(SHELL) $(srcroot)/mkinstalldirs + + prefix = @prefix@ + exec_prefix = @exec_prefix@ + + host_alias = @host_alias@ + target_alias = @target_alias@ + program_transform_name = @program_transform_name@ + + bindir = @bindir@ + libdir = @libdir@ + tooldir = $(exec_prefix)/$(target_alias) + + INSTALL = @INSTALL@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_DATA = @INSTALL_DATA@ + + # Multilib support variables. + # TOP is used instead of MULTI{BUILD,SRC}TOP. + MULTIDIRS = + MULTISUBDIR = + MULTIDO = true + MULTICLEAN = true + + SHELL = /bin/sh + + CC = @CC@ + + AS = @AS@ + AR = @AR@ + LD = @LD@ + RANLIB = @RANLIB@ + + OBJDUMP = `if [ -f ${objroot}/../binutils/objdump ] ; \ + then echo ${objroot}/../binutils/objdump ; \ + else t='$(program_transform_name)'; echo objdump | sed -e $$t ; fi` + OBJCOPY = `if [ -f ${objroot}/../binutils/objcopy ] ; \ + then echo ${objroot}/../binutils/objcopy ; \ + else t='$(program_transform_name)'; echo objcopy | sed -e $$t ; fi` + + OBJS = isatty.o scall.o + SCRIPTS = sim.ld + CRT0S = crt0.o + BSPS = libgloss.a + + # Host specific makefile fragment comes in here. + @host_makefile_frag@ + + all: $(CRT0S) $(BSPS) + + libgloss.a: $(OBJS) + ${AR} ${ARFLAGS} $@ $(OBJS) + ${RANLIB} $@ + + # + # Standard targets + # + + clean mostlyclean: + rm -f a.out core *.i *.o *-test *.srec *.dis *.x + + distclean maintainer-clean realclean: clean + rm -f Makefile config.status *~ + + .PHONY: install info install-info clean-info + install: install-scripts # install-includes + @for crt0 in ${CRT0S}; do\ + $(INSTALL_PROGRAM) $${crt0} $(tooldir)/lib${MULTISUBDIR}; \ + done + @for bsp in ${BSPS}; do\ + $(INSTALL_PROGRAM) $${bsp} $(tooldir)/lib${MULTISUBDIR}; \ + done + + install-includes: + $(mkinstalldirs) $(DESTDIR)$(tooldir)/include/excess; \ + for i in $(srcdir)/*.h; do \ + $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include/excess/`basename $$i`; \ + done; + + install-scripts: + @for script in ${SCRIPTS}; do\ + $(INSTALL_DATA) ${srcdir}/$${script} $(tooldir)/lib${MULTISUBDIR}; \ + done + + doc: + info: + install-info: + clean-info: + + Makefile: Makefile.in config.status @host_makefile_frag_path@ + $(SHELL) config.status + + config.status: configure + $(SHELL) config.status --recheck Index: libgloss/lm32/configure.in =================================================================== RCS file: libgloss/lm32/configure.in diff -N libgloss/lm32/configure.in *** /dev/null 1 Jan 1970 00:00:00 -0000 --- libgloss/lm32/configure.in 17 Dec 2008 22:33:49 -0000 *************** *** 0 **** --- 1,55 ---- + dnl Process this file with autoconf to produce a configure script. + AC_PREREQ(2.59)dnl + AC_INIT(crt0.S) + + if test "${enable_shared}" = "yes" ; then + echo "Shared libraries not supported for cross compiling, ignored" + fi + + if test "$srcdir" = "." ; then + if test "${with_target_subdir}" != "." ; then + libgloss_topdir="${srcdir}/${with_multisrctop}../../.." + else + libgloss_topdir="${srcdir}/${with_multisrctop}../.." + fi + else + libgloss_topdir="${srcdir}/../.." + fi + AC_CONFIG_AUX_DIR($libgloss_topdir) + + AC_CANONICAL_SYSTEM + AC_ARG_PROGRAM + + AC_PROG_INSTALL + + LIB_AC_PROG_CC + AS=${AS-as} + AC_SUBST(AS) + AR=${AR-ar} + AC_SUBST(AR) + LD=${LD-ld} + AC_SUBST(LD) + AC_PROG_RANLIB + LIB_AM_PROG_AS + + host_makefile_frag=${srcdir}/../config/default.mh + + dnl We have to assign the same value to other variables because autoconf + dnl doesn't provide a mechanism to substitute a replacement keyword with + dnl arbitrary data or pathnames. + dnl + host_makefile_frag_path=$host_makefile_frag + AC_SUBST(host_makefile_frag_path) + AC_SUBST_FILE(host_makefile_frag) + + AC_CONFIG_FILES(Makefile, + . ${libgloss_topdir}/config-ml.in, + srcdir=${srcdir} + target=${target} + with_multisubdir=${with_multisubdir} + ac_configure_args="${ac_configure_args} --enable-multilib" + CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + libgloss_topdir=${libgloss_topdir} + ) + AC_OUTPUT + Index: libgloss/lm32/crt0.S =================================================================== RCS file: libgloss/lm32/crt0.S diff -N libgloss/lm32/crt0.S *** /dev/null 1 Jan 1970 00:00:00 -0000 --- libgloss/lm32/crt0.S 17 Dec 2008 22:33:49 -0000 *************** *** 0 **** --- 1,64 ---- + /* + * Lattice Mico32 C startup code. + * Contributed by Jon Beniston + * + * 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. + */ + + .section .boot, "ax", @progbits + + /* Program starts here */ + + .global _start + _start: + + /* Setup stack and global pointer */ + mvhi sp, hi(_fstack) + ori sp, sp, lo(_fstack) + mvhi gp, hi(_gp) + ori gp, gp, lo(_gp) + + /* Clear BSS */ + 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 + + /* Call C++ constructors */ + calli _init + + /* Call C++ destructors on exit */ + mvhi r1, hi(_fini) + ori r1, r1, lo(_fini) + calli atexit + + /* Call main program */ + mvi r1, 0 + mvi r2, 0 + mvi r3, 0 + calli main + + /* Call exit, which doesn't return, to perform any clean up */ + calli exit Index: libgloss/lm32/isatty.c =================================================================== RCS file: libgloss/lm32/isatty.c diff -N libgloss/lm32/isatty.c *** /dev/null 1 Jan 1970 00:00:00 -0000 --- libgloss/lm32/isatty.c 17 Dec 2008 22:33:49 -0000 *************** *** 0 **** --- 1,43 ---- + /* + * Lattice Mico32 implementation of isatty system call. + * Contributed by Jon Beniston + * + * 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. + */ + + #include "glue.h" + + /* + * isatty -- returns 1 if connected to a terminal device, + * returns 0 if not. + * stdin, stdout and sterrr are assumed to be serial ports, + * other files are not. + */ + int + _DEFUN (_isatty, (fd), + int fd) + { + if ((fd == 0) || (fd == 1) || (fd == 2)) + return 1; + else + return 0; + } Index: libgloss/lm32/scall.S =================================================================== RCS file: libgloss/lm32/scall.S diff -N libgloss/lm32/scall.S *** /dev/null 1 Jan 1970 00:00:00 -0000 --- libgloss/lm32/scall.S 17 Dec 2008 22:33:49 -0000 *************** *** 0 **** --- 1,123 ---- + /* + * Lattice Mico32 system calls. + * Contributed by Jon Beniston + * + * 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. + */ + + #include + + /* + * System call convention (as implemented in simulator: + * - System call number in register r8 + * - Return value in r1 and r2 (only if 64-bit value) + * - errno in r3 + */ + + .extern errno + + .global _write + _write: + mvi r8, SYS_write + scall + mvhi r4, hi(errno) + ori r4, r4, lo(errno) + sw (r4+0), r3 + ret + + .global _read + _read: + mvi r8, SYS_read + scall + mvhi r4, hi(errno) + ori r4, r4, lo(errno) + sw (r4+0), r3 + ret + + .global _open + _open: + mvi r8, SYS_open + scall + mvhi r4, hi(errno) + ori r4, r4, lo(errno) + sw (r4+0), r3 + ret + + .global _close + _close: + mvi r8, SYS_close + scall + mvhi r4, hi(errno) + ori r4, r4, lo(errno) + sw (r4+0), r3 + ret + + .global _lseek + _lseek: + mvi r8, SYS_lseek + scall + mvhi r4, hi(errno) + ori r4, r4, lo(errno) + sw (r4+0), r3 + ret + + .global _fstat + _fstat: + mvi r8, SYS_fstat + scall + mvhi r4, hi(errno) + ori r4, r4, lo(errno) + sw (r4+0), r3 + ret + + .global _stat + _stat: + mvi r8, SYS_stat + scall + mvhi r4, hi(errno) + ori r4, r4, lo(errno) + sw (r4+0), r3 + ret + + .global _link + _link: + mvi r8, SYS_link + scall + mvhi r4, hi(errno) + ori r4, r4, lo(errno) + sw (r4+0), r3 + ret + + .global _unlink + _unlink: + mvi r8, SYS_unlink + scall + mvhi r4, hi(errno) + ori r4, r4, lo(errno) + sw (r4+0), r3 + ret + + .global _exit + _exit: + /* This call doesn't return */ + mvi r8, SYS_exit + scall Index: libgloss/lm32/sim.ld =================================================================== RCS file: libgloss/lm32/sim.ld diff -N libgloss/lm32/sim.ld *** /dev/null 1 Jan 1970 00:00:00 -0000 --- libgloss/lm32/sim.ld 17 Dec 2008 22:33:49 -0000 *************** *** 0 **** --- 1,149 ---- + /* + * Simulator Link script for Lattice Mico32. + * Contributed by Jon Beniston + * + * 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(crti.o crtbegin.o crt0.o crtend.o crtn.o) + GROUP(-lgloss -lnosys -lc -lgcc) + + MEMORY + { + ram : ORIGIN = 0x00000000, LENGTH = 0x100000 + } + + 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) } + } Index: newlib/configure.host =================================================================== RCS file: /cvs/src/src/newlib/configure.host,v retrieving revision 1.103 diff -c -p -r1.103 configure.host *** newlib/configure.host 12 Dec 2008 17:07:37 -0000 1.103 --- newlib/configure.host 17 Dec 2008 22:33:50 -0000 *************** case "${host}" in *** 637,642 **** --- 637,645 ---- syscall_dir=syscalls default_newlib_io_long_long="yes" ;; + lm32-*-*) + syscall_dir=syscalls + ;; m32r-*-*) # Pass -msdata=sdata so _impure_ptr goes in .sdata. # We don't generate sda relocs however for upward compatibility.