Added VAX idle support for newer versions of NetBSD and OpenBSD guests if they use IPL 1 as the idle trigger
This commit is contained in:
parent
95a1cb71df
commit
c1663795f1
3 changed files with 16 additions and 7 deletions
|
@ -188,10 +188,6 @@
|
||||||
#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 0x01
|
|
||||||
#define VAX_IDLE_ULT 0x02
|
|
||||||
#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
|
||||||
|
@ -3428,13 +3424,15 @@ 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_ULTOLD },
|
{ "NETBSDOLD", VAX_IDLE_ULTOLD },
|
||||||
|
{ "NETBSD", VAX_IDLE_BSDNEW },
|
||||||
{ "ULTRIX", VAX_IDLE_ULT },
|
{ "ULTRIX", VAX_IDLE_ULT },
|
||||||
{ "ULTRIXOLD", VAX_IDLE_ULTOLD },
|
{ "ULTRIXOLD", VAX_IDLE_ULTOLD },
|
||||||
{ "OPENBSD", VAX_IDLE_QUAD },
|
{ "OPENBSDOLD", VAX_IDLE_QUAD },
|
||||||
|
{ "OPENBSD", VAX_IDLE_BSDNEW },
|
||||||
{ "QUASIJARUS", VAX_IDLE_QUAD },
|
{ "QUASIJARUS", VAX_IDLE_QUAD },
|
||||||
{ "32V", VAX_IDLE_QUAD },
|
{ "32V", VAX_IDLE_QUAD },
|
||||||
{ "ALL", VAX_IDLE_VMS|VAX_IDLE_ULTOLD|VAX_IDLE_ULT|VAX_IDLE_QUAD },
|
{ "ALL", VAX_IDLE_VMS|VAX_IDLE_ULTOLD|VAX_IDLE_ULT|VAX_IDLE_QUAD|VAX_IDLE_BSDNEW },
|
||||||
{ NULL, 0 }
|
{ NULL, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1520,6 +1520,9 @@ switch (prn) { /* case on reg # */
|
||||||
|
|
||||||
case MT_IPL: /* IPL */
|
case MT_IPL: /* IPL */
|
||||||
PSL = (PSL & ~PSL_IPL) | ((val & PSL_M_IPL) << PSL_V_IPL);
|
PSL = (PSL & ~PSL_IPL) | ((val & PSL_M_IPL) << PSL_V_IPL);
|
||||||
|
if ((VAX_IDLE_BSDNEW & cpu_idle_mask) && /* New NetBSD and OpenBSD */
|
||||||
|
(val == 1)) /* IPL 1 */
|
||||||
|
cpu_idle(); /* idle loop */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MT_ASTLVL: /* ASTLVL */
|
case MT_ASTLVL: /* ASTLVL */
|
||||||
|
|
|
@ -718,6 +718,14 @@ enum opcodes {
|
||||||
else cc = 0; \
|
else cc = 0; \
|
||||||
if (((uint32) s1) < ((uint32) s2)) cc = cc | CC_C
|
if (((uint32) s1) < ((uint32) s2)) cc = cc | CC_C
|
||||||
|
|
||||||
|
#define VAX_IDLE_VMS 0x01
|
||||||
|
#define VAX_IDLE_ULT 0x02
|
||||||
|
#define VAX_IDLE_ULTOLD 0x04
|
||||||
|
#define VAX_IDLE_QUAD 0x08
|
||||||
|
#define VAX_IDLE_BSDNEW 0x10
|
||||||
|
extern uint32 cpu_idle_mask; /* idle mask */
|
||||||
|
void cpu_idle (void);
|
||||||
|
|
||||||
/* Model dependent definitions */
|
/* Model dependent definitions */
|
||||||
|
|
||||||
#if defined (VAX_780)
|
#if defined (VAX_780)
|
||||||
|
|
Loading…
Add table
Reference in a new issue