From 83bf230a47c44dae30f17258abc5511d2eafc94e Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Thu, 14 Jul 2016 11:32:20 -0700 Subject: [PATCH] All VAX: Fix REI check when compatibilty mode. From Bob Supnik The rule check on the PSL was incomplete. DV, FU, IV must all be zero, and they weren't checked at all. VAX Diagnostic EVKAE now runs to completion. --- VAX/vax_cmode.c | 5 +++-- VAX/vax_cpu1.c | 10 +++++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/VAX/vax_cmode.c b/VAX/vax_cmode.c index e97e1e8e..3725beae 100644 --- a/VAX/vax_cmode.c +++ b/VAX/vax_cmode.c @@ -1,6 +1,6 @@ /* vax_cmode.c: VAX compatibility mode - Copyright (c) 2004-2008, Robert M Supnik + Copyright (c) 2004-2016, Robert M Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -26,6 +26,7 @@ On a full VAX, this module implements PDP-11 compatibility mode. On a subset VAX, this module forces a fault if REI attempts to set PSL. + 14-Jul-16 RMS Updated PSL check (found by EVKAE 6.2) 28-May-08 RMS Inlined physical memory routines 25-Jan-08 RMS Fixed declaration (Mark Pizzolato) 03-May-06 RMS Fixed omission of SXT @@ -63,7 +64,7 @@ void WrRegW (int32 val, int32 rn); t_bool BadCmPSL (int32 newpsl) { -if ((newpsl & (PSL_FPD|PSL_IS|PSL_CUR|PSL_PRV|PSL_IPL)) != +if ((newpsl & (PSL_FPD|PSL_IS|PSL_CUR|PSL_PRV|PSL_IPL|PSW_DV|PSW_FU|PSW_IV)) != ((USER << PSL_V_CUR) | (USER << PSL_V_PRV))) return TRUE; else return FALSE; diff --git a/VAX/vax_cpu1.c b/VAX/vax_cpu1.c index 87161efc..f0373799 100644 --- a/VAX/vax_cpu1.c +++ b/VAX/vax_cpu1.c @@ -1,6 +1,6 @@ /* vax_cpu1.c: VAX complex instructions - Copyright (c) 1998-2012, Robert M Supnik + Copyright (c) 1998-2016, Robert M Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -23,6 +23,10 @@ used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from Robert M Supnik. + 14-Jul-16 RMS Corrected REI rule 9 + 21-Jun-16 RMS Removed reserved check on SIRR (Mark Pizzolato) + 18-Feb-16 RMS Changed variables in MxPR to unsigned + 29-Mar-15 RMS Added model-specific IPR max 15-Mar-12 RMS Fixed potential integer overflow in LDPCTX (Mark Pizzolato) 25-Nov-11 RMS Added VEC_QBUS test in interrupt handler 23-Mar-11 RMS Revised idle design (Mark Pizzolato) @@ -1193,7 +1197,7 @@ Rule SRM formulation Comment 6 tmp<25:24> LEQ tmp<23:22> tmp LEQ tmp 7 tmp<20:16> LEQ PSL<20:16> tmp LEQ PSL 8 tmp<31,29:28,21,15:8> = 0 tmp = 0 - 9 tmp<31> = 1 => tmp = 3, tmp = 3>, tmp = 0 + 9 tmp<31> = 1 => tmp = 3, tmp = 3>, tmp = 0 */ int32 op_rei (int32 acc) @@ -1545,7 +1549,7 @@ return cc; int32 op_mfpr (int32 *opnd) { -int32 prn = opnd[0]; +uint32 prn = (uint32)opnd[0]; int32 val; if (PSL & PSL_CUR) /* must be kernel */