File tree 1 file changed +16
-0
lines changed
1 file changed +16
-0
lines changed Original file line number Diff line number Diff line change @@ -894,6 +894,9 @@ static int ARCH_DEP( run_sie )( REGS* regs )
894
894
895
895
PTT_SIE ( "run_sie setjmp" , 0 , 0 , 0 );
896
896
897
+ /* Establish longjmp destination for program check or
898
+ RETURN_INTCHECK, or SIE_INTERCEPT, or longjmp, etc.
899
+ */
897
900
if (!(icode = setjmp ( GUESTREGS -> progjmp )))
898
901
{
899
902
PTT_SIE ( "run_sie run..." , 0 , 0 , 0 );
@@ -1154,6 +1157,19 @@ endloop: ; // (nop to make compiler happy)
1154
1157
&& !SIE_INTERRUPT_PENDING ( GUESTREGS )
1155
1158
));
1156
1159
}
1160
+ else
1161
+ {
1162
+ /* Our above instruction execution loop didn't finish due
1163
+ to a longjmp(progjmp) having been done, bringing us to
1164
+ here, thereby causing the instruction counter to not be
1165
+ properly updated. Thus, we must update it here instead.
1166
+ */
1167
+ regs -> instcount += MAX_CPU_LOOPS /2 ;
1168
+ UPDATE_SYSBLK_INSTCOUNT ( MAX_CPU_LOOPS /2 );
1169
+
1170
+ /* Perform automatic instruction tracing if it's enabled */
1171
+ do_automatic_tracing ();
1172
+ }
1157
1173
1158
1174
PTT_SIE ( "run_sie !run" , icode , 0 , 0 );
1159
1175
You can’t perform that action at this time.
0 commit comments