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_MSIZE (1u << UNIT_V_MSIZE)
|
||||
#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 INST_SIZE 52
|
||||
|
@ -3428,13 +3424,15 @@ struct os_idle {
|
|||
|
||||
static struct os_idle os_tab[] = {
|
||||
{ "VMS", VAX_IDLE_VMS },
|
||||
{ "NETBSD", VAX_IDLE_ULTOLD },
|
||||
{ "NETBSDOLD", VAX_IDLE_ULTOLD },
|
||||
{ "NETBSD", VAX_IDLE_BSDNEW },
|
||||
{ "ULTRIX", VAX_IDLE_ULT },
|
||||
{ "ULTRIXOLD", VAX_IDLE_ULTOLD },
|
||||
{ "OPENBSD", VAX_IDLE_QUAD },
|
||||
{ "OPENBSDOLD", VAX_IDLE_QUAD },
|
||||
{ "OPENBSD", VAX_IDLE_BSDNEW },
|
||||
{ "QUASIJARUS", 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 }
|
||||
};
|
||||
|
||||
|
|
|
@ -1520,6 +1520,9 @@ switch (prn) { /* case on reg # */
|
|||
|
||||
case MT_IPL: /* 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;
|
||||
|
||||
case MT_ASTLVL: /* ASTLVL */
|
||||
|
|
|
@ -718,6 +718,14 @@ enum opcodes {
|
|||
else cc = 0; \
|
||||
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 */
|
||||
|
||||
#if defined (VAX_780)
|
||||
|
|
Loading…
Add table
Reference in a new issue