From ab25aef8555476836ce6d329bb0cb8deca9ecba9 Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Wed, 24 Apr 2024 16:37:20 +0300 Subject: Add critical section logic to emu, develop monitor --- resources/asm/monitor_macros.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'resources/asm/monitor_macros.py') 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) -- cgit v1.3