mirror of
https://github.com/wfjm/w11.git
synced 2026-04-28 21:08:35 +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:
@@ -1,8 +1,9 @@
|
||||
# $Id: hook_ibmon_xua.tcl 899 2017-05-27 13:25:41Z mueller $
|
||||
# $Id: hook_ibmon_xua.tcl 901 2017-05-28 11:26:11Z mueller $
|
||||
puts "hook: start ibmon for xua"
|
||||
package require ibd_ibmon
|
||||
ibd_ibmon::stop
|
||||
cpu0 cp -wibr im.lolim [cpu0 imap xua.pr0] \
|
||||
-wibr im.hilim [cpu0 imap xua.pr3]
|
||||
#ibd_ibmon::start cpu0 wena 0
|
||||
ibd_ibmon::start
|
||||
|
||||
# set filter on xua registers
|
||||
# repeat collapse for reads (211bsd driver does polling!)
|
||||
|
||||
.imd
|
||||
.imf xua.pr0 xua.pr3
|
||||
.ime R
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
# $Id: test_deuna_func.tcl 874 2017-04-14 17:53:07Z mueller $
|
||||
# $Id: test_deuna_func.tcl 894 2017-05-07 07:18:32Z mueller $
|
||||
#
|
||||
# Copyright 2017- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
|
||||
# License disclaimer see License.txt in $RETROBASE directory
|
||||
#
|
||||
# Revision History:
|
||||
# Date Rev Version Comment
|
||||
# 2017-04-14 874 1.0 Initial version
|
||||
# 2017-05-06 894 1.0 Initial version (full functionality)
|
||||
# 2017-04-14 874 0.5 Initial version (partial functionality)
|
||||
# 2017-01-30 848 0.1 First draft
|
||||
#
|
||||
# Test function response
|
||||
@@ -71,8 +72,32 @@ foreach pcmd {0x01 0x02 0x08 0x0f} {
|
||||
-rma xua.pr0 -edata 0
|
||||
}
|
||||
|
||||
rlc log " A1.4: check pcmd busy protect logic----------------"
|
||||
rlc log " A1.4: pcmd busy protect logic: 2nd not PDMD -------"
|
||||
# pr0 is clean from previous test !
|
||||
# issue 1st GETPCB and 2nd GETCMD
|
||||
$cpu cp \
|
||||
-wma xua.pr0 [regbld ibd_deuna::PR0 {pcmd "GETPCB"}] \
|
||||
-rma xua.pr0 -edata [regbld ibd_deuna::PR0 {pcmd "GETPCB"}] \
|
||||
-wma xua.pr0 [regbld ibd_deuna::PR0 {pcmd "GETCMD"}] \
|
||||
-rma xua.pr0 -edata [regbld ibd_deuna::PR0 {pcmd "GETCMD"}]
|
||||
|
||||
rlc wtlam 1.
|
||||
rlc exec -attn -edata $attnmsk
|
||||
|
||||
# simulate command handling in backend
|
||||
# pcmd and pcmdbp differ now
|
||||
# pcwwb is cleared by dni
|
||||
$cpu cp \
|
||||
-ribr xua.pr0 -edata [regbldkv ibd_deuna::PR0RR \
|
||||
pcmdbp "GETPCB" busy 1 pcwwb 1 pcmd "GETCMD"] \
|
||||
-wibr xua.pr0 [regbld ibd_deuna::PR0RW dni] \
|
||||
-rma xua.pr0 -edata [regbldkv ibd_deuna::PR0 dni 1 intr 1 pcmd "GETCMD"] \
|
||||
-wma xua.pr0 [regbldkv ibd_deuna::PR0 dni 1] \
|
||||
-rma xua.pr0 -edata 0
|
||||
|
||||
rlc log " A1.5: pcmd busy protect logic: restart with PDMD --"
|
||||
# pr0 is clean from previous test !
|
||||
# issue 1st GETCMD and 2nd PDMD
|
||||
$cpu cp \
|
||||
-wma xua.pr0 [regbld ibd_deuna::PR0 {pcmd "GETCMD"}] \
|
||||
-rma xua.pr0 -edata [regbld ibd_deuna::PR0 {pcmd "GETCMD"}] \
|
||||
@@ -84,12 +109,25 @@ rlc exec -attn -edata $attnmsk
|
||||
|
||||
# simulate command handling in backend
|
||||
# pcmd and pcmdbp differ now
|
||||
# pcwwb is cleared by rem pr0 read (check by reading twice)
|
||||
# dni will clear pcwwb, restart with attn, and not set dni (thus intr=0)
|
||||
|
||||
$cpu cp \
|
||||
-ribr xua.pr0 -edata [regbldkv ibd_deuna::PR0RR \
|
||||
pcmdbp "GETCMD" busy 1 pcwwb 1 pcmd "PDMD"] \
|
||||
-wibr xua.pr0 [regbld ibd_deuna::PR0RW dni] \
|
||||
-rma xua.pr0 -edata [regbldkv ibd_deuna::PR0 dni 0 intr 0 pcmd "PDMD"]
|
||||
|
||||
# handle restarted pdmd
|
||||
rlc wtlam 1.
|
||||
rlc exec -attn -edata $attnmsk
|
||||
|
||||
# simulate command handling in backend
|
||||
# pcmd and pcmdbp equal now; pcwwb=0 now
|
||||
# dni will end transaction now
|
||||
|
||||
$cpu cp \
|
||||
-ribr xua.pr0 -edata [regbldkv ibd_deuna::PR0RR \
|
||||
pcmdbp "GETCMD" busy 1 pcmd "PDMD"] \
|
||||
pcmdbp "PDMD" pdmdwb 1 busy 1 pcwwb 0 pcmd "PDMD"] \
|
||||
-wibr xua.pr0 [regbld ibd_deuna::PR0RW dni] \
|
||||
-rma xua.pr0 -edata [regbldkv ibd_deuna::PR0 dni 1 intr 1 pcmd "PDMD"] \
|
||||
-wma xua.pr0 [regbldkv ibd_deuna::PR0 dni 1] \
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# $Id: test_deuna_int.tcl 874 2017-04-14 17:53:07Z mueller $
|
||||
# $Id: test_deuna_int.tcl 895 2017-05-07 07:38:47Z mueller $
|
||||
#
|
||||
# Copyright 2017- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
|
||||
# License disclaimer see License.txt in $RETROBASE directory
|
||||
@@ -99,7 +99,7 @@ proc tmpproc_dotest {cpu symName args} {
|
||||
r3 $opts(o.r3) \
|
||||
r4 $opts(o.r4) \
|
||||
sp $sym(stack)
|
||||
return ""
|
||||
return
|
||||
}
|
||||
|
||||
# -- Section A ---------------------------------------------------------------
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# $Id: util.tcl 874 2017-04-14 17:53:07Z mueller $
|
||||
# $Id: util.tcl 894 2017-05-07 07:18:32Z mueller $
|
||||
#
|
||||
# Copyright 2014-2017 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
|
||||
#
|
||||
@@ -13,7 +13,8 @@
|
||||
#
|
||||
# Revision History:
|
||||
# Date Rev Version Comment
|
||||
# 2017-04-14 874 1.0 Initial version
|
||||
# 2017-05-06 894 1.0 Initial version (full functionality)
|
||||
# 2017-04-14 874 0.5 Initial version (partial functionality)
|
||||
# 2014-06-09 561 0.1 First draft
|
||||
#
|
||||
|
||||
@@ -32,7 +33,7 @@ namespace eval ibd_deuna {
|
||||
regdsc PR0 {seri 15} {pcei 14} {rxi 13} {txi 12} {dni 11} {rcbi 10} \
|
||||
{usci 8} {intr 7} {inte 6} {rset 5} \
|
||||
[list "pcmd" 3 4 $pcmdtxt]
|
||||
regdsc PR0RR [list "pcmdbp" 15 4 $pcmdtxt] {busy 9} {pcwwb 8}\
|
||||
regdsc PR0RR [list "pcmdbp" 15 4 $pcmdtxt] {pdmdwb 10} {busy 9} {pcwwb 8}\
|
||||
{intr 7} {inte 6} {rset 5} {brst 4} \
|
||||
[list "pcmd" 3 4 $pcmdtxt]
|
||||
regdsc PR0RW {seri 15} {pcei 14} {rxi 13} {txi 12} {dni 11} {rcbi 10} \
|
||||
|
||||
Reference in New Issue
Block a user