VAX: Fixed idle conditions for various versions of Ultrix, Quasijarus-4.3BSD, NetBSD and OpenBSD.
Note: Since NetBSD and OpenBSD are still actively developed operating systems, new versions of these OSes are moving targets with regard to providing idle detection. At this time, recent versions of OpenBSD have veered from the traditional OS idle approach taken in the other BSD derived OSes. Determining a reasonable idle detection pattern does not seem possible for these versions.
This commit is contained in:
parent
a280dd2b1f
commit
e70278eabf
2 changed files with 34 additions and 14 deletions
|
@ -25,6 +25,16 @@
|
||||||
|
|
||||||
cpu VAX central processor
|
cpu VAX central processor
|
||||||
|
|
||||||
|
20-Sep-11 MP Fixed idle conditions for various versions of Ultrix,
|
||||||
|
Quasijarus-4.3BSD, NetBSD and OpenBSD.
|
||||||
|
Note: Since NetBSD and OpenBSD are still actively
|
||||||
|
developed operating systems, new versions of
|
||||||
|
these OSes are moving targets with regard to
|
||||||
|
providing idle detection. At this time, recent versions
|
||||||
|
of OpenBSD have veered from the traditional OS idle
|
||||||
|
approach taken in the other BSD derived OSes.
|
||||||
|
Determining a reasonable idle detection pattern does
|
||||||
|
not seem possible for these versions.
|
||||||
23-Mar-11 RMS Revised for new idle design (from Mark Pizzolato)
|
23-Mar-11 RMS Revised for new idle design (from Mark Pizzolato)
|
||||||
05-Jan-11 MP Added Asynch I/O support
|
05-Jan-11 MP Added Asynch I/O support
|
||||||
24-Apr-10 RMS Added OLDVMS idle timer option
|
24-Apr-10 RMS Added OLDVMS idle timer option
|
||||||
|
@ -177,9 +187,10 @@
|
||||||
#define UNIT_CONH (1u << UNIT_V_CONH)
|
#define UNIT_CONH (1u << UNIT_V_CONH)
|
||||||
#define UNIT_MSIZE (1u << UNIT_V_MSIZE)
|
#define UNIT_MSIZE (1u << UNIT_V_MSIZE)
|
||||||
#define GET_CUR acc = ACC_MASK (PSL_GETCUR (PSL))
|
#define GET_CUR acc = ACC_MASK (PSL_GETCUR (PSL))
|
||||||
#define VAX_IDLE_VMS 0x1
|
#define VAX_IDLE_VMS 0x01
|
||||||
#define VAX_IDLE_ULT 0x2
|
#define VAX_IDLE_ULT 0x02
|
||||||
#define VAX_IDLE_QUAD 0x3
|
#define VAX_IDLE_ULTOLD 0x04
|
||||||
|
#define VAX_IDLE_QUAD 0x08
|
||||||
|
|
||||||
#define OPND_SIZE 16
|
#define OPND_SIZE 16
|
||||||
#define INST_SIZE 52
|
#define INST_SIZE 52
|
||||||
|
@ -1575,14 +1586,13 @@ for ( ;; ) {
|
||||||
case TSTL:
|
case TSTL:
|
||||||
CC_IIZZ_L (op0); /* set cc's */
|
CC_IIZZ_L (op0); /* set cc's */
|
||||||
if ((cc == CC_Z) &&
|
if ((cc == CC_Z) &&
|
||||||
((((PSL & PSL_IS) != 0) && /* on IS? */
|
((((cpu_idle_mask & VAX_IDLE_ULTOLD) && /* running Old Ultrix or friends? */
|
||||||
(PSL_GETIPL (PSL) == 0x1) && /* at IPL 1? */
|
(PSL_GETIPL (PSL) == 0x1)) || /* at IPL 1? */
|
||||||
((cpu_idle_mask & VAX_IDLE_ULT) != 0))|| /* running Ultrix or friends? */
|
((cpu_idle_mask & VAX_IDLE_QUAD) && /* running Quasijarus or friends? */
|
||||||
((PSL_GETIPL (PSL) == 0x0) && /* at IPL 0? */
|
(PSL_GETIPL (PSL) == 0x0))) && /* at IPL 0? */
|
||||||
((fault_PC & 0x80000000) != 0) && /* in system space? */
|
(fault_PC & 0x80000000) && /* in system space? */
|
||||||
((PC - fault_PC) == 6) && /* 6 byte instruction? */
|
((PC - fault_PC) == 6) && /* 6 byte instruction? */
|
||||||
((fault_PC & 0x7fffffff) < 0x4000) && /* in low system space? */
|
((fault_PC & 0x7fffffff) < 0x4000))) /* in low system space? */
|
||||||
((cpu_idle_mask & VAX_IDLE_QUAD) != 0)))) /* running Quad or friends? */
|
|
||||||
cpu_idle(); /* idle loop */
|
cpu_idle(); /* idle loop */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1790,6 +1800,14 @@ for ( ;; ) {
|
||||||
case BITL:
|
case BITL:
|
||||||
r = op1 & op0; /* calc result */
|
r = op1 & op0; /* calc result */
|
||||||
CC_IIZP_L (r); /* set cc's */
|
CC_IIZP_L (r); /* set cc's */
|
||||||
|
if ((cc == CC_Z) &&
|
||||||
|
(cpu_idle_mask & VAX_IDLE_ULT) && /* running Ultrix or friends? */
|
||||||
|
((PSL & PSL_IS) != 0) && /* on IS? */
|
||||||
|
(PSL_GETIPL (PSL) == 0x18) && /* at IPL 18? */
|
||||||
|
(fault_PC & 0x80000000) && /* in system space? */
|
||||||
|
((PC - fault_PC) == 8) && /* 8 byte instruction? */
|
||||||
|
((fault_PC & 0x7fffffff) < 0x6000)) /* in low system space? */
|
||||||
|
cpu_idle(); /* idle loop */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* Integer operates, 2 operand read/write, and 3 operand, also MOVQ
|
/* Integer operates, 2 operand read/write, and 3 operand, also MOVQ
|
||||||
|
@ -3407,11 +3425,13 @@ struct os_idle {
|
||||||
|
|
||||||
static struct os_idle os_tab[] = {
|
static struct os_idle os_tab[] = {
|
||||||
{ "VMS", VAX_IDLE_VMS },
|
{ "VMS", VAX_IDLE_VMS },
|
||||||
{ "NETBSD", VAX_IDLE_ULT },
|
{ "NETBSD", VAX_IDLE_ULTOLD },
|
||||||
{ "ULTRIX", VAX_IDLE_ULT },
|
{ "ULTRIX", VAX_IDLE_ULT },
|
||||||
|
{ "ULTRIXOLD", VAX_IDLE_ULTOLD },
|
||||||
{ "OPENBSD", VAX_IDLE_QUAD },
|
{ "OPENBSD", VAX_IDLE_QUAD },
|
||||||
|
{ "QUASIJARUS", VAX_IDLE_QUAD },
|
||||||
{ "32V", VAX_IDLE_QUAD },
|
{ "32V", VAX_IDLE_QUAD },
|
||||||
{ "ALL", VAX_IDLE_VMS|VAX_IDLE_ULT|VAX_IDLE_QUAD },
|
{ "ALL", VAX_IDLE_VMS|VAX_IDLE_ULTOLD|VAX_IDLE_ULT|VAX_IDLE_QUAD },
|
||||||
{ NULL, 0 }
|
{ NULL, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
2
scp.c
2
scp.c
|
@ -603,7 +603,7 @@ static CTAB cmd_table[] = {
|
||||||
"set console NODEBUG disable console debugging\n"
|
"set console NODEBUG disable console debugging\n"
|
||||||
"set break <list> set breakpoints\n"
|
"set break <list> set breakpoints\n"
|
||||||
"set nobreak <list> clear breakpoints\n"
|
"set nobreak <list> clear breakpoints\n"
|
||||||
"set throttle x{M|K|%%} set simulation rate\n"
|
"set throttle x{M|K|%%} set simulation rate\n"
|
||||||
"set nothrottle set simulation rate to maximum\n"
|
"set nothrottle set simulation rate to maximum\n"
|
||||||
"set <dev> OCT|DEC|HEX set device display radix\n"
|
"set <dev> OCT|DEC|HEX set device display radix\n"
|
||||||
"set <dev> ENABLED enable device\n"
|
"set <dev> ENABLED enable device\n"
|
||||||
|
|
Loading…
Add table
Reference in a new issue