Skip to content
Snippets Groups Projects
Commit db4a0f19 authored by Hans-Peter Deifel's avatar Hans-Peter Deifel
Browse files

Correctly handle interrupts that are not triggered

parent 64563bc7
Branches
No related tags found
No related merge requests found
......@@ -135,11 +135,15 @@ void _print_os_state(const char *format, const char *syscall, const char *func)
fflush(stdout);
}
static forceinline void _do_trigger_interrupt(uint8_t i, const char *format, const char *syscall, const char *func) {
static forceinline int _do_trigger_interrupt(uint8_t i, const char *format, const char *syscall, const char *func) {
if (arch::irq.interrupts_enabled()) {
_print_os_state(format, syscall, func);
arch::irq.deliver_interrupt(i);
return 1;
} else {
// printf("debug: Arg, interrupts disabled: %s, %s\n", syscall, func);
}
return 0;
}
......
......@@ -103,10 +103,12 @@ triggerInterrupts (Just ints) ident abb = do
return $
" if (" <> decisionMaker decision <> ") {\n"
<> " _syscall_prolog(" <> T.pack (show abb) <> ");\n"
<> " " <> doTriggerInterrupt interrupt_name (ident <> "_" <> interrupt_name) int <> ";"
<> " if (" <> doTriggerInterrupt interrupt_name (ident <> "_" <> interrupt_name) int <> ") {\n"
<> " _syscall_prolog(0);\n"
<> " _triggeredSomeInterrupt = 1;\n"
<> " " <> printOSState AtBasicBlockType ident "__func__" <> ";\n"
<> " _triggeredSomeInterrupt = 1;\n"
<> " }\n"
<> " _syscall_prolog(0);\n"
<> " }\n"
doTriggerInterrupt ident payload int = T.pack $
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment