From 0907d94bf1e71c5ec697db53933abc462e703c35 Mon Sep 17 00:00:00 2001 From: Alejandro Soto Date: Mon, 7 Nov 2022 13:29:23 -0600 Subject: Improve mult sim --- tb/sim/sim.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'tb/sim/sim.py') diff --git a/tb/sim/sim.py b/tb/sim/sim.py index 9a31bee..cc1f205 100755 --- a/tb/sim/sim.py +++ b/tb/sim/sim.py @@ -176,6 +176,13 @@ def unsigned(n): assert -0x8000_0000 <= n <= 0xffff_ffff return n + 0x1_0000_0000 if n < 0 else n +def split_dword(n): + assert -0x8000_0000_0000_0000 <= n <= 0xffff_ffff_ffff_ffff + if n < 0: + n += 0x1_0000_0000_0000_0000 + + return (n >> 32, n & 0xffff_ffff) + def int_bytes(n): return n.to_bytes(4, 'little', signed=n < 0) if type(n) is int else n @@ -218,11 +225,12 @@ spec = importlib.util.spec_from_file_location('sim', module_path) module = importlib.util.module_from_spec(spec) prelude = { - 'read_reg': read_reg, - 'read_mem': read_mem, - 'assert_reg': assert_reg, - 'assert_mem': assert_mem, - 'init_reg': init_reg + 'read_reg': read_reg, + 'read_mem': read_mem, + 'assert_reg': assert_reg, + 'assert_mem': assert_mem, + 'init_reg': init_reg, + 'split_dword': split_dword, } prelude.update({k: v for k, v in all_regs}) -- cgit v1.2.3