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))
|
(STATES_WAITING_FOR_SIGNAL|STATES_INTERRUPTIBLE_BY_SIGNAL))
|
||||||
|
|
||||||
#define SIGACTION_TERMINATE \
|
#define SIGACTION_TERMINATE \
|
||||||
{ 0, SIGNAL_ALL_MASK, {_POSIX_signals_Abormal_termination_handler} }
|
{ 0, SIGNAL_ALL_MASK, {_POSIX_signals_Abnormal_termination_handler} }
|
||||||
#define SIGACTION_IGNORE \
|
#define SIGACTION_IGNORE \
|
||||||
{ 0, SIGNAL_ALL_MASK, {SIG_IGN} }
|
{ 0, SIGNAL_ALL_MASK, {SIG_IGN} }
|
||||||
#define SIGACTION_STOP \
|
#define SIGACTION_STOP \
|
||||||
@@ -109,7 +109,7 @@ void _POSIX_signals_Set_process_signals(
|
|||||||
#define _POSIX_signals_Stop_handler NULL
|
#define _POSIX_signals_Stop_handler NULL
|
||||||
#define _POSIX_signals_Continue_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
|
#endif
|
||||||
/* end of file */
|
/* end of file */
|
||||||
|
|||||||
@@ -51,30 +51,30 @@ struct sigaction _POSIX_signals_Default_vectors[ SIG_ARRAY_MAX ] = {
|
|||||||
/* SIGTERM 15 */ SIGACTION_TERMINATE,
|
/* SIGTERM 15 */ SIGACTION_TERMINATE,
|
||||||
/* SIGUSR1 16 */ SIGACTION_TERMINATE,
|
/* SIGUSR1 16 */ SIGACTION_TERMINATE,
|
||||||
/* SIGUSR2 17 */ SIGACTION_TERMINATE,
|
/* SIGUSR2 17 */ SIGACTION_TERMINATE,
|
||||||
/* SIGRTMIN 18 */ SIGACTION_IGNORE,
|
/* SIGRTMIN 18 */ SIGACTION_TERMINATE,
|
||||||
/* SIGRT 19 */ SIGACTION_IGNORE,
|
/* SIGRT 19 */ SIGACTION_TERMINATE,
|
||||||
/* SIGRT 20 */ SIGACTION_IGNORE,
|
/* SIGRT 20 */ SIGACTION_TERMINATE,
|
||||||
/* SIGRT 21 */ SIGACTION_IGNORE,
|
/* SIGRT 21 */ SIGACTION_TERMINATE,
|
||||||
/* SIGRT 22 */ SIGACTION_IGNORE,
|
/* SIGRT 22 */ SIGACTION_TERMINATE,
|
||||||
/* SIGRT 23 */ SIGACTION_IGNORE,
|
/* SIGRT 23 */ SIGACTION_TERMINATE,
|
||||||
/* SIGRT 24 */ SIGACTION_IGNORE,
|
/* SIGRT 24 */ SIGACTION_TERMINATE,
|
||||||
/* SIGRT 25 */ SIGACTION_IGNORE,
|
/* SIGRT 25 */ SIGACTION_TERMINATE,
|
||||||
/* SIGRT 26 */ SIGACTION_IGNORE,
|
/* SIGRT 26 */ SIGACTION_TERMINATE,
|
||||||
/* SIGRT 27 */ SIGACTION_IGNORE,
|
/* SIGRT 27 */ SIGACTION_TERMINATE,
|
||||||
/* SIGRT 28 */ SIGACTION_IGNORE,
|
/* SIGRT 28 */ SIGACTION_TERMINATE,
|
||||||
/* SIGRT 29 */ SIGACTION_IGNORE,
|
/* SIGRT 29 */ SIGACTION_TERMINATE,
|
||||||
/* SIGRT 30 */ SIGACTION_IGNORE,
|
/* SIGRT 30 */ SIGACTION_TERMINATE,
|
||||||
/* SIGRT 31 */ SIGACTION_IGNORE,
|
/* SIGRT 31 */ SIGACTION_TERMINATE,
|
||||||
/* SIGRTMAX 32 */ SIGACTION_IGNORE
|
/* SIGRTMAX 32 */ SIGACTION_TERMINATE
|
||||||
};
|
};
|
||||||
|
|
||||||
/*PAGE
|
/*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 );
|
exit( 1 );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,6 +30,12 @@ extern rtems_cpu_table Cpu_table;
|
|||||||
|
|
||||||
rtems_interrupt_level bsp_isr_level;
|
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 boot_card(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int status;
|
int status;
|
||||||
|
|||||||
@@ -15,5 +15,4 @@ include $(RTEMS_ROOT)/make/directory.cfg
|
|||||||
|
|
||||||
# wrapup is the one that actually builds and installs the library
|
# wrapup is the one that actually builds and installs the library
|
||||||
# from the individual .rel files built in other directories
|
# 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 gnatsupp console clock timer wrapup tools
|
||||||
SUB_DIRS=startsis include startup 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@
|
INSTALL = @INSTALL@
|
||||||
|
|
||||||
BSP_PIECES=startup console clock timer
|
BSP_PIECES=startup console clock timer gnat_supp
|
||||||
# pieces to pick up out of libcpu/sparc
|
# pieces to pick up out of libcpu/sparc
|
||||||
CPU_PIECES=reg_win
|
CPU_PIECES=reg_win
|
||||||
GENERIC_PIECES=
|
GENERIC_PIECES=
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
(STATES_WAITING_FOR_SIGNAL|STATES_INTERRUPTIBLE_BY_SIGNAL))
|
(STATES_WAITING_FOR_SIGNAL|STATES_INTERRUPTIBLE_BY_SIGNAL))
|
||||||
|
|
||||||
#define SIGACTION_TERMINATE \
|
#define SIGACTION_TERMINATE \
|
||||||
{ 0, SIGNAL_ALL_MASK, {_POSIX_signals_Abormal_termination_handler} }
|
{ 0, SIGNAL_ALL_MASK, {_POSIX_signals_Abnormal_termination_handler} }
|
||||||
#define SIGACTION_IGNORE \
|
#define SIGACTION_IGNORE \
|
||||||
{ 0, SIGNAL_ALL_MASK, {SIG_IGN} }
|
{ 0, SIGNAL_ALL_MASK, {SIG_IGN} }
|
||||||
#define SIGACTION_STOP \
|
#define SIGACTION_STOP \
|
||||||
@@ -109,7 +109,7 @@ void _POSIX_signals_Set_process_signals(
|
|||||||
#define _POSIX_signals_Stop_handler NULL
|
#define _POSIX_signals_Stop_handler NULL
|
||||||
#define _POSIX_signals_Continue_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
|
#endif
|
||||||
/* end of file */
|
/* end of file */
|
||||||
|
|||||||
@@ -51,30 +51,30 @@ struct sigaction _POSIX_signals_Default_vectors[ SIG_ARRAY_MAX ] = {
|
|||||||
/* SIGTERM 15 */ SIGACTION_TERMINATE,
|
/* SIGTERM 15 */ SIGACTION_TERMINATE,
|
||||||
/* SIGUSR1 16 */ SIGACTION_TERMINATE,
|
/* SIGUSR1 16 */ SIGACTION_TERMINATE,
|
||||||
/* SIGUSR2 17 */ SIGACTION_TERMINATE,
|
/* SIGUSR2 17 */ SIGACTION_TERMINATE,
|
||||||
/* SIGRTMIN 18 */ SIGACTION_IGNORE,
|
/* SIGRTMIN 18 */ SIGACTION_TERMINATE,
|
||||||
/* SIGRT 19 */ SIGACTION_IGNORE,
|
/* SIGRT 19 */ SIGACTION_TERMINATE,
|
||||||
/* SIGRT 20 */ SIGACTION_IGNORE,
|
/* SIGRT 20 */ SIGACTION_TERMINATE,
|
||||||
/* SIGRT 21 */ SIGACTION_IGNORE,
|
/* SIGRT 21 */ SIGACTION_TERMINATE,
|
||||||
/* SIGRT 22 */ SIGACTION_IGNORE,
|
/* SIGRT 22 */ SIGACTION_TERMINATE,
|
||||||
/* SIGRT 23 */ SIGACTION_IGNORE,
|
/* SIGRT 23 */ SIGACTION_TERMINATE,
|
||||||
/* SIGRT 24 */ SIGACTION_IGNORE,
|
/* SIGRT 24 */ SIGACTION_TERMINATE,
|
||||||
/* SIGRT 25 */ SIGACTION_IGNORE,
|
/* SIGRT 25 */ SIGACTION_TERMINATE,
|
||||||
/* SIGRT 26 */ SIGACTION_IGNORE,
|
/* SIGRT 26 */ SIGACTION_TERMINATE,
|
||||||
/* SIGRT 27 */ SIGACTION_IGNORE,
|
/* SIGRT 27 */ SIGACTION_TERMINATE,
|
||||||
/* SIGRT 28 */ SIGACTION_IGNORE,
|
/* SIGRT 28 */ SIGACTION_TERMINATE,
|
||||||
/* SIGRT 29 */ SIGACTION_IGNORE,
|
/* SIGRT 29 */ SIGACTION_TERMINATE,
|
||||||
/* SIGRT 30 */ SIGACTION_IGNORE,
|
/* SIGRT 30 */ SIGACTION_TERMINATE,
|
||||||
/* SIGRT 31 */ SIGACTION_IGNORE,
|
/* SIGRT 31 */ SIGACTION_TERMINATE,
|
||||||
/* SIGRTMAX 32 */ SIGACTION_IGNORE
|
/* SIGRTMAX 32 */ SIGACTION_TERMINATE
|
||||||
};
|
};
|
||||||
|
|
||||||
/*PAGE
|
/*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 );
|
exit( 1 );
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user