summaryrefslogtreecommitdiff
path: root/tb/models
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2023-10-06 23:03:07 -0600
committerAlejandro Soto <alejandro@34project.org>2023-10-06 23:03:07 -0600
commit1c27d8fff3cf5a7eefbabd8cc83a8322b279f10b (patch)
treee6a3eadf51674b252df3f2488d5f3540ba47f100 /tb/models
parented9691af4b1b1d2d95cecc5dcb86e221b58d6cce (diff)
tb: test_smp: add more smp tests
Diffstat (limited to 'tb/models')
-rw-r--r--tb/models/smp.py29
1 files changed, 21 insertions, 8 deletions
diff --git a/tb/models/smp.py b/tb/models/smp.py
index a6439f8..c5bb760 100644
--- a/tb/models/smp.py
+++ b/tb/models/smp.py
@@ -2,16 +2,23 @@ __all__ = ['SmpModel']
class SmpModel:
def __init__(self):
- self._pe0 = SmpPe(0)
- self._pe1 = SmpPe(1)
- self._pe2 = SmpPe(1)
- self._pe3 = SmpPe(1)
+ self._pes = [
+ SmpPe(0),
+ SmpPe(1),
+ SmpPe(1),
+ SmpPe(1)]
def read(self):
- return self._pe0.read() \
- | self._pe1.read() << 8 \
- | self._pe2.read() << 16 \
- | self._pe3.read() << 24
+ return self._pes[0].read() \
+ | self._pes[1].read() << 8 \
+ | self._pes[2].read() << 16 \
+ | self._pes[3].read() << 24
+
+ def halt(self, cpu):
+ self._pes[cpu].halt()
+
+ def run(self, cpu):
+ self._pes[cpu].run()
class SmpPe:
def __init__(self, halt_on_reset):
@@ -20,3 +27,9 @@ class SmpPe:
def read(self):
return self._bkpt << 1 | self._halted
+
+ def halt(self):
+ self._halted = 1
+
+ def run(self):
+ self._halted = 0