comparison cpu_dsl.py @ 2592:8ef8b2e99f4f

Fix regression in better unimplemented instruction error in CPU dsl
author Michael Pavone <pavone@retrodev.com>
date Sun, 09 Feb 2025 16:54:38 -0800
parents 563d05355a12
children 1c493b8c513b
comparison
equal deleted inserted replaced
2591:563d05355a12 2592:8ef8b2e99f4f
497 def _dispatchCImpl(prog, params): 497 def _dispatchCImpl(prog, params):
498 if len(params) == 1: 498 if len(params) == 1:
499 table = 'main' 499 table = 'main'
500 else: 500 else:
501 table = params[1] 501 table = params[1]
502 if table == 'main':
503 prog.mainDispatch.add(params[0])
504 if prog.dispatch == 'call': 502 if prog.dispatch == 'call':
505 return '\n\timpl_{tbl}[{op}](context, target_cycle);'.format(tbl = table, op = params[0]) 503 return '\n\timpl_{tbl}[{op}](context, target_cycle);'.format(tbl = table, op = params[0])
506 elif prog.dispatch == 'goto': 504 elif prog.dispatch == 'goto':
507 return '\n\tgoto *impl_{tbl}[{op}];'.format(tbl = table, op = params[0]) 505 return '\n\tgoto *impl_{tbl}[{op}];'.format(tbl = table, op = params[0])
508 else: 506 else:
2042 pieces.append('\n\t}') 2040 pieces.append('\n\t}')
2043 pieces.append('\n}') 2041 pieces.append('\n}')
2044 body.append('\nstatic void unimplemented({pre}context *context, uint32_t target_cycle)'.format(pre = self.prefix)) 2042 body.append('\nstatic void unimplemented({pre}context *context, uint32_t target_cycle)'.format(pre = self.prefix))
2045 body.append('\n{') 2043 body.append('\n{')
2046 if len(self.mainDispatch) == 1: 2044 if len(self.mainDispatch) == 1:
2047 dispatch = list(self.mainDispatch)[0] 2045 dispatch = self.resolveParam(list(self.mainDispatch)[0], None, {})
2048 body.append(f'\n\tfatal_error("Unimplemented instruction: %X\\n", {dispatch});') 2046 body.append(f'\n\tfatal_error("Unimplemented instruction: %X\\n", {dispatch});')
2049 else: 2047 else:
2050 body.append('\n\tfatal_error("Unimplemented instruction\\n");') 2048 body.append('\n\tfatal_error("Unimplemented instruction\\n");')
2051 body.append('\n}\n') 2049 body.append('\n}\n')
2052 elif self.dispatch == 'goto': 2050 elif self.dispatch == 'goto':