changeset 188:ab68c1701603

Merge from eCos master repository on 2001-10-06-22:03:08-BST
author jlarmour
date Mon, 08 Oct 2001 15:50:14 +0000
parents 977a23cdabeb
children e8fbc72e8785
files packages/hal/i386/arch/current/src/hal_syscall.c packages/io/eth/current/ChangeLog packages/io/eth/current/src/net/eth_drv.c packages/net/tcpip/current/ChangeLog packages/net/tcpip/current/cdl/net.cdl packages/net/tcpip/current/include/lib/libkern/libkern.h
diffstat 6 files changed, 176 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/packages/hal/i386/arch/current/src/hal_syscall.c
@@ -0,0 +1,155 @@
+//=============================================================================
+//
+//      hal_syscall.c
+//
+//      
+//
+//=============================================================================
+//####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, 2001 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//=============================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):   msalter
+// Contributors:msalter
+// Date:        2000-11-5
+// Purpose:     
+// Description: 
+//              
+//              
+//
+//####DESCRIPTIONEND####
+//
+//=============================================================================
+
+#include <pkgconf/hal.h>
+
+#ifdef CYGPKG_REDBOOT
+#include <pkgconf/redboot.h>
+#endif
+
+#if defined(CYGSEM_REDBOOT_BSP_SYSCALLS)
+
+#include <cyg/hal/hal_stub.h>           // Our header
+#include <cyg/hal/hal_arch.h>           // HAL_BREAKINST
+#include <cyg/hal/hal_cache.h>          // HAL_xCACHE_x
+#include <cyg/hal/hal_intr.h>           // interrupt disable/restore
+
+#include <cyg/hal/hal_if.h>             // ROM calling interface
+#include <cyg/hal/hal_misc.h>           // Helper functions
+
+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
+
+
+// These are required by the ANSI C part of newlib (excluding system() of
+// course).
+#define	SYS_exit	1
+#define	SYS_open	2
+#define	SYS_close	3
+#define	SYS_read	4
+#define	SYS_write	5
+#define	SYS_lseek	6
+#define	SYS_unlink	7
+#define	SYS_getpid	8
+#define	SYS_kill	9
+#define SYS_fstat       10
+//#define SYS_sbrk	11 - not currently a system call, but reserved.
+
+// ARGV support.
+#define SYS_argvlen	12
+#define SYS_argv	13
+
+// These are extras added for one reason or another.
+#define SYS_chdir	14
+#define SYS_stat	15
+#define SYS_chmod 	16
+#define SYS_utime 	17
+#define SYS_time 	18
+
+#define SYS_interrupt   1000
+#define SYS_meminfo     1001
+
+
+int
+hal_syscall_handler(void)
+{
+    CYG_ADDRWORD func, arg1, arg2, arg3, arg4;
+    CYG_ADDRWORD err;
+
+    func = get_register(EAX);
+    arg1 = get_register(EBX);
+    arg2 = get_register(ECX);
+    arg3 = get_register(EDX);
+    arg4 = 0;
+
+    switch (func) {
+      case 1:
+	func = SYS_exit;
+	break;
+      case 3:
+	func = SYS_read;
+	break;
+      case 4:
+	func = SYS_write;
+	break;
+      case 37:
+	func = SYS_kill;
+	break;
+
+      case 48: // install signal handler
+	// FIXME!
+        put_register(EAX, 0);
+	return 0;
+
+      case 184: // get program arguments
+	// FIXME!
+	*(int *)arg1 = 0;
+	put_register(EAX, 0);
+	return 0;
+
+      default:
+	return SIGTRAP;
+    }
+
+    if (func == SYS_exit) {
+	// We want to stop in exit so that the user may poke around
+	//  to see why his app exited.
+        return SIGTRAP;
+    }
+
+    if (__do_syscall(func, arg1, arg2, arg3, arg4, &err)) {
+        put_register(EAX, err);
+	return 0;
+    }
+
+    return SIGTRAP;
+}
+
+#endif // CYGSEM_REDBOOT_BSP_SYSCALLS
+
+
+
--- a/packages/io/eth/current/ChangeLog
+++ b/packages/io/eth/current/ChangeLog
@@ -1,3 +1,7 @@
+2001-10-05  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* src/net/eth_drv.c: Add default implementation of min().
+
 2001-09-26  Jesper Skov  <jskov@redhat.com>
 
 	* cdl/eth_drivers.cdl: Require the string functions.
--- a/packages/io/eth/current/src/net/eth_drv.c
+++ b/packages/io/eth/current/src/net/eth_drv.c
@@ -88,7 +88,9 @@
 #include <eth_drv.h>
 #include <netdev.h>
 
-
+#ifndef min
+#define min( _x_, _y_ ) ((_x_) < (_y_) ? (_x_) : (_y_))
+#endif
 
 // ------------------------------------------------------------------------
 #ifdef CYGPKG_IO_ETH_DRIVERS_SIMULATED_FAILURES
--- a/packages/net/tcpip/current/ChangeLog
+++ b/packages/net/tcpip/current/ChangeLog
@@ -1,3 +1,12 @@
+2001-10-05  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* cdl/net.cdl (CYGPKG_NET_CFLAGS_ADD): Define __INSIDE_NET within
+	this package to allow segregation of definitions only relevant for
+	internal consumption, and definitions allowable for external
+	consumption.
+
+	* include/lib/libkern/libkern.h: Conditionalize on __INSIDE_NET.
+
 2001-10-04  Jonathan Larmour  <jlarmour@redhat.com>
 
 	* cdl/net.cdl (CYGHWR_NET_DRIVER_ETH0): Make flavor bool so it isn't
--- a/packages/net/tcpip/current/cdl/net.cdl
+++ b/packages/net/tcpip/current/cdl/net.cdl
@@ -439,7 +439,7 @@ cdl_package CYGPKG_NET {
             display "Additional compiler flags"
             flavor  data
             no_define
-            default_value { "-D_KERNEL -D__ECOS" }
+            default_value { "-D_KERNEL -D__ECOS -D__INSIDE_NET" }
             description   "
                 This option modifies the set of compiler flags for
                 building the networking package.
--- a/packages/net/tcpip/current/include/lib/libkern/libkern.h
+++ b/packages/net/tcpip/current/include/lib/libkern/libkern.h
@@ -94,6 +94,8 @@
 #ifndef __LIBKERN_H__
 #define __LIBKERN_H__
 
+#ifdef __INSIDE_NET
+
 #include <sys/types.h>
 
 #ifndef LIBKERN_INLINE
@@ -236,4 +238,6 @@ extern u_int8_t const __bcd2bin[], __bin
 #define	bcd2bin(b)	(__bcd2bin[(b)&0xff])
 #define	bin2bcd(b)	(__bin2bcd[(b)&0xff])
 
+#endif /* __INSIDE_NET */
+
 #endif /* __LIBKERN_H__ */