From fe81c308bf8372f346340017a89bee4c4df3e057 Mon Sep 17 00:00:00 2001 From: Luke Kenneth Casson Leighton Date: Mon, 18 Jul 2022 21:05:27 +0100 Subject: [PATCH] begin function split in ISACaller https://bugs.libre-soc.org/show_bug.cgi?id=728 --- src/openpower/decoder/isa/caller.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/openpower/decoder/isa/caller.py b/src/openpower/decoder/isa/caller.py index c325fe1e..a509c2d7 100644 --- a/src/openpower/decoder/isa/caller.py +++ b/src/openpower/decoder/isa/caller.py @@ -1607,6 +1607,12 @@ class ISACaller(ISACallerHelper, ISAFPHelpers): else: self.gpr[regnum] = output + nia_update = (yield from self.check_step_increment(results, rc_en, + asmop, ins_name)) + if nia_update: + self.update_pc_next() + + def check_step_increment(self, results, rc_en, asmop, ins_name): # check if it is the SVSTATE.src/dest step that needs incrementing # this is our Sub-Program-Counter loop from 0 to VL-1 pre = False @@ -1677,8 +1683,7 @@ class ISACaller(ISACallerHelper, ISAFPHelpers): # to interrupt in between. sigh. self.last_op_svshape = asmop in ['svremap', 'svindex'] - if nia_update: - self.update_pc_next() + return nia_update def SVSTATE_NEXT(self, mode, submode): """explicitly moves srcstep/dststep on to next element, for -- 2.30.2