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 */
8 /**========================================================================* */
9 /* IPC assembly routines * */
10 /**========================================================================* */
11 /* all message passing routines save ebx, but destroy eax and ecx. */
16 movl SRC_DST(%ebp), %eax /* eax = dest-src */
17 movl MESSAGE(%ebp), %ebx /* ebx = message pointer */
18 movl $SEND, %ecx /* _send(dest, ptr) */
19 int $IPCVEC_ORIG /* trap to the kernel */
28 movl SRC_DST(%ebp), %eax /* eax = dest-src */
29 movl MESSAGE(%ebp), %ebx /* ebx = message pointer */
30 movl $RECEIVE, %ecx /* _receive(src, ptr) */
31 int $IPCVEC_ORIG /* trap to the kernel */
32 movl STATUS(%ebp), %ecx /* ecx = status pointer */
42 movl SRC_DST(%ebp), %eax /* eax = dest-src */
43 movl MESSAGE(%ebp), %ebx /* ebx = message pointer */
44 movl $SENDREC, %ecx /* _sendrec(srcdest, ptr) */
45 int $IPCVEC_ORIG /* trap to the kernel */
50 ENTRY(_minix_kernel_info_struct)
56 movl $MINIX_KERNINFO, %ecx
57 int $IPCVEC_ORIG /* trap to the kernel */
58 movl 8(%ebp), %ecx /* ecx = return struct ptr */
68 movl SRC_DST(%ebp), %eax /* eax = destination */
69 movl $NOTIFY, %ecx /* _notify(srcdst) */
70 int $IPCVEC_ORIG /* trap to the kernel */
79 movl SRC_DST(%ebp), %eax /* eax = dest-src */
80 movl MESSAGE(%ebp), %ebx /* ebx = message pointer */
81 movl $SENDNB, %ecx /* _sendnb(dest, ptr) */
82 int $IPCVEC_ORIG /* trap to the kernel */
87 ENTRY(_do_kernel_call_orig)
88 /* pass the message pointer to kernel in the %eax register */