diff --git a/alpha/alpha_cpu.c b/alpha/alpha_cpu.c index 6cc6544b..7a6d7c1c 100644 --- a/alpha/alpha_cpu.c +++ b/alpha/alpha_cpu.c @@ -393,7 +393,7 @@ while (reason == 0) { } if (sim_interval <= 0) { /* chk clock queue */ - if (reason = sim_process_event ()) break; + if ((reason = sim_process_event ())) break; intr_summ = pal_eval_intr (1); /* eval interrupts */ } @@ -1433,7 +1433,7 @@ while (reason == 0) { case 0x39: /* MINSW4 */ if (!(arch_mask & AMASK_MVI)) ABORT (EXC_RSVI); - for (i = 0, res = 0; i < 8; i = i++) { + for (i = 0, res = 0; i < 8; i++) { s1 = SEXT_W_Q (R[ra] >> (i << 4)); s2 = SEXT_W_Q (rbv >> (i << 4)); res = res | (((s1 <= s2)? R[ra]: rbv) & word_mask[i]); @@ -1451,7 +1451,7 @@ while (reason == 0) { case 0x3B: /* MINUW4 */ if (!(arch_mask & AMASK_MVI)) ABORT (EXC_RSVI); - for (i = 0, res = 0; i < 8; i = i++) { + for (i = 0, res = 0; i < 8; i++) { s64 = R[ra] & word_mask[i]; t64 = rbv & word_mask[i]; res = res | ((s64 <= t64)? s64: t64); @@ -1469,7 +1469,7 @@ while (reason == 0) { case 0x3D: /* MAXUW4 */ if (!(arch_mask & AMASK_MVI)) ABORT (EXC_RSVI); - for (i = 0, res = 0; i < 8; i = i++) { + for (i = 0, res = 0; i < 8; i++) { s64 = R[ra] & word_mask[i]; t64 = rbv & word_mask[i]; res = res | ((s64 >= t64)? s64: t64); @@ -1487,7 +1487,7 @@ while (reason == 0) { case 0x3F: /* MAXSW4 */ if (!(arch_mask & AMASK_MVI)) ABORT (EXC_RSVI); - for (i = 0, res = 0; i < 8; i = i++) { + for (i = 0, res = 0; i < 8; i++) { s1 = SEXT_W_Q (R[ra] >> (i << 4)); s2 = SEXT_W_Q (rbv >> (i << 4)); res = res | (((s1 >= s2)? R[ra]: rbv) & word_mask[i]); @@ -1834,7 +1834,7 @@ return SCPE_OK; t_stat cpu_show_hist (FILE *st, UNIT *uptr, int32 val, void *desc) { -uint32 k, di, lnt; +int32 k, di, lnt; char *cptr = (char *) desc; t_stat r; InstHistory *h; diff --git a/alpha/alpha_defs.h b/alpha/alpha_defs.h index 6f1ee907..7090bc94 100644 --- a/alpha/alpha_defs.h +++ b/alpha/alpha_defs.h @@ -34,11 +34,7 @@ #include "sim_defs.h" #include -#if defined (__GNUC__) -#define INLINE inline -#else #define INLINE -#endif /* Configuration */ diff --git a/alpha/alpha_ev5_cons.c b/alpha/alpha_ev5_cons.c index fb576705..f7675fb1 100644 --- a/alpha/alpha_ev5_cons.c +++ b/alpha/alpha_ev5_cons.c @@ -133,7 +133,7 @@ if ((dtlb_spage & SPEN_43) && (VPN_GETSP43 (vpn) == 2)) return (va & SP43_MASK); /* 43b superpage? */ if ((dtlb_spage & SPEN_32) && (VPN_GETSP32 (vpn) == 0x1FFE)) return (va & SP32_MASK); /* 32b superpage? */ -if (tlbp = dtlb_lookup (vpn)) /* try TLB */ +if ((tlbp = dtlb_lookup (vpn))) /* try TLB */ return PHYS_ADDR (tlbp->pfn, va); /* found it */ if (ev5_mcsr & MCSR_NT) exc = cons_find_pte_nt (va, &pte64); else exc = cons_find_pte_srm (va, &pte64); diff --git a/alpha/alpha_ev5_pal.c b/alpha/alpha_ev5_pal.c index 4910b0ce..124968e4 100644 --- a/alpha/alpha_ev5_pal.c +++ b/alpha/alpha_ev5_pal.c @@ -904,7 +904,8 @@ t_stat parse_pal_hwre (char *cptr, t_value *inst) { uint32 i, d, val = 0; int32 reg; -char *tptr, gbuf[CBUFSIZE]; +const char *tptr; +char gbuf[CBUFSIZE]; t_stat r; cptr = get_glyph (cptr, gbuf, '/'); diff --git a/alpha/alpha_fpv.c b/alpha/alpha_fpv.c index 67fca723..90513448 100644 --- a/alpha/alpha_fpv.c +++ b/alpha/alpha_fpv.c @@ -209,7 +209,7 @@ t_uint64 vax_cvtif (t_uint64 val, uint32 ir, uint32 dp) UFP a; if (val == 0) return 0; /* 0? return +0 */ -if (val < 0) { /* < 0? */ +if ((val & Q_SIGN) != 0) { /* < 0? */ a.sign = 1; /* set sign */ val = NEG_Q (val); /* |val| */ } diff --git a/alpha/alpha_sys.c b/alpha/alpha_sys.c index 6d84f75a..c3e4c8a4 100644 --- a/alpha/alpha_sys.c +++ b/alpha/alpha_sys.c @@ -716,7 +716,8 @@ t_uint64 bra, df, db; uint32 i, k, lit8, fl; int32 reg; t_stat r; -char *tptr, gbuf[CBUFSIZE]; +const char *tptr; +char gbuf[CBUFSIZE]; if ((r = parse_pal_hwre (cptr, inst)) < 0) return r; /* PAL hardware? */ cptr = get_glyph (cptr, gbuf, 0); /* get opcode */ diff --git a/sim_defs.h b/sim_defs.h index b4b81a3d..9c40b7ec 100644 --- a/sim_defs.h +++ b/sim_defs.h @@ -246,7 +246,13 @@ typedef uint32 t_addr; /* Stubs for inlining */ -#define SIM_INLINE +#if defined(_MSC_VER) +#define SIM_INLINE _inline +#elif defined(__GNUC__) +#define SIM_INLINE inline +#else +#define SIM_INLINE +#endif /* System independent definitions */ diff --git a/sim_fio.c b/sim_fio.c index a5819d29..820d0adc 100644 --- a/sim_fio.c +++ b/sim_fio.c @@ -369,10 +369,35 @@ int sim_set_fsize (FILE *fptr, t_addr size) { return _chsize(_fileno(fptr), (long)size); } + +int sim_set_fifo_nonblock (FILE *fptr) +{ +return -1; +} + #else /* !defined(_WIN32) */ #include int sim_set_fsize (FILE *fptr, t_addr size) { return ftruncate(fileno(fptr), (off_t)size); } + +#include +#include + +int sim_set_fifo_nonblock (FILE *fptr) +{ +struct stat stbuf; + +if (!fptr || fstat (fileno(fptr), &stbuf)) + return -1; +#if defined(S_IFIFO) && defined(O_NONBLOCK) +if ((stbuf.st_mode & S_IFIFO)) { + int flags = fcntl(fileno(fptr), F_GETFL, 0); + return fcntl(fileno(fptr), F_SETFL, flags | O_NONBLOCK); + } +#endif +return -1; +} + #endif diff --git a/sim_fio.h b/sim_fio.h index 9089a1f2..65d77612 100644 --- a/sim_fio.h +++ b/sim_fio.h @@ -54,6 +54,7 @@ FILE *sim_fopen (const char *file, const char *mode); int sim_fseek (FILE *st, t_addr offset, int whence); int sim_fseeko (FILE *st, t_offset offset, int whence); int sim_set_fsize (FILE *fptr, t_addr size); +int sim_set_fifo_nonblock (FILE *fptr); size_t sim_fread (void *bptr, size_t size, size_t count, FILE *fptr); size_t sim_fwrite (void *bptr, size_t size, size_t count, FILE *fptr); uint32 sim_fsize (FILE *fptr);