forked from Imagelibrary/rtems
fixed for Linux
This commit is contained in:
@@ -24,6 +24,7 @@
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
|
||||||
#ifndef SA_RESTART
|
#ifndef SA_RESTART
|
||||||
#define SA_RESTART 0
|
#define SA_RESTART 0
|
||||||
@@ -104,12 +105,16 @@ void _CPU_Signal_initialize( void )
|
|||||||
sigaction(SIGINT, &act, 0);
|
sigaction(SIGINT, &act, 0);
|
||||||
sigaction(SIGQUIT, &act, 0);
|
sigaction(SIGQUIT, &act, 0);
|
||||||
sigaction(SIGILL, &act, 0);
|
sigaction(SIGILL, &act, 0);
|
||||||
|
#ifdef SIGEMT
|
||||||
sigaction(SIGEMT, &act, 0);
|
sigaction(SIGEMT, &act, 0);
|
||||||
|
#endif
|
||||||
sigaction(SIGFPE, &act, 0);
|
sigaction(SIGFPE, &act, 0);
|
||||||
sigaction(SIGKILL, &act, 0);
|
sigaction(SIGKILL, &act, 0);
|
||||||
sigaction(SIGBUS, &act, 0);
|
sigaction(SIGBUS, &act, 0);
|
||||||
sigaction(SIGSEGV, &act, 0);
|
sigaction(SIGSEGV, &act, 0);
|
||||||
|
#ifdef SIGSYS
|
||||||
sigaction(SIGSYS, &act, 0);
|
sigaction(SIGSYS, &act, 0);
|
||||||
|
#endif
|
||||||
sigaction(SIGPIPE, &act, 0);
|
sigaction(SIGPIPE, &act, 0);
|
||||||
sigaction(SIGALRM, &act, 0);
|
sigaction(SIGALRM, &act, 0);
|
||||||
sigaction(SIGTERM, &act, 0);
|
sigaction(SIGTERM, &act, 0);
|
||||||
@@ -398,7 +403,11 @@ void _CPU_Context_Initialize(
|
|||||||
* This information was gathered by disassembling setjmp().
|
* This information was gathered by disassembling setjmp().
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
{
|
||||||
|
unsigned32 stack_ptr;
|
||||||
|
|
||||||
stack_ptr = _stack_high - CPU_FRAME_SIZE;
|
stack_ptr = _stack_high - CPU_FRAME_SIZE;
|
||||||
|
|
||||||
*(addr + EBX_OFF) = 0xFEEDFEED;
|
*(addr + EBX_OFF) = 0xFEEDFEED;
|
||||||
*(addr + ESI_OFF) = 0xDEADDEAD;
|
*(addr + ESI_OFF) = 0xDEADDEAD;
|
||||||
*(addr + EDI_OFF) = 0xDEAFDEAF;
|
*(addr + EDI_OFF) = 0xDEAFDEAF;
|
||||||
@@ -406,12 +415,12 @@ void _CPU_Context_Initialize(
|
|||||||
*(addr + ESP_OFF) = stack_ptr;
|
*(addr + ESP_OFF) = stack_ptr;
|
||||||
*(addr + RET_OFF) = jmp_addr;
|
*(addr + RET_OFF) = jmp_addr;
|
||||||
|
|
||||||
|
|
||||||
addr = (unsigned32 *) stack_ptr;
|
addr = (unsigned32 *) stack_ptr;
|
||||||
|
|
||||||
addr[ 0 ] = jmp_addr;
|
addr[ 0 ] = jmp_addr;
|
||||||
addr[ 1 ] = (unsigned32) stack_ptr;
|
addr[ 1 ] = (unsigned32) stack_ptr;
|
||||||
addr[ 2 ] = (unsigned32) stack_ptr;
|
addr[ 2 ] = (unsigned32) stack_ptr;
|
||||||
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#error "UNKNOWN CPU!!!"
|
#error "UNKNOWN CPU!!!"
|
||||||
@@ -582,7 +591,9 @@ void _CPU_Stray_signal(int sig_num)
|
|||||||
case SIGHUP:
|
case SIGHUP:
|
||||||
case SIGQUIT:
|
case SIGQUIT:
|
||||||
case SIGILL:
|
case SIGILL:
|
||||||
|
#ifdef SIGEMT
|
||||||
case SIGEMT:
|
case SIGEMT:
|
||||||
|
#endif
|
||||||
case SIGKILL:
|
case SIGKILL:
|
||||||
case SIGBUS:
|
case SIGBUS:
|
||||||
case SIGSEGV:
|
case SIGSEGV:
|
||||||
|
|||||||
@@ -24,6 +24,7 @@
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
|
||||||
#ifndef SA_RESTART
|
#ifndef SA_RESTART
|
||||||
#define SA_RESTART 0
|
#define SA_RESTART 0
|
||||||
@@ -104,12 +105,16 @@ void _CPU_Signal_initialize( void )
|
|||||||
sigaction(SIGINT, &act, 0);
|
sigaction(SIGINT, &act, 0);
|
||||||
sigaction(SIGQUIT, &act, 0);
|
sigaction(SIGQUIT, &act, 0);
|
||||||
sigaction(SIGILL, &act, 0);
|
sigaction(SIGILL, &act, 0);
|
||||||
|
#ifdef SIGEMT
|
||||||
sigaction(SIGEMT, &act, 0);
|
sigaction(SIGEMT, &act, 0);
|
||||||
|
#endif
|
||||||
sigaction(SIGFPE, &act, 0);
|
sigaction(SIGFPE, &act, 0);
|
||||||
sigaction(SIGKILL, &act, 0);
|
sigaction(SIGKILL, &act, 0);
|
||||||
sigaction(SIGBUS, &act, 0);
|
sigaction(SIGBUS, &act, 0);
|
||||||
sigaction(SIGSEGV, &act, 0);
|
sigaction(SIGSEGV, &act, 0);
|
||||||
|
#ifdef SIGSYS
|
||||||
sigaction(SIGSYS, &act, 0);
|
sigaction(SIGSYS, &act, 0);
|
||||||
|
#endif
|
||||||
sigaction(SIGPIPE, &act, 0);
|
sigaction(SIGPIPE, &act, 0);
|
||||||
sigaction(SIGALRM, &act, 0);
|
sigaction(SIGALRM, &act, 0);
|
||||||
sigaction(SIGTERM, &act, 0);
|
sigaction(SIGTERM, &act, 0);
|
||||||
@@ -398,7 +403,11 @@ void _CPU_Context_Initialize(
|
|||||||
* This information was gathered by disassembling setjmp().
|
* This information was gathered by disassembling setjmp().
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
{
|
||||||
|
unsigned32 stack_ptr;
|
||||||
|
|
||||||
stack_ptr = _stack_high - CPU_FRAME_SIZE;
|
stack_ptr = _stack_high - CPU_FRAME_SIZE;
|
||||||
|
|
||||||
*(addr + EBX_OFF) = 0xFEEDFEED;
|
*(addr + EBX_OFF) = 0xFEEDFEED;
|
||||||
*(addr + ESI_OFF) = 0xDEADDEAD;
|
*(addr + ESI_OFF) = 0xDEADDEAD;
|
||||||
*(addr + EDI_OFF) = 0xDEAFDEAF;
|
*(addr + EDI_OFF) = 0xDEAFDEAF;
|
||||||
@@ -406,12 +415,12 @@ void _CPU_Context_Initialize(
|
|||||||
*(addr + ESP_OFF) = stack_ptr;
|
*(addr + ESP_OFF) = stack_ptr;
|
||||||
*(addr + RET_OFF) = jmp_addr;
|
*(addr + RET_OFF) = jmp_addr;
|
||||||
|
|
||||||
|
|
||||||
addr = (unsigned32 *) stack_ptr;
|
addr = (unsigned32 *) stack_ptr;
|
||||||
|
|
||||||
addr[ 0 ] = jmp_addr;
|
addr[ 0 ] = jmp_addr;
|
||||||
addr[ 1 ] = (unsigned32) stack_ptr;
|
addr[ 1 ] = (unsigned32) stack_ptr;
|
||||||
addr[ 2 ] = (unsigned32) stack_ptr;
|
addr[ 2 ] = (unsigned32) stack_ptr;
|
||||||
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#error "UNKNOWN CPU!!!"
|
#error "UNKNOWN CPU!!!"
|
||||||
@@ -582,7 +591,9 @@ void _CPU_Stray_signal(int sig_num)
|
|||||||
case SIGHUP:
|
case SIGHUP:
|
||||||
case SIGQUIT:
|
case SIGQUIT:
|
||||||
case SIGILL:
|
case SIGILL:
|
||||||
|
#ifdef SIGEMT
|
||||||
case SIGEMT:
|
case SIGEMT:
|
||||||
|
#endif
|
||||||
case SIGKILL:
|
case SIGKILL:
|
||||||
case SIGBUS:
|
case SIGBUS:
|
||||||
case SIGSEGV:
|
case SIGSEGV:
|
||||||
|
|||||||
Reference in New Issue
Block a user