1 #include <minix/ipcconst.h>
2 #include <machine/asm.h>
4 SRC_DST = 8 /* source/ destination process */
5 MESSAGE = 12 /* message pointer */
6 STATUS = 16 /* status pointer */
9 MSGTAB = 8 /* message table */
10 TABCOUNT = 12 /* number of entries in message table */
12 /**========================================================================* */
13 /* IPC assembly routines * */
14 /**========================================================================* */
15 /* all message passing routines save ebx, but destroy eax and ecx. */
20 movl SRC_DST(%ebp), %eax /* eax = dest-src */
21 movl MESSAGE(%ebp), %ebx /* ebx = message pointer */
22 movl $SEND, %ecx /* _ipc_send(dest, ptr) */
23 int $IPCVEC_INTR /* trap to the kernel */
28 ENTRY(_ipc_receive_intr)
32 movl SRC_DST(%ebp), %eax /* eax = dest-src */
33 movl MESSAGE(%ebp), %ebx /* ebx = message pointer */
34 movl $RECEIVE, %ecx /* _ipc_receive(src, ptr) */
35 int $IPCVEC_INTR /* trap to the kernel */
36 movl STATUS(%ebp), %ecx /* ecx = status pointer */
42 ENTRY(_ipc_sendrec_intr)
46 movl SRC_DST(%ebp), %eax /* eax = dest-src */
47 movl MESSAGE(%ebp), %ebx /* ebx = message pointer */
48 movl $SENDREC, %ecx /* _ipc_sendrec(srcdest, ptr) */
49 int $IPCVEC_INTR /* trap to the kernel */
54 ENTRY(_ipc_notify_intr)
58 movl SRC_DST(%ebp), %eax /* eax = destination */
59 movl $NOTIFY, %ecx /* _ipc_notify(srcdst) */
60 int $IPCVEC_INTR /* trap to the kernel */
65 ENTRY(_ipc_sendnb_intr)
69 movl SRC_DST(%ebp), %eax /* eax = dest-src */
70 movl MESSAGE(%ebp), %ebx /* ebx = message pointer */
71 movl $SENDNB, %ecx /* _ipc_sendnb(dest, ptr) */
72 int $IPCVEC_INTR /* trap to the kernel */
77 ENTRY(_ipc_senda_intr)
81 movl TABCOUNT(%ebp), %eax /* eax = count */
82 movl MSGTAB(%ebp), %ebx /* ebx = table */
83 movl $SENDA, %ecx /* _ipc_senda(table, count) */
84 int $IPCVEC_INTR /* trap to the kernel */