changeset 165:d63db767121d

Merge from eCos master repository on 2001-06-29-06:43:03-BST
author jlarmour
date Fri, 29 Jun 2001 07:16:25 +0000
parents f7999c3a5f21
children 5602a8379ebc
files host/tools/configtool/standalone/wxwin/CHANGES.txt host/tools/configtool/standalone/wxwin/ConfigtoolVC.dsp host/tools/configtool/standalone/wxwin/README.txt host/tools/configtool/standalone/wxwin/TODO.txt host/tools/configtool/standalone/wxwin/aboutdlg.cpp host/tools/configtool/standalone/wxwin/appsettings.cpp host/tools/configtool/standalone/wxwin/appsettings.h host/tools/configtool/standalone/wxwin/configtool.cpp host/tools/configtool/standalone/wxwin/configtooldoc.cpp host/tools/configtool/standalone/wxwin/dialogs/configtool.wdr host/tools/configtool/standalone/wxwin/mainwin.cpp host/tools/configtool/standalone/wxwin/packagesdlg.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/setup/configtool.iss host/tools/configtool/standalone/wxwin/setup/innobott.txt host/tools/configtool/standalone/wxwin/setup/makesetup.sh host/tools/configtool/standalone/wxwin/setup/maketarball.sh host/tools/configtool/standalone/wxwin/symbols.h host/tools/configtool/standalone/wxwin/templatesdlg.cpp packages/ChangeLog packages/devs/eth/powerpc/fec/current/ChangeLog packages/devs/eth/powerpc/fec/current/src/if_fec.c packages/ecos.db packages/hal/arm/edb7xxx/current/ChangeLog packages/hal/arm/edb7xxx/current/cdl/hal_arm_edb7xxx.cdl packages/hal/common/current/ChangeLog packages/hal/common/current/include/hal_misc.h packages/hal/mips/arch/current/ChangeLog packages/hal/mips/arch/current/src/hal_misc.c packages/hal/mips/arch/current/src/vectors.S packages/hal/powerpc/mpc8xx/current/ChangeLog packages/hal/powerpc/mpc8xx/current/src/var_intr.c packages/hal/sh/arch/current/ChangeLog packages/hal/sh/arch/current/include/hal_arch.h packages/hal/sh/sh3/current/ChangeLog packages/hal/sh/sh3/current/include/var_intr.h packages/hal/sh/sh3/current/src/var_misc.c packages/io/usb/eth/slave/current/ChangeLog packages/io/usb/eth/slave/current/include/usbs_eth.h packages/io/usb/eth/slave/current/src/usbseth.c packages/io/usb/eth/slave/current/src/usbsethdrv.c packages/io/usb/slave/current/ChangeLog packages/io/usb/slave/current/include/usbs.h packages/io/usb/slave/current/src/usbs.c packages/language/c/libc/i18n/current/ChangeLog packages/language/c/libc/i18n/current/tests/i18nmb.c packages/language/c/libc/stdlib/current/ChangeLog packages/language/c/libc/stdlib/current/tests/atoi.c packages/redboot/current/ChangeLog packages/redboot/current/cdl/redboot.cdl packages/redboot/current/include/redboot.h packages/redboot/current/src/flash.c packages/redboot/current/src/io.c packages/redboot/current/src/load.c packages/redboot/current/src/main.c packages/redboot/current/src/net/bootp.c packages/redboot/current/src/net/ip.c packages/redboot/current/src/xyzModem.c packages/services/memalloc/common/current/ChangeLog packages/services/memalloc/common/current/include/memfixed.hxx packages/services/memalloc/common/current/include/memjoin.hxx packages/services/memalloc/common/current/include/memjoin.inl packages/services/memalloc/common/current/include/memvar.hxx packages/templates/redboot/ChangeLog packages/templates/redboot/current.ect
diffstat 67 files changed, 641 insertions(+), 180 deletions(-) [+]
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/host/tools/configtool/standalone/wxwin/CHANGES.txt
@@ -0,0 +1,60 @@
+Release History for eCos Configuration Tool 2
+=============================================
+
+*** Version 2.03, June 28th 2001
+
+- Corrected a bug introduced in the previous release, where the initial template
+  selection was wrong.
+
+*** Version 2.02, June 27th 2001
+
+- Packages are now sorted in the Packages Dialog.
+  Templates are sorted on Windows, not yet on Linux.
+
+- There was an interaction between Configtool/TCL/Windows 98 that
+  caused a GPF when saving files. This has now been worked around.
+
+- When entering the user tools directory, Configtool now
+  recognises it correctly if it contains appropriate binaries.
+
+- The current build tools path is saved so that if the eCos
+  installer wasn't used, there will be a default build tools
+  path and the user won't get asked every time.
+
+- Main window now refreshed after some dialogs close and before
+  a lengthy operation for aesthetic reasons.
+
+- The dialogs for saving and opening .ecc files now default to the
+  directory of the last loaded/saved file, for convenience.
+
+- Switched to Rich Edit control for Output Window since it has
+  a higher capacity; this causes scrolling behaviour to be
+  less than optimal on NT and a bit weird on Win98, so there's some
+  work to do.
+
+- Stopping a build now works.
+
+- Added CHANGES.txt and TODO.txt to the distribution.
+
+*** Version 2.01, June 2001
+
+- Clicking Save when tool was first loaded didn't do anything.
+  Now behaves like Save As for a first-time save.
+
+- Mix-up with directory names fixed.
+
+- Windows installer now leaves existing DLLs intact even if
+  the installer's files were newer.
+
+- The Unix tarball now contains a subdirectory containing the current
+  version in the name.
+
+
+*** Version 2.0, May 2001
+
+- Initial public release
+
+
+
+
+
--- a/host/tools/configtool/standalone/wxwin/ConfigtoolVC.dsp
+++ b/host/tools/configtool/standalone/wxwin/ConfigtoolVC.dsp
@@ -647,6 +647,10 @@ SOURCE=..\..\..\..\ChangeLog
 # End Source File
 # Begin Source File
 
+SOURCE=.\CHANGES.txt
+# End Source File
+# Begin Source File
+
 SOURCE=.\setup\innobott.txt
 # End Source File
 # Begin Source File
--- a/host/tools/configtool/standalone/wxwin/README.txt
+++ b/host/tools/configtool/standalone/wxwin/README.txt
@@ -82,24 +82,7 @@ Known bugs:
 Version History
 ---------------
 
-*** Version 2.01, June 2001
-
-- Clicking Save when tool was first loaded didn't do anything.
-  Now behaves like Save As for a first-time save.
-
-- Mix-up with directory names fixed.
-
-- Windows installer now leaves existing DLLs intact even if
-  the installer's files were newer.
-
-- The Unix tarball now contains a subdirectory containing the current
-  version in the name.
-
-
-*** Version 2.0, May 2001
-
-- Initial public release
-
+See CHANGES.txt.
 
 Installing the Configuration Tool
 =================================
--- a/host/tools/configtool/standalone/wxwin/TODO.txt
+++ b/host/tools/configtool/standalone/wxwin/TODO.txt
@@ -1,7 +1,21 @@
-ToDo List for Configuration Tool 2.x
-====================================
+To-Do List for Configuration Tool 2.x
+=====================================
+
+- Implement Memory Layout Tool.
+
+- Debug Run Tests Dialog.
+
+- List templates in alphabetical order under Linux. Unfortunately
+  wxComboBox in wxGTK doesn't support wxCB_SORT at this time
+  (but wxChoice does).
 
-- implement Memory Layout Tool
-- debug Run Tests Dialog
-- List packages in alphabetical order in the Packages dialog
+- 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.
+
+- Switching to Rich Edit control for Output Window causes scroll problems
+  on Windows 98.
+
--- a/host/tools/configtool/standalone/wxwin/aboutdlg.cpp
+++ b/host/tools/configtool/standalone/wxwin/aboutdlg.cpp
@@ -30,7 +30,7 @@
 // Author(s):   julians
 // Contact(s):  julians
 // Date:        2000/09/11
-// Version:     $Id: aboutdlg.cpp,v 1.10 2001/05/22 14:31:40 julians Exp $
+// Version:     $Id: aboutdlg.cpp,v 1.11 2001/06/27 14:07:05 julians Exp $
 // Purpose:
 // Description: Implementation file for ecAboutDialog
 // Requires:
@@ -101,7 +101,9 @@ bool ecAboutDialog::AddControls(wxWindow
     }
 
     // Customize the HTML
-    htmlText.Replace(wxT("$VERSION$"), ecCONFIGURATION_TOOL_VERSION_STRING);
+    wxString verString;
+    verString.Printf("%.2f", ecCONFIGURATION_TOOL_VERSION);
+    htmlText.Replace(wxT("$VERSION$"), verString);
     htmlText.Replace(wxT("$DATE$"), __DATE__);
     
     wxSize htmlSize(420, 390);
--- a/host/tools/configtool/standalone/wxwin/appsettings.cpp
+++ b/host/tools/configtool/standalone/wxwin/appsettings.cpp
@@ -30,7 +30,7 @@
 // Author(s):   julians
 // Contact(s):  julians
 // Date:        2000/08/29
-// Version:     $Id: appsettings.cpp,v 1.21 2001/05/30 12:37:24 julians Exp $
+// Version:     $Id: appsettings.cpp,v 1.22 2001/06/26 17:26:35 julians Exp $
 // Purpose:
 // Description: Implementation file for the ecSettings
 // Requires:
@@ -167,6 +167,9 @@ void ecSettings::Copy(const ecSettings& 
 
     // Run tests settings
     m_runTestsSettings = settings.m_runTestsSettings;
+
+    m_userToolsDir = settings.m_userToolsDir;
+    m_buildToolsDir = settings.m_buildToolsDir;
 }
 
 ecSettings::~ecSettings()
@@ -287,6 +290,10 @@ bool ecSettings::LoadConfig()
         // Use the default provided by the installer
         config.Read(_("Default User Tools Path"), & m_userToolsDir);
     }
+
+    // Only to be used if we fail to find the information installed
+    // with the Configuration Tool.
+    config.Read(_("/Paths/BuildToolsDir"), & m_buildToolsDir);
     
     if (!config.Read(_("/Build/Make Options"), & m_strMakeOptions))
     {
@@ -570,6 +577,7 @@ bool ecSettings::SaveConfig()
     config.Write(_("/Rule/Checking"), (long) m_nRuleChecking);
     
     config.Write(_("/Paths/UserToolsDir"), m_userToolsDir);
+    config.Write(_("/Paths/BuildToolsDir"), m_buildToolsDir);
     
     config.Write(_("/Build/Make Options"), m_strMakeOptions);
     
--- a/host/tools/configtool/standalone/wxwin/appsettings.h
+++ b/host/tools/configtool/standalone/wxwin/appsettings.h
@@ -30,7 +30,7 @@
 // Author(s):   julians
 // Contact(s):  julians
 // Date:        2000/08/29
-// Version:     $Id: appsettings.h,v 1.8 2001/04/24 14:39:13 julians Exp $
+// Version:     $Id: appsettings.h,v 1.9 2001/06/26 17:26:35 julians Exp $
 // Purpose:
 // Description: Header file for the ConfigTool application settings
 // Requires:
@@ -166,7 +166,8 @@ public:
 
     const ecFileName& DefaultExternalBrowser() ;
 
-    const wxString& GetUserToolsDir() const { return m_userToolsDir; }  
+    const wxString& GetUserToolsDir() const { return m_userToolsDir; }
+    const wxString& GetBuildToolsDir() const { return m_buildToolsDir; }  /* Only used if no other clues */
 
     wxStringToStringMap& GetBinDirs() { return m_arstrBinDirs; }
 
@@ -210,6 +211,7 @@ public:
     bool                    m_bHex;
 
     ecFileName              m_userToolsDir;
+    ecFileName              m_buildToolsDir; /* Only used if no other clues */
 
     wxString                m_strMakeOptions;
 
--- 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.35 2001/06/18 14:41:13 julians Exp $
+// Version:     $Id: configtool.cpp,v 1.36 2001/06/26 17:26:35 julians Exp $
 // Purpose:
 // Description: Implementation file for the ConfigTool application class
 // Requires:
@@ -181,7 +181,7 @@ bool ecApp::OnInit()
     m_docManager = new wxDocManager;
 
     // Create a template relating documents to their views
-    (void) new wxDocTemplate(m_docManager, "Configtool", "*.ecc", "", "ecc", "Configtool Doc", "Configtool View",
+    wxDocTemplate* templ = new wxDocTemplate(m_docManager, "Configtool", "*.ecc", "", "ecc", "Configtool Doc", "Configtool View",
         CLASSINFO(ecConfigToolDoc), CLASSINFO(ecConfigToolView));
 
     // If we've only got one window, we only get to edit
@@ -199,6 +199,10 @@ bool ecApp::OnInit()
     // Load config settings
     m_settings.LoadConfig();
 
+    // Set the default directory for opening/saving files
+    if (!m_settings.m_lastFilename.IsEmpty())
+        templ->SetDirectory(wxPathOnly(m_settings.m_lastFilename));
+
 #ifdef __WXMSW__
     wxBitmap bitmap(wxBITMAP(splash));
 #else
@@ -613,11 +617,11 @@ void ecApp::Log(const wxString& msg)
     ecMainFrame* frame = (ecMainFrame*) GetTopWindow();
     if (frame)
     {
-        // TODO is SetInsertionPointEnd necessary?
-        frame->GetOutputWindow()->SetInsertionPointEnd();
         frame->GetOutputWindow()->AppendText(msg /* + wxT("\n") */ );
         if ((msg == wxEmptyString) || (msg.Last() != wxT('\n')))
             frame->GetOutputWindow()->AppendText(wxT("\n"));
+
+        frame->GetOutputWindow()->ShowPosition(frame->GetOutputWindow()->GetLastPosition());
     }
 }
 
@@ -807,10 +811,20 @@ bool ecApp::PrepareEnvironment(bool bWit
     bool rc = FALSE;
 
     rc=(! bWithBuildTools) || GetSettings().m_arstrBinDirs.Find(strPrefix, strBinDir);
-    if(!rc){
-        wxCommandEvent event;
-        GetMainFrame()->OnBuildToolsPath(event);
-        rc = GetSettings().m_arstrBinDirs.Find(strPrefix, strBinDir);
+    if(!rc)
+    {
+        // Use fallback of previously-entered build tools directory, if available
+        if (!GetSettings().m_buildToolsDir.IsEmpty())
+        {
+            strBinDir = GetSettings().m_buildToolsDir ;
+            rc = TRUE;
+        }
+        else
+        {
+            wxCommandEvent event;
+            GetMainFrame()->OnBuildToolsPath(event);
+            rc = GetSettings().m_arstrBinDirs.Find(strPrefix, strBinDir);
+        }
     }
     
     if (rc)
@@ -896,10 +910,20 @@ bool ecApp::PrepareEnvironment(bool bWit
     bool rc = FALSE;
 
     rc=(! bWithBuildTools) || GetSettings().m_arstrBinDirs.Find(strPrefix, strBinDir);
-    if(!rc){
-        wxCommandEvent event;
-        GetMainFrame()->OnBuildToolsPath(event);
-        rc = GetSettings().m_arstrBinDirs.Find(strPrefix, strBinDir);
+    if(!rc)
+    {
+        // Use fallback of previously-entered build tools directory, if available
+        if (!GetSettings().m_buildToolsDir.IsEmpty())
+        {
+            strBinDir = GetSettings().m_buildToolsDir ;
+            rc = TRUE;
+        }
+        else
+        {
+            wxCommandEvent event;
+            GetMainFrame()->OnBuildToolsPath(event);
+            rc = GetSettings().m_arstrBinDirs.Find(strPrefix, strBinDir);
+        }
     }
     
     if (rc)
--- 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.31 2001/06/18 14:41:13 julians Exp $
+// Version:     $Id: configtooldoc.cpp,v 1.33 2001/06/28 15:54:25 julians Exp $
 // Purpose:
 // Description: Implementation file for the ecConfigToolDoc class
 // Requires:
@@ -668,6 +668,10 @@ bool ecConfigToolDoc::OpenRepository(con
                     wxGetApp().SetStatusText(wxEmptyString);
                     return FALSE;
                 }
+#ifdef __WXMSW__
+                // Ensure display gets updated
+                wxYield();
+#endif
                 strNewRepository=dlg.GetFolder();
             } else
             {
@@ -1893,6 +1897,9 @@ int ecConfigToolDoc::GetTestExeNames (wx
             strFile += wxFILE_SEP_PATH;
             strFile += ar[i];
 
+            // Some tests accidentally specify .c
+            wxStripExtension(strFile);
+
 #ifdef __WXMSW__
             strFile += wxT(".exe");
             strFile.Replace(wxT("/"),wxT("\\"));
@@ -2193,7 +2200,8 @@ void ecConfigToolDoc::RunTests()
         }
     }
     wxString shellCommands;
-    if (wxGetApp().PrepareEnvironment(FALSE, & shellCommands))
+    // Don't know why we passed TRUE (no build tools) but we need build tools for gdb
+    if (wxGetApp().PrepareEnvironment(TRUE /* FALSE */, & shellCommands))
     {
         ecRunTestsDialog dialog(wxGetApp().GetTopWindow());
         int i;
index 829afce7d766b040a6983b975e3262fa9f80577c..2dede1ea20584559afed2af3b2029d87928fcc5d
GIT binary patch
literal 71625
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
BwAugw
--- 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.43 2001/06/18 14:41:13 julians Exp $
+// Version:     $Id: mainwin.cpp,v 1.45 2001/06/26 17:26:35 julians Exp $
 // Purpose:
 // Description: Implementation file for the ConfigTool main window
 // Requires:
@@ -412,7 +412,7 @@ void ecMainFrame::CreateWindows()
     m_outputSashWindow->SetOrientation(wxLAYOUT_HORIZONTAL);
     m_outputSashWindow->SetAlignment(wxLAYOUT_BOTTOM);
     m_outputSashWindow->SetSashVisible(wxSASH_TOP, TRUE);
-    m_outputWindow = new ecOutputWindow(m_outputSashWindow, ecID_OUTPUT_WINDOW, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxCLIP_CHILDREN|wxTE_READONLY);
+    m_outputWindow = new ecOutputWindow(m_outputSashWindow, ecID_OUTPUT_WINDOW, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxCLIP_CHILDREN|wxTE_READONLY|wxTE_RICH);
     m_outputWindow->SetHelpText(_("The output window displays various warning and informational messages."));
     
     // Sash window for the memory window
@@ -890,6 +890,8 @@ void ecMainFrame::OnIdle(wxIdleEvent& ev
 
 void ecMainFrame::OnCloseWindow(wxCloseEvent& event)
 {
+    wxBusyCursor busy;
+
     if (!wxGetApp().GetDocManager()->Clear(FALSE) && event.CanVeto())
     {
         event.Veto();
@@ -1109,7 +1111,11 @@ void ecMainFrame::OnTemplates(wxCommandE
     ecTemplatesDialog dialog(this);
     if (dialog.ShowModal() == wxID_OK)
 	{
-		ecConfigToolDoc* doc = wxGetApp().GetConfigToolDoc();
+#ifdef __WXMSW__
+        // Ensure display gets updated
+        wxYield();
+#endif
+        ecConfigToolDoc* doc = wxGetApp().GetConfigToolDoc();
 
 		doc->SelectHardware(dialog.GetSelectedHardware());
 		doc->SelectTemplate(dialog.GetSelectedTemplate(), dialog.GetSelectedTemplateVersion());
@@ -1208,11 +1214,18 @@ void ecMainFrame::OnBuildToolsPath(wxCom
     wxStringToStringMap& map = wxGetApp().GetSettings().GetBinDirs();
     map.BeginFind();
     wxString key, value;
+    bool hasDefaultDir = FALSE;
     while (map.Next(key, value))
     {
         arstrPaths.Add(value);
         if (key == strPrefix)
             defaultPath = value;
+        if (value == wxGetApp().GetSettings().m_buildToolsDir)
+            hasDefaultDir = TRUE;
+    }
+    if (!wxGetApp().GetSettings().m_buildToolsDir.IsEmpty() && !hasDefaultDir)
+    {
+        arstrPaths.Add(wxGetApp().GetSettings().m_buildToolsDir);
     }
     
     wxString msg;
@@ -1246,6 +1259,8 @@ void ecMainFrame::OnBuildToolsPath(wxCom
             (wxID_YES == wxMessageBox(msg, wxGetApp().GetSettings().GetAppName(), wxICON_QUESTION|wxYES_NO)))
         {
             map.Set(strPrefix, path);
+            if (!hasDefaultDir)
+                wxGetApp().GetSettings().m_buildToolsDir = path;
         }
     }
 }
@@ -1279,9 +1294,9 @@ void ecMainFrame::OnUserToolsPath(wxComm
 #else
         wxString exeSuffix(wxEmptyString);
 #endif
+        wxString prog(wxString(wxT("ls")) + exeSuffix);
 
-        strFile += wxT("ls");
-        strFile += (const wxChar*) exeSuffix;
+        strFile += (const wxChar*) prog;
 
         wxString msg;
         msg.Printf(wxT("%s does not appear to contain the user tools - use this folder anyway?"), (const wxChar*) path);
--- a/host/tools/configtool/standalone/wxwin/packagesdlg.cpp
+++ b/host/tools/configtool/standalone/wxwin/packagesdlg.cpp
@@ -30,7 +30,7 @@
 // Author(s):   julians
 // Contact(s):  julians
 // Date:        2000/09/28
-// Version:     $Id: packagesdlg.cpp,v 1.2 2001/03/23 13:38:04 julians Exp $
+// Version:     $Id: packagesdlg.cpp,v 1.3 2001/06/27 12:48:18 julians Exp $
 // Purpose:
 // Description: Implementation file for ecPackagesDialog
 // Requires:
@@ -118,7 +118,7 @@ void ecPackagesDialog::CreateControls(wx
     item2->Add( item3, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
 
     wxString *strs4 = (wxString*) NULL;
-    wxListBox *item4 = new wxListBox( parent, ecID_PACKAGES_DIALOG_AVAILABLE_LIST, wxDefaultPosition, wxSize(180,190), 0, strs4, 0 );
+    wxListBox *item4 = new wxListBox( parent, ecID_PACKAGES_DIALOG_AVAILABLE_LIST, wxDefaultPosition, wxSize(180,190), 0, strs4, wxLB_SORT );
     item2->Add( item4, 1, wxGROW|wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxBOTTOM, 5 );
 
     item1->Add( item2, 1, wxGROW|wxALIGN_CENTER_HORIZONTAL|wxALL, 0 );
@@ -139,7 +139,7 @@ void ecPackagesDialog::CreateControls(wx
     item8->Add( item9, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
 
     wxString *strs10 = (wxString*) NULL;
-    wxListBox *item10 = new wxListBox( parent, ecID_PACKAGES_DIALOG_USE_LIST, wxDefaultPosition, wxSize(180,190), 0, strs10, 0 );
+    wxListBox *item10 = new wxListBox( parent, ecID_PACKAGES_DIALOG_USE_LIST, wxDefaultPosition, wxSize(180,190), 0, strs10, wxLB_SORT );
     item8->Add( item10, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxBOTTOM, 5 );
 
     item1->Add( item8, 1, wxGROW|wxALIGN_CENTER_HORIZONTAL|wxALL, 0 );
--- a/host/tools/configtool/standalone/wxwin/readme.html
+++ b/host/tools/configtool/standalone/wxwin/readme.html
@@ -84,7 +84,7 @@ from <A HREF="ftp://sources.redhat.com/p
 <P>Please try to use a mirror site close to you, as it will be
 faster.</P>
 <H3>Under Linux:</H3>
-<P>Download <A HREF="ftp://sources.redhat.com/pub/ecos/ct2/configtool-2.01-i386.tar.gz">configtool-2.01-i386.tar.gz</A> (3.1Mb) or <A HREF="ftp://sources.redhat.com/pub/ecos/ct2/configtool-2.01-i386.tar.bz2">configtool-2.01-i386.tar.bz2</A> (2.8Mb).</P>
+<P>Download <A HREF="ftp://sources.redhat.com/pub/ecos/ct2/configtool-2.02-i386.tar.gz">configtool-2.02-i386.tar.gz</A> (3.1Mb) or <A HREF="ftp://sources.redhat.com/pub/ecos/ct2/configtool-2.02-i386.tar.bz2">configtool-2.02-i386.tar.bz2</A> (2.8Mb).</P>
 <P>Unarchive the tar file into a suitable directory and add the
 directory to your path. You do not have to install it as root. For
 example:</P>
@@ -107,7 +107,7 @@ warnings.</P>
 does require the GTK+ 1.2, GDK 1.2 and TCL 8.x libraries to be
 installed.</P>
 <H3>Under Windows:</H3>
-<P>Download <A HREF="ftp://sources.redhat.com/pub/ecos/ct2/configtool-2.01-setup.exe">configtool-2.01-setup.exe</A>.</P>
+<P>Download <A HREF="ftp://sources.redhat.com/pub/ecos/ct2/configtool-2.02-setup.exe">configtool-2.02-setup.exe</A>.</P>
 <P>Run the installer provided, preferably having installed eCos for
 Windows on your PC previously so the tool can pick up the relevant
 registry information added by the eCos installer. A new eCos
--- 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.12 2001/05/02 10:36:15 julians Exp $
+// Version:     $Id: runtestsdlg.cpp,v 1.13 2001/06/28 15:54:25 julians Exp $
 // Purpose:
 // Description: Implementation file for ecRunTestsDialog
 // Requires:
@@ -80,6 +80,7 @@ BEGIN_EVENT_TABLE(ecRunTestsDialog, wxDi
     EVT_NOTEBOOK_PAGE_CHANGED(-1, ecRunTestsDialog::OnPageChange)
     EVT_SIZE(ecRunTestsDialog::OnSize)
     EVT_IDLE(ecRunTestsDialog::OnIdle)
+    EVT_CLOSE(ecRunTestsDialog::OnCloseWindow)
 END_EVENT_TABLE()
 
 #define PROPERTY_DIALOG_WIDTH   600
@@ -213,12 +214,17 @@ ecRunTestsDialog::ecRunTestsDialog(wxWin
     // m_prop.Add(_T("Extension"),executionpage.m_strExtension);
 #endif
 
+#ifdef _DEBUG
+    CeCosTrace::EnableTracing(CeCosTrace::TRACE_LEVEL_TRACE);
+#endif
+    CeCosTrace::SetInteractive(TRUE);
     CeCosTrace::SetOutput(TestOutputCallback, this);
     CeCosTrace::SetError (TestOutputCallback, this);
 }
 
 ecRunTestsDialog::~ecRunTestsDialog()
 {
+    CeCosTrace::SetInteractive(FALSE);
     m_runTestsDialog = NULL;
     if (m_pResource)
     {
@@ -228,9 +234,30 @@ ecRunTestsDialog::~ecRunTestsDialog()
 
 void ecRunTestsDialog::OnOK(wxCommandEvent& event)
 {
+    if (ecRunning == m_runStatus)
+    {
+        wxMessageBox(_("Tests are running. Please press Stop before quitting this dialog."),
+            wxGetApp().GetSettings().GetAppName(), wxICON_INFORMATION|wxOK, this);
+        return;
+    }
+
     wxDialog::OnOK(event);
 }
 
+void ecRunTestsDialog::OnCloseWindow(wxCloseEvent& event)
+{
+    if (ecRunning == m_runStatus)
+    {
+        wxMessageBox(_("Tests are running. Please press Stop before quitting this dialog."),
+            wxGetApp().GetSettings().GetAppName(), wxICON_INFORMATION|wxOK, this);
+        event.Veto();
+        return;
+    }
+
+    this->EndModal(wxID_CANCEL);
+    this->Destroy();
+}
+
 void ecRunTestsDialog::OnProperties(wxCommandEvent& event)
 {
     ecSettingsDialog dialog(this);
--- 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.8 2001/05/02 10:36:15 julians Exp $
+// Version:     $Id: runtestsdlg.h,v 1.9 2001/06/28 15:54:25 julians Exp $
 // Purpose:
 // Description: Header file for ecRunTestsDialog
 // Requires:
@@ -85,6 +85,7 @@ public:
     void OnPageChange(wxNotebookEvent& event);
     void OnSize(wxSizeEvent& event);
     void OnIdle(wxIdleEvent& event);
+    void OnCloseWindow(wxCloseEvent& event);
 
     virtual bool TransferDataToWindow();
     virtual bool TransferDataFromWindow();
--- a/host/tools/configtool/standalone/wxwin/setup/configtool.iss
+++ b/host/tools/configtool/standalone/wxwin/setup/configtool.iss
@@ -44,6 +44,7 @@
 [Files]
   Source: v:\deliver\configtool\about.htm; DestDir: {app}\
   Source: v:\deliver\configtool\aboutlo.htm; DestDir: {app}\
+  Source: v:\deliver\configtool\CHANGES.txt; DestDir: {app}\
   Source: v:\deliver\configtool\configtool.exe; DestDir: {app}\
   Source: v:\deliver\configtool\ecoslogo.png; DestDir: {app}\
   Source: v:\deliver\configtool\ecoslogosmall.png; DestDir: {app}\
@@ -182,8 +183,9 @@
   Source: v:\deliver\configtool\manual\user-guides.html; DestDir: {app}\manual
   Source: v:\deliver\configtool\README.txt; DestDir: {app}\
   Source: v:\deliver\configtool\rhlogo.png; DestDir: {app}\
+  Source: v:\deliver\configtool\TODO.txt; DestDir: {app}\
 
-    Source: c:\winnt\system32\tcl84.dll; DestDir: {sys}\; DestName: tcl84.dll; CopyMode: onlyifdoesntexist; Flags: uninsneveruninstall
+    Source: c:\winnt\system32\tcl82.dll; DestDir: {sys}\; DestName: tcl82.dll; CopyMode: onlyifdoesntexist; Flags: uninsneveruninstall
     Source: c:\winnt\system32\msvcirt.dll; DestDir: {sys}\; DestName: msvcirt.dll; CopyMode: onlyifdoesntexist; Flags: uninsneveruninstall
     Source: c:\winnt\system32\msvcp60.dll; DestDir: {sys}\; DestName: msvcp60.dll; CopyMode: onlyifdoesntexist; Flags: uninsneveruninstall
     Source: c:\winnt\system32\msvcrt.dll; DestDir: {sys}\; DestName: msvcrt.dll; CopyMode: onlyifdoesntexist; Flags: uninsneveruninstall
@@ -191,6 +193,7 @@
 [Icons]
     Name: {group}\Configuration Tool; Filename: {app}\configtool.exe; WorkingDir: {app}; IconFilename: {app}\configtool.exe; IconIndex: 0
     Name: {group}\ReadMe; Filename: {app}\README.txt; WorkingDir: {app}; IconIndex: 0; Flags: useapppaths
+    Name: {group}\Changes; Filename: {app}\CHANGES.txt; WorkingDir: {app}; IconIndex: 0; Flags: useapppaths
     Name: {group}\License; Filename: {app}\license.txt; WorkingDir: {app}; IconIndex: 0; Flags: useapppaths
     Name: {group}\Configuration Tool Manual; Filename: {app}\manual\user-guides.4.html; WorkingDir: {app}; IconIndex: 0; Flags: useapppaths
     Name: {userdesktop}\eCos Config Tool; Filename: {app}\configtool.exe; WorkingDir: {app}; IconFilename: {app}\configtool.exe; IconIndex: 0
--- a/host/tools/configtool/standalone/wxwin/setup/innobott.txt
+++ b/host/tools/configtool/standalone/wxwin/setup/innobott.txt
@@ -6,6 +6,7 @@
 [Icons]
     Name: {group}\Configuration Tool; Filename: {app}\configtool.exe; WorkingDir: {app}; IconFilename: {app}\configtool.exe; IconIndex: 0
     Name: {group}\ReadMe; Filename: {app}\README.txt; WorkingDir: {app}; IconIndex: 0; Flags: useapppaths
+    Name: {group}\Changes; Filename: {app}\CHANGES.txt; WorkingDir: {app}; IconIndex: 0; Flags: useapppaths
     Name: {group}\License; Filename: {app}\license.txt; WorkingDir: {app}; IconIndex: 0; Flags: useapppaths
     Name: {group}\Configuration Tool Manual; Filename: {app}\manual\user-guides.4.html; WorkingDir: {app}; IconIndex: 0; Flags: useapppaths
     Name: {userdesktop}\eCos Config Tool; Filename: {app}\configtool.exe; WorkingDir: {app}; IconFilename: {app}\configtool.exe; IconIndex: 0
--- a/host/tools/configtool/standalone/wxwin/setup/makesetup.sh
+++ b/host/tools/configtool/standalone/wxwin/setup/makesetup.sh
@@ -42,6 +42,8 @@ doinno()
 
     cp $SRC/about.htm .
     cp $SRC/README.txt .
+    cp $SRC/CHANGES.txt .
+    cp $SRC/TODO.txt .
     cp $SRC/*.png .
     cp "$ECOSDIR/ecc/release/eCos Install/Setup Files/Uncompressed Files/Disk1/license.txt" .
     cp $BINARYSRC/configtool.exe .
@@ -83,7 +85,7 @@ doinno()
       fi
 
       #echo About to: cp configtool-$VERSION-setup.exe "$LOCALARCHIVEDIR/`date +%Y-%m-%d`"
-      cp configtool-$VERSION-setup.exe "$LOCALARCHIVEDIR/`date +%Y-%m-%d`"
+      cp $DEST/configtool/CHANGES.txt $DEST/configtool/README.txt configtool-$VERSION-setup.exe "$LOCALARCHIVEDIR/`date +%Y-%m-%d`"
     fi
 }
 
--- a/host/tools/configtool/standalone/wxwin/setup/maketarball.sh
+++ b/host/tools/configtool/standalone/wxwin/setup/maketarball.sh
@@ -31,6 +31,8 @@ dotar()
     cp $SRC/*.png .
     cp $SRC/setup/ecosplatforms.tar.gz .
     cp $SRC/README.txt .
+    cp $SRC/CHANGES.txt .
+    cp $SRC/TODO.txt .
     cp "$ECOSDIR/ecc/release/eCos Install/Setup Files/Uncompressed Files/Disk1/license.txt" .
     cp $BINARYSRC/configtool .
     cp $CONFIGTOOLDIR/manual/*.html $CONFIGTOOLDIR/manual/*.css $CONFIGTOOLDIR/manual/*.gif manual
--- a/host/tools/configtool/standalone/wxwin/symbols.h
+++ b/host/tools/configtool/standalone/wxwin/symbols.h
@@ -30,7 +30,7 @@
 // Author(s):   julians
 // Contact(s):  julians
 // Date:        2001/05/14
-// Version:     $Id: symbols.h,v 1.4 2001/06/18 14:41:13 julians Exp $
+// Version:     $Id: symbols.h,v 1.6 2001/06/28 15:54:25 julians Exp $
 // Purpose:
 // Description: Some important symbols, such as the version
 // Requires:
@@ -43,5 +43,5 @@
 //
 //===========================================================================
 
-#define ecCONFIGURATION_TOOL_VERSION        2.02
-#define ecCONFIGURATION_TOOL_VERSION_STRING "2.01"
+#define ecCONFIGURATION_TOOL_VERSION        2.03
+
--- a/host/tools/configtool/standalone/wxwin/templatesdlg.cpp
+++ b/host/tools/configtool/standalone/wxwin/templatesdlg.cpp
@@ -30,7 +30,7 @@
 // Author(s):   julians
 // Contact(s):  julians
 // Date:        2000/09/27
-// Version:     $Id: templatesdlg.cpp,v 1.5 2001/03/23 13:38:04 julians Exp $
+// Version:     $Id: templatesdlg.cpp,v 1.7 2001/06/28 15:54:25 julians Exp $
 // Purpose:
 // Description: Implementation file for ecTemplatesDialog
 // Requires:
@@ -107,7 +107,7 @@ void ecTemplatesDialog::CreateControls(w
     wxSizer *item1 = new wxStaticBoxSizer( item2, wxVERTICAL );
 
     wxString *strs3 = (wxString*) NULL;
-    wxComboBox *item3 = new wxComboBox( parent, ecID_TEMPLATES_DIALOG_HARDWARE_TEMPLATES, "", wxDefaultPosition, wxSize(360,-1), 0, strs3, wxCB_DROPDOWN|wxCB_READONLY );
+    wxComboBox *item3 = new wxComboBox( parent, ecID_TEMPLATES_DIALOG_HARDWARE_TEMPLATES, "", wxDefaultPosition, wxSize(360,-1), 0, strs3, wxCB_DROPDOWN|wxCB_READONLY|wxCB_SORT );
     item1->Add( item3, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 );
 
     wxTextCtrl *item4 = new wxTextCtrl( parent, ecID_TEMPLATES_DIALOG_HARDWARE_DESCRIPTION, _(""), wxDefaultPosition, wxSize(90,60), wxTE_MULTILINE|wxTE_READONLY );
@@ -222,7 +222,14 @@ void ecTemplatesDialog::PopulateControls
 		cdlHardwareCtrl->Append(strTargetDescription, (void*) target_i); // store the target iterator
         std::string str(* (target_i));
 		if (m_hardware == str.c_str())            // if current target...
-			cdlHardwareCtrl->SetSelection (nIndex); // ...select the string
+        {
+            int sel = 0;
+            int i;
+            for (i = 0; i <= nIndex; i++)
+                if (cdlHardwareCtrl->GetClientData(i) == (void*) target_i)
+                    sel = i;
+			cdlHardwareCtrl->SetSelection (sel); // ...select the string
+        }
         nIndex ++;
 	}
 
--- a/packages/ChangeLog
+++ b/packages/ChangeLog
@@ -1,3 +1,7 @@
+2001-06-28  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* ecos.db: Clarify edb7xxx description.
+
 2001-06-22  Jonathan Larmour  <jlarmour@redhat.com>
 
 	* ecos.db: Add CYGPKG_NET_ETH_DRIVERS alias for CYGPKG_IO_ETH_DRIVERS
--- a/packages/devs/eth/powerpc/fec/current/ChangeLog
+++ b/packages/devs/eth/powerpc/fec/current/ChangeLog
@@ -1,3 +1,7 @@
+2001-06-26  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* src/if_fec.c (fec_eth_init): Use correct version register.
+
 2001-05-07  Gary Thomas  <gthomas@redhat.com>
 
 	* src/if_fec.c (fec_eth_init): Use RedBoot/fconfig data for ethernet
--- a/packages/devs/eth/powerpc/fec/current/src/if_fec.c
+++ b/packages/devs/eth/powerpc/fec/current/src/if_fec.c
@@ -59,6 +59,7 @@
 #include <cyg/hal/hal_intr.h>
 #include <cyg/hal/drv_api.h>
 #include <cyg/hal/hal_if.h>
+#include <cyg/hal/ppc_regs.h>
 
 #include <netdev.h>
 #include <eth_drv.h>
@@ -260,7 +261,7 @@ fec_eth_init(struct cyg_netdevtab_entry 
 
     // Set up parallel port for connection to ethernet tranceiver
     eppc->pio_pdpar = 0x1FFF;
-    asm volatile ("mfspr   %0,638 \n\t"	: "=r" (proc_rev) : );
+    CYGARC_MFSPR( proc_rev, CYGARC_REG_PVR );
 #define PROC_REVB 0x0020
     if ((proc_rev & 0x0000FFFF) == PROC_REVB) {
         eppc->pio_pddir = 0x1C58;
--- 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
@@ -1870,7 +1880,7 @@ target iq80310 {
 }
 
 target edb7xxx {
-        alias		{ "Cirrus Logic development board" edb7211 eb7xxx eb7211 }
+        alias		{ "Cirrus Logic EDB7xxx development board" edb7211 eb7xxx eb7211 }
 	packages	{ CYGPKG_HAL_ARM
                           CYGPKG_HAL_ARM_EDB7XXX
 			  CYGPKG_DEVS_ETH_ARM_EDB7XXX
@@ -1878,7 +1888,7 @@ target edb7xxx {
 			  CYGPKG_DEVS_FLASH_EDB7XXX
         }
         description "
-The edb7xxx target provides the packages needed to run eCos on Cirrus Logic development boards."
+The edb7xxx target provides the packages needed to run eCos on the Cirrus Logic EDB7xxx development boards."
     }
 
 target cma230 {
--- a/packages/hal/arm/edb7xxx/current/ChangeLog
+++ b/packages/hal/arm/edb7xxx/current/ChangeLog
@@ -1,3 +1,7 @@
+2001-06-28  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* cdl/hal_arm_edb7xxx.cdl: Clarify platform description.
+
 2001-06-08  Gary Thomas  <gthomas@redhat.com>
 
 	* support/dl_edb7xxx.c: Change use of 'CharReady()' which seems
--- a/packages/hal/arm/edb7xxx/current/cdl/hal_arm_edb7xxx.cdl
+++ b/packages/hal/arm/edb7xxx/current/cdl/hal_arm_edb7xxx.cdl
@@ -41,14 +41,14 @@
 # ====================================================================
 
 cdl_package CYGPKG_HAL_ARM_EDB7XXX {
-    display       "Cirrus Logic development board"
+    display       "Cirrus Logic EDB7xxx development board"
     parent        CYGPKG_HAL_ARM
     include_dir   cyg/hal
     hardware
     define_header hal_arm_edb7xxx.h
     description   "
         The EDB7XXX HAL package provides the support needed to run
-        eCos on a Cirrus Logic development board."
+        eCos on a Cirrus Logic EDB7xxx development board."
 
     compile       hal_diag.c edb7xxx_misc.c
 
--- a/packages/hal/common/current/ChangeLog
+++ b/packages/hal/common/current/ChangeLog
@@ -1,3 +1,7 @@
+2001-06-28  Jesper Skov  <jskov@redhat.com>
+
+	* include/hal_misc.h (hal_call_isr): Added. Used by ISR arbiters.
+
 2001-06-22  Gary Thomas  <gthomas@redhat.com>
 
 	* src/generic-stub.c (BUFMAX): Define as platform specific, thus
--- a/packages/hal/common/current/include/hal_misc.h
+++ b/packages/hal/common/current/include/hal_misc.h
@@ -47,6 +47,67 @@
 #ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>         // types & externC
 
+//=============================================================================
+// Function used to call ISRs from ISR arbiters
+// An arbiter is hooked on the shared interrupt vector and looks like this:
+//
+//  cyg_uint32 _arbitration_isr(CYG_ADDRWORD vector, CYG_ADDRWORD data)
+//  {
+//     cyg_uint32 isr_ret;
+//     // decode interrupt source and for each active source call the ISR
+//     if (source_A_active) {
+//         isr_ret = hal_call_isr (CYGNUM_HAL_INTERRUPT_SOURCE_A);
+//  #ifdef CYGIMP_HAL_COMMON_INTERRUPTS_CHAIN
+//         if (isr_ret & CYG_ISR_HANDLED)
+//  #endif
+//             return isr_ret;
+//     }
+//     if (source_B_active) {
+//         isr_ret = hal_call_isr (CYGNUM_HAL_INTERRUPT_SOURCE_B);
+//  #ifdef CYGIMP_HAL_COMMON_INTERRUPTS_CHAIN
+//         if (isr_ret & CYG_ISR_HANDLED)
+//  #endif
+//             return isr_ret;
+//     }
+//  ...
+//     return 0;
+//  }
+//
+// Remember to attach and enable the arbiter source:
+//    HAL_INTERRUPT_ATTACH(CYGNUM_HAL_INTERRUPT_ARBITER, &_arbitration_isr, 0, 0);
+//    HAL_INTERRUPT_SET_LEVEL(CYGNUM_HAL_INTERRUPT_ARBITER, 1);
+//    HAL_INTERRUPT_UNMASK(CYGNUM_HAL_INTERRUPT_ARBITER);
+//
+
+#include <cyg/hal/hal_intr.h>           // hal_interrupt_x tables
+#include <cyg/hal/drv_api.h>            // CYG_ISR_HANDLED
+
+typedef cyg_uint32 cyg_ISR(cyg_uint32 vector, CYG_ADDRWORD data);
+
+extern void cyg_interrupt_post_dsr( CYG_ADDRWORD intr_obj );
+
+static inline cyg_uint32
+hal_call_isr (cyg_uint32 vector)
+{
+    cyg_ISR *isr;
+    CYG_ADDRWORD data;
+    cyg_uint32 isr_ret;
+
+    isr = (cyg_ISR*) hal_interrupt_handlers[vector];
+    data = hal_interrupt_data[vector];
+
+    isr_ret = (*isr) (vector, data);
+
+#ifdef CYGFUN_HAL_COMMON_KERNEL_SUPPORT
+    if (isr_ret & CYG_ISR_CALL_DSR) {
+        cyg_interrupt_post_dsr (hal_interrupt_objects[vector]);
+    }
+#endif
+
+    return isr_ret & ~CYG_ISR_CALL_DSR;
+}
+
+//=============================================================================
 externC cyg_bool cyg_hal_is_break(char *buf, int size);
 externC void cyg_hal_user_break( CYG_ADDRWORD *regs );
 #endif
--- a/packages/hal/mips/arch/current/ChangeLog
+++ b/packages/hal/mips/arch/current/ChangeLog
@@ -1,3 +1,13 @@
+2001-06-27  Mark Salter  <msalter@redhat.com>
+
+	* src/vectors.S (_start): Add code to switch from KSEG1 to KSEG0 if
+	CYGARC_START_FUNC_UNCACHED.
+
+2001-06-27  Hugo Tyson  <hmt@redhat.com>
+
+	* src/hal_misc.c: Include <cyg/hal/hal_if.h> for definition of
+	hal_ctrlc_isr() and hence warnings reduced.
+
 2001-06-19  Mark Salter  <msalter@redhat.com>
 
 	* include/hal_arch.h: Support saving/restoring CP0 registers for GDB.
--- a/packages/hal/mips/arch/current/src/hal_misc.c
+++ b/packages/hal/mips/arch/current/src/hal_misc.c
@@ -54,7 +54,7 @@
 #include <cyg/hal/hal_intr.h>           // Interrupt handling
 
 #include <cyg/hal/hal_cache.h>          // Cache handling
-
+#include <cyg/hal/hal_if.h>             // hal_ctrlc_isr()
 #include <cyg/hal/mips-regs.h>          // FPU cause register definitions
 
 /*------------------------------------------------------------------------*/
--- a/packages/hal/mips/arch/current/src/vectors.S
+++ b/packages/hal/mips/arch/current/src/vectors.S
@@ -168,6 +168,15 @@ FUNC_START(_start)
 	hal_cache_init
 	hal_timer_init
 		
+#ifdef CYGARC_START_FUNC_UNCACHED
+	# switch to cached execution address if necessary
+	# assumption is that hal_cache_init makes this safe
+	lar	v0,1f
+	jr	v0
+	nop
+   1:
+#endif
+	
 	# Load Global Pointer register.
 	la	gp,_gp
 
--- a/packages/hal/powerpc/mpc8xx/current/ChangeLog
+++ b/packages/hal/powerpc/mpc8xx/current/ChangeLog
@@ -1,3 +1,7 @@
+2001-06-28  Jesper Skov  <jskov@redhat.com>
+
+	* src/var_intr.c: Moved hal_call_isr to hal_misc.h in common HAL.
+
 2001-01-31  Jesper Skov  <jskov@redhat.com>
 
 	* cdl/hal_powerpc_mpc8xx.cdl: Get rid of
--- a/packages/hal/powerpc/mpc8xx/current/src/var_intr.c
+++ b/packages/hal/powerpc/mpc8xx/current/src/var_intr.c
@@ -44,34 +44,7 @@
 
 #include <pkgconf/hal.h>
 #include <cyg/hal/ppc_regs.h>
-
-#include <cyg/hal/hal_intr.h>           // hal_interrupt_x tables
-#include <cyg/hal/drv_api.h>            // CYG_ISR_HANDLED
-
-typedef cyg_uint32 cyg_ISR(cyg_uint32 vector, CYG_ADDRWORD data);
-
-extern void cyg_interrupt_post_dsr( CYG_ADDRWORD intr_obj );
-
-static inline cyg_uint32
-hal_call_isr (cyg_uint32 vector)
-{
-    cyg_ISR *isr;
-    CYG_ADDRWORD data;
-    cyg_uint32 isr_ret;
-
-    isr = (cyg_ISR*) hal_interrupt_handlers[vector];
-    data = hal_interrupt_data[vector];
-
-    isr_ret = (*isr) (vector, data);
-
-#ifdef CYGFUN_HAL_COMMON_KERNEL_SUPPORT
-    if (isr_ret & CYG_ISR_CALL_DSR) {
-        cyg_interrupt_post_dsr (hal_interrupt_objects[vector]);
-    }
-#endif
-
-    return isr_ret & ~CYG_ISR_CALL_DSR;
-}
+#include <cyg/hal/hal_misc.h>
 
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 #ifdef CYGPKG_HAL_POWERPC_MPC860
@@ -102,22 +75,18 @@ hal_arbitration_isr_tb (CYG_ADDRWORD vec
     HAL_READ_UINT16 (CYGARC_REG_IMM_TBSCR, tbscr);
     if (tbscr & CYGARC_REG_IMM_TBSCR_REFA) {
         isr_ret = hal_call_isr (CYGNUM_HAL_INTERRUPT_SIU_TB_A);
-
-        CYG_ASSERT (isr_ret & CYG_ISR_HANDLED, "Interrupt not handled");
-
-#ifndef CYGSEM_HAL_COMMON_INTERRUPTS_CHECK_ALL_SOURCES
-        return isr_ret;
+#ifdef CYGIMP_HAL_COMMON_INTERRUPTS_CHAIN
+        if (isr_ret & CYG_ISR_HANDLED)
 #endif
+            return isr_ret;
     }
 
     if (tbscr & CYGARC_REG_IMM_TBSCR_REFB) {
         isr_ret = hal_call_isr (CYGNUM_HAL_INTERRUPT_SIU_TB_B);
-
-        CYG_ASSERT (isr_ret & CYG_ISR_HANDLED, "Interrupt not handled");
-
-#ifndef CYGSEM_HAL_COMMON_INTERRUPTS_CHECK_ALL_SOURCES
-        return isr_ret;
+#ifdef CYGIMP_HAL_COMMON_INTERRUPTS_CHAIN
+        if (isr_ret & CYG_ISR_HANDLED)
 #endif
+            return isr_ret;
     }
 
     return 0;
@@ -136,12 +105,10 @@ hal_arbitration_isr_pit (CYG_ADDRWORD ve
     HAL_READ_UINT16 (CYGARC_REG_IMM_PISCR, piscr);
     if (piscr & CYGARC_REG_IMM_PISCR_PS) {
         isr_ret = hal_call_isr (CYGNUM_HAL_INTERRUPT_SIU_PIT);
-
-        CYG_ASSERT (isr_ret & CYG_ISR_HANDLED, "Interrupt not handled");
-
-#ifndef CYGSEM_HAL_COMMON_INTERRUPTS_CHECK_ALL_SOURCES
-        return isr_ret;
+#ifdef CYGIMP_HAL_COMMON_INTERRUPTS_CHAIN
+        if (isr_ret & CYG_ISR_HANDLED)
 #endif
+            return isr_ret;
     }
 
     return 0;
@@ -162,22 +129,18 @@ hal_arbitration_isr_rtc (CYG_ADDRWORD ve
     HAL_READ_UINT16 (CYGARC_REG_IMM_RTCSC, rtcsc);
     if (rtcsc & CYGARC_REG_IMM_RTCSC_SEC) {
         isr_ret = hal_call_isr (CYGNUM_HAL_INTERRUPT_SIU_RTC_SEC);
-
-        CYG_ASSERT (isr_ret & CYG_ISR_HANDLED, "Interrupt not handled");
-
-#ifndef CYGSEM_HAL_COMMON_INTERRUPTS_CHECK_ALL_SOURCES
-        return isr_ret;
+#ifdef CYGIMP_HAL_COMMON_INTERRUPTS_CHAIN
+        if (isr_ret & CYG_ISR_HANDLED)
 #endif
+            return isr_ret;
     }
 
     if (rtcsc & CYGARC_REG_IMM_RTCSC_ALR) {
         isr_ret = hal_call_isr (CYGNUM_HAL_INTERRUPT_SIU_RTC_ALR);
-
-        CYG_ASSERT (isr_ret & CYG_ISR_HANDLED, "Interrupt not handled");
-
-#ifndef CYGSEM_HAL_COMMON_INTERRUPTS_CHECK_ALL_SOURCES
-        return isr_ret;
+#ifdef CYGIMP_HAL_COMMON_INTERRUPTS_CHAIN
+        if (isr_ret & CYG_ISR_HANDLED)
 #endif
+            return isr_ret;
     }
 
     return 0;
@@ -196,12 +159,10 @@ hal_arbitration_isr_cpm (CYG_ADDRWORD ve
     civr >>= CYGARC_REG_IMM_CIVR_VECTOR_SHIFT;
     if (civr) {
         isr_ret = hal_call_isr (CYGNUM_HAL_INTERRUPT_CPM_LAST - civr);
-
-        CYG_ASSERT (isr_ret & CYG_ISR_HANDLED, "Interrupt not handled");
-
-#ifndef CYGSEM_HAL_COMMON_INTERRUPTS_CHECK_ALL_SOURCES
-        return isr_ret;
+#ifdef CYGIMP_HAL_COMMON_INTERRUPTS_CHAIN
+        if (isr_ret & CYG_ISR_HANDLED)
 #endif
+            return isr_ret;
     }
 
     return 0;
@@ -228,4 +189,3 @@ hal_variant_IRQ_init(void)
 
 // -------------------------------------------------------------------------
 // EOF var_intr.c
-
--- a/packages/hal/sh/arch/current/ChangeLog
+++ b/packages/hal/sh/arch/current/ChangeLog
@@ -1,3 +1,7 @@
+2001-06-27  Jesper Skov  <jskov@redhat.com>
+
+	* include/hal_arch.h: Added CPU address space translation macros.
+
 2001-05-29  Jesper Skov  <jskov@redhat.com>
 
 	* include/hal_io.h: Include var_io.h
--- a/packages/hal/sh/arch/current/include/hal_arch.h
+++ b/packages/hal/sh/arch/current/include/hal_arch.h
@@ -300,6 +300,13 @@ externC void hal_idle_thread_action(cyg_
 #define CYGARC_HAL_SAVE_GP()
 #define CYGARC_HAL_RESTORE_GP()
 
+
+//--------------------------------------------------------------------------
+// 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)
+
 //-----------------------------------------------------------------------------
 #endif // CYGONCE_HAL_ARCH_H
 // End of hal_arch.h
--- a/packages/hal/sh/sh3/current/ChangeLog
+++ b/packages/hal/sh/sh3/current/ChangeLog
@@ -1,3 +1,8 @@
+2001-06-28  Jesper Skov  <jskov@redhat.com>
+
+	* include/var_intr.h: Allow platforms to extend vector table.
+	* src/var_misc.c: Same.
+
 2001-06-19  Jesper Skov  <jskov@redhat.com>
 
 	* include/mod_regs_ubc.h: Allow MOD_UBC to be unset.
--- a/packages/hal/sh/sh3/current/include/var_intr.h
+++ b/packages/hal/sh/sh3/current/include/var_intr.h
@@ -93,7 +93,11 @@
 #define CYGNUM_HAL_INTERRUPT_ADC_ADI         62
 
 #undef  CYGNUM_HAL_ISR_MAX
-#define CYGNUM_HAL_ISR_MAX                   CYGNUM_HAL_INTERRUPT_ADC_ADI
+#ifdef CYGNUM_HAL_ISR_PLF_MAX
+# define CYGNUM_HAL_ISR_MAX                  CYGNUM_HAL_ISR_PLF_MAX
+#else
+# define CYGNUM_HAL_ISR_MAX                  CYGNUM_HAL_INTERRUPT_ADC_ADI
+#endif
 
 #endif // CYGARC_SH_MOD_INTC >= 2
 
@@ -106,11 +110,25 @@
 #define CYGNUM_HAL_INTERRUPT_PCC_PCC1        65
 
 #undef  CYGNUM_HAL_ISR_MAX
-#define CYGNUM_HAL_ISR_MAX                   CYGNUM_HAL_INTERRUPT_PCC_PCC1
+#ifdef CYGNUM_HAL_ISR_PLF_MAX
+# define CYGNUM_HAL_ISR_MAX                  CYGNUM_HAL_ISR_PLF_MAX
+#else
+# define CYGNUM_HAL_ISR_MAX                  CYGNUM_HAL_INTERRUPT_PCC_PCC1
+#endif
 
 #endif // CYGARC_SH_MOD_INTC >= 3
 
 
+//----------------------------------------------------------------------------
+// Platform may provide extensions to the interrupt configuration functions
+// via these macros. The first macro is put inside the functions's
+// switch statements, the last two called as functions.
+#ifndef CYGPRI_HAL_INTERRUPT_UPDATE_LEVEL_PLF
+# define CYGPRI_HAL_INTERRUPT_UPDATE_LEVEL_PLF(vec, level)
+# define CYGPRI_HAL_INTERRUPT_ACKNOWLEDGE_PLF(vec)
+# define CYGPRI_HAL_INTERRUPT_CONFIGURE_PLF(vec)
+#endif
+
 //--------------------------------------------------------------------------
 #endif // ifndef CYGONCE_VAR_INTR_H
 // End of var_intr.h
--- a/packages/hal/sh/sh3/current/src/var_misc.c
+++ b/packages/hal/sh/sh3/current/src/var_misc.c
@@ -280,6 +280,9 @@ hal_interrupt_update_level(int vector)
         /* Do nothing for these reserved vectors. */                     
         break;                                                           
 
+    // Platform extensions
+    CYGPRI_HAL_INTERRUPT_UPDATE_LEVEL_PLF(vector, level)
+
     default:
         CYG_FAIL("Unknown interrupt vector");                             
         break;
@@ -381,6 +384,8 @@ hal_interrupt_acknowledge(int vector)
         HAL_WRITE_UINT8(CYGARC_REG_IRR0, irr0);      
     }                                                                     
 #endif
+
+    CYGPRI_HAL_INTERRUPT_ACKNOWLEDGE_PLF(vector);
 }
 
 // Note: The PINTs can be masked and configured individually, even
--- a/packages/io/usb/eth/slave/current/ChangeLog
+++ b/packages/io/usb/eth/slave/current/ChangeLog
@@ -1,3 +1,10 @@
+2001-06-28  Bart Veer  <bartv@redhat.com>
+
+	* include/usbs_eth.h, src/usbsethdrv.c, src/usbseth.c:
+	Align receive boundaries to cacheline boundaries, and
+	always transfer a multiple of the cacheline size. This
+	avoids problems with some USB device drivers.
+	
 2001-05-21  Bart Veer  <bartv@redhat.com>
 
 	* host/ecos_usbeth.c (ecos_usbeth_start_tx):
--- a/packages/io/usb/eth/slave/current/include/usbs_eth.h
+++ b/packages/io/usb/eth/slave/current/include/usbs_eth.h
@@ -25,7 +25,7 @@
 //
 // The Initial Developer of the Original Code is Red Hat.
 // Portions created by Red Hat are
-// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.
+// Copyright (C) 1998, 1999, 2000, 2001 Red Hat, Inc.
 // All Rights Reserved.
 // -------------------------------------------
 //
@@ -178,6 +178,9 @@ extern "C" {
 #ifdef CYGPKG_USBS_ETHDRV
 # include <netdev.h>
 #endif
+
+// Cache details, to allow alignment to cache line boundaries etc.
+#include <cyg/hal/hal_cache.h>    
     
 // ----------------------------------------------------------------------------
 // Maximum transfer size. This is not specified by io/eth. It can be
@@ -208,6 +211,21 @@ extern "C" {
 // for the length.
 #define CYGNUM_USBS_ETH_MIN_FRAME_SIZE 14
 #define CYGNUM_USBS_ETH_MINTU (CYGNUM_USBS_ETH_MIN_FRAME_SIZE + 2)
+
+// Typical USB devices involve DMA operations and hence confusion
+// between cached and uncached memory. To make life easier for
+// the underlying USB device drivers, this package ensures that
+// receive operations always involve buffers that are aligned to
+// a cache-line boundary and that are a multiple of the cacheline
+// size.
+#ifndef HAL_DCACHE_LINE_SIZE
+# define CYGNUM_USBS_ETH_RXBUFSIZE      CYGNUM_USBS_ETH_MAXTU
+# define CYGNUM_USBS_ETH_RXSIZE         CYGNUM_USBS_ETH_MAXTU    
+#else
+# define CYGNUM_USBS_ETH_RXBUFSIZE      ((CYGNUM_USBS_ETH_MAXTU + HAL_DCACHE_LINE_SIZE + HAL_DCACHE_LINE_SIZE - 1) \
+                                         & ~(HAL_DCACHE_LINE_SIZE - 1))
+# define CYGNUM_USBS_ETH_RXSIZE         ((CYGNUM_USBS_ETH_MAXTU + HAL_DCACHE_LINE_SIZE - 1) & ~(HAL_DCACHE_LINE_SIZE - 1))
+#endif    
     
 // ----------------------------------------------------------------------------
 // This data structure serves two purposes. First, it keeps track of
@@ -298,11 +316,19 @@ typedef struct usbs_eth {
     // 1516 byte mbuf could be pre-allocated and then the whole
     // transfer could go there, potentially wasting some mbuf space.
     // None of this is possible at present.
-    unsigned char       rx_buffer[CYGNUM_USBS_ETH_MAXTU];
+    //
+    // Also, typically there will be complications because of
+    // dependencies on DMA, cached vs. uncached memory, etc.
+    unsigned char       rx_buffer[CYGNUM_USBS_ETH_RXBUFSIZE];
+    unsigned char*      rx_bufptr;
     cyg_bool            rx_buffer_full;
 
-    // It should be possible to eliminate the tx buffer once the
-    // USB driver supports refill functions.
+    // It should be possible to eliminate the tx buffer. The problem
+    // is that the protocol requires 2 bytes to be prepended, and that
+    // may not be possible with the buffer supplied by higher-level
+    // code. Eliminating this buffer would either require USB
+    // device drivers to implement gather functionality on transmits,
+    // or it would impose a dependency on higher-level code.
     unsigned char       tx_buffer[CYGNUM_USBS_ETH_MAXTU];
     cyg_bool            tx_buffer_full;
     cyg_bool            tx_done;
--- a/packages/io/usb/eth/slave/current/src/usbseth.c
+++ b/packages/io/usb/eth/slave/current/src/usbseth.c
@@ -23,7 +23,7 @@
 //                                                                          
 // The Initial Developer of the Original Code is Red Hat.                   
 // Portions created by Red Hat are                                          
-// Copyright (C) 2000 Red Hat, Inc.                             
+// Copyright (C) 2000, 2001 Red Hat, Inc.                             
 // All Rights Reserved.                                                     
 // -------------------------------------------                              
 //                                                                          
@@ -96,7 +96,13 @@ usbs_eth_init(usbs_eth* eth, usbs_contro
     eth->interrupts             = 0;
     eth->tx_count               = 0;
     eth->rx_count               = 0;
+# endif
+# ifndef HAL_DCACHE_LINE_SIZE
+    eth->rx_bufptr              = eth->rx_buffer;
+# else
 # endif    
+    eth->rx_bufptr              = (unsigned char*) ((((cyg_uint32)eth->rx_buffer) + HAL_DCACHE_LINE_SIZE - 1)
+                                                    & ~(HAL_DCACHE_LINE_SIZE - 1));
     eth->rx_buffer_full         = false;
     eth->tx_in_send             = false;
     eth->tx_buffer_full         = false;
@@ -193,11 +199,11 @@ usbs_eth_start_rx(usbs_eth* eth, unsigne
 {
     eth->rx_callback_fn  = callback_fn;
     eth->rx_callback_arg = callback_arg;
-    
+
     cyg_drv_dsr_lock();
     if (eth->host_up) {
         eth->rx_endpoint->buffer        = buf;
-        eth->rx_endpoint->buffer_size   = CYGNUM_USBS_ETH_MAXTU;
+        eth->rx_endpoint->buffer_size   = CYGNUM_USBS_ETH_RXSIZE;
         eth->rx_endpoint->complete_fn   = &usbs_eth_rx_callback;
         eth->rx_endpoint->complete_data = (void*) eth;
         (*(eth->rx_endpoint->start_rx_fn))(eth->rx_endpoint);
@@ -295,7 +301,7 @@ usbs_eth_enable(usbs_eth* eth)
         eth->host_promiscuous   = false;
         if ((void*) 0 != eth->rx_pending_buf) {
             eth->rx_endpoint->buffer            = eth->rx_pending_buf;
-            eth->rx_endpoint->buffer_size       = CYGNUM_USBS_ETH_MAXTU;
+            eth->rx_endpoint->buffer_size       = CYGNUM_USBS_ETH_RXSIZE;
             eth->rx_endpoint->complete_fn       = &usbs_eth_rx_callback;
             eth->rx_endpoint->complete_data     = (void*) eth;
             eth->rx_pending_buf = (void*) 0;
--- a/packages/io/usb/eth/slave/current/src/usbsethdrv.c
+++ b/packages/io/usb/eth/slave/current/src/usbsethdrv.c
@@ -295,7 +295,7 @@ usbs_ethdrv_recv_callback(usbs_eth* eth,
     } else {
         // A packet has been received. Now do a size sanity check
         // based on the first two bytes.
-        int real_size = eth->rx_buffer[0] + (eth->rx_buffer[1] << 8);
+        int real_size = eth->rx_bufptr[0] + (eth->rx_bufptr[1] << 8);
         if (real_size < CYGNUM_USBS_ETH_MIN_FRAME_SIZE) {
             INCR_STAT(eth->rx_short_frames);
         } else if (real_size > CYGNUM_USBS_ETH_MAX_FRAME_SIZE) {
@@ -312,7 +312,7 @@ usbs_ethdrv_recv_callback(usbs_eth* eth,
     
     if (resubmit) {
         eth->rx_active = true;
-        usbs_eth_start_rx(eth, eth->rx_buffer, &usbs_ethdrv_recv_callback, callback_data);
+        usbs_eth_start_rx(eth, eth->rx_bufptr, &usbs_ethdrv_recv_callback, callback_data);
     }
 }
 
@@ -336,7 +336,7 @@ usbs_ethdrv_start_recv(struct eth_drv_sc
     cyg_drv_dsr_lock();
     if (!eth->rx_active) {
         eth->rx_active = true;
-        usbs_eth_start_rx(eth, eth->rx_buffer, &usbs_ethdrv_recv_callback, (void*) sc);
+        usbs_eth_start_rx(eth, eth->rx_bufptr, &usbs_ethdrv_recv_callback, (void*) sc);
     }
     cyg_drv_dsr_unlock();
 }
@@ -352,10 +352,10 @@ usbs_ethdrv_recv(struct eth_drv_sc* sc,
     usbs_eth* eth = (usbs_eth*)(sc->driver_private);
 
     CYG_ASSERT( eth->rx_buffer_full, "This function should only be called when there is a buffer available");
-    (void) scatter(eth->rx_buffer, sg_list, sg_len);
+    (void) scatter(eth->rx_bufptr, sg_list, sg_len);
     eth->rx_buffer_full = false;
     eth->rx_active      = true;
-    usbs_eth_start_rx(eth, eth->rx_buffer, &usbs_ethdrv_recv_callback, (void*) sc);
+    usbs_eth_start_rx(eth, eth->rx_bufptr, &usbs_ethdrv_recv_callback, (void*) sc);
 }
 
 // ----------------------------------------------------------------------------
@@ -456,7 +456,7 @@ usbs_ethdrv_deliver(struct eth_drv_sc* s
     usbs_eth* eth = (usbs_eth*)(sc->driver_private);
 
     if (eth->rx_buffer_full) {
-        int size = eth->rx_buffer[0] + (eth->rx_buffer[1] << 8);
+        int size = eth->rx_bufptr[0] + (eth->rx_bufptr[1] << 8);
         (*sc->funs->eth_drv->recv)(sc, size);
     }
     if (eth->tx_done) {
--- a/packages/io/usb/slave/current/ChangeLog
+++ b/packages/io/usb/slave/current/ChangeLog
@@ -1,3 +1,8 @@
+2001-06-19  Bart Veer  <bartv@redhat.com>
+
+	* src/usbs.c, include/usbs.h (usbs_devtab_cread):
+	read operations should not take a const buffer
+
 2001-02-02  Bart Veer  <bartv@redhat.com>
 
 	* cdl/usbs.cdl:
--- a/packages/io/usb/slave/current/include/usbs.h
+++ b/packages/io/usb/slave/current/include/usbs.h
@@ -340,7 +340,7 @@ extern void     usbs_start_tx_endpoint_w
 #if defined(CYGPKG_IO) && defined(CYGPKG_ERROR)
 #include <cyg/io/io.h>
 extern Cyg_ErrNo usbs_devtab_cwrite(cyg_io_handle_t, const void*, cyg_uint32*);
-extern Cyg_ErrNo usbs_devtab_cread(cyg_io_handle_t, const void*, cyg_uint32*);
+extern Cyg_ErrNo usbs_devtab_cread(cyg_io_handle_t, void*, cyg_uint32*);
 extern Cyg_ErrNo usbs_devtab_get_config(cyg_io_handle_t, cyg_uint32, void*, cyg_uint32*);
 extern Cyg_ErrNo usbs_devtab_set_config(cyg_io_handle_t, cyg_uint32, const void*, cyg_uint32*);
 #endif
--- a/packages/io/usb/slave/current/src/usbs.c
+++ b/packages/io/usb/slave/current/src/usbs.c
@@ -120,7 +120,7 @@ usbs_devtab_cwrite(cyg_io_handle_t handl
 }
 
 Cyg_ErrNo
-usbs_devtab_cread(cyg_io_handle_t handle, const void* buf, cyg_uint32* size)
+usbs_devtab_cread(cyg_io_handle_t handle, void* buf, cyg_uint32* size)
 {
     usbs_callback_data  wait;
     cyg_devtab_entry_t* devtab_entry;
--- a/packages/language/c/libc/i18n/current/ChangeLog
+++ b/packages/language/c/libc/i18n/current/ChangeLog
@@ -1,3 +1,7 @@
+2001-06-28  Jesper Skov  <jskov@redhat.com>
+
+	* tests/i18nmb.c: fix warning.
+
 2001-06-08  Jonathan Larmour  <jlarmour@redhat.com>
 
 	* src/mbtowc_jp.cxx (__mbtowc_jp): Fix nasty bug for mblen(NULL, x);
--- a/packages/language/c/libc/i18n/current/tests/i18nmb.c
+++ b/packages/language/c/libc/i18n/current/tests/i18nmb.c
@@ -46,6 +46,7 @@
 #include <locale.h>
 #include <stdio.h>
 #include <cyg/infra/testcase.h>
+#include <string.h>
 
 // FUNCTIONS
 
--- a/packages/language/c/libc/stdlib/current/ChangeLog
+++ b/packages/language/c/libc/stdlib/current/ChangeLog
@@ -1,3 +1,7 @@
+2001-06-28  Jesper Skov  <jskov@redhat.com>
+
+	* tests/atoi.c (main): Fix warning.
+
 2001-06-18  Jonathan Larmour  <jlarmour@redhat.com>
 
 	* cdl/stdlib.cdl: requires string functions, so say so.
--- a/packages/language/c/libc/stdlib/current/tests/atoi.c
+++ b/packages/language/c/libc/stdlib/current/tests/atoi.c
@@ -95,7 +95,8 @@ main(int argc, char *argv[])
 
     test(0);
 
-//    CYG_TEST_NA("Testing is not applicable to this configuration");
+    CYG_TEST_FAIL_FINISH("Not reached");
+
 } // main()
 
 // EOF atoi.c
--- a/packages/redboot/current/ChangeLog
+++ b/packages/redboot/current/ChangeLog
@@ -1,3 +1,43 @@
+2001-06-28  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* cdl/redboot.cdl: Don't have a configured default IP address by
+	default if we have fconfig.
+	* src/net/ip.c: Provide a default ip addr if not defined.
+
+2001-06-28  Jesper Skov  <jskov@redhat.com>
+
+	* src/load.c (do_load): Don't allow verbose to be used with serial
+	downloads.
+
+	* src/main.c (do_reset): Reset via VV function.
+
+2001-06-27  Hugo Tyson  <hmt@redhat.com>
+
+	* src/io.c: Provide proto for do_channel() to reduce warning.
+
+2001-06-27  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* cdl/redboot.cdl (CYGDAT_REDBOOT_DEFAULT_IP_ADDR): Provide a compiled
+	in default IP address.
+	* src/net/ip.c: Initialize __local_ip_addr with it.
+	* src/net/bootp.c: Restore the previous __local_ip_addr if BOOTP fails.
+
+	* include/redboot.h: Fix another VARIBLE_BAUD_RATE typo. Fun this.
+
+2001-06-26  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* src/io.c (do_channel): New function to display/switch console
+	channel
+
+	* src/main.c: Move define of CYGNUM_HAL_VIRTUAL_VECTOR_NUM_CHANNELS to
+	* include/redboot.h: ...here
+
+2001-06-26  Gary Thomas  <gthomas@redhat.com>
+
+	* src/flash.c (load_flash_config): Fix another VARIBLE_BAUD_RATE typo.
+
+	* src/xyzModem.c (xyzModem_get_hdr): ACK on EOT was missing.
+
 2001-06-22  Gary Thomas  <gthomas@redhat.com>
 
 	* src/load.c (do_load): Move [static] data used by decompression
--- a/packages/redboot/current/cdl/redboot.cdl
+++ b/packages/redboot/current/cdl/redboot.cdl
@@ -107,6 +107,18 @@ cdl_package CYGPKG_REDBOOT {
             puts $::cdl_system_header "#define CYGNUM_HAL_VIRTUAL_VECTOR_AUX_CHANNELS 1"
         }
 
+        cdl_option CYGDAT_REDBOOT_DEFAULT_IP_ADDR {
+            display          "Default IP address"
+            flavor           booldata
+            default_value    CYGSEM_REDBOOT_FLASH_CONFIG ? 0 : \
+                                { "0, 0, 0, 0" }
+            description      "
+                This IP address is the default used by RedBoot if a BOOTP/DHCP
+                server does not respond. The numbers should be separated by
+                *commas*, and not dots. If an IP address is configured into
+                the Flash configuration, that will be used in preference."
+        }
+
         cdl_option CYGNUM_REDBOOT_NETWORKING_TCP_PORT {
             display          "TCP port to listen for incoming connections"
             flavor           data
--- a/packages/redboot/current/include/redboot.h
+++ b/packages/redboot/current/include/redboot.h
@@ -90,7 +90,7 @@ EXTERN int gdb_port;
 #ifdef CYGFUN_REDBOOT_BOOT_SCRIPT
 EXTERN unsigned char *script;
 EXTERN int script_timeout;
-#ifdef CYGSEM_REDBOOT_VARIBLE_BAUD_RATE
+#ifdef CYGSEM_REDBOOT_VARIABLE_BAUD_RATE
 EXTERN int console_baud_rate;
 #endif
 #endif
@@ -246,6 +246,14 @@ typedef struct {
 } getc_info_t;
 
 
+#ifdef CYGNUM_HAL_VIRTUAL_VECTOR_AUX_CHANNELS
+#define CYGNUM_HAL_VIRTUAL_VECTOR_NUM_CHANNELS \
+  (CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS+CYGNUM_HAL_VIRTUAL_VECTOR_AUX_CHANNELS)
+#else
+#define CYGNUM_HAL_VIRTUAL_VECTOR_NUM_CHANNELS \
+  CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS
+#endif
+
 //
 // Validate a hex character
 //
--- a/packages/redboot/current/src/flash.c
+++ b/packages/redboot/current/src/flash.c
@@ -1836,7 +1836,7 @@ load_flash_config(void)
         flash_get_config("boot_script_data", &script, CONFIG_SCRIPT);
         flash_get_config("boot_script_timeout", &script_timeout, CONFIG_INT);
     }
-#ifdef CYGSEM_REDBOOT_VARIBLE_BAUD_RATE
+#ifdef CYGSEM_REDBOOT_VARIABLE_BAUD_RATE
     if (flash_get_config("console_baud_rate", &console_baud_rate, CONFIG_INT)) {
         extern void set_console_baud_rate(int);
         set_console_baud_rate(console_baud_rate);
--- a/packages/redboot/current/src/io.c
+++ b/packages/redboot/current/src/io.c
@@ -23,7 +23,7 @@
 //                                                                          
 // 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.                             
+// Copyright (C) 1998, 1999, 2000, 2001 Red Hat, Inc.                        
 // All Rights Reserved.                                                     
 // -------------------------------------------                              
 //                                                                          
@@ -32,7 +32,7 @@
 //#####DESCRIPTIONBEGIN####
 //
 // Author(s):    gthomas
-// Contributors: gthomas
+// Contributors: gthomas,hmt,jlarmour
 // Date:         2000-07-14
 // Purpose:      
 // Description:  
@@ -50,6 +50,63 @@
 extern void ungetDebugChar(char c);
 #endif
 
+static void
+do_channel(int argc, char *argv[]);
+
+#ifdef CYGPKG_REDBOOT_ANY_CONSOLE
+RedBoot_cmd("channel", 
+            "Display/switch console channel", 
+            "[-1|<channel number>]",
+            do_channel
+    );
+#else
+RedBoot_cmd("channel", 
+            "Display/switch console channel", 
+            "[<channel number>]",
+            do_channel
+    );
+#endif
+
+static void
+do_channel(int argc, char *argv[])
+{
+    int cur = CYGACC_CALL_IF_SET_CONSOLE_COMM(CYGNUM_CALL_IF_SET_COMM_ID_QUERY_CURRENT);
+
+    if (argc == 2) { 
+#ifdef CYGPKG_REDBOOT_ANY_CONSOLE
+        if (strcmp( argv[1], "-1") == 0) {
+            console_selected = false;
+            console_echo = true;
+        } else 
+#endif
+        {
+            unsigned long chan;
+            if ( !parse_num( argv[1], &chan, NULL, NULL) ) {
+                printf("** Error: invalid channel '%s'\n", argv[1]);
+            } else {
+                if (chan < CYGNUM_HAL_VIRTUAL_VECTOR_NUM_CHANNELS) {
+                    CYGACC_CALL_IF_SET_CONSOLE_COMM(chan);
+                    CYGACC_CALL_IF_SET_DEBUG_COMM(chan);
+                    if (chan != cur)
+                        console_echo = true;
+                }
+                else {
+                    printf("**Error: bad channel number '%s'\n", argv[1]);
+                }
+            }
+        }
+    }
+    /* else display */ 
+    else {
+        printf("Current console channel id: ");
+        if (!console_selected)
+            printf("-1\n");
+        else {
+            printf("%d\n", cur);
+        }
+    }
+}
+
 void 
 mon_write_char(char c)
 {
--- a/packages/redboot/current/src/load.c
+++ b/packages/redboot/current/src/load.c
@@ -338,6 +338,9 @@ do_load(int argc, char *argv[])
                 printf("Invalid 'mode': %s\n", mode_str);
                 return;
             }
+            // When using a serial download type, override verbose
+            // setting: spinner interferes with the protocol.
+            verbose = false;
 #ifdef CYGPKG_REDBOOT_NETWORKING
         } else if (strcmpci(mode_str, "tftp") == 0) {
             mode = MODE_TFTP;
--- a/packages/redboot/current/src/main.c
+++ b/packages/redboot/current/src/main.c
@@ -61,14 +61,6 @@
 #endif
 #endif
 
-#ifdef CYGNUM_HAL_VIRTUAL_VECTOR_AUX_CHANNELS
-#define CYGNUM_HAL_VIRTUAL_VECTOR_NUM_CHANNELS \
-  (CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS+CYGNUM_HAL_VIRTUAL_VECTOR_AUX_CHANNELS)
-#else
-#define CYGNUM_HAL_VIRTUAL_VECTOR_NUM_CHANNELS \
-  CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS
-#endif
-
 // Builtin Self Test (BIST)
 externC void bist(void);
 
@@ -506,8 +498,7 @@ do_reset(int argc, char *argv[])
     printf("... Resetting.");
     CYGACC_CALL_IF_DELAY_US(2*100000);
     printf("\n");
-    CYGACC_CALL_IF_DELAY_US(50000);
-    HAL_PLATFORM_RESET();
+    CYGACC_CALL_IF_RESET();
     printf("!! oops, RESET not working on this platform\n");
 }
 #endif
--- a/packages/redboot/current/src/net/bootp.c
+++ b/packages/redboot/current/src/net/bootp.c
@@ -87,6 +87,7 @@ int
     ip_route_t     r;
     int            retry;
     unsigned long  start;
+    ip_addr_t saved_ip_addr;
 
     bp_info = info;
 
@@ -97,10 +98,8 @@ int
     b.bp_hlen = 6;
     b.bp_xid = SHOULD_BE_RANDOM;
 
-    __local_ip_addr[0] = 0;
-    __local_ip_addr[1] = 0;
-    __local_ip_addr[2] = 0;
-    __local_ip_addr[3] = 0;
+    memcpy( saved_ip_addr, __local_ip_addr, sizeof(__local_ip_addr) );
+    memset( __local_ip_addr, 0, sizeof(__local_ip_addr) );
 
     memcpy(b.bp_chaddr, __local_enet_addr, 6);
 
@@ -139,6 +138,7 @@ int
     /* timed out */
     __udp_remove_listener(IPPORT_BOOTPC);
     net_debug = 0;
+    memcpy( __local_ip_addr, saved_ip_addr, sizeof(__local_ip_addr) );
     return -1;
 }
 
--- a/packages/redboot/current/src/net/ip.c
+++ b/packages/redboot/current/src/net/ip.c
@@ -45,7 +45,11 @@
 
 #include <net/net.h>
 
-ip_addr_t __local_ip_addr = { 0, 0, 0, 0 };
+#ifndef CYGDAT_REDBOOT_DEFAULT_IP_ADDR
+# define CYGDAT_REDBOOT_DEFAULT_IP_ADDR 0, 0, 0, 0
+#endif
+
+ip_addr_t __local_ip_addr = { CYGDAT_REDBOOT_DEFAULT_IP_ADDR };
 
 static word ip_ident;
 
--- a/packages/redboot/current/src/xyzModem.c
+++ b/packages/redboot/current/src/xyzModem.c
@@ -205,8 +205,10 @@ xyzModem_get_hdr(void)
                     break;
                 }
             case EOT:
+                // EOT only supported if no noise
                 if (hdr_chars == 1) {
-                    // EOT only supported if no noise
+                    CYGACC_COMM_IF_PUTC(*xyz.__chan, ACK);
+                    ZM_DEBUG(zm_dprintf("ACK on EOT #%d\n", __LINE__));
                     ZM_DEBUG(zm_dump(__LINE__));
                     return xyzModem_eof;
                 }
--- a/packages/services/memalloc/common/current/ChangeLog
+++ b/packages/services/memalloc/common/current/ChangeLog
@@ -1,3 +1,13 @@
+2001-06-28  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* include/memjoin.inl (~Cyg_Mempool_Joined): free even when asserts
+	disabled.
+
+	* include/memvar.hxx (class Cyg_Mempool_Variable): Comment out argument
+	names for consistency.
+	* include/memfixed.hxx (class Cyg_Mempool_Fixed): Ditto.
+	* include/memjoin.hxx (class Cyg_Mempool_Joined): Ditto.
+
 2001-06-20  Jonathan Larmour  <jlarmour@redhat.com>
 
 	* include/mvarimpl.inl (get_status): Correct calculation of maxfree
--- a/packages/services/memalloc/common/current/include/memfixed.hxx
+++ b/packages/services/memalloc/common/current/include/memfixed.hxx
@@ -93,9 +93,9 @@ public:
     // to be carved out, note that management structures are taken from the
     // same arena.  Alloc_unit is the blocksize allocated.
     Cyg_Mempool_Fixed(
-        cyg_uint8 *base,
-        cyg_int32 size,
-        CYG_ADDRWORD alloc_unit );
+        cyg_uint8 * /* base */,
+        cyg_int32 /* size */,
+        CYG_ADDRWORD /* alloc_unit */ );
 
     // Destructor
     ~Cyg_Mempool_Fixed();
@@ -106,7 +106,7 @@ public:
     
 # ifdef CYGFUN_KERNEL_THREADS_TIMER
     // get some memory with a timeout
-    cyg_uint8 *alloc( cyg_tick_count delay_timeout );
+    cyg_uint8 *alloc( cyg_tick_count /* delay_timeout */ );
 # endif
 #endif
 
@@ -118,11 +118,11 @@ public:
     // an error (false) for all values, except for the blocksize
     // returns true on success
     cyg_uint8 *
-    resize_alloc( cyg_uint8 *alloc_ptr, cyg_int32 newsize,
-                  cyg_int32 *oldsize=NULL );
+    resize_alloc( cyg_uint8 * /* alloc_ptr */, cyg_int32 /* newsize */,
+                  cyg_int32 * /* oldsize */ =NULL );
 
     // free the memory back to the pool
-    cyg_bool free( cyg_uint8 *p );
+    cyg_bool free( cyg_uint8 * /* p */ );
 
     // Get memory pool status
     // flags is a bitmask of requested fields to fill in. The flags are
--- a/packages/services/memalloc/common/current/include/memjoin.hxx
+++ b/packages/services/memalloc/common/current/include/memjoin.hxx
@@ -99,8 +99,8 @@ public:
     // to higher layers. The data is copied from old to new though.
     // The effects of alloc_ptr==NULL or newsize==0 are undefined
     cyg_uint8 *
-    resize_alloc( cyg_uint8 *alloc_ptr, cyg_int32 newsize,
-                  cyg_int32 *oldsize=NULL );
+    resize_alloc( cyg_uint8 * /* alloc_ptr */, cyg_int32 /* newsize */,
+                  cyg_int32 * /* oldsize */ =NULL );
 
     // free the memory back to the pool
     // returns true on success
--- a/packages/services/memalloc/common/current/include/memjoin.inl
+++ b/packages/services/memalloc/common/current/include/memjoin.inl
@@ -140,8 +140,11 @@ Cyg_Mempool_Joined<T>::~Cyg_Mempool_Join
 {
     CYG_REPORT_FUNCTION();
     CYG_REPORT_FUNCARGVOID();
-    CYG_ASSERT( free( (cyg_uint8 *)pools, poolcount * sizeof(struct pooldesc) ),
-                "free failed!");
+
+    cyg_bool freestat;
+    
+    freestat = free( (cyg_uint8 *)pools, poolcount * sizeof(struct pooldesc) );
+    CYG_ASSERT( freestat, "free failed!");
     CYG_REPORT_RETURN();
 } // Cyg_Mempool_Joined<T>::~Cyg_Mempool_Joined()
 
--- a/packages/services/memalloc/common/current/include/memvar.hxx
+++ b/packages/services/memalloc/common/current/include/memvar.hxx
@@ -131,8 +131,8 @@ public:
     // to higher layers. The data is copied from old to new though.
     // The effects of alloc_ptr==NULL or newsize==0 are undefined
     cyg_uint8 *
-    resize_alloc( cyg_uint8 *alloc_ptr, cyg_int32 newsize,
-                  cyg_int32 *oldsize=NULL );
+    resize_alloc( cyg_uint8 * /* alloc_ptr */, cyg_int32 /* newsize */,
+                  cyg_int32 * /* oldsize */ =NULL );
 
     // free the memory back to the pool
     // returns true on success
--- a/packages/templates/redboot/ChangeLog
+++ b/packages/templates/redboot/ChangeLog
@@ -1,3 +1,7 @@
+2001-06-25  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* current.ect: Increase default interrupt stack size up to 6K
+
 2001-05-22  Jonathan Larmour  <jlarmour@redhat.com>
 
 	* current.ect: Set default interrupt stack size down to 4096
--- a/packages/templates/redboot/current.ect
+++ b/packages/templates/redboot/current.ect
@@ -24,5 +24,5 @@ cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_
 };
 
 cdl_option CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE {
-    user_value 4096
+    user_value 6144
 };