v850 port: Initial addition with BSP for simulator in GDB

Port
  + v850 does not have appear to have any optimized bit scan instructions
  + v850 does have single instructions for wap u16 and u32
  + Code path optimization preferences set
  + Add BSP variants for each GCC CPU model flag and a README
    - v850e1 variant does not work (fails during BSP initialization)
BSP for GDB v850 Simulator
  + linkcmds matches defaults in GDB simulator with RTEMS mods
  + crt1.c added from v850 newlib port for __main()
  + BSP exits cleanly
  + printk and console I/O work
  + uses clock tick from IDLE task
  + Tests not requiring real clock ISR work
Documentation
  + CPU Supplment chapter for v850 added
This commit is contained in:
Joel Sherrill
2012-06-11 13:37:29 -05:00
parent 9da42fb87a
commit 2d7ae960bb
40 changed files with 2839 additions and 3 deletions

View File

@@ -26,6 +26,7 @@ _RTEMS_CPU_SUBDIR([powerpc],[$1]);;
_RTEMS_CPU_SUBDIR([sh],[$1]);;
_RTEMS_CPU_SUBDIR([sparc],[$1]);;
_RTEMS_CPU_SUBDIR([sparc64],[$1]);;
_RTEMS_CPU_SUBDIR([v850],[$1]);;
*) AC_MSG_ERROR([Invalid RTEMS_CPU <[$]{RTEMS_CPU}>])
esac
])

View File

@@ -0,0 +1,15 @@
##
##
ACLOCAL_AMFLAGS = -I ../../../aclocal
## Descend into the @RTEMS_BSP_FAMILY@ directory
## Currently, the shared directory is not explicitly
## added but it is present in the source tree.
SUBDIRS = @RTEMS_BSP_FAMILY@
EXTRA_DIST =
include $(srcdir)/preinstall.am
include $(top_srcdir)/../../../automake/subdirs.am
include $(top_srcdir)/../../../automake/local.am

View File

@@ -0,0 +1,10 @@
# RTEMS_CHECK_BSPDIR(RTEMS_BSP_FAMILY)
AC_DEFUN([RTEMS_CHECK_BSPDIR],
[
case "$1" in
gdbv850sim )
AC_CONFIG_SUBDIRS([gdbv850sim]);;
*)
AC_MSG_ERROR([Invalid BSP]);;
esac
])

View File

@@ -0,0 +1,20 @@
## Process this file with autoconf to produce a configure script.
##
AC_PREREQ([2.68])
AC_INIT([rtems-c-src-lib-libbsp-v850],[_RTEMS_VERSION],[http://www.rtems.org/bugzilla])
AC_CONFIG_SRCDIR([gdbv850sim])
RTEMS_TOP(../../../../..)
RTEMS_CANONICAL_TARGET_CPU
AM_INIT_AUTOMAKE([no-define foreign 1.11.1])
AM_MAINTAINER_MODE
RTEMS_ENV_RTEMSBSP
RTEMS_PROJECT_ROOT
RTEMS_CHECK_BSPDIR([$RTEMS_BSP_FAMILY])
# Explicitly list all Makefiles here
AC_CONFIG_FILES([Makefile])
AC_OUTPUT

View File

@@ -0,0 +1,53 @@
##
##
ACLOCAL_AMFLAGS = -I ../../../../aclocal
include $(top_srcdir)/../../../../automake/compile.am
include $(top_srcdir)/../../bsp.am
include_bspdir = $(includedir)/bsp
dist_project_lib_DATA = bsp_specs
include_HEADERS = include/bsp.h
include_HEADERS += ../../shared/include/tm27.h
include_bsp_HEADERS = include/syscall.h
nodist_include_HEADERS = include/bspopts.h
nodist_include_bsp_HEADERS = ../../shared/include/bootcard.h
DISTCLEANFILES = include/bspopts.h
noinst_PROGRAMS =
nodist_include_HEADERS += ../../shared/include/coverhd.h
EXTRA_DIST = start/start.S
start.$(OBJEXT): start/start.S
$(CPPASCOMPILE) -o $@ -c $<
project_lib_DATA = start.$(OBJEXT)
dist_project_lib_DATA += startup/linkcmds
libbsp_a_SOURCES = ../../shared/bspclean.c
libbsp_a_SOURCES += ../../shared/bsplibc.c
libbsp_a_SOURCES += ../../shared/bsppredriverhook.c
libbsp_a_SOURCES += ../../shared/bsppretaskinghook.c
libbsp_a_SOURCES += ../../shared/bspgetworkarea.c
libbsp_a_SOURCES += ../../shared/bsppost.c
libbsp_a_SOURCES += ../../shared/bspstart.c
libbsp_a_SOURCES += ../../shared/bootcard.c
libbsp_a_SOURCES += ../../shared/sbrk.c
libbsp_a_SOURCES += ../../shared/gnatinstallhandler.c
libbsp_a_SOURCES += startup/bspreset.c
libbsp_a_SOURCES += ../../v850/shared/crt1.c
libbsp_a_SOURCES += startup/trap.S
libbsp_a_SOURCES += ../../shared/clock_driver_simidle.c
libbsp_a_SOURCES += ../../shared/console-polled.c
libbsp_a_SOURCES += console/console-io.c
libbsp_a_SOURCES += ../../shared/timerstub.c
noinst_LIBRARIES = libbsp.a
include $(srcdir)/preinstall.am
include $(top_srcdir)/../../../../automake/local.am

View File

@@ -0,0 +1,7 @@
This directory contains a family of BSPs for the v850 simulator
found in the GNU Debugger. A variant is provided for each CPU
model option flag found in the GCC SVN head as of 30 May 2012.
This simulator is an instruction simulator and does not include
devices for a clock tick or benchmark timer driver. Traps are used
to provide console I/O.

View File

@@ -0,0 +1,15 @@
%rename endfile old_endfile
%rename startfile old_startfile
%rename link old_link
*startfile:
%{!qrtems: %(old_startfile)} \
%{!nostdlib: %{qrtems: start.o%s -e _start}}
*endfile:
%{!qrtems: %(old_endfile)} %{qrtems: %(old_endfile)} \
%{!nostdlib: %{qrtems:}}
*link:
%(old_link) %{!qrtems: %(old_link)} %{qrtems: %(old_link)}

View File

@@ -0,0 +1,20 @@
## Process this file with autoconf to produce a configure script.
AC_PREREQ([2.68])
AC_INIT([rtems-c-src-lib-libbsp-v850-gdbv850sim],[_RTEMS_VERSION],[http://www.rtems.org/bugzilla])
AC_CONFIG_SRCDIR([bsp_specs])
RTEMS_TOP(../../../../../..)
RTEMS_CANONICAL_TARGET_CPU
AM_INIT_AUTOMAKE([no-define nostdinc foreign 1.11.1])
RTEMS_BSP_CONFIGURE
RTEMS_PROG_CC_FOR_TARGET
RTEMS_CANONICALIZE_TOOLS
RTEMS_PROG_CCAS
RTEMS_BSP_CLEANUP_OPTIONS(0, 1)
# Explicitly list all Makefiles here
AC_CONFIG_FILES([Makefile])
AC_OUTPUT

View File

@@ -0,0 +1,61 @@
/*
* COPYRIGHT (c) 1989-2012.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.rtems.com/license/LICENSE.
*/
#include <bsp.h>
#include <rtems/libio.h>
#include <bsp/syscall.h>
/*
* console_initialize_hardware
*
* This routine initializes the console hardware.
*/
void console_initialize_hardware(void)
{
}
/*
* console_outbyte_polled
*
* This routine transmits a character using polling.
*/
void console_outbyte_polled(
int port,
char ch
)
{
TRAP0(SYS_write, 1, &ch, 1);
}
/*
* console_inbyte_nonblocking
*
* This routine polls for a character.
*/
int console_inbyte_nonblocking(
int port
)
{
char ch;
int rc;
rc = TRAP0 (SYS_read, 0, &ch, 1);
if ( rc != 1 )
return -1;
return ch;
}
#include <rtems/bspIo.h>
void console_output_char(char c) { console_outbyte_polled( 0, c ); }
BSP_output_char_function_type BSP_output_char = console_output_char;
BSP_polling_getchar_function_type BSP_poll_char = NULL;

View File

@@ -0,0 +1,37 @@
/*
* This include file contains some definitions specific to the
* GDB simulator in gdb.
*/
/*
* COPYRIGHT (c) 1989-2012.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.rtems.com/license/LICENSE.
*/
#ifndef _BSP_H
#define _BSP_H
#ifdef __cplusplus
extern "C" {
#endif
#include <bspopts.h>
#include <rtems.h>
#include <rtems/iosupp.h>
#include <rtems/console.h>
#include <rtems/clockdrv.h>
/* support for simulated clock tick */
Thread clock_driver_sim_idle_body(uintptr_t);
#define BSP_IDLE_TASK_BODY clock_driver_sim_idle_body
#ifdef __cplusplus
}
#endif
#endif

View File

@@ -0,0 +1,31 @@
/* include/bspopts.h.in. Generated from configure.ac by autoheader. */
/* If defined, then the BSP Framework will put a non-zero pattern into the
RTEMS Workspace and C program heap. This should assist in finding code that
assumes memory starts set to zero. */
#undef BSP_DIRTY_MEMORY
/* If defined, print a message and wait until pressed before resetting board
when application exits. */
#undef BSP_PRESS_KEY_FOR_RESET
/* If defined, reset the board when the application exits. */
#undef BSP_RESET_BOARD_AT_EXIT
/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT
/* Define to the full name of this package. */
#undef PACKAGE_NAME
/* Define to the full name and version of this package. */
#undef PACKAGE_STRING
/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME
/* Define to the home page for this package. */
#undef PACKAGE_URL
/* Define to the version of this package. */
#undef PACKAGE_VERSION

View File

@@ -0,0 +1,47 @@
/* from libgloss/v850 */
#ifndef _SYS_SYSCALL_H_
#define _SYS_SYSCALL_H_
#ifndef ASM
extern int __trap0 (int function, int p1, int p2, int p3);
#define TRAP0(f, p1, p2, p3) __trap0(f, (int)(p1), (int)(p2), (int)(p3))
#endif
#define SYS_exit 1
#define SYS_fork 2
#define SYS_read 3
#define SYS_write 4
#define SYS_open 5
#define SYS_close 6
#define SYS_wait4 7
#define SYS_creat 8
#define SYS_link 9
#define SYS_unlink 10
#define SYS_execv 11
#define SYS_chdir 12
#define SYS_mknod 14
#define SYS_chmod 15
#define SYS_chown 16
#define SYS_lseek 19
#define SYS_getpid 20
#define SYS_isatty 21
#define SYS_fstat 22
#define SYS_time 23
#define SYS_ARG 24
#define SYS_stat 38
#define SYS_pipe 42
#define SYS_execve 59
#define SYS_times 43
#define SYS_gettimeofday 116
#define SYS_rename 134
#define SYS_utime 201 /* not really a system call */
#define SYS_wait 202 /* nor is this */
#endif

View File

@@ -0,0 +1,7 @@
#
# Base Config file for the v850 GDB Simulator as v850e1
#
CPU_CFLAGS = -mv850e1
include $(RTEMS_ROOT)/make/custom/v850sim.inc

View File

@@ -0,0 +1,7 @@
#
# Base Config file for the v850 GDB Simulator as v850e2
#
CPU_CFLAGS = -mv850e2
include $(RTEMS_ROOT)/make/custom/v850sim.inc

View File

@@ -0,0 +1,7 @@
#
# Base Config file for the v850 GDB Simulator as v850e2v3
#
CPU_CFLAGS = -mv850e2v3
include $(RTEMS_ROOT)/make/custom/v850sim.inc

View File

@@ -0,0 +1,7 @@
#
# Base Config file for the v850 GDB Simulator as v850e
#
CPU_CFLAGS = -mv850e
include $(RTEMS_ROOT)/make/custom/v850sim.inc

View File

@@ -0,0 +1,7 @@
#
# Base Config file for the v850 GDB Simulator as v850es
#
CPU_CFLAGS = -mv850es
include $(RTEMS_ROOT)/make/custom/v850sim.inc

View File

@@ -0,0 +1,8 @@
#
# Base Config file for the v850 GDB Simulator as v850
#
# This is the same as not specifying a CPU model flag.
CPU_CFLAGS = -mv850
include $(RTEMS_ROOT)/make/custom/v850sim.inc

View File

@@ -0,0 +1,12 @@
#
# Shared config file for the v850 GDB Simulator
#
# CPU_CFLAGS is set by each specific variant.
include $(RTEMS_ROOT)/make/custom/default.cfg
RTEMS_CPU=v850
RTEMS_CPU_MODEL=v850
# optimize flag: typically -O2
CFLAGS_OPTIMIZE_V = -O2 -g

View File

@@ -0,0 +1,71 @@
## Automatically generated by ampolish3 - Do not edit
if AMPOLISH3
$(srcdir)/preinstall.am: Makefile.am
$(AMPOLISH3) $(srcdir)/Makefile.am > $(srcdir)/preinstall.am
endif
PREINSTALL_DIRS =
DISTCLEANFILES += $(PREINSTALL_DIRS)
all-local: $(TMPINSTALL_FILES)
TMPINSTALL_FILES =
CLEANFILES = $(TMPINSTALL_FILES)
all-am: $(PREINSTALL_FILES)
PREINSTALL_FILES =
CLEANFILES += $(PREINSTALL_FILES)
$(PROJECT_LIB)/$(dirstamp):
@$(MKDIR_P) $(PROJECT_LIB)
@: > $(PROJECT_LIB)/$(dirstamp)
PREINSTALL_DIRS += $(PROJECT_LIB)/$(dirstamp)
$(PROJECT_INCLUDE)/$(dirstamp):
@$(MKDIR_P) $(PROJECT_INCLUDE)
@: > $(PROJECT_INCLUDE)/$(dirstamp)
PREINSTALL_DIRS += $(PROJECT_INCLUDE)/$(dirstamp)
$(PROJECT_INCLUDE)/bsp/$(dirstamp):
@$(MKDIR_P) $(PROJECT_INCLUDE)/bsp
@: > $(PROJECT_INCLUDE)/bsp/$(dirstamp)
PREINSTALL_DIRS += $(PROJECT_INCLUDE)/bsp/$(dirstamp)
$(PROJECT_LIB)/bsp_specs: bsp_specs $(PROJECT_LIB)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_LIB)/bsp_specs
PREINSTALL_FILES += $(PROJECT_LIB)/bsp_specs
$(PROJECT_INCLUDE)/bsp.h: include/bsp.h $(PROJECT_INCLUDE)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp.h
$(PROJECT_INCLUDE)/tm27.h: ../../shared/include/tm27.h $(PROJECT_INCLUDE)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/tm27.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/tm27.h
$(PROJECT_INCLUDE)/bsp/syscall.h: include/syscall.h $(PROJECT_INCLUDE)/bsp/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/syscall.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/syscall.h
$(PROJECT_INCLUDE)/bspopts.h: include/bspopts.h $(PROJECT_INCLUDE)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bspopts.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/bspopts.h
$(PROJECT_INCLUDE)/bsp/bootcard.h: ../../shared/include/bootcard.h $(PROJECT_INCLUDE)/bsp/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/bootcard.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/bootcard.h
$(PROJECT_INCLUDE)/coverhd.h: ../../shared/include/coverhd.h $(PROJECT_INCLUDE)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/coverhd.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/coverhd.h
$(PROJECT_LIB)/start.$(OBJEXT): start.$(OBJEXT) $(PROJECT_LIB)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_LIB)/start.$(OBJEXT)
TMPINSTALL_FILES += $(PROJECT_LIB)/start.$(OBJEXT)
$(PROJECT_LIB)/linkcmds: startup/linkcmds $(PROJECT_LIB)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_LIB)/linkcmds
PREINSTALL_FILES += $(PROJECT_LIB)/linkcmds

View File

@@ -0,0 +1,78 @@
# NEC V850 startup code
.section .text
.global _start
_start:
#if defined(__v850e__) || defined(__v850e2__) || defined(__v850e2v3__)
movea 255, r0, r20
mov 65535, r21
mov hilo(_stack), sp
mov hilo(__ep), ep
mov hilo(__gp), gp
mov hilo(__ctbp), r6
ldsr r6, ctbp
mov hilo(_edata), r6
mov hilo(_end), r7
.L0:
st.w r0, 0[r6]
addi 4, r6, r6
cmp r7, r6
bl .L0
.L1:
jarl ___main, r31
addi -16, sp, sp
mov 0, r6
mov 0, r7
mov 0, r8
/* jarl _main, r31 */
jarl _boot_card, r31
mov r10, r6
jarl _exit, r31
# else
movea 255, r0, r20
mov r0, r21
ori 65535, r0, r21
movhi hi(_stack), r0, sp
movea lo(_stack), sp, sp
movhi hi(__ep), r0, ep
movea lo(__ep), ep, ep
movhi hi(__gp), r0, gp
movea lo(__gp), gp, gp
movhi hi(_edata), r0, r6
movea lo(_edata), r6, r6
movhi hi(_end), r0, r7
movea lo(_end), r7, r7
.L0:
st.b r0, 0[r6]
addi 1, r6, r6
cmp r7, r6
bl .L0
.L1:
/* jarl ___main, r31 */
addi -16, sp, sp
mov 0, r6
mov 0, r7
mov 0, r8
/* jarl _main, r31 */
jarl _boot_card, r31
mov r10, r6
.L2:
br .L2
/* jarl _exit, r31 */
# endif
#if 0
.section .stack
_stack: .long 1
#endif
.section .data
.global ___dso_handle
.weak ___dso_handle
___dso_handle:
.long 0

View File

@@ -0,0 +1,23 @@
/**
* @file
*
* This routine exits the simulator.
*/
/*
* COPYRIGHT (c) 1989-2012.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.rtems.com/license/LICENSE.
*/
#include <rtems.h>
#include <bsp/bootcard.h>
#include <bsp/syscall.h>
void bsp_reset( void )
{
TRAP0 (SYS_exit, 0, 0, 0);
}

View File

@@ -0,0 +1,214 @@
/*
* Declare some sizes.
*/
_RamBase = DEFINED(_RamBase) ? _RamBase : 0x100000; /* RAM starts at 1MB */
_RamSize = DEFINED(_RamSize) ? _RamSize : 0x100000; /* default is 1MB */
_HeapSize = DEFINED(_HeapSize) ? _HeapSize : 0x0;
_StackSize = DEFINED(_StackSize) ? _StackSize : 0x1000;
/* Default linker script, for normal executables */
OUTPUT_FORMAT("elf32-v850", "elf32-v850",
"elf32-v850")
OUTPUT_ARCH(v850)
ENTRY(_start)
/* GROUP(-lc -lsim -lgcc) */
SEARCH_DIR(.);
EXTERN(__ctbp __ep __gp);
SECTIONS
{
/* This saves a little space in the ELF file, since the zda starts
at a higher location that the ELF headers take up. */
.zdata 0x160 :
{
*(.zdata)
*(.zbss)
*(reszdata)
*(.zcommon)
}
/* This is the read only part of the zero data area.
Having it as a seperate section prevents its
attributes from being inherited by the zdata
section. Specifically it prevents the zdata
section from being marked READONLY. */
.rozdata ALIGN (4) :
{
*(.rozdata)
*(romzdata)
*(romzbss)
}
/* Read-only sections, merged into text segment. */
. = 0x100000;
.interp : { *(.interp) }
.hash : { *(.hash) }
.dynsym : { *(.dynsym) }
.dynstr : { *(.dynstr) }
.rel.text : { *(.rel.text) }
.rela.text : { *(.rela.text) }
.rel.data : { *(.rel.data) }
.rela.data : { *(.rela.data) }
.rel.rodata : { *(.rel.rodata) }
.rela.rodata : { *(.rela.rodata) }
.rel.gcc_except_table : { *(.rel.gcc_except_table) }
.rela.gcc_except_table : { *(.rela.gcc_except_table) }
.rel.got : { *(.rel.got) }
.rela.got : { *(.rela.got) }
.rel.ctors : { *(.rel.ctors) }
.rela.ctors : { *(.rela.ctors) }
.rel.dtors : { *(.rel.dtors) }
.rela.dtors : { *(.rela.dtors) }
.rel.init : { *(.rel.init) }
.rela.init : { *(.rela.init) }
.rel.fini : { *(.rel.fini) }
.rela.fini : { *(.rela.fini) }
.rel.bss : { *(.rel.bss) }
.rela.bss : { *(.rela.bss) }
.rel.plt : { *(.rel.plt) }
.rela.plt : { *(.rela.plt) }
.init : { KEEP (*(.init)) } =0
.plt : { *(.plt) }
.text :
{
*(.text)
*(.text.*)
/* .gnu.warning sections are handled specially by elf32.em. */
*(.gnu.warning)
*(.gnu.linkonce.t*)
} =0
_etext = .;
PROVIDE (etext = .);
/* This is special code area at the end of the normal text section.
It contains a small lookup table at the start followed by the
code pointed to by entries in the lookup table. */
.call_table_data ALIGN (4) :
{
PROVIDE(__ctbp = .);
*(.call_table_data)
} = 0xff /* Fill gaps with 0xff. */
.call_table_text :
{
*(.call_table_text)
}
.fini : { KEEP (*(.fini)) } =0
.rodata : { *(.rodata) *(.rodata.*) *(.gnu.linkonce.r*) }
.rodata1 : { *(.rodata1) }
.data :
{
*(.data)
*(.data.*)
*(.gnu.linkonce.d*)
CONSTRUCTORS
}
.data1 : { *(.data1) }
.ctors :
{
___ctors = .;
KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
KEEP (*(SORT(.ctors.*)))
KEEP (*crtend(.ctors))
___ctors_end = .;
}
.dtors :
{
___dtors = .;
KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
KEEP (*(SORT(.dtors.*)))
KEEP (*crtend.o(.dtors))
___dtors_end = .;
}
.jcr :
{
KEEP (*(.jcr))
}
.gcc_except_table : { *(.gcc_except_table) }
.got : { *(.got.plt) *(.got) }
.dynamic : { *(.dynamic) }
.tdata ALIGN (4) :
{
PROVIDE (__ep = .);
*(.tbyte)
*(.tcommon_byte)
*(.tdata)
*(.tbss)
*(.tcommon)
}
/* We want the small data sections together, so single-instruction offsets
can access them all, and initialized data all before uninitialized, so
we can shorten the on-disk segment size. */
.sdata ALIGN (4) :
{
PROVIDE (__gp = . + 0x8000);
*(.sdata)
}
/* See comment about .rozdata. */
.rosdata ALIGN (4) :
{
*(.rosdata)
}
/* We place the .sbss data section AFTER the .rosdata section, so that
it can directly preceed the .bss section. This allows runtime startup
code to initialise all the zero-data sections by simply taking the
value of '_edata' and zeroing until it reaches '_end'. */
.sbss :
{
__sbss_start = .;
*(.sbss)
*(.scommon)
}
_edata = DEFINED (__sbss_start) ? __sbss_start : . ;
PROVIDE (edata = _edata);
.bss :
{
__bss_start = DEFINED (__sbss_start) ? __sbss_start : . ;
__real_bss_start = . ;
*(.dynbss)
*(.bss)
*(COMMON)
}
. += _StackSize;
_stack = .;
_WorkAreaBase = .;
_end = . ;
PROVIDE (end = .);
/* 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) }
/* libgloss - User stack. */
/*
.stack 0x200000 :
{
__stack = .;
*(.stack)
}
*/
}

View File

@@ -0,0 +1,14 @@
/* from libgloss/v850 */
.text
.global ___trap0
___trap0:
trap 31
tst r10,r10
bz .L0
/*
* Libgloss cares about the errno from this. We don't
movhi hi(_errno),r0,r6
st.w r10,lo(_errno)[r6]
*/
.L0:
jmp [r31]

View File

@@ -0,0 +1,7 @@
## Automatically generated by ampolish3 - Do not edit
if AMPOLISH3
$(srcdir)/preinstall.am: Makefile.am
$(AMPOLISH3) $(srcdir)/Makefile.am > $(srcdir)/preinstall.am
endif

View File

@@ -0,0 +1,21 @@
/*
* From newlib ==> libc/sys/sysnecv850/crt1.c
*
* Obtained newlib 29 May 2012
*/
void __main ()
{
static int initialized;
if (! initialized)
{
typedef void (*pfunc) ();
extern pfunc __ctors[];
extern pfunc __ctors_end[];
pfunc *p;
initialized = 1;
for (p = __ctors_end; p > __ctors; )
(*--p) ();
}
}