From 03281d346bfa60dcff61c5f2b0de78fc644d6ec6 Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Fri, 23 Feb 2018 21:58:16 +0200 Subject: [PATCH] Hardware NIC was not fully freed when emulation was restarted. --- a2065.cpp | 4 ++++ devices.cpp | 4 ++++ include/ethernet.h | 1 + qemuvga/ne2000.cpp | 5 +++++ 4 files changed, 14 insertions(+) diff --git a/a2065.cpp b/a2065.cpp index 5b72fa36..03a4607d 100644 --- a/a2065.cpp +++ b/a2065.cpp @@ -1140,6 +1140,10 @@ bool ariadne_init(struct autoconfig_info *aci) return a2065_config(aci); } +void a2065_free(void) +{ + a2065_reset(); +} void a2065_reset(void) { diff --git a/devices.cpp b/devices.cpp index 5e442fd7..8fc1d067 100644 --- a/devices.cpp +++ b/devices.cpp @@ -359,6 +359,10 @@ void do_leave_program (void) #ifdef NCR9X ncr9x_free(); #endif +#ifdef A2065 + a2065_free(); +#endif + ne2000_free(); #ifdef CD32 akiko_free (); cd32_fmv_free(); diff --git a/include/ethernet.h b/include/ethernet.h index 03394e56..ff60bfa3 100644 --- a/include/ethernet.h +++ b/include/ethernet.h @@ -41,6 +41,7 @@ extern bool xsurf100_init(struct autoconfig_info *aci); void rethink_ne2000(void); void ne2000_reset(void); void ne2000_hsync(void); +void ne2000_free(void); void ethernet_updateselection(void); uae_u32 ethernet_getselection(const TCHAR*); diff --git a/qemuvga/ne2000.cpp b/qemuvga/ne2000.cpp index 7c42dbf3..e07d281d 100644 --- a/qemuvga/ne2000.cpp +++ b/qemuvga/ne2000.cpp @@ -1886,6 +1886,11 @@ static addrbank ariadne2_bank = { ABFLAG_IO | ABFLAG_PPCIOSPACE, S_READ, S_WRITE }; +void ne2000_free(void) +{ + ne2000_reset(); +} + void ne2000_reset(void) { struct ne2000_s *ne = getne2k(0); -- 2.47.3