From: Luke Kenneth Casson Leighton Date: Mon, 18 Jul 2022 20:05:27 +0000 (+0100) Subject: begin function split in ISACaller X-Git-Tag: sv_maxu_works-initial~244 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=fe81c308bf8372f346340017a89bee4c4df3e057;p=openpower-isa.git begin function split in ISACaller https://bugs.libre-soc.org/show_bug.cgi?id=728 --- 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