forked from Imagelibrary/rtems
Part of the automake VI patch from Ralf Corsepius <corsepiu@faw.uni-ulm.de>:
> 5) rtems-rc-19990202-1.diff/reorg-install.sh > > reorg-install.sh fixes a Makefile variable name clash of RTEMS > configuration files and automake/autoconf standards. > Until now, RTEMS used $(INSTALL) for install-if-change. Automake and > autoconf use $(INSTALL) for a bsd-compatible install. As > install-if-change and bsd-install are not compatible, I renamed all > references to install-if-changed to $(INSTALL_CHANGED) and used > $(INSTALL) for bsd-install (==automake/autoconf standard). When > automake will be introduced install-if-change will probably be replaced > by $(INSTALL) and therefore will slowly vanish. For the moment, this > patch fixes a very nasty problem which prevents adding any automake file > until now (There are still more).
This commit is contained in:
@@ -25,7 +25,7 @@
|
||||
(STATES_WAITING_FOR_SIGNAL|STATES_INTERRUPTIBLE_BY_SIGNAL))
|
||||
|
||||
#define SIGACTION_TERMINATE \
|
||||
{ 0, SIGNAL_ALL_MASK, {_POSIX_signals_Abormal_termination_handler} }
|
||||
{ 0, SIGNAL_ALL_MASK, {_POSIX_signals_Abnormal_termination_handler} }
|
||||
#define SIGACTION_IGNORE \
|
||||
{ 0, SIGNAL_ALL_MASK, {SIG_IGN} }
|
||||
#define SIGACTION_STOP \
|
||||
@@ -109,7 +109,7 @@ void _POSIX_signals_Set_process_signals(
|
||||
#define _POSIX_signals_Stop_handler NULL
|
||||
#define _POSIX_signals_Continue_handler NULL
|
||||
|
||||
void _POSIX_signals_Abormal_termination_handler( int signo );
|
||||
void _POSIX_signals_Abnormal_termination_handler( int signo );
|
||||
|
||||
#endif
|
||||
/* end of file */
|
||||
|
||||
@@ -51,30 +51,30 @@ struct sigaction _POSIX_signals_Default_vectors[ SIG_ARRAY_MAX ] = {
|
||||
/* SIGTERM 15 */ SIGACTION_TERMINATE,
|
||||
/* SIGUSR1 16 */ SIGACTION_TERMINATE,
|
||||
/* SIGUSR2 17 */ SIGACTION_TERMINATE,
|
||||
/* SIGRTMIN 18 */ SIGACTION_IGNORE,
|
||||
/* SIGRT 19 */ SIGACTION_IGNORE,
|
||||
/* SIGRT 20 */ SIGACTION_IGNORE,
|
||||
/* SIGRT 21 */ SIGACTION_IGNORE,
|
||||
/* SIGRT 22 */ SIGACTION_IGNORE,
|
||||
/* SIGRT 23 */ SIGACTION_IGNORE,
|
||||
/* SIGRT 24 */ SIGACTION_IGNORE,
|
||||
/* SIGRT 25 */ SIGACTION_IGNORE,
|
||||
/* SIGRT 26 */ SIGACTION_IGNORE,
|
||||
/* SIGRT 27 */ SIGACTION_IGNORE,
|
||||
/* SIGRT 28 */ SIGACTION_IGNORE,
|
||||
/* SIGRT 29 */ SIGACTION_IGNORE,
|
||||
/* SIGRT 30 */ SIGACTION_IGNORE,
|
||||
/* SIGRT 31 */ SIGACTION_IGNORE,
|
||||
/* SIGRTMAX 32 */ SIGACTION_IGNORE
|
||||
/* SIGRTMIN 18 */ SIGACTION_TERMINATE,
|
||||
/* SIGRT 19 */ SIGACTION_TERMINATE,
|
||||
/* SIGRT 20 */ SIGACTION_TERMINATE,
|
||||
/* SIGRT 21 */ SIGACTION_TERMINATE,
|
||||
/* SIGRT 22 */ SIGACTION_TERMINATE,
|
||||
/* SIGRT 23 */ SIGACTION_TERMINATE,
|
||||
/* SIGRT 24 */ SIGACTION_TERMINATE,
|
||||
/* SIGRT 25 */ SIGACTION_TERMINATE,
|
||||
/* SIGRT 26 */ SIGACTION_TERMINATE,
|
||||
/* SIGRT 27 */ SIGACTION_TERMINATE,
|
||||
/* SIGRT 28 */ SIGACTION_TERMINATE,
|
||||
/* SIGRT 29 */ SIGACTION_TERMINATE,
|
||||
/* SIGRT 30 */ SIGACTION_TERMINATE,
|
||||
/* SIGRT 31 */ SIGACTION_TERMINATE,
|
||||
/* SIGRTMAX 32 */ SIGACTION_TERMINATE
|
||||
};
|
||||
|
||||
/*PAGE
|
||||
*
|
||||
* _POSIX_signals_Abormal_termination_handler
|
||||
* _POSIX_signals_Abnormal_termination_handler
|
||||
*
|
||||
*/
|
||||
|
||||
void _POSIX_signals_Abormal_termination_handler( int signo )
|
||||
void _POSIX_signals_Abnormal_termination_handler( int signo )
|
||||
{
|
||||
exit( 1 );
|
||||
}
|
||||
|
||||
@@ -30,6 +30,12 @@ extern rtems_cpu_table Cpu_table;
|
||||
|
||||
rtems_interrupt_level bsp_isr_level;
|
||||
|
||||
/*
|
||||
* Since there is a forward reference
|
||||
*/
|
||||
|
||||
int main(int argc, char **argv);
|
||||
|
||||
int boot_card(int argc, char **argv)
|
||||
{
|
||||
int status;
|
||||
|
||||
@@ -15,5 +15,4 @@ include $(RTEMS_ROOT)/make/directory.cfg
|
||||
|
||||
# wrapup is the one that actually builds and installs the library
|
||||
# from the individual .rel files built in other directories
|
||||
# NOTE: we pick up HPPA clock and timer from libcpu/hppa
|
||||
SUB_DIRS=startsis include startup console clock timer wrapup tools
|
||||
SUB_DIRS=startsis include startup gnatsupp console clock timer wrapup tools
|
||||
|
||||
59
c/src/lib/libbsp/sparc/erc32/gnatsupp/Makefile.in
Normal file
59
c/src/lib/libbsp/sparc/erc32/gnatsupp/Makefile.in
Normal file
@@ -0,0 +1,59 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
|
||||
@SET_MAKE@
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@:@srcdir@/../../../shared
|
||||
RTEMS_ROOT = @top_srcdir@
|
||||
PROJECT_ROOT = @PROJECT_ROOT@
|
||||
|
||||
INSTALL = @INSTALL@
|
||||
|
||||
PGM=${ARCH}/gnatsupp.rel
|
||||
|
||||
# C source names, if any, go here -- minus the .c
|
||||
C_PIECES=gnatsupp
|
||||
C_FILES=$(C_PIECES:%=%.c)
|
||||
C_O_FILES=$(C_PIECES:%=${ARCH}/%.o)
|
||||
|
||||
H_FILES=
|
||||
|
||||
# Assembly source names, if any, go here -- minus the .s
|
||||
S_PIECES=
|
||||
S_FILES=$(S_PIECES:%=%.S)
|
||||
S_O_FILES=$(S_FILES:%.S=${ARCH}/%.o)
|
||||
|
||||
SRCS=linkcmds $(C_FILES) $(CC_FILES) $(H_FILES) $(S_FILES)
|
||||
OBJS=$(C_O_FILES)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/$(RTEMS_BSP).cfg
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
|
||||
#
|
||||
# (OPTIONAL) Add local stuff here using +=
|
||||
#
|
||||
|
||||
DEFINES +=
|
||||
CPPFLAGS +=
|
||||
CFLAGS +=
|
||||
|
||||
LD_PATHS +=
|
||||
LD_LIBS +=
|
||||
LDFLAGS +=
|
||||
|
||||
#
|
||||
# Add your list of files to delete here. The config files
|
||||
# already know how to delete some stuff, so you may want
|
||||
# to just run 'make clean' first to see what gets missed.
|
||||
# 'make clobber' already includes 'make clean'
|
||||
#
|
||||
|
||||
CLEAN_ADDITIONS +=
|
||||
CLOBBER_ADDITIONS +=
|
||||
|
||||
${PGM}: ${SRCS} ${OBJS}
|
||||
$(make-rel)
|
||||
|
||||
all: ${ARCH} $(SRCS) $(PGM)
|
||||
$(INSTALL_CHANGE) $(srcdir)/linkcmds ${PROJECT_RELEASE}/lib
|
||||
107
c/src/lib/libbsp/sparc/erc32/gnatsupp/gnatsupp.c
Normal file
107
c/src/lib/libbsp/sparc/erc32/gnatsupp/gnatsupp.c
Normal file
@@ -0,0 +1,107 @@
|
||||
/*
|
||||
*
|
||||
* Support for gnat/rtems machine error exception handling.
|
||||
* Jiri Gaisler, ESA/ESTEC, 17-02-1999.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <bsp.h>
|
||||
#include <signal.h>
|
||||
|
||||
/*
|
||||
* Synchronous trap handler. Map the trap number of SIGFPE, SIGSEGV
|
||||
* or SIGILL to generate the corresponding Ada exception.
|
||||
*/
|
||||
|
||||
rtems_isr __gnat_exception_handler
|
||||
( rtems_vector_number trap)
|
||||
{
|
||||
rtems_unsigned32 real_trap;
|
||||
rtems_unsigned32 signal;
|
||||
|
||||
real_trap = SPARC_REAL_TRAP_NUMBER(trap);
|
||||
switch (real_trap) {
|
||||
case 0x08: /* FPU exception */
|
||||
case 0x0A: /* TAG overflow */
|
||||
case 0x82: /* divide by zero */
|
||||
signal = SIGFPE; /* Will cause Constraint_Error */
|
||||
break;
|
||||
case 0x01: /* Instruction access exception */
|
||||
case 0x09: /* Data access exception */
|
||||
signal = SIGSEGV; /* Will cause Storage_Error */
|
||||
break;
|
||||
default: /* Anything else ... */
|
||||
signal = SIGILL; /* Will cause Program_Error */
|
||||
break;
|
||||
}
|
||||
kill(getpid(),signal);
|
||||
}
|
||||
|
||||
/*
|
||||
* Asynchronous trap handler. As it happens, the interrupt trap numbers for
|
||||
* SPARC is 17 - 31, so we just map then directly on the same signal.
|
||||
*/
|
||||
|
||||
rtems_isr __gnat_interrupt_handler
|
||||
( rtems_vector_number trap)
|
||||
{
|
||||
rtems_unsigned32 real_trap;
|
||||
|
||||
real_trap = SPARC_REAL_TRAP_NUMBER(trap);
|
||||
|
||||
kill(getpid(),real_trap);
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* Default signal handler with error reporting
|
||||
*/
|
||||
|
||||
void __gnat_signals_Abormal_termination_handler( int signo )
|
||||
{
|
||||
switch ( signo ) {
|
||||
case SIGFPE:
|
||||
DEBUG_puts("\nConstraint_Error\n");
|
||||
break;
|
||||
case SIGSEGV:
|
||||
DEBUG_puts("\nStorage_Error\n");
|
||||
break;
|
||||
default:
|
||||
DEBUG_puts("\nProgram_Error\n");
|
||||
break;
|
||||
}
|
||||
exit( 1 );
|
||||
}
|
||||
|
||||
const struct sigaction __gnat_error_vector = {
|
||||
0, -1, {__gnat_signals_Abormal_termination_handler}};
|
||||
|
||||
void __gnat_install_handler()
|
||||
{
|
||||
rtems_unsigned32 trap;
|
||||
rtems_isr_entry previous_isr;
|
||||
|
||||
sigaction(SIGSEGV, &__gnat_error_vector, NULL);
|
||||
sigaction(SIGFPE , &__gnat_error_vector, NULL);
|
||||
sigaction(SIGILL , &__gnat_error_vector, NULL);
|
||||
|
||||
for ( trap=0 ; trap<256 ; trap++ ) {
|
||||
|
||||
/*
|
||||
* Skip window overflow, underflow, and flush as well as software
|
||||
* trap 0 which we will use as a shutdown. Also avoid trap 0x70 - 0x7f
|
||||
* which cannot happen and where some of the space is used to pass
|
||||
* paramaters to the program. Trap 0x1d is used by the clock tick
|
||||
* and 0x83 by the remote debugging stub.
|
||||
*/
|
||||
|
||||
if (( trap >= 0x11 ) && ( trap <= 0x1f )) {
|
||||
if ( trap != 0x1d )
|
||||
rtems_interrupt_catch( __gnat_interrupt_handler,
|
||||
trap, &previous_isr );
|
||||
} else if (( trap != 5 && trap != 6 && trap != 0x83 ) &&
|
||||
(( trap < 0x70 ) || ( trap > 0x80 )))
|
||||
set_vector( __gnat_exception_handler,
|
||||
SPARC_SYNCHRONOUS_TRAP( trap ), 1 );
|
||||
}
|
||||
}
|
||||
@@ -10,7 +10,7 @@ PROJECT_ROOT = @PROJECT_ROOT@
|
||||
|
||||
INSTALL = @INSTALL@
|
||||
|
||||
BSP_PIECES=startup console clock timer
|
||||
BSP_PIECES=startup console clock timer gnat_supp
|
||||
# pieces to pick up out of libcpu/sparc
|
||||
CPU_PIECES=reg_win
|
||||
GENERIC_PIECES=
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
(STATES_WAITING_FOR_SIGNAL|STATES_INTERRUPTIBLE_BY_SIGNAL))
|
||||
|
||||
#define SIGACTION_TERMINATE \
|
||||
{ 0, SIGNAL_ALL_MASK, {_POSIX_signals_Abormal_termination_handler} }
|
||||
{ 0, SIGNAL_ALL_MASK, {_POSIX_signals_Abnormal_termination_handler} }
|
||||
#define SIGACTION_IGNORE \
|
||||
{ 0, SIGNAL_ALL_MASK, {SIG_IGN} }
|
||||
#define SIGACTION_STOP \
|
||||
@@ -109,7 +109,7 @@ void _POSIX_signals_Set_process_signals(
|
||||
#define _POSIX_signals_Stop_handler NULL
|
||||
#define _POSIX_signals_Continue_handler NULL
|
||||
|
||||
void _POSIX_signals_Abormal_termination_handler( int signo );
|
||||
void _POSIX_signals_Abnormal_termination_handler( int signo );
|
||||
|
||||
#endif
|
||||
/* end of file */
|
||||
|
||||
@@ -51,30 +51,30 @@ struct sigaction _POSIX_signals_Default_vectors[ SIG_ARRAY_MAX ] = {
|
||||
/* SIGTERM 15 */ SIGACTION_TERMINATE,
|
||||
/* SIGUSR1 16 */ SIGACTION_TERMINATE,
|
||||
/* SIGUSR2 17 */ SIGACTION_TERMINATE,
|
||||
/* SIGRTMIN 18 */ SIGACTION_IGNORE,
|
||||
/* SIGRT 19 */ SIGACTION_IGNORE,
|
||||
/* SIGRT 20 */ SIGACTION_IGNORE,
|
||||
/* SIGRT 21 */ SIGACTION_IGNORE,
|
||||
/* SIGRT 22 */ SIGACTION_IGNORE,
|
||||
/* SIGRT 23 */ SIGACTION_IGNORE,
|
||||
/* SIGRT 24 */ SIGACTION_IGNORE,
|
||||
/* SIGRT 25 */ SIGACTION_IGNORE,
|
||||
/* SIGRT 26 */ SIGACTION_IGNORE,
|
||||
/* SIGRT 27 */ SIGACTION_IGNORE,
|
||||
/* SIGRT 28 */ SIGACTION_IGNORE,
|
||||
/* SIGRT 29 */ SIGACTION_IGNORE,
|
||||
/* SIGRT 30 */ SIGACTION_IGNORE,
|
||||
/* SIGRT 31 */ SIGACTION_IGNORE,
|
||||
/* SIGRTMAX 32 */ SIGACTION_IGNORE
|
||||
/* SIGRTMIN 18 */ SIGACTION_TERMINATE,
|
||||
/* SIGRT 19 */ SIGACTION_TERMINATE,
|
||||
/* SIGRT 20 */ SIGACTION_TERMINATE,
|
||||
/* SIGRT 21 */ SIGACTION_TERMINATE,
|
||||
/* SIGRT 22 */ SIGACTION_TERMINATE,
|
||||
/* SIGRT 23 */ SIGACTION_TERMINATE,
|
||||
/* SIGRT 24 */ SIGACTION_TERMINATE,
|
||||
/* SIGRT 25 */ SIGACTION_TERMINATE,
|
||||
/* SIGRT 26 */ SIGACTION_TERMINATE,
|
||||
/* SIGRT 27 */ SIGACTION_TERMINATE,
|
||||
/* SIGRT 28 */ SIGACTION_TERMINATE,
|
||||
/* SIGRT 29 */ SIGACTION_TERMINATE,
|
||||
/* SIGRT 30 */ SIGACTION_TERMINATE,
|
||||
/* SIGRT 31 */ SIGACTION_TERMINATE,
|
||||
/* SIGRTMAX 32 */ SIGACTION_TERMINATE
|
||||
};
|
||||
|
||||
/*PAGE
|
||||
*
|
||||
* _POSIX_signals_Abormal_termination_handler
|
||||
* _POSIX_signals_Abnormal_termination_handler
|
||||
*
|
||||
*/
|
||||
|
||||
void _POSIX_signals_Abormal_termination_handler( int signo )
|
||||
void _POSIX_signals_Abnormal_termination_handler( int signo )
|
||||
{
|
||||
exit( 1 );
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user