47 lines
		
	
	
		
			717 B
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			717 B
		
	
	
	
		
			C
		
	
	
	
#include <_ansi.h>
 | 
						|
#include <signal.h>
 | 
						|
#include "swi.h"
 | 
						|
 | 
						|
int _kill (int, int);
 | 
						|
 | 
						|
int
 | 
						|
_kill (int pid, int sig)
 | 
						|
{
 | 
						|
  (void) pid; (void) sig;
 | 
						|
#ifdef ARM_RDI_MONITOR
 | 
						|
  /* Note: The pid argument is thrown away.  */
 | 
						|
  int block[2];
 | 
						|
  block[1] = sig;
 | 
						|
  int insn;
 | 
						|
 | 
						|
#if SEMIHOST_V2
 | 
						|
  if (_has_ext_exit_extended ())
 | 
						|
    {
 | 
						|
      insn = AngelSWI_Reason_ReportExceptionExtended;
 | 
						|
    }
 | 
						|
  else
 | 
						|
#endif
 | 
						|
    {
 | 
						|
      insn = AngelSWI_Reason_ReportException;
 | 
						|
    }
 | 
						|
 | 
						|
  switch (sig)
 | 
						|
    {
 | 
						|
    case SIGABRT:
 | 
						|
      {
 | 
						|
	block[0] = ADP_Stopped_RunTimeError;
 | 
						|
	break;
 | 
						|
      }
 | 
						|
    default:
 | 
						|
      {
 | 
						|
	block[0] = ADP_Stopped_ApplicationExit;
 | 
						|
	break;
 | 
						|
      }
 | 
						|
    }
 | 
						|
 | 
						|
  return do_AngelSWI (insn, block);
 | 
						|
#else
 | 
						|
  asm ("swi %a0" :: "i" (SWI_Exit));
 | 
						|
#endif
 | 
						|
}
 |