On Wed, 22 May 2013 19:20:29 +0800, Robin Atwood wrote:
>Here is a puzzle. The program has taken an 0C1 half-way through an
>instruction.
If the PSW that you listed is the correct PSW, the code you
have shown is not the correct code. You could not have
received an operation exception for trying to execute a X'5A'
opcode. In fact, unless you are on a _very_ old processor,
the only halfword that shows an invalid opcode is at 00008008.
>It cannot have got there via the normal instruction sequence,
>so it must have been branched to. However, none of the registers have a
>value less than or equal to the PSW.
You show registers 1, 2, 3, 5 and 6 as being zero. And have
you forgotten register 0? What about relative branches?
>This is compiled C code so no PC/PR
>instructions are involved, AFAIK. How could the PSW get to be where it is?
>Absolute address X'A9E' is all zeros so we didn't go there.
ITYM virtual address A9E, which would be the same as real
address A9E. Absolute address A9E is something altogether
different and is not relevant.
--
Tom Marchant
>
>
>
>
>Using ASXB519 TCB: 007CC950 Abend Code: 0C1000 ILC: 00 Int: 04
>
>PSW: 000180E100008000 Csect EP:
>
>
>
> R0 R1 R2 R3 R4 R5 R6 R7
>
>7FFFF000 00000000 00000000 00000000 00FD6D40 00000000 00000000 000A0000
>
> R8 R9 R10 R11 R12 R13 R14 R15
>
>000140E1 000A0000 000150E1 000A0000 000160E1 000A0000 000170E1 000A0000
>
>
>
>00007FF6 00000016 92D5 7055 MVI 85(7),X'D5'
>
>00007FFA 0000001A 91FF 7056 TM 86(7),X'FF'
>
>00007FFE 0000001E 4770 5A9E BC 7,2718(0,5)
>
>00008002 00000022 92D5 7056 MVI 86(7),X'D5'
>
>00008006 00000026 41A0 61C8 LA 10,456(0,6)