changeset 169:11b54a94cf58

Merge from eCos master repository on 2001-07-06-06:43:02-BST
author jlarmour
date Fri, 06 Jul 2001 19:11:34 +0000
parents ead06911cbae
children f664e0b5f88b
files host/tools/configtool/standalone/wxwin/CHANGES.txt host/tools/configtool/standalone/wxwin/README.txt host/tools/configtool/standalone/wxwin/TODO.txt host/tools/configtool/standalone/wxwin/configtool.cpp host/tools/configtool/standalone/wxwin/configtooldoc.cpp host/tools/configtool/standalone/wxwin/configtooldoc.h host/tools/configtool/standalone/wxwin/dialogs/configtool.wdr host/tools/configtool/standalone/wxwin/mainwin.cpp host/tools/configtool/standalone/wxwin/platformeditordlg.cpp host/tools/configtool/standalone/wxwin/readme.html host/tools/configtool/standalone/wxwin/runtestsdlg.cpp host/tools/configtool/standalone/wxwin/runtestsdlg.h host/tools/configtool/standalone/wxwin/settingsdlg.cpp host/tools/configtool/standalone/wxwin/setup/configtool.iss packages/devs/wallclock/mips/ref4955/current/ChangeLog packages/devs/wallclock/mips/ref4955/current/src/wallclock_ref4955.cxx packages/ecos.db packages/hal/arm/arm9/var/current/ChangeLog packages/hal/arm/arm9/var/current/cdl/hal_arm_arm9.cdl packages/hal/arm/arm9/var/current/include/hal_cache.h packages/hal/arm/arm9/var/current/src/arm9_misc.c packages/hal/arm/e7t/current/ChangeLog packages/hal/arm/e7t/current/include/pkgconf/mlt_arm_e7t_ram.ldi packages/hal/arm/e7t/current/include/pkgconf/mlt_arm_e7t_ram.mlt packages/hal/arm/e7t/current/src/hal_diag.c packages/hal/arm/edb7xxx/current/ChangeLog packages/hal/arm/edb7xxx/current/support/io.c packages/hal/common/current/ChangeLog packages/hal/common/current/cdl/hal.cdl packages/hal/i386/arch/current/ChangeLog packages/hal/i386/arch/current/cdl/hal_i386.cdl packages/hal/i386/arch/current/include/hal_io.h packages/hal/i386/pcmb/current/ChangeLog packages/hal/i386/pcmb/current/src/pcmb_misc.c packages/hal/mips/arch/current/ChangeLog packages/hal/mips/arch/current/src/vectors.S packages/hal/sh/arch/current/ChangeLog packages/hal/sh/arch/current/include/hal_arch.h packages/io/eth/current/ChangeLog packages/io/eth/current/src/net/eth_drv.c packages/io/usb/eth/slave/current/ChangeLog packages/io/usb/eth/slave/current/host/ecos_usbeth.c packages/redboot/current/ChangeLog packages/redboot/current/src/io.c
diffstat 44 files changed, 945 insertions(+), 170 deletions(-) [+]
line wrap: on
line diff
--- a/host/tools/configtool/standalone/wxwin/CHANGES.txt
+++ b/host/tools/configtool/standalone/wxwin/CHANGES.txt
@@ -1,11 +1,25 @@
 Release History for eCos Configuration Tool 2
 =============================================
 
-*** Version 2.03, June 28th 2001
+*** Version 2.03, July 2nd 2001
 
 - Corrected a bug introduced in the previous release, where the initial template
   selection was wrong.
 
+- More forgiving when specifying the packages directory for the repository.
+
+- Run Tests dialog now working when using a serial port: Windows and Linux. TCP/IP
+  mode seems to be working on Windows also.
+
+- Now saves file history list in FileHistory instead of top-level in config file/registry.
+
+- Removed Server-side GDB checkbox in platform editor.
+
+- Widened TCP/IP port text control in Run Tests settings dialog.
+
+- Fixed bug where message box with an empty repository name was shown if no repository
+  was found at all.
+
 *** Version 2.02, June 27th 2001
 
 - Packages are now sorted in the Packages Dialog.
--- a/host/tools/configtool/standalone/wxwin/README.txt
+++ b/host/tools/configtool/standalone/wxwin/README.txt
@@ -47,7 +47,6 @@ What's in this release?
   original tool:
 
   - Memory Layout Tool
-  - Running tests from the tool
   - Administration functionality (initial code present but untested)
   - Gauge indicating time left to build library and tests
 
@@ -238,10 +237,9 @@ A:  The wxWindows web site is at http://
 Q:  Does the new Configuration Tool make the old one obsolete?
 
 A:  Not yet. The new tool doesn't yet support some features, such
-    as the Memory Layout Tool and the Run Tests dialog. When
-    these have been implemented, and the tool has been subject
-    to the required quality assurance procedure, then we can
-    retire the old tool.
+    as the Memory Layout Tool. When these have been implemented,
+    and the tool has been subject to the required quality assurance
+    procedure, then we can retire the old tool.
 
 
 Q:  How can I help improve the Configuration Tool?
--- a/host/tools/configtool/standalone/wxwin/TODO.txt
+++ b/host/tools/configtool/standalone/wxwin/TODO.txt
@@ -3,16 +3,12 @@ To-Do List for Configuration Tool 2.x
 
 - Implement Memory Layout Tool.
 
-- Debug Run Tests Dialog.
+- Verify Run Tests Dialog works for TCP/IP mode on Linux.
 
 - List templates in alphabetical order under Linux. Unfortunately
   wxComboBox in wxGTK doesn't support wxCB_SORT at this time
   (but wxChoice does).
 
-- User reports that if you set ECOS_REPOSITORY to e.g. /home/julians/eCos/ecc/ecc,
-  configtool will complain about a missing packages directory.
-  (Can't reproduce.)
-
 - Importing more than one package at a time can cause conflicts
   whereas importing one at a time causes no conflicts.
 
--- a/host/tools/configtool/standalone/wxwin/configtool.cpp
+++ b/host/tools/configtool/standalone/wxwin/configtool.cpp
@@ -30,7 +30,7 @@
 // Author(s):   julians
 // Contact(s):  julians
 // Date:        2000/08/24
-// Version:     $Id: configtool.cpp,v 1.36 2001/06/26 17:26:35 julians Exp $
+// Version:     $Id: configtool.cpp,v 1.38 2001/07/05 10:42:16 julians Exp $
 // Purpose:
 // Description: Implementation file for the ConfigTool application class
 // Requires:
@@ -223,15 +223,6 @@ bool ecApp::OnInit()
         wxPoint(GetSettings().m_frameSize.x, GetSettings().m_frameSize.y),
         wxSize(GetSettings().m_frameSize.width, GetSettings().m_frameSize.height));
 
-#if 0
-    // TODO: eCos.hhp/hhc/hhk will eventually be generated as the app starts up.
-    if ( !GetHelpController().Initialize(GetFullAppPath(wxT("eCos"))) )
-    {
-        //wxMessageBox(_("Cannot initialize the help system, aborting."));
-        //return FALSE;
-    }
-#endif
-
     m_mainFrame = frame;
     SetTopWindow(frame);
     frame->Show(TRUE);
@@ -548,6 +539,9 @@ int ecApp::OnExit(void)
 
     {
         wxConfig config(wxGetApp().GetSettings().GetConfigAppName(), wxT("Red Hat"));
+        if (config.HasGroup(wxT("FileHistory")))
+            config.DeleteGroup(wxT("FileHistory"));
+	config.SetPath(wxT("FileHistory/"));
         m_docManager->FileHistorySave(config);
     }
 
@@ -936,7 +930,10 @@ bool ecApp::PrepareEnvironment(bool bWit
             wxString oldPath(wxGetenv(wxT("PATH")));
             wxString path(strBinDir);
             if (!oldPath.IsEmpty())
+	    {
+		path += wxT(":");
                 path += oldPath;
+	    }
             wxSetEnv(wxT("PATH"), path);
         }
         (* cmdLine) += wxString(wxT("unset GDBTK_LIBRARY; ")) ;
--- a/host/tools/configtool/standalone/wxwin/configtooldoc.cpp
+++ b/host/tools/configtool/standalone/wxwin/configtooldoc.cpp
@@ -30,7 +30,7 @@
 // Author(s):   julians
 // Contact(s):  julians
 // Date:        2000/10/05
-// Version:     $Id: configtooldoc.cpp,v 1.33 2001/06/28 15:54:25 julians Exp $
+// Version:     $Id: configtooldoc.cpp,v 1.35 2001/07/05 10:42:16 julians Exp $
 // Purpose:
 // Description: Implementation file for the ecConfigToolDoc class
 // Requires:
@@ -657,7 +657,7 @@ bool ecConfigToolDoc::OpenRepository(con
     {
         UpdateFailingRuleCount();
 
-        wxString strNewRepository;
+        ecFileName strNewRepository;
         while(!m_bRepositoryOpen)
         {
             if(bPromptInitially)
@@ -777,37 +777,52 @@ bool ecConfigToolDoc::OpenRepository(con
     return m_bRepositoryOpen;
 }
 
-bool ecConfigToolDoc::OpenRepository (const ecFileName& strNewRepository, CdlPackagesDatabase &NewCdlPkgData,CdlInterpreter &NewCdlInterp,CdlConfiguration &NewCdlConfig, wxString &strNewPackagesDir)
+// Find a valid repository given a directory name
+bool ecConfigToolDoc::FindRepository (ecFileName& repositoryIn, ecFileName& repositoryOut) const
+{
+    if (repositoryIn.IsEmpty())
+	return FALSE;
+    
+    if (ecFileName(repositoryIn + wxT("ecos.db")).Exists())
+    {
+	repositoryOut = repositoryIn;
+	repositoryIn = wxPathOnly(repositoryIn);
+	return TRUE;
+    }
+    else if (ecFileName(ecFileName(repositoryIn) + ecFileName(wxT("ecc")) + wxT("ecos.db")).Exists())
+    {
+	repositoryOut = repositoryIn + wxT("ecc");
+	return TRUE;
+    }
+    else if (ecFileName(ecFileName(repositoryIn) + ecFileName(wxT("packages")) + wxT("ecos.db")).Exists())
+    {
+	repositoryOut = repositoryIn + wxT("packages");
+	return TRUE;
+    }
+    else
+    {
+	return FALSE;
+    }
+}
+
+
+bool ecConfigToolDoc::OpenRepository (ecFileName& strNewRepository, CdlPackagesDatabase &NewCdlPkgData,CdlInterpreter &NewCdlInterp,CdlConfiguration &NewCdlConfig, wxString &strNewPackagesDir)
 {
     bool rc=FALSE;
 
-    if(!strNewRepository.IsEmpty())
+    if (strNewRepository.IsEmpty())
+        return FALSE;
+
+    ecFileName strNewPackagesDir1;
+    if (!FindRepository(strNewRepository, strNewPackagesDir1))
     {
-        // Now strNewRepository is guaranteed non-empty, but does it exist?
-        if(!wxDirExists(strNewRepository))
-        {
-            wxString msg;
-            msg.Printf(_("Cannot open repository - the folder %s does not exist"), (const wxChar*) strNewRepository);
-            wxMessageBox(msg, wxGetApp().GetSettings().GetAppName(), wxICON_EXCLAMATION|wxOK);
-        } else
-        {
-            // Ok so it exists, but does it look right?
-            //strNewPackagesDir=strNewRepository+wxString(wxFILE_SEP_PATH)+wxT("ecc");
-            strNewPackagesDir=strNewRepository + wxT("ecc");
-            if(!wxDirExists(strNewPackagesDir))
-            {
-                //strNewPackagesDir=strNewRepository+wxString(wxFILE_SEP_PATH)+wxT("packages");
-                strNewPackagesDir=strNewRepository + wxT("packages");
-            }
-
-            if(!wxDirExists(strNewPackagesDir))
-            {
-                // Don't mention the ecc\ attempt
-                wxString msg;
-                msg.Printf(_("%s does not seem to be a source repository: the folder %s does not exist"),
-                    (const wxChar*) strNewRepository, (const wxChar*) strNewPackagesDir);
-                wxMessageBox(msg, wxGetApp().GetSettings().GetAppName(), wxICON_EXCLAMATION|wxOK);
-            } else {
+        wxString msg;
+        msg.Printf(_("%s does not seem to be a source repository."),
+                    (const wxChar*) strNewRepository);
+        wxMessageBox(msg, wxGetApp().GetSettings().GetAppName(), wxICON_EXCLAMATION|wxOK);
+    } else
+    {
+                strNewPackagesDir = strNewPackagesDir1;
 
                 const wxString strDatabase = strNewPackagesDir + wxString(wxFILE_SEP_PATH) + wxT("ecos.db");
                 if(!wxFileExists(strDatabase))
@@ -815,7 +830,8 @@ bool ecConfigToolDoc::OpenRepository (co
                     wxString msg;
                     msg.Printf(_("%s does not seem to be a source repository: %s does not exist"), (const wxChar*) strNewRepository, (const wxChar*) strDatabase);
                     wxMessageBox(msg, wxGetApp().GetSettings().GetAppName(), wxICON_EXCLAMATION|wxOK);
-                } else {
+                } else
+		{
 
                     // create a CDL repository, interpreter and configuration
                     try {// create a new package database, interpreter and configuration
@@ -882,8 +898,6 @@ bool ecConfigToolDoc::OpenRepository (co
                     }
                     rc=TRUE;
                 }
-            }
-        }
     }
 
     return rc;
--- a/host/tools/configtool/standalone/wxwin/configtooldoc.h
+++ b/host/tools/configtool/standalone/wxwin/configtooldoc.h
@@ -30,7 +30,7 @@
 // Author(s):   julians
 // Contact(s):  julians
 // Date:        2000/10/05
-// Version:     $Id: configtooldoc.h,v 1.13 2001/06/11 14:22:31 julians Exp $
+// Version:     $Id: configtooldoc.h,v 1.14 2001/06/29 13:48:22 julians Exp $
 // Purpose:
 // Description: Header file for ecConfigToolDoc
 // Requires:
@@ -133,8 +133,10 @@ public:
 
 //// Operations
     bool OpenRepository(const wxString& pszRepository = wxEmptyString, bool bPromptInitially=FALSE) ;
-    bool OpenRepository (const ecFileName& strNewRepository, CdlPackagesDatabase &NewCdlPkgData,CdlInterpreter &NewCdlInterp,CdlConfiguration &NewCdlConfig, wxString &strNewPackagesDir);
+    bool OpenRepository (ecFileName& strNewRepository, CdlPackagesDatabase &NewCdlPkgData,CdlInterpreter &NewCdlInterp,CdlConfiguration &NewCdlConfig, wxString &strNewPackagesDir);
     void CloseRepository() ;
+    // Find a valid repository given a directory name
+    bool FindRepository (ecFileName& repositoryIn, ecFileName& repositoryOut) const;
     void EnableCallbacks (bool bEnable=TRUE);
     void AddContents (const CdlContainer container, ecConfigItem *pParent);
     void AddAllItems();
index 2dede1ea20584559afed2af3b2029d87928fcc5d..47d708c74f5c9063897ae4afc066cddcf7780e96
GIT binary patch
literal 71625
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
BwB!H)
--- a/host/tools/configtool/standalone/wxwin/mainwin.cpp
+++ b/host/tools/configtool/standalone/wxwin/mainwin.cpp
@@ -30,7 +30,7 @@
 // Author(s):   julians
 // Contact(s):  julians
 // Date:        2000/08/24
-// Version:     $Id: mainwin.cpp,v 1.45 2001/06/26 17:26:35 julians Exp $
+// Version:     $Id: mainwin.cpp,v 1.46 2001/06/29 13:48:22 julians Exp $
 // Purpose:
 // Description: Implementation file for the ConfigTool main window
 // Requires:
@@ -281,6 +281,7 @@ ecMainFrame::ecMainFrame(wxDocManager *m
     // Load file history
     {
         wxConfig config(wxGetApp().GetSettings().GetConfigAppName(), wxT("Red Hat"));
+	config.SetPath(wxT("FileHistory/"));
         wxGetApp().GetDocManager()->FileHistoryLoad(config);
     }
     
--- a/host/tools/configtool/standalone/wxwin/platformeditordlg.cpp
+++ b/host/tools/configtool/standalone/wxwin/platformeditordlg.cpp
@@ -30,7 +30,7 @@
 // Author(s):   julians
 // Contact(s):  julians
 // Date:        2000/09/06
-// Version:     $Id: platformeditordlg.cpp,v 1.3 2001/03/23 13:38:04 julians Exp $
+// Version:     $Id: platformeditordlg.cpp,v 1.4 2001/07/05 10:42:16 julians Exp $
 // Purpose:
 // Description: Implementation file for the ecPlatformEditorDialog
 // Requires:
@@ -167,11 +167,12 @@ void ecPlatformEditorDialog::CreateContr
     wxTextCtrl *item11 = new wxTextCtrl( parent, ecID_MODIFY_PLATFORM_PROMPT, _(""), wxDefaultPosition, wxDefaultSize, 0 );
     item1->Add( item11, 0, wxGROW|wxALL, 5 );
 
+#if USE_SS_GDB_CONTROL
     item1->Add( 20, 20, 0, wxALIGN_CENTRE|wxALL, 5 );
 
     wxCheckBox *item12 = new wxCheckBox( parent, ecID_MODIFY_PLATFORM_SS_GDB, _("Server-side GDB"), wxDefaultPosition, wxDefaultSize, 0 );
     item1->Add( item12, 0, wxGROW|wxALL, 5 );
-
+#endif
     item0->Add( item1, 1, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 );
 
     wxSizer *item13 = new wxBoxSizer( wxHORIZONTAL );
@@ -190,64 +191,6 @@ void ecPlatformEditorDialog::CreateContr
 
     item0->Add( item13, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL, 5 );
 
-#if 0
-    wxSizer *item0 = new wxBoxSizer( wxVERTICAL );
-
-    wxSizer *item1 = new wxFlexGridSizer( 2, 0, 0 );
-
-    wxStaticText *item2 = new wxStaticText( parent, wxID_STATIC, "Platform &name:", wxDefaultPosition, wxDefaultSize, 0 );
-    item1->Add( item2, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
-
-    wxTextCtrl *item3 = new wxTextCtrl( parent, ecID_MODIFY_PLATFORM_NAME, "", wxDefaultPosition, wxSize(200,-1), 0 );
-    item1->Add( item3, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 );
-
-    wxStaticText *item4 = new wxStaticText( parent, wxID_STATIC, "Command &prefix:", wxDefaultPosition, wxDefaultSize, 0 );
-    item1->Add( item4, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
-
-    wxComboBox *item5 = new wxComboBox( parent, ecID_MODIFY_PLATFORM_PREFIX, "", wxDefaultPosition, wxSize(100,-1), 0, NULL, wxCB_DROPDOWN );
-    item1->Add( item5, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 );
-
-    wxStaticText *item6 = new wxStaticText( parent, wxID_STATIC, "Arguments for &GDB:", wxDefaultPosition, wxDefaultSize, 0 );
-    item1->Add( item6, 0, wxALL, 5 );
-
-    wxTextCtrl *item7 = new wxTextCtrl( parent, ecID_MODIFY_PLATFORM_ARGS, "", wxDefaultPosition, wxSize(80,140), wxTE_MULTILINE );
-    item1->Add( item7, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 );
-
-    wxStaticText *item8 = new wxStaticText( parent, wxID_STATIC, "Inferior:", wxDefaultPosition, wxDefaultSize, 0 );
-    item1->Add( item8, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
-
-    wxTextCtrl *item9 = new wxTextCtrl( parent, ecID_MODIFY_PLATFORM_INFERIOR, "", wxDefaultPosition, wxSize(80,-1), 0 );
-    item1->Add( item9, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 );
-
-    wxStaticText *item10 = new wxStaticText( parent, wxID_STATIC, "Prompt:", wxDefaultPosition, wxDefaultSize, 0 );
-    item1->Add( item10, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
-
-    wxTextCtrl *item11 = new wxTextCtrl( parent, ecID_MODIFY_PLATFORM_PROMPT, "", wxDefaultPosition, wxSize(80,-1), 0 );
-    item1->Add( item11, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 );
-
-    item1->Add( 20, 20, 0, wxALIGN_CENTRE|wxALL, 5 );
-
-    wxCheckBox *item12 = new wxCheckBox( parent, ecID_MODIFY_PLATFORM_SS_GDB, "Server-side GDB", wxDefaultPosition, wxDefaultSize, 0 );
-    item1->Add( item12, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
-
-    item0->Add( item1, 0, wxALIGN_CENTRE|wxALL, 5 );
-
-    wxSizer *item13 = new wxBoxSizer( wxHORIZONTAL );
-
-    wxButton *item14 = new wxButton( parent, wxID_OK, "&OK", wxDefaultPosition, wxDefaultSize, 0 );
-    item13->Add( item14, 0, wxALIGN_CENTRE|wxALL, 5 );
-
-    wxButton *item15 = new wxButton( parent, wxID_CANCEL, "&Cancel", wxDefaultPosition, wxDefaultSize, 0 );
-    item13->Add( item15, 0, wxALIGN_CENTRE|wxALL, 5 );
-
-#ifdef __WXGTK__
-    wxButton *contextButton = new wxContextHelpButton( parent );
-    item13->Add( contextButton, 0, wxALIGN_CENTRE|wxALL, 5 );
-#endif
-
-    item0->Add( item13, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL, 5 );
-#endif
-
     // Can't do this from wxDesigner :-(
     ((wxFlexGridSizer*)item1)->AddGrowableCol(1);
     ((wxFlexGridSizer*)item1)->AddGrowableRow(2);
@@ -265,9 +208,11 @@ void ecPlatformEditorDialog::CreateContr
     parent->FindWindow( ecID_MODIFY_PLATFORM_NAME )->SetHelpText(_("Specifies the name of the platform. Platform names are arbitrary strings, but must be unique for a given user."));
     parent->FindWindow( ecID_MODIFY_PLATFORM_PREFIX )->SetHelpText(_("Specifies the prefix to be used when invoking tools (for example, 'arm-elf' is the correct prefix if the appropriate gdb executable is arm-elf-gdb.exe)."));
     parent->FindWindow( ecID_MODIFY_PLATFORM_ARGS )->SetHelpText(_("Specifies any additional arguments to be used when invoking gdb."));
-    parent->FindWindow( ecID_MODIFY_PLATFORM_INFERIOR )->SetHelpText(_("TODO"));
-    parent->FindWindow( ecID_MODIFY_PLATFORM_PROMPT )->SetHelpText(_("TODO"));
+    parent->FindWindow( ecID_MODIFY_PLATFORM_INFERIOR )->SetHelpText(_("The gdb command to run."));
+    parent->FindWindow( ecID_MODIFY_PLATFORM_PROMPT )->SetHelpText(_("The gdb prompt."));
+#if USE_SS_GDB_CONTROL
     parent->FindWindow( ecID_MODIFY_PLATFORM_SS_GDB )->SetHelpText(_("TODO"));
+#endif
     parent->FindWindow( wxID_OK )->SetHelpText(_("Closes the dialog and saves any changes you have made."));
     parent->FindWindow( wxID_CANCEL )->SetHelpText(_("Closes the dialog without saving any changes you have made."));
 
@@ -281,7 +226,9 @@ void ecPlatformEditorDialog::CreateContr
     parent->FindWindow( ecID_MODIFY_PLATFORM_ARGS )->SetValidator(wxGenericValidator(& m_strGDB));
     parent->FindWindow( ecID_MODIFY_PLATFORM_INFERIOR )->SetValidator(wxGenericValidator(& m_strInferior));
     parent->FindWindow( ecID_MODIFY_PLATFORM_PROMPT )->SetValidator(wxGenericValidator(& m_strPrompt));
+#if USE_SS_GDB_CONTROL
     parent->FindWindow( ecID_MODIFY_PLATFORM_SS_GDB )->SetValidator(wxGenericValidator(& m_bServerSideGdb));
+#endif
 }
 
 void ecPlatformEditorDialog::OnChangeNewPlatformPrefix(wxCommandEvent& event)
--- a/host/tools/configtool/standalone/wxwin/readme.html
+++ b/host/tools/configtool/standalone/wxwin/readme.html
@@ -47,7 +47,6 @@ However the following features are missi
 original tool:</P>
 <OL>
 	<LI><P>Memory Layout Tool</P>
-	<LI><P>Running tests from the tool</P>
 	<LI><P>Administration functionality (initial code present but
 	untested)</P>
 	<LI><P>Gauge indicating time left to build library and tests</P>
@@ -176,7 +175,7 @@ wxWindows distributions come with docume
 formats.</P>
 <P><B>Q: Does the new Configuration Tool make the old one obsolete?</B></P>
 <P>A: Not yet. The new tool doesn't yet support some features, such
-as the Memory Layout Tool and the Run Tests dialog. When these have
+as the Memory Layout Tool. When these have
 been implemented, and the tool has been subject to the required
 quality assurance procedure, then we can retire the old tool.</P>
 <P><B>Q: How can I help improve the Configuration Tool?</B></P>
--- a/host/tools/configtool/standalone/wxwin/runtestsdlg.cpp
+++ b/host/tools/configtool/standalone/wxwin/runtestsdlg.cpp
@@ -30,7 +30,7 @@
 // Author(s):   julians
 // Contact(s):  julians
 // Date:        2000/09/29
-// Version:     $Id: runtestsdlg.cpp,v 1.13 2001/06/28 15:54:25 julians Exp $
+// Version:     $Id: runtestsdlg.cpp,v 1.14 2001/06/29 13:48:22 julians Exp $
 // Purpose:
 // Description: Implementation file for ecRunTestsDialog
 // Requires:
@@ -66,6 +66,31 @@
 #include "eCosThreadUtils.h"
 #include "eCosTrace.h"
 
+void ecRunTestsTimer::Notify()
+{
+    static bool s_inNotify = FALSE;
+
+    if (s_inNotify)
+        return;
+
+    s_inNotify = TRUE;
+
+    // On Windows, simply having the timer going will ping the message queue
+    // and cause idle processing to happen.
+    // On Unix, this doesn't happen so we have to do the processing explicitly.
+#ifdef __WXMSW__
+    // Nothing to do
+#else
+    if ( ecRunTestsDialog::m_runTestsDialog )
+    {
+	wxIdleEvent event;
+	ecRunTestsDialog::m_runTestsDialog->OnIdle(event);
+    }
+#endif
+
+    s_inNotify = FALSE;
+}
+
 /*
  * Run Tests dialog
  */
@@ -220,10 +245,13 @@ ecRunTestsDialog::ecRunTestsDialog(wxWin
     CeCosTrace::SetInteractive(TRUE);
     CeCosTrace::SetOutput(TestOutputCallback, this);
     CeCosTrace::SetError (TestOutputCallback, this);
+
+    m_timer.Start(200);
 }
 
 ecRunTestsDialog::~ecRunTestsDialog()
 {
+    m_timer.Stop();
     CeCosTrace::SetInteractive(FALSE);
     m_runTestsDialog = NULL;
     if (m_pResource)
@@ -304,14 +332,18 @@ void ecRunTestsDialog::OnRun(wxCommandEv
             }
             else
             {
-                String strPort;
+                wxString strPort;
                 if (wxGetApp().GetSettings().GetRunTestsSettings().m_bSerial)
-                    strPort = (const wxChar*) wxGetApp().GetSettings().GetRunTestsSettings().m_strPort;
+                    strPort = wxGetApp().GetSettings().GetRunTestsSettings().m_strPort;
                 else
-                    strPort = CeCosSocket::HostPort(wxGetApp().GetSettings().GetRunTestsSettings().m_strLocalTCPIPHost,wxGetApp().GetSettings().GetRunTestsSettings().m_nLocalTCPIPPort);
-                if(0==strPort.size()){
+                    strPort = (const wxChar*) CeCosSocket::HostPort(wxGetApp().GetSettings().GetRunTestsSettings().m_strLocalTCPIPHost,wxGetApp().GetSettings().GetRunTestsSettings().m_nLocalTCPIPPort);
+                if(0==strPort.Length()){
                     m_pResource=new CTestResource(_T(""),m_ep.PlatformName());
-                } else {
+                } else
+		{
+                    // Translate from e.g. COM2 to /dev/ttyS1 on Unix.
+                    // Let's assume the Windows notation is the 'standard'.
+		    strPort = TranslatePort(strPort);
                     int nBaud = wxGetApp().GetSettings().GetRunTestsSettings().m_bSerial ? wxGetApp().GetSettings().GetRunTestsSettings().m_nBaud:0;
                     if (RESET_X10 != wxGetApp().GetSettings().GetRunTestsSettings().m_nReset) {
                         m_pResource=new CTestResource(_T(""),m_ep.PlatformName(), strPort, nBaud);
@@ -334,6 +366,25 @@ void ecRunTestsDialog::OnRun(wxCommandEv
     }    
 }
 
+wxString ecRunTestsDialog::TranslatePort(const wxString& port) const
+{
+#ifdef __WXGTK__
+    wxString name(port.Left(3));
+    if (name.CmpNoCase(wxT("COM")) == 0)
+    {
+	wxString strNum(port.Mid(3));
+	if (strNum.IsEmpty())
+	    return port;
+	int num = atoi(strNum);
+	wxString newPort;
+	newPort.Printf(wxT("/dev/ttyS%d"), num-1);
+	return newPort;
+    }
+    else
+#endif
+        return port;
+}
+
 void ecRunTestsDialog::SubmitTests()
 {
     int nResources=wxGetApp().GetSettings().GetRunTestsSettings().m_bRemote ? wxMax(1,CTestResource::GetMatchCount (m_ep)):1;
--- a/host/tools/configtool/standalone/wxwin/runtestsdlg.h
+++ b/host/tools/configtool/standalone/wxwin/runtestsdlg.h
@@ -30,7 +30,7 @@
 // Author(s):   julians
 // Contact(s):  julians
 // Date:        2000/09/29
-// Version:     $Id: runtestsdlg.h,v 1.9 2001/06/28 15:54:25 julians Exp $
+// Version:     $Id: runtestsdlg.h,v 1.10 2001/06/29 13:48:23 julians Exp $
 // Purpose:
 // Description: Header file for ecRunTestsDialog
 // Requires:
@@ -56,6 +56,20 @@
 #include "eCosTest.h"
 #include "Properties.h"
 
+/*
+ * ecRunTestsTimer
+ * Just to force idle processing now and again while
+ * the tests are runnin
+ */
+
+class ecRunTestsTimer: public wxTimer
+{
+public:
+    ecRunTestsTimer() {}
+
+    virtual void Notify() ;
+};
+
 //----------------------------------------------------------------------------
 // ecRunTestsDialog
 //----------------------------------------------------------------------------
@@ -73,7 +87,8 @@ enum ecRunStatus { ecRunning, ecStopping
 class ecRunTestsDialog: public wxDialog
 {
 DECLARE_CLASS(ecRunTestsDialog)
-friend class ecResetThread;
+    friend class ecResetThread;
+    friend class ecRunTestsTimer; 
 public:
     ecRunTestsDialog(wxWindow* parent);
     ~ecRunTestsDialog();
@@ -107,6 +122,10 @@ public:
     static void CALLBACK RunRemoteFunc(void *pParam);
 	static void CALLBACK TestOutputCallback(void *pParam,LPCTSTR psz);
 
+    // Helpers
+    // Translate from Windows to Unix serial port nomenclature
+    wxString TranslatePort(const wxString& port) const;
+	
 protected:
 
     ecRunTestsExecutablesDialog*            m_executables;
@@ -128,6 +147,7 @@ protected:
     // OnIdle pick it up
     wxString                                m_outputBuffer;
     bool                                    m_outputBufferPresent;
+    ecRunTestsTimer                         m_timer;
 DECLARE_EVENT_TABLE()
 };
 
--- a/host/tools/configtool/standalone/wxwin/settingsdlg.cpp
+++ b/host/tools/configtool/standalone/wxwin/settingsdlg.cpp
@@ -30,7 +30,7 @@
 // Author(s):   julians
 // Contact(s):  julians
 // Date:        2000/09/11
-// Version:     $Id: settingsdlg.cpp,v 1.12 2001/04/24 16:34:55 julians Exp $
+// Version:     $Id: settingsdlg.cpp,v 1.13 2001/07/05 10:42:16 julians Exp $
 // Purpose:
 // Description: Implementation file for ecSettingsDialog
 // Requires:
@@ -1021,7 +1021,7 @@ void ecRunOptionsDialog::CreateControls(
     wxStaticText *item26 = new wxStaticText( parent, wxID_STATIC, _(":"), wxDefaultPosition, wxDefaultSize, 0 );
     item22->Add( item26, 0, wxALIGN_CENTRE, 5 );
 
-    wxTextCtrl *item27 = new wxTextCtrl( parent, ecID_RUN_PROPERTIES_TCPIP_PORT, _(""), wxDefaultPosition, wxSize(30,-1), 0 );
+    wxTextCtrl *item27 = new wxTextCtrl( parent, ecID_RUN_PROPERTIES_TCPIP_PORT, _(""), wxDefaultPosition, wxSize(40,-1), 0 );
     item22->Add( item27, 0, wxALIGN_CENTRE|wxALL, 5 );
 
     item14->Add( item22, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 );
--- a/host/tools/configtool/standalone/wxwin/setup/configtool.iss
+++ b/host/tools/configtool/standalone/wxwin/setup/configtool.iss
@@ -4,13 +4,13 @@
 
 [Setup]
     MinVersion=4.0,4.0
-    AppName=eCos Configuration Tool 2.02
+    AppName=eCos Configuration Tool 2.03
     AppId=eCos Configuration Tool
     CreateUninstallRegKey=1
     UsePreviousAppDir=1
     UsePreviousGroup=1
-    AppVersion=2.02
-    AppVerName=eCos Configuration Tool 2.02
+    AppVersion=2.03
+    AppVerName=eCos Configuration Tool 2.03
     AppCopyright=Copyright © Red Hat Inc., 2001
     BackColor=$FF0000
     BackColor2=$000000
@@ -217,7 +217,7 @@
 ; DO NOT DELETE THEM or you may be unable to reload the script
 
 ;[ScriptSetup]
-;VerNum=2.02
+;VerNum=2.03
 ;InnoVer=1.3
 ;AddVerTo=AppVerName
 ;SetupFilename=setup.exe
--- a/packages/devs/wallclock/mips/ref4955/current/ChangeLog
+++ b/packages/devs/wallclock/mips/ref4955/current/ChangeLog
@@ -1,3 +1,7 @@
+2001-07-03  Jesper Skov  <jskov@redhat.com>
+
+	* src/wallclock_ref4955.cxx: Don't include kernel config.
+
 2000-05-26  Jesper Skov  <jskov@redhat.com>
 
 	* cdl/wallclock_ref4955.cdl:
--- a/packages/devs/wallclock/mips/ref4955/current/src/wallclock_ref4955.cxx
+++ b/packages/devs/wallclock/mips/ref4955/current/src/wallclock_ref4955.cxx
@@ -40,7 +40,6 @@
 //
 //==========================================================================
 
-#include <pkgconf/kernel.h>             // Kernel config
 #include <pkgconf/wallclock.h>          // Wallclock device config
 
 #include <cyg/hal/hal_io.h>             // IO macros
--- a/packages/ecos.db
+++ b/packages/ecos.db
@@ -1070,6 +1070,16 @@ package CYGPKG_HAL_ARM_EBSA285 {
         eCos on a Intel EBSA285 StrongARM eval board."
 }
 
+package CYGPKG_HAL_ARM_ARM9 {
+	alias		{ "ARM9 variant" hal_arm_arm9 }
+	directory	hal/arm/arm9/var
+	script		hal_arm_arm9.cdl
+	hardware
+        description "
+        The ARM9 HAL package provides the support needed to run
+        eCos on a ARM9 based systems."
+}
+
 package CYGPKG_HAL_ARM_SA11X0 {
 	alias		{ "Intel SA11X0 Chipset" hal_arm_sa11x0 }
 	directory	hal/arm/sa11x0/var
new file mode 100644
--- /dev/null
+++ b/packages/hal/arm/arm9/var/current/ChangeLog
@@ -0,0 +1,99 @@
+2001-04-30  Gary Thomas  <gthomas@redhat.com>
+
+	* src/arm9_misc.c (hal_hardware_init): Use CDL configuration to
+	decide which caches should be enabled at startup time.
+
+2001-04-26  Gary Thomas  <gthomas@redhat.com>
+
+	* src/arm9_misc.c (hal_hardware_init): Caches just don't seem to work.
+
+	* include/hal_cache.h: Fix cache parameters - 16K x 16K
+
+2001-04-18  Jesper Skov  <jskov@redhat.com>
+
+	* src/arm9_misc.c: Update copyright.
+	* include/hal_cache.h: Same.
+	* cdl/hal_arm_arm9.cdl: Same.
+
+2001-04-16  Gary Thomas  <gthomas@redhat.com>
+
+	* cdl/hal_arm_arm9.cdl: Add CDL to describe CPU family.
+
+2001-04-03  Jesper Skov  <jskov@redhat.com>
+
+	* src/arm9_misc.c: Removed hal_arm9.h
+	* include/hal_cache.h: Same.
+	* include/hal_arm9.h: Deleted.
+
+2000-12-04  Hugo Tyson  <hmt@redhat.com>
+
+	* include/hal_cache.h: Consistently ensure that ARM registers used
+	in MCR ops to cache-control coprocessors, where the data doesn't
+	matter, all actually have data zero ("SBZ") as in the Jaggar book.
+	This may well not be necessary, but for the sake of making sure...
+
+2000-11-27  Jesper Skov  <jskov@redhat.com>
+
+	* include/hal_cache.h
+	(HAHAL_FLASH_CACHES_ON/HAL_FLASH_CACHES_OFF): Defined.
+
+	* src/arm9_misc.c (hal_hardware_init): Disable caches. Wasted too
+	much time on this already.
+
+2000-11-23  Jesper Skov  <jskov@redhat.com>
+
+	* include/hal_cache.h (HAL_DCACHE_SYNC): Wait for cache dirty flag
+	to clear.
+
+2000-11-22  Jesper Skov  <jskov@redhat.com>
+
+	* src/arm9_misc.c (hal_hardware_init): Don't disable caches.
+
+2000-11-21  Jesper Skov  <jskov@redhat.com>
+
+	* include/hal_cache.h (HAL_DCACHE_INVALIDATE_ALL): Remove
+	writeback buffer flush.
+
+	* cdl/hal_arm_arm9.cdl: Removed clock options.
+
+	* src/arm9_misc.c: Cleaned up, enabled caches.
+
+	* include/hal_cache.h: Enable cache controls, fix invalidate
+	macro.
+
+2000-11-15  Jesper Skov  <jskov@redhat.com>
+
+	* src/arm9_misc.c: Disable/clear caches. Removed clock handling.
+
+	* include/hal_cache.h: Changed to match ARM925, but prevent
+	enabling. Messes up flash programming.
+
+2000-11-14  Jesper Skov  <jskov@redhat.com>
+
+	* Created.
+
+//===========================================================================
+//####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####
+//===========================================================================
new file mode 100644
--- /dev/null
+++ b/packages/hal/arm/arm9/var/current/cdl/hal_arm_arm9.cdl
@@ -0,0 +1,57 @@
+# ====================================================================
+#
+#      hal_arm_arm9.cdl
+#
+#      ARM Arm9 architectural HAL package configuration data
+#
+# ====================================================================
+#####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):      gthomas
+# Contributors:   jskov
+# Date:           2000-11-10
+#
+#####DESCRIPTIONEND####
+#
+# ====================================================================
+cdl_package CYGPKG_HAL_ARM_ARM9 {
+    display       "ARM ARM9 architecture"
+    parent        CYGPKG_HAL_ARM
+    hardware
+    include_dir   cyg/hal
+    define_header hal_arm_arm9.h
+    description   "
+        This HAL variant package provides generic
+        support for the ARM ARM9 processors. It is also
+        necessary to select a specific target platform HAL
+        package."
+
+    implements    CYGINT_HAL_ARM_ARCH_ARM9
+
+    compile       arm9_misc.c
+
+}
new file mode 100644
--- /dev/null
+++ b/packages/hal/arm/arm9/var/current/include/hal_cache.h
@@ -0,0 +1,359 @@
+#ifndef CYGONCE_HAL_CACHE_H
+#define CYGONCE_HAL_CACHE_H
+
+//=============================================================================
+//
+//      hal_cache.h
+//
+//      HAL cache control API
+//
+//=============================================================================
+//####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):   gthomas
+// Contributors:hmt, jskov
+//              Travis C. Furrer <furrer@mit.edu>
+// Date:        2000-05-08
+// Purpose:     Cache control API
+// Description: The macros defined here provide the HAL APIs for handling
+//              cache control operations.
+// Usage:
+//              #include <cyg/hal/hal_cache.h>
+//              ...
+//              
+//
+//####DESCRIPTIONEND####
+//
+//=============================================================================
+
+#include <cyg/infra/cyg_type.h>
+#include <cyg/hal/hal_mmu.h>
+
+
+//-----------------------------------------------------------------------------
+// Cache dimensions
+
+#define HAL_ICACHE_SIZE                 0x4000
+#define HAL_ICACHE_LINE_SIZE            16
+#define HAL_ICACHE_WAYS                 2
+#define HAL_ICACHE_SETS (HAL_ICACHE_SIZE/(HAL_ICACHE_LINE_SIZE*HAL_ICACHE_WAYS))
+
+#define HAL_DCACHE_SIZE                 0x4000
+#define HAL_DCACHE_LINE_SIZE            16
+#define HAL_DCACHE_WAYS                 2
+#define HAL_DCACHE_SETS (HAL_DCACHE_SIZE/(HAL_DCACHE_LINE_SIZE*HAL_DCACHE_WAYS))
+
+// FIXME: much of the code below should make better use of
+// the definitions from hal_mmu.h
+
+//-----------------------------------------------------------------------------
+// Global control of Instruction cache
+
+// FIXME: disable/enable instruction streaming?
+
+// Enable the instruction cache
+#define HAL_ICACHE_ENABLE()                                             \
+CYG_MACRO_START                                                         \
+    asm volatile (                                                      \
+        "mrc  p15,0,r1,c1,c0,0;"                                        \
+        "orr  r1,r1,#0x1000;"                                           \
+        "orr  r1,r1,#0x0003;" /* enable ICache (also ensures   */       \
+                              /* that MMU and alignment faults */       \
+                              /* are enabled)                  */       \
+        "mcr  p15,0,r1,c1,c0,0"                                         \
+        :                                                               \
+        :                                                               \
+        : "r1" /* Clobber list */                                       \
+        );                                                              \
+CYG_MACRO_END
+
+// Disable the instruction cache (and invalidate it, required semanitcs)
+#define HAL_ICACHE_DISABLE()                                            \
+CYG_MACRO_START                                                         \
+    asm volatile (                                                      \
+        "mrc    p15,0,r1,c1,c0,0;"                                      \
+        "bic    r1,r1,#0x1000;" /* disable ICache (but not MMU, etc) */ \
+        "mcr    p15,0,r1,c1,c0,0;"                                      \
+        "mov    r1,#0;"                                                 \
+        "mcr    p15,0,r1,c7,c5,0;"  /* flush ICache */                  \
+        "nop;" /* next few instructions may be via cache    */          \
+        "nop;"                                                          \
+        "nop;"                                                          \
+        "nop;"                                                          \
+        "nop;"                                                          \
+        "nop"                                                           \
+        :                                                               \
+        :                                                               \
+        : "r1" /* Clobber list */                                       \
+        );                                                              \
+CYG_MACRO_END
+
+// Query the state of the instruction cache
+#define HAL_ICACHE_IS_ENABLED(_state_)                                   \
+CYG_MACRO_START                                                          \
+    register cyg_uint32 reg;                                             \
+    asm volatile ("mrc  p15,0,%0,c1,c0,0"                                \
+                  : "=r"(reg)                                            \
+                  :                                                      \
+        );                                                               \
+    (_state_) = (0 != (0x1000 & reg)); /* Bit 12 is ICache enable */     \
+CYG_MACRO_END
+
+// Invalidate the entire cache
+#define HAL_ICACHE_INVALIDATE_ALL()                                     \
+CYG_MACRO_START                                                         \
+    /* this macro can discard dirty cache lines (N/A for ICache) */     \
+    asm volatile (                                                      \
+        "mov    r1,#0;"                                                 \
+        "mcr    p15,0,r1,c7,c5,0;"  /* flush ICache */                  \
+        "mcr    p15,0,r1,c8,c5,0;"  /* flush ITLB only */               \
+        "nop;" /* next few instructions may be via cache    */          \
+        "nop;"                                                          \
+        "nop;"                                                          \
+        "nop;"                                                          \
+        "nop;"                                                          \
+        "nop;"                                                          \
+        :                                                               \
+        :                                                               \
+        : "r1" /* Clobber list */                                       \
+        );                                                              \
+CYG_MACRO_END
+
+// Synchronize the contents of the cache with memory.
+// (which includes flushing out pending writes)
+#define HAL_ICACHE_SYNC()                                       \
+CYG_MACRO_START                                                 \
+    HAL_DCACHE_SYNC(); /* ensure data gets to RAM */            \
+    HAL_ICACHE_INVALIDATE_ALL(); /* forget all we know */       \
+CYG_MACRO_END
+
+// Set the instruction cache refill burst size
+//#define HAL_ICACHE_BURST_SIZE(_size_)
+
+// Load the contents of the given address range into the instruction cache
+// and then lock the cache so that it stays there.
+//#define HAL_ICACHE_LOCK(_base_, _size_)
+
+// Undo a previous lock operation
+//#define HAL_ICACHE_UNLOCK(_base_, _size_)
+
+// Unlock entire cache
+//#define HAL_ICACHE_UNLOCK_ALL()
+
+//-----------------------------------------------------------------------------
+// Instruction cache line control
+
+// Invalidate cache lines in the given range without writing to memory.
+//#define HAL_ICACHE_INVALIDATE( _base_ , _size_ )
+
+//-----------------------------------------------------------------------------
+// Global control of data cache
+
+// Enable the data cache
+#define HAL_DCACHE_ENABLE()                                             \
+CYG_MACRO_START                                                         \
+    asm volatile (                                                      \
+        "mrc  p15,0,r1,c1,c0,0;"                                        \
+        "orr  r1,r1,#0x000F;" /* enable DCache (also ensures    */      \
+                              /* the MMU, alignment faults, and */      \
+                              /* write buffer are enabled)      */      \
+        "mcr  p15,0,r1,c1,c0,0"                                         \
+        :                                                               \
+        :                                                               \
+        : "r1" /* Clobber list */                                       \
+        );                                                              \
+CYG_MACRO_END
+
+// Disable the data cache (and invalidate it, required semanitcs)
+#define HAL_DCACHE_DISABLE()                                            \
+CYG_MACRO_START                                                         \
+    asm volatile (                                                      \
+        "mrc  p15,0,r1,c1,c0,0;"                                        \
+        "bic  r1,r1,#0x000C;" /* disable DCache AND write buffer  */    \
+                              /* but not MMU and alignment faults */    \
+        "mcr  p15,0,r1,c1,c0,0;"                                        \
+        "mov    r1,#0;"                                                 \
+        "mcr  p15,0,r1,c7,c6,0" /* clear data cache */                  \
+        :                                                               \
+        :                                                               \
+        : "r1" /* Clobber list */                                       \
+        );                                                              \
+CYG_MACRO_END
+
+// Query the state of the data cache
+#define HAL_DCACHE_IS_ENABLED(_state_)                                   \
+CYG_MACRO_START                                                          \
+    register int reg;                                                    \
+    asm volatile ("mrc  p15,0,%0,c1,c0,0;"                               \
+                  : "=r"(reg)                                            \
+                  :                                                      \
+        );                                                               \
+    (_state_) = (0 != (4 & reg)); /* Bit 2 is DCache enable */           \
+CYG_MACRO_END
+
+// Flush the entire dcache (and then both TLBs, just in case)
+#define HAL_DCACHE_INVALIDATE_ALL()                                     \
+CYG_MACRO_START  /* this macro can discard dirty cache lines. */        \
+    asm volatile (                                                      \
+	"mov    r0,#0;"                                                 \
+        "mcr    p15,0,r0,c7,c6,0;" /* flush d-cache */                  \
+        "mcr    p15,0,r0,c8,c7,0;" /* flush i+d-TLBs */                 \
+        :                                                               \
+        :                                                               \
+        : "r0","memory" /* clobber list */);                            \
+CYG_MACRO_END
+
+// Synchronize the contents of the cache with memory.
+#define HAL_DCACHE_SYNC()                                               \
+CYG_MACRO_START                                                         \
+    asm volatile (                                                      \
+        "mov    r0, #0;"                                                \
+        "mcr    p15,0,r0,c7,c10,0;"  /* clean DCache */                 \
+        "1: mrc p15,0,r0,c15,c4,0;"  /* wait for dirty flag to clear */ \
+        "ands   r0,r0,#0x80000000;"                                     \
+        "bne    1b;"                                                    \
+        "mov    r0,#0;"                                                 \
+        "mcr    p15,0,r0,c7,c6,0;"  /* flush DCache */                  \
+        "mcr    p15,0,r0,c7,c10,4;" /* and drain the write buffer */    \
+        :                                                               \
+        :                                                               \
+        : "r0" /* Clobber list */                                       \
+        );                                                              \
+CYG_MACRO_END
+
+// Set the data cache refill burst size
+//#define HAL_DCACHE_BURST_SIZE(_size_)
+
+// Set the data cache write mode
+//#define HAL_DCACHE_WRITE_MODE( _mode_ )
+
+#define HAL_DCACHE_WRITETHRU_MODE       0
+#define HAL_DCACHE_WRITEBACK_MODE       1
+
+// Get the current writeback mode - or only writeback mode if fixed
+#define HAL_DCACHE_QUERY_WRITE_MODE( _mode_ ) CYG_MACRO_START           \
+    _mode_ = HAL_DCACHE_WRITEBACK_MODE;                                 \
+CYG_MACRO_END
+
+// Load the contents of the given address range into the data cache
+// and then lock the cache so that it stays there.
+//#define HAL_DCACHE_LOCK(_base_, _size_)
+
+// Undo a previous lock operation
+//#define HAL_DCACHE_UNLOCK(_base_, _size_)
+
+// Unlock entire cache
+//#define HAL_DCACHE_UNLOCK_ALL()
+
+//-----------------------------------------------------------------------------
+// Data cache line control
+
+// Allocate cache lines for the given address range without reading its
+// contents from memory.
+//#define HAL_DCACHE_ALLOCATE( _base_ , _size_ )
+
+// Write dirty cache lines to memory and invalidate the cache entries
+// for the given address range.
+// ---- this seems not to work despite the documentation ---
+//#define HAL_DCACHE_FLUSH( _base_ , _size_ )
+//CYG_MACRO_START
+//    HAL_DCACHE_STORE( _base_ , _size_ );
+//    HAL_DCACHE_INVALIDATE( _base_ , _size_ );
+//CYG_MACRO_END
+
+// Invalidate cache lines in the given range without writing to memory.
+// ---- this seems not to work despite the documentation ---
+//#define HAL_DCACHE_INVALIDATE( _base_ , _size_ )
+//CYG_MACRO_START
+//    register int addr, enda;
+//    for ( addr = (~(HAL_DCACHE_LINE_SIZE - 1)) & (int)(_base_),
+//              enda = (int)(_base_) + (_size_);
+//          addr < enda ;
+//          addr += HAL_DCACHE_LINE_SIZE )
+//    {
+//        asm volatile (
+//                      "mcr  p15,0,%0,c7,c6,1;" /* flush entry away */
+//                      :
+//                      : "r"(addr)
+//                      : "memory"
+//            );
+//    }
+//CYG_MACRO_END
+                          
+// Write dirty cache lines to memory for the given address range.
+// ---- this seems not to work despite the documentation ---
+//#define HAL_DCACHE_STORE( _base_ , _size_ )
+//CYG_MACRO_START
+//    register int addr, enda;
+//    for ( addr = (~(HAL_DCACHE_LINE_SIZE - 1)) & (int)(_base_),
+//              enda = (int)(_base_) + (_size_);
+//          addr < enda ;
+//          addr += HAL_DCACHE_LINE_SIZE )
+//    {
+//        asm volatile ("mcr  p15,0,%0,c7,c10,1;" /* push entry to RAM */
+//                      :
+//                      : "r"(addr)
+//                      : "memory"
+//            );
+//    }
+//CYG_MACRO_END
+
+// Preread the given range into the cache with the intention of reading
+// from it later.
+//#define HAL_DCACHE_READ_HINT( _base_ , _size_ )
+
+// Preread the given range into the cache with the intention of writing
+// to it later.
+//#define HAL_DCACHE_WRITE_HINT( _base_ , _size_ )
+
+// Allocate and zero the cache lines associated with the given range.
+//#define HAL_DCACHE_ZERO( _base_ , _size_ )
+
+//-----------------------------------------------------------------------------
+// Cache controls for safely disabling/reenabling caches around execution
+// of relocated code.
+
+#define HAL_FLASH_CACHES_OFF(_d_, _i_)          \
+    CYG_MACRO_START                             \
+    HAL_ICACHE_IS_ENABLED(_i_);                 \
+    HAL_DCACHE_IS_ENABLED(_d_);                 \
+    HAL_ICACHE_INVALIDATE_ALL();                \
+    HAL_ICACHE_DISABLE();                       \
+    HAL_DCACHE_SYNC();                          \
+    HAL_DCACHE_INVALIDATE_ALL();                \
+    HAL_DCACHE_DISABLE();                       \
+    CYG_MACRO_END
+
+#define HAL_FLASH_CACHES_ON(_d_, _i_)           \
+    CYG_MACRO_START                             \
+    if (_d_) HAL_DCACHE_ENABLE();               \
+    if (_i_) HAL_ICACHE_ENABLE();               \
+    CYG_MACRO_END
+
+//-----------------------------------------------------------------------------
+#endif // ifndef CYGONCE_HAL_CACHE_H
+// End of hal_cache.h
new file mode 100644
--- /dev/null
+++ b/packages/hal/arm/arm9/var/current/src/arm9_misc.c
@@ -0,0 +1,79 @@
+//==========================================================================
+//
+//      arm9_misc.c
+//
+//      HAL misc board support code for ARM9
+//
+//==========================================================================
+//####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):    gthomas
+// Contributors: jskov
+// Date:         2000-05-08
+// Purpose:      HAL board support
+// Description:  Implementations of HAL board interfaces
+//
+//####DESCRIPTIONEND####
+//
+//========================================================================*/
+
+#include <pkgconf/hal.h>
+#include <pkgconf/system.h>
+#include CYGBLD_HAL_PLATFORM_H
+
+#include <cyg/infra/cyg_type.h>         // base types
+
+#include <cyg/hal/hal_if.h>             // HAL ROM/if
+#include <cyg/hal/hal_io.h>             // IO macros
+#include <cyg/hal/hal_cache.h>
+
+// Most initialization has already been done before we get here.
+// All we do here is enable the caches.
+
+externC void plf_hardware_init(void);
+
+void hal_hardware_init(void)
+{
+    // Perform any platform specific initializations
+    plf_hardware_init();
+
+    // Set up eCos/ROM interfaces
+    hal_if_init();
+
+    // Enable caches
+    HAL_DCACHE_INVALIDATE_ALL();
+    HAL_ICACHE_INVALIDATE_ALL();
+#ifdef CYGSEM_HAL_ENABLE_DCACHE_ON_STARTUP
+    HAL_DCACHE_ENABLE();
+#endif
+#ifdef CYGSEM_HAL_ENABLE_ICACHE_ON_STARTUP
+    HAL_ICACHE_ENABLE();
+#endif
+}
+
+/*------------------------------------------------------------------------*/
+// EOF arm9_misc.c
--- a/packages/hal/arm/e7t/current/ChangeLog
+++ b/packages/hal/arm/e7t/current/ChangeLog
@@ -1,3 +1,15 @@
+2001-07-02  Jesper Skov  <jskov@redhat.com>
+
+	* src/hal_diag.c (cyg_hal_plf_serial_getc_nonblock): Ack RX
+	interrupt after reading.
+
+	* include/pkgconf/mlt_arm_e7t_ram.mlt: Reserve 64kB for RedBoot.
+	* include/pkgconf/mlt_arm_e7t_ram.ldi: Same.
+
+	* src/hal_diag.c: Make some data type fixes. Try to ack interrupt
+	after reading data. Unable to test though due to some other
+	problem on diag output.
+
 2001-04-17  Jesper Skov  <jskov@redhat.com>
 
 	* cdl/hal_arm_e7t.cdl: Fix compiler flags. In particular, do now
--- a/packages/hal/arm/e7t/current/include/pkgconf/mlt_arm_e7t_ram.ldi
+++ b/packages/hal/arm/e7t/current/include/pkgconf/mlt_arm_e7t_ram.ldi
@@ -13,7 +13,7 @@ SECTIONS
 {
     SECTIONS_BEGIN
     SECTION_fixed_vectors (ram, 0x20, LMA_EQ_VMA)
-    SECTION_rom_vectors (ram, 0xc000, LMA_EQ_VMA)
+    SECTION_rom_vectors (ram, 0x10000, LMA_EQ_VMA)
     SECTION_text (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata (ram, ALIGN (0x4), LMA_EQ_VMA)
--- a/packages/hal/arm/e7t/current/include/pkgconf/mlt_arm_e7t_ram.mlt
+++ b/packages/hal/arm/e7t/current/include/pkgconf/mlt_arm_e7t_ram.mlt
@@ -1,7 +1,7 @@
 version 0
 region ram 0 80000 0 !
 section fixed_vectors 0 1 0 1 1 0 1 0 20 20 !
-section rom_vectors 0 1 0 1 1 1 1 1 c000 c000 text text !
+section rom_vectors 0 1 0 1 1 1 1 1 10000 10000 text text !
 section text 0 4 0 1 0 1 0 1 fini fini !
 section fini 0 4 0 1 0 1 0 1 rodata rodata !
 section rodata 0 4 0 1 0 1 0 1 rodata1 rodata1 !
--- a/packages/hal/arm/e7t/current/src/hal_diag.c
+++ b/packages/hal/arm/e7t/current/src/hal_diag.c
@@ -133,14 +133,15 @@ void
 cyg_hal_plf_serial_putc(void *__ch_data, char c)
 {
     cyg_uint8* base = ((channel_data_t*)__ch_data)->base;
-    cyg_uint32 status;
+    cyg_uint32 status, ch;
     CYGARC_HAL_SAVE_GP();
 
     do {
         HAL_READ_UINT32(base+E7T_UART_STAT, status);
     } while ((status & E7T_UART_STAT_TXE) == 0);
 
-    HAL_WRITE_UINT32(base+E7T_UART_TXBUF, c);
+    ch = (cyg_uint32)c;
+    HAL_WRITE_UINT32(base+E7T_UART_TXBUF, ch);
 
     CYGARC_HAL_RESTORE_GP();
 }
@@ -148,14 +149,19 @@ cyg_hal_plf_serial_putc(void *__ch_data,
 static cyg_bool
 cyg_hal_plf_serial_getc_nonblock(void* __ch_data, cyg_uint8* ch)
 {
-    cyg_uint8* base = ((channel_data_t*)__ch_data)->base;
+    channel_data_t* chan = (channel_data_t*)__ch_data;
+    cyg_uint8* base = chan->base;
     cyg_uint32 stat;
+    cyg_uint32 c;
 
     HAL_READ_UINT32(base+E7T_UART_STAT, stat);
     if ((stat & E7T_UART_STAT_RDR) == 0)
         return false;
 
-    HAL_READ_UINT32(base+E7T_UART_RXBUF, *ch);
+    HAL_READ_UINT32(base+E7T_UART_RXBUF, c);
+    *ch = (cyg_uint8)(c & 0xff);
+
+    HAL_INTERRUPT_ACKNOWLEDGE(chan->isr_vector_rx);
 
     return true;
 }
@@ -228,6 +234,7 @@ cyg_hal_plf_serial_control(void *__ch_da
     switch (__func) {
     case __COMMCTL_IRQ_ENABLE:
         irq_state = 1;
+        HAL_INTERRUPT_ACKNOWLEDGE(chan->isr_vector_rx);
         HAL_INTERRUPT_UNMASK(chan->isr_vector_rx);
         break;
     case __COMMCTL_IRQ_DISABLE:
@@ -262,23 +269,25 @@ cyg_hal_plf_serial_isr(void *__ch_data, 
 {
     int res = 0;
     channel_data_t* chan = (channel_data_t*)__ch_data;
-    char c;
+    cyg_uint32 c;
+    cyg_uint8 ch;
     cyg_uint32 stat;
     CYGARC_HAL_SAVE_GP();
 
-    cyg_drv_interrupt_acknowledge(chan->isr_vector_rx);
-
     *__ctrlc = 0;
     HAL_READ_UINT32(chan->base+E7T_UART_STAT, stat);
     if ( (stat & E7T_UART_STAT_RDR) != 0 ) {
 
         HAL_READ_UINT32(chan->base+E7T_UART_RXBUF, c);
-        if( cyg_hal_is_break( &c , 1 ) )
+        ch = (cyg_uint8)(c & 0xff);
+        if( cyg_hal_is_break( &ch , 1 ) )
             *__ctrlc = 1;
 
         res = CYG_ISR_HANDLED;
     }
 
+    HAL_INTERRUPT_ACKNOWLEDGE(chan->isr_vector_rx);
+
     CYGARC_HAL_RESTORE_GP();
     return res;
 }
--- a/packages/hal/arm/edb7xxx/current/ChangeLog
+++ b/packages/hal/arm/edb7xxx/current/ChangeLog
@@ -1,3 +1,7 @@
+2001-06-29  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* src/io.c: Support building on cygwin.
+
 2001-06-28  Jonathan Larmour  <jlarmour@redhat.com>
 
 	* cdl/hal_arm_edb7xxx.cdl: Clarify platform description.
--- a/packages/hal/arm/edb7xxx/current/support/io.c
+++ b/packages/hal/arm/edb7xxx/current/support/io.c
@@ -135,9 +135,14 @@ void SetBaud(long port, long reqRate)
 
 int CharReady(long port)
 {
+#ifdef __CYGWIN__
+    // Windows doesn't support the below ioctl
+    return 1;
+#else
     int n, res;
     res = ioctl(port, FIONREAD, &n);
     return n;  // Non-zero if characters ready to read
+#endif
 }
 
 void WaitForOutputEmpty(long port)
--- a/packages/hal/common/current/ChangeLog
+++ b/packages/hal/common/current/ChangeLog
@@ -1,3 +1,7 @@
+2001-06-29  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* cdl/hal.cdl (CYGPKG_HAL_TESTS): Remove redundant .c extension
+
 2001-06-29  Jesper Skov  <jskov@redhat.com>
 
 	* include/hal_misc.h: Moved arbiter helper to
--- a/packages/hal/common/current/cdl/hal.cdl
+++ b/packages/hal/common/current/cdl/hal.cdl
@@ -416,7 +416,7 @@ cdl_package CYGPKG_HAL {
         display "Common HAL tests"
         flavor  data
         no_define
-        calculated { "tests/cache tests/context tests/intr tests/cpp1.c" }
+        calculated { "tests/cache tests/context tests/intr tests/cpp1" }
         description   "
             This option specifies the set of tests for the common HAL."
     }
--- a/packages/hal/i386/arch/current/ChangeLog
+++ b/packages/hal/i386/arch/current/ChangeLog
@@ -1,3 +1,14 @@
+2001-07-05  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* include/hal_intr.h (HAL_RESTORE_INTERRUPTS): Don't change name
+	for clobbers.
+
+2001-07-04  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* include/hal_intr.h: Be pedantic about register constraint syntax
+	to satisfy newer compilers
+	* include/hal_io.h: Ditto
+
 2001-06-13  Jonathan Larmour  <jlarmour@redhat.com>
 
 	* cdl/hal_i386.cdl: Default to enabling FPU support since gcc assumes
--- a/packages/hal/i386/arch/current/cdl/hal_i386.cdl
+++ b/packages/hal/i386/arch/current/cdl/hal_i386.cdl
@@ -120,7 +120,7 @@ cdl_package CYGPKG_HAL_I386 {
 	cdl_option CYGHWR_HAL_I386_FPU_SWITCH_LAZY {
 	    display       "Use lazy FPU state switching"
 	    flavor        bool
-	    default_value 1
+	    default_value 0
 
 	    description "
 	                This option enables lazy FPU state switching.
--- a/packages/hal/i386/arch/current/include/hal_io.h
+++ b/packages/hal/i386/arch/current/include/hal_io.h
@@ -69,8 +69,8 @@ CYG_MACRO_START                         
 {                                               \
     asm volatile ( "xor %%eax,%%eax ;"          \
                    "inb %%dx, %%al"             \
-                   : "=eax" (_value_)           \
-                   :  "edx"(_register_)         \
+                   : "=a" (_value_)           \
+                   :  "d"(_register_)         \
         );                                      \
 }                                               \
 CYG_MACRO_END
@@ -80,7 +80,7 @@ CYG_MACRO_START                         
 {                                                       \
     asm volatile ( "outb %%al,%%dx"                     \
                    :                                    \
-                   : "eax" (_value_), "edx"(_register_) \
+                   : "a" (_value_), "d"(_register_) \
         );                                              \
 }                                                       \
 CYG_MACRO_END
@@ -105,8 +105,8 @@ CYG_MACRO_START                         
 {                                               \
     asm volatile ( "xor %%eax,%%eax ;"          \
                    "inw %%dx, %%ax"             \
-                   : "=eax" (_value_)           \
-                   :  "edx"(_register_)         \
+                   : "=a" (_value_)           \
+                   :  "d"(_register_)         \
         );                                      \
 }                                               \
 CYG_MACRO_END
@@ -116,7 +116,7 @@ CYG_MACRO_START                         
 {                                                       \
     asm volatile ( "outw %%ax,%%dx"                     \
                    :                                    \
-                   : "eax" (_value_), "edx"(_register_) \
+                   : "a" (_value_), "d"(_register_) \
         );                                              \
 }                                                       \
 CYG_MACRO_END
@@ -140,8 +140,8 @@ CYG_MACRO_END
 CYG_MACRO_START                                 \
 {                                               \
     asm volatile ( "inl %%dx, %%eax"            \
-                   : "=eax" (_value_)           \
-                   :  "edx"(_register_)         \
+                   : "=a" (_value_)           \
+                   :  "d"(_register_)         \
         );                                      \
 }                                               \
 CYG_MACRO_END
@@ -151,7 +151,7 @@ CYG_MACRO_START                         
 {                                                       \
     asm volatile ( "outl %%eax,%%dx"                    \
                    :                                    \
-                   : "eax" (_value_), "edx"(_register_) \
+                   : "a" (_value_), "d"(_register_) \
         );                                              \
 }                                                       \
 CYG_MACRO_END
--- a/packages/hal/i386/pcmb/current/ChangeLog
+++ b/packages/hal/i386/pcmb/current/ChangeLog
@@ -1,3 +1,14 @@
+2001-07-05  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* src/pcmb_misc.c (hal_pcmb_init): Silence warning
+	* include/pcmb_intr.h: Revert below change - not relevant in this case	
+	for clobbers
+
+2001-07-04  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* include/pcmb_intr.h: Be pedantic about register constraint syntax
+	to satisfy newer compilers
+
 2001-05-16  Jonathan Larmour  <jlarmour@redhat.com>
 
 	* src/pcmb_misc.c (hal_pc_clock_initialize): Use mode 2 (rate generator)
--- a/packages/hal/i386/pcmb/current/src/pcmb_misc.c
+++ b/packages/hal/i386/pcmb/current/src/pcmb_misc.c
@@ -67,7 +67,7 @@ CYG_ADDRWORD cyg_hal_pcmb_memsize_extend
 /*------------------------------------------------------------------------*/
 // Initializer
 
-void hal_pcmb_init()
+void hal_pcmb_init(void)
 {
     cyg_uint8 lo,hi;
     
--- a/packages/hal/mips/arch/current/ChangeLog
+++ b/packages/hal/mips/arch/current/ChangeLog
@@ -1,3 +1,14 @@
+2001-07-03  Hugo Tyson  <hmt@redhat.com>
+
+	* src/vectors.S (restore_state): When restoring the CPU status
+	register right at the end of interrupt processing, keep the
+	current settings of the IM[7:0] bits within the status register.
+	Depending on platform, these may be used as interrupt masks, so if
+	an ISR or DSR masks interrupts they must be preserved.  If they
+	are not used, then this does no harm.
+	#ifdef'd out for CYG_HAL_MIPS_R3900 anyway 'cos the TX39 does not
+	use these bits at all.
+
 2001-06-27  Mark Salter  <msalter@redhat.com>
 
 	* src/vectors.S (_start): Add code to switch from KSEG1 to KSEG0 if
--- a/packages/hal/mips/arch/current/src/vectors.S
+++ b/packages/hal/mips/arch/current/src/vectors.S
@@ -720,8 +720,24 @@ restore_state:
         srl	k0,1
     1:
 #endif
+
+	lw	k1,mipsreg_sr(sp)		# K1 = saved SR
+#ifndef CYG_HAL_MIPS_R3900	
+	# Keep the current settings of the IM[7:0] bits within the status
+	# register.  These may be used as interrupt masks, so if an ISR or
+	# DSR masks interrupts they must be preserved.
+	# If they are not used, then this does no harm.
+	ori	k0,zero,0xff00
+	nor	k0,k0,k0			# 0xffff00ff
+	and	k1,k1,k0			# all interrupts disabled
+
+	mfc0	k0,status			# V0 = current SR
+	nop
+	nop
+	andi	k0,k0,0xff00			# preserve interrupt set
+	or	k1,k1,k0			# insert into "saved SR"
+#endif
 	lva	k0,mipsreg_pc(sp)		# K0 = return PC
-	lw	k1,mipsreg_sr(sp)		# K1 = saved SR
 	lsp	sp,sp				# load SP
 
 	# Invoke CPU specific mechanism for returning from this
--- a/packages/hal/sh/arch/current/ChangeLog
+++ b/packages/hal/sh/arch/current/ChangeLog
@@ -1,3 +1,8 @@
+2001-07-02  Jesper Skov  <jskov@redhat.com>
+
+	* include/hal_arch.h: CYGARC_PHYSICAL_ADDRESS renamed to
+	CYGARC_BUS_ADDRESS.
+
 2001-06-27  Jesper Skov  <jskov@redhat.com>
 
 	* include/hal_arch.h: Added CPU address space translation macros.
--- a/packages/hal/sh/arch/current/include/hal_arch.h
+++ b/packages/hal/sh/arch/current/include/hal_arch.h
@@ -303,9 +303,9 @@ externC void hal_idle_thread_action(cyg_
 
 //--------------------------------------------------------------------------
 // CPU address space translation macros
-#define CYGARC_PHYSICAL_ADDRESS(x)  ((CYG_ADDRWORD)(x) & 0x1fffffff)
-#define CYGARC_CACHED_ADDRESS(x)    (CYGARC_PHYSICAL_ADDRESS(x)|0x80000000)
-#define CYGARC_UNCACHED_ADDRESS(x)  (CYGARC_PHYSICAL_ADDRESS(x)|0xa0000000)
+#define CYGARC_BUS_ADDRESS(x)       ((CYG_ADDRWORD)(x) & 0x1fffffff)
+#define CYGARC_CACHED_ADDRESS(x)    (CYGARC_BUS_ADDRESS(x)|0x80000000)
+#define CYGARC_UNCACHED_ADDRESS(x)  (CYGARC_BUS_ADDRESS(x)|0xa0000000)
 
 //-----------------------------------------------------------------------------
 #endif // CYGONCE_HAL_ARCH_H
--- a/packages/io/eth/current/ChangeLog
+++ b/packages/io/eth/current/ChangeLog
@@ -1,3 +1,8 @@
+2001-07-03  Gary Thomas  <gthomas@redhat.com>
+
+	* src/net/eth_drv.c (eth_drv_recv): Better cleanup when running
+	out of mbufs - could have lost mbufs before.
+
 2001-06-21  David Woodhouse <dwmw2@redhat.com>
 
 	* src/stand_alone/eth_drv.c: Timeout when waiting for Ethernet
--- a/packages/io/eth/current/src/net/eth_drv.c
+++ b/packages/io/eth/current/src/net/eth_drv.c
@@ -631,7 +631,7 @@ eth_drv_recv(struct eth_drv_sc *sc, int 
         m->m_pkthdr.len = total_len;
     } else {
         sg_list[sg_len].buf = (CYG_ADDRESS)0;
-        sg_list[sg_len].len = min(total_len, MCLBYTES);
+        sg_list[sg_len].len = total_len;
         sg_len++;
         total_len = 0;
     }
@@ -645,8 +645,9 @@ eth_drv_recv(struct eth_drv_sc *sc, int 
                 diag_printf("out of MBUFs [2]");
 #endif
                 sg_list[sg_len].buf = (CYG_ADDRESS)0;
-                sg_list[sg_len].len = 0;
-                sg_len = 1;
+                sg_list[sg_len].len = total_len;
+                sg_len++;
+                top = 0;
                 break;
             }
             mlen = MLEN;
@@ -660,7 +661,7 @@ eth_drv_recv(struct eth_drv_sc *sc, int 
                 diag_printf("warning: eth_recv out of MBUFs\n");
 #endif
                 sg_list[sg_len].buf = (CYG_ADDRESS)0;
-                sg_list[sg_len].len = min(total_len, MCLBYTES);
+                sg_list[sg_len].len = total_len;
                 sg_len++;
                 top = 0;
                 break;
--- a/packages/io/usb/eth/slave/current/ChangeLog
+++ b/packages/io/usb/eth/slave/current/ChangeLog
@@ -1,3 +1,9 @@
+2001-07-02  Bart Veer  <bartv@redhat.com>
+
+	* host/ecos_usbeth.c (ecos_usbeth_probe):
+	Determine the endpoints to use for transmits and receives
+	from the descriptors supplied by the device.
+
 2001-06-28  Bart Veer  <bartv@redhat.com>
 
 	* include/usbs_eth.h, src/usbsethdrv.c, src/usbseth.c:
--- a/packages/io/usb/eth/slave/current/host/ecos_usbeth.c
+++ b/packages/io/usb/eth/slave/current/host/ecos_usbeth.c
@@ -398,11 +398,34 @@ ecos_usbeth_probe(struct usb_device* usb
     int                 res;
     unsigned char       MAC[6];
     unsigned char       dummy[1];
+    int                 tx_endpoint = -1;
+    int                 rx_endpoint = -1;
     
     if ((usbdev->descriptor.idVendor  != ecos_usbeth_implementations[0].vendor) ||
         (usbdev->descriptor.idProduct != ecos_usbeth_implementations[0].vendor)) {
         return (void*) 0;
     }
+    // For now only support USB-ethernet peripherals consisting of a single
+    // configuration, with a single interface, with two bulk endpoints.
+    if ((1 != usbdev->descriptor.bNumConfigurations)  ||
+        (1 != usbdev->config[0].bNumInterfaces) ||
+        (2 != usbdev->config[0].interface[0].altsetting->bNumEndpoints)) {
+        return (void*) 0;
+    }
+    if ((0 == (usbdev->config[0].interface[0].altsetting->endpoint[0].bEndpointAddress & USB_DIR_IN)) &&
+        (0 != (usbdev->config[0].interface[0].altsetting->endpoint[1].bEndpointAddress & USB_DIR_IN))) {
+        tx_endpoint = usbdev->config[0].interface[0].altsetting->endpoint[0].bEndpointAddress;
+        rx_endpoint = usbdev->config[0].interface[0].altsetting->endpoint[1].bEndpointAddress & ~USB_DIR_IN;
+    }
+    if ((0 != (usbdev->config[0].interface[0].altsetting->endpoint[0].bEndpointAddress & USB_DIR_IN)) &&
+        (0 == (usbdev->config[0].interface[0].altsetting->endpoint[1].bEndpointAddress & USB_DIR_IN))) {
+        tx_endpoint = usbdev->config[0].interface[0].altsetting->endpoint[1].bEndpointAddress;
+        rx_endpoint = usbdev->config[0].interface[0].altsetting->endpoint[0].bEndpointAddress & ~USB_DIR_IN;
+    }
+    if (-1 == tx_endpoint) {
+        return (void*) 0;
+    }
+           
     res = usb_set_configuration(usbdev, usbdev->config[0].bConfigurationValue);
     if (0 != res) {
         printk("ecos_usbeth: failed to set configuration, %d\n", res);
@@ -421,6 +444,7 @@ ecos_usbeth_probe(struct usb_device* usb
         printk("ecos_usbeth: failed to get MAC address, %d\n", res);
         return (void*) 0;
     }
+    
     res = usb_control_msg(usbdev,
                           usb_sndctrlpipe(usbdev, 0),                           // pipe
                           ECOS_USBETH_CONTROL_SET_PROMISCUOUS_MODE,             // request
@@ -450,11 +474,11 @@ ecos_usbeth_probe(struct usb_device* usb
 
     usbeth->usb_lock    = SPIN_LOCK_UNLOCKED;
     usbeth->usb_dev     = usbdev;
-    FILL_BULK_URB(&(usbeth->tx_urb), usbdev, usb_sndbulkpipe(usbdev, 1),
+    FILL_BULK_URB(&(usbeth->tx_urb), usbdev, usb_sndbulkpipe(usbdev, tx_endpoint),
                   usbeth->tx_buffer, ECOS_USBETH_MAXTU, &ecos_usbeth_tx_callback, (void*) usbeth);
-    FILL_BULK_URB(&(usbeth->rx_urb), usbdev, usb_rcvbulkpipe(usbdev, 2),
+    FILL_BULK_URB(&(usbeth->rx_urb), usbdev, usb_rcvbulkpipe(usbdev, rx_endpoint),
                   usbeth->rx_buffer, ECOS_USBETH_MAXTU, &ecos_usbeth_rx_callback, (void*) usbeth);
-
+    
     usbeth->net_dev             = net;
     usbeth->target_promiscuous  = 0;
     
--- a/packages/redboot/current/ChangeLog
+++ b/packages/redboot/current/ChangeLog
@@ -1,3 +1,7 @@
+2001-07-02  Jesper Skov  <jskov@redhat.com>
+
+	* src/io.c (do_channel): Fox build for !CYGPKG_REDBOOT_ANY_CONSOLE
+
 2001-06-28  Jonathan Larmour  <jlarmour@redhat.com>
 
 	* cdl/redboot.cdl: Don't have a configured default IP address by
--- a/packages/redboot/current/src/io.c
+++ b/packages/redboot/current/src/io.c
@@ -99,11 +99,12 @@ do_channel(int argc, char *argv[])
     /* else display */ 
     else {
         printf("Current console channel id: ");
+#ifdef CYGPKG_REDBOOT_ANY_CONSOLE
         if (!console_selected)
             printf("-1\n");
-        else {
+        else
+#endif
             printf("%d\n", cur);
-        }
     }
 }