diff packages/hal/mn10300/arch/current/src/hal_syscall.c @ 208:e0c0827131d1 ecos

Merge from eCos master repository on 2002-05-20-20:11:54-BST
author jlarmour
date Mon, 20 May 2002 22:19:26 +0000
parents 678094f34118
children d2c90368aeef
line wrap: on
line diff
--- a/packages/hal/mn10300/arch/current/src/hal_syscall.c
+++ b/packages/hal/mn10300/arch/current/src/hal_syscall.c
@@ -5,29 +5,38 @@
 //      
 //
 //=============================================================================
-//####COPYRIGHTBEGIN####
-//                                                                          
-// -------------------------------------------                              
-// The contents of this file are subject to the Red Hat eCos Public License 
-// Version 1.1 (the "License"); you may not use this file except in         
-// compliance with the License.  You may obtain a copy of the License at    
-// http://www.redhat.com/                                                   
-//                                                                          
-// Software distributed under the License is distributed on an "AS IS"      
-// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the 
-// License for the specific language governing rights and limitations under 
-// the License.                                                             
-//                                                                          
-// The Original Code is eCos - Embedded Configurable Operating System,      
-// released September 30, 1998.                                             
-//                                                                          
-// The Initial Developer of the Original Code is Red Hat.                   
-// Portions created by Red Hat are                                          
-// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
-// All Rights Reserved.                                                     
-// -------------------------------------------                              
-//                                                                          
-//####COPYRIGHTEND####
+//####ECOSGPLCOPYRIGHTBEGIN####
+// -------------------------------------------
+// This file is part of eCos, the Embedded Configurable Operating System.
+// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
+//
+// eCos is free software; you can redistribute it and/or modify it under
+// the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2 or (at your option) any later version.
+//
+// eCos is distributed in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or
+// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+// for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with eCos; if not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+//
+// As a special exception, if other files instantiate templates or use macros
+// or inline functions from this file, or you compile this file and link it
+// with other works to produce a work based on this file, this file does not
+// by itself cause the resulting work to be covered by the GNU General Public
+// License. However the source code for this file must still be made available
+// in accordance with section (3) of the GNU General Public License.
+//
+// This exception does not invalidate any other reasons why a work based on
+// this file might be covered by the GNU General Public License.
+//
+// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
+// at http://sources.redhat.com/ecos/ecos-license
+// -------------------------------------------
+//####ECOSGPLCOPYRIGHTEND####
 //=============================================================================
 //#####DESCRIPTIONBEGIN####
 //
@@ -62,7 +71,8 @@
 extern CYG_ADDRWORD __do_syscall(CYG_ADDRWORD func,		// syscall function number
 			CYG_ADDRWORD arg1, CYG_ADDRWORD arg2,	// up to four args.
 			CYG_ADDRWORD arg3, CYG_ADDRWORD arg4,
-			CYG_ADDRWORD *retval);		// syscall return value
+			CYG_ADDRWORD *retval,		// syscall return value
+			CYG_ADDRWORD *sig);             // signal to return (or 0)
 
 #define	SYS_exit	1
 #define SYS_interrupt   1000
@@ -71,7 +81,7 @@ int
 hal_syscall_handler(void)
 {
     CYG_ADDRWORD func, arg1, arg2, arg3, arg4;
-    CYG_ADDRWORD err;
+    CYG_ADDRWORD err, sig;
 
     func = get_register(D0);
     arg1 = get_register(D1);
@@ -91,9 +101,9 @@ hal_syscall_handler(void)
         return SIGINT;
     }
 
-    if (__do_syscall(func, arg1, arg2, arg3, arg4, &err)) {
+    if (__do_syscall(func, arg1, arg2, arg3, arg4, &err, &sig)) {
         put_register(D0, err);
-	return 0;
+	return (int)sig;
     }
 
     return SIGTRAP;