From 941fb5c4e1f4465b84313a481d56167331b91c18 Mon Sep 17 00:00:00 2001
From: Rahix <rahix@rahix.de>
Date: Sun, 11 Aug 2019 14:54:22 +0200
Subject: [PATCH] fix(api): Change interrupt idle value to -1

Previously 0 was used but as 0 is also the ID of the reset interrupt,
this could lead to weird behaviors.

Signed-off-by: Rahix <rahix@rahix.de>
---
 epicardium/api/genapi.py            | 3 +++
 epicardium/api/interrupt-receiver.c | 2 +-
 epicardium/api/interrupt-sender.c   | 5 +++--
 3 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/epicardium/api/genapi.py b/epicardium/api/genapi.py
index 5fd546a6f..c6cefc927 100644
--- a/epicardium/api/genapi.py
+++ b/epicardium/api/genapi.py
@@ -231,6 +231,9 @@ void __dispatch_isr(api_int_id_t id)
             f_client.write(tmp.format(**isr))
 
         tmp = """\
+        case (-1):
+                /* Ignore a spurious interrupt */
+                break;
         default:
                 epic_isr_default_handler(id);
                 break;
diff --git a/epicardium/api/interrupt-receiver.c b/epicardium/api/interrupt-receiver.c
index c212a402d..7684c6bb1 100644
--- a/epicardium/api/interrupt-receiver.c
+++ b/epicardium/api/interrupt-receiver.c
@@ -10,5 +10,5 @@ void TMR5_IRQHandler(void)
 {
 	TMR_IntClear(MXC_TMR5);
 	__dispatch_isr(API_CALL_MEM->int_id);
-	API_CALL_MEM->int_id = 0;
+	API_CALL_MEM->int_id = (-1);
 }
diff --git a/epicardium/api/interrupt-sender.c b/epicardium/api/interrupt-sender.c
index cabd3bcb2..c20d998ef 100644
--- a/epicardium/api/interrupt-sender.c
+++ b/epicardium/api/interrupt-sender.c
@@ -11,8 +11,9 @@ int api_interrupt_trigger(api_int_id_t id)
 	}
 
 	if (int_enabled[id]) {
-		while (API_CALL_MEM->int_id)
+		while (API_CALL_MEM->int_id != (-1))
 			;
+
 		API_CALL_MEM->int_id = id;
 		TMR_TO_Start(MXC_TMR5, 1, 0);
 	}
@@ -21,7 +22,7 @@ int api_interrupt_trigger(api_int_id_t id)
 
 void api_interrupt_init(void)
 {
-	API_CALL_MEM->int_id = 0;
+	API_CALL_MEM->int_id = (-1);
 
 	for (int i = 0; i < EPIC_INT_NUM; i++) {
 		int_enabled[i] = false;
-- 
GitLab