1
0
mirror of https://github.com/wfjm/w11.git synced 2026-04-14 08:59:21 +00:00

Miscellaneous fixes and changes

- ibdr_deuna: add logic to handle 'PDMD issued while busy'
- Rw11CntlDEUNA: adopt trace and statistics
- hook_ibmon_xua.tcl: use .imf,.ime
This commit is contained in:
wfjm
2017-05-28 13:33:39 +02:00
parent c0a227c1d5
commit a9425599e7
7 changed files with 128 additions and 50 deletions

View File

@@ -1,4 +1,4 @@
// $Id: Rw11CntlDEUNA.cpp 887 2017-04-28 19:32:52Z mueller $
// $Id: Rw11CntlDEUNA.cpp 901 2017-05-28 11:26:11Z mueller $
//
// Copyright 2014-2017 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
//
@@ -13,7 +13,7 @@
//
// Revision History:
// Date Rev Version Comment
// 2017-04-17 880 0.5 Initial version (works w 211bsd; no err handling)
// 2017-04-17 880 0.5 Initial version (minimal functions, 211bsd ready)
// 2014-06-09 561 0.1 First draft
// ---------------------------------------------------------------------------
@@ -81,6 +81,7 @@ const uint16_t Rw11CntlDEUNA::kPR0_M_PCMD;
const uint16_t Rw11CntlDEUNA::kPR0_V_PCMDBP;
const uint16_t Rw11CntlDEUNA::kPR0_B_PCMDBP;
const uint16_t Rw11CntlDEUNA::kPR0_M_PDMDWB;
const uint16_t Rw11CntlDEUNA::kPR0_M_PCWWB;
const uint16_t Rw11CntlDEUNA::kPCMD_NOOP;
@@ -253,6 +254,9 @@ Rw11CntlDEUNA::Rw11CntlDEUNA()
fStats.Define(kStatNPcmdHalt , "NPcmdHalt" , "pcmd HALT");
fStats.Define(kStatNPcmdRsrvd , "NPcmdRsrvd" , "pcmd reserved");
fStats.Define(kStatNPcmdUimpl , "NPcmdUimpl" , "pcmd not implemented");
fStats.Define(kStatNPcmdWBPdmd , "NPcmdWBPdmd" , "pcmd write w/ busy: pdmd");
fStats.Define(kStatNPcmdWBOther, "NPcmdWBOther", "pcmd write w/ busy: other");
fStats.Define(kStatNPdmdRestart, "NPdmdRestart", "pcmd pdmd restart");
fStats.Define(kStatNFuncNoop , "NFuncNoop" , "func NOOP");
fStats.Define(kStatNFuncRdpa , "NFuncRdpa" , "func RDPA");
fStats.Define(kStatNFuncRpa , "NFuncRpa" , "func PRA");
@@ -726,15 +730,25 @@ int Rw11CntlDEUNA::AttnHandler(RlinkServer::AttnArgs& args)
bool brst = fPr0Last & kPR0_M_BRST;
uint16_t pcmd = (fPr0Last>>kPR0_V_PCMDBP) & kPR0_B_PCMDBP;
// check for pcmd write while busy (part 1)
// check for pcmd write while busy
if (fPr0Last & kPR0_M_PCWWB) {
RlogMsg lmsg(LogFile());
lmsg << "-E " << Name() << ": pcmd race"
<< " pr0=" << RosPrintBvi(fPr0Last,8)
<< " pcmd-1st=" << MnemoPcmd(pcmd)
<< " pcmd-2nd=" << MnemoPcmd(fPr0Last & kPR0_M_PCMD);
uint16_t pcmdwwb = fPr0Last & kPR0_M_PCMD;
if (pcmdwwb == kPCMD_PDMD) {
fStats.Inc(kStatNPcmdWBPdmd);
} else {
fStats.Inc(kStatNPcmdWBOther);
RlogMsg lmsg(LogFile());
lmsg << "-E " << Name() << ": pcmd write w/ busy"
<< " pr0=" << RosPrintBvi(fPr0Last,8)
<< " pcmd-1st=" << MnemoPcmd(pcmd)
<< " pcmd-2nd=" << MnemoPcmd(pcmdwwb);
}
}
// check for pcmd pdmd while busy restarts
if (fPr0Last & kPR0_M_PDMDWB) {
fStats.Inc(kStatNPdmdRestart);
}
RlinkCommandList clist;
fPr1Pcto = false;

View File

@@ -1,4 +1,4 @@
// $Id: Rw11CntlDEUNA.hpp 887 2017-04-28 19:32:52Z mueller $
// $Id: Rw11CntlDEUNA.hpp 901 2017-05-28 11:26:11Z mueller $
//
// Copyright 2014-2017 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
//
@@ -13,7 +13,7 @@
//
// Revision History:
// Date Rev Version Comment
// 2017-04-14 875 1.0 Initial version
// 2017-04-14 875 0.5 Initial version (minimal functions, 211bsd ready)
// 2014-06-09 561 0.1 First draft
// ---------------------------------------------------------------------------
@@ -97,8 +97,9 @@ namespace Retro {
static const uint16_t kPR0_M_BRST = kWBit04; //!< RSET: breset seen
static const uint16_t kPR0_M_PCMD = 00017; //!< PCMD: port command
static const uint16_t kPR0_V_PCMDBP= 12; //!< PCMDBP: port busy prot
static const uint16_t kPR0_B_PCMDBP= 00017; //!< PCMDBP: port busy prot
static const uint16_t kPR0_V_PCMDBP= 12; //!< PCMDBP: pcmd busy prot
static const uint16_t kPR0_B_PCMDBP= 00017; //!< PCMDBP: pcmd busy prot
static const uint16_t kPR0_M_PDMDWB= kWBit10; //!< PDMDWB: pdmd while busy
static const uint16_t kPR0_M_PCWWB = kWBit08; //!< PCWWB: pcmd write w busy
static const uint16_t kPCMD_NOOP = 0; //!< NOOP: noop
@@ -222,6 +223,9 @@ namespace Retro {
kStatNPcmdHalt,
kStatNPcmdRsrvd,
kStatNPcmdUimpl,
kStatNPcmdWBPdmd,
kStatNPcmdWBOther,
kStatNPdmdRestart,
kStatNFuncNoop,
kStatNFuncRdpa,
kStatNFuncRpa,