summaryrefslogtreecommitdiffstats
path: root/src/kernel/syscall.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel/syscall.C')
-rw-r--r--src/kernel/syscall.C12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/kernel/syscall.C b/src/kernel/syscall.C
index d4df30733..04c65eb10 100644
--- a/src/kernel/syscall.C
+++ b/src/kernel/syscall.C
@@ -67,6 +67,18 @@ void kernel_execute_hype_doorbell()
l_work = t->cpu->doorbell_actions.pop();
}
+ //IPC messages come in only on the master, so
+ //If this is a doorbell to the master -- check
+ cpu_t* master = CpuManager::getMasterCPU();
+ if(t->cpu == master)
+ {
+ size_t pir = getPIR();
+ printk("IPC msg pir %lx incoming\n", pir);
+ //Send message to the intrrp in userspace indicating it has
+ // potential a pending IPC message.
+ InterruptMsgHdlr::sendIpcMsg(pir);
+ }
+
if (t->cpu->idle_task == t)
{
t->cpu->scheduler->returnRunnable();
OpenPOWER on IntegriCloud