Hi.

On 2017-05-18 00:55, Matt Burke wrote:
Whilst experimenting with a new device on VAX/VMS V4.5 I got a fatal
bugcheck (exception whilst above ASTDEL). The problem turned out the be
a reserved operand fault and I traced it back to the following code
(shown here from the VMS 3.0 source listings):

MOVL    PCB$L_PHD(R0),R0        ; Get PHD address
MOVB    PHD$B_ASTLVL(R0),R0     ; And fetch ASTLVL
MTPR    R0,#PR$_ASTLVL          ; Update current value

As you can see R0 will contain an S0 address after the first
instruction, then only the lower byte is overwritten with the new AST
level. The whole longword is then written to the ASTLVL IPR. Currently
the test for this IPR in vax_cpu1.c is:

Hum. Do I remember wrong? I seem to remember that when you MOVB to a register, the value should be sign extended. So not just the low byte should have been modified.

        Johnny

--
Johnny Billquist                  || "I'm on a bus
                                  ||  on a psychedelic trip
email: [email protected]             ||  Reading murder books
pdp is alive!                     ||  tryin' to stay hip" - B. Idol
_______________________________________________
Simh mailing list
[email protected]
http://mailman.trailing-edge.com/mailman/listinfo/simh

Reply via email to