aboutsummaryrefslogtreecommitdiffstats
path: root/resources/asm/monitor_macros.py
diff options
context:
space:
mode:
authorJan Tuomi <jan@jantuomi.fi>2024-04-24 16:37:20 +0300
committerJan Tuomi <jan@jantuomi.fi>2024-04-24 16:37:20 +0300
commitab25aef8555476836ce6d329bb0cb8deca9ecba9 (patch)
tree3385f381f87183a9c37b276c1bcc254e8082c7c2 /resources/asm/monitor_macros.py
parentfad7d9ff1b7f1cc736d775e03096a398a7e9719a (diff)
Add critical section logic to emu, develop monitor
Diffstat (limited to 'resources/asm/monitor_macros.py')
-rw-r--r--resources/asm/monitor_macros.py16
1 files changed, 16 insertions, 0 deletions
diff --git a/resources/asm/monitor_macros.py b/resources/asm/monitor_macros.py
index e753996..b40be9e 100644
--- a/resources/asm/monitor_macros.py
+++ b/resources/asm/monitor_macros.py
@@ -27,3 +27,19 @@ def m_put_char(char_r: str, r1: str, r2: str) -> ExpandResult:
*expand_addi(r2, "1", r2),
*expand_str(r2, r1),
]
+
+def m_set_interrupt_state(r1: str, r2: str, value: int) -> ExpandResult:
+ return [
+ *expand_ldi("vt_iset_addr", r1),
+ *expand_ldr(r1, r1),
+ *expand_ldi(value, r2),
+ *expand_str(r2, r1),
+ ]
+
+@register_macro
+def m_set_critical(r1: str, r2: str) -> ExpandResult:
+ return m_set_interrupt_state(r1, r2, 1)
+
+@register_macro
+def m_clear_critical(r1: str, r2: str) -> ExpandResult:
+ return m_set_interrupt_state(r1, r2, 0)