libutil: add O_NOCTTY back to old pty open code
[minix.git] / lib / libc / arch / i386 / sys-minix / _ipc.S
blobbcb70a20c6c31d74144e5558d9e557277418b5c9
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. */
12 ENTRY(_send_orig)
13         push    %ebp
14         movl    %esp, %ebp
15         push    %ebx
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 */
20         pop     %ebx
21         pop     %ebp
22         ret
24 ENTRY(_receive_orig)
25         push    %ebp
26         movl    %esp, %ebp
27         push    %ebx
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 */
33         movl    %ebx, (%ecx)
34         pop     %ebx
35         pop     %ebp
36         ret
38 ENTRY(_sendrec_orig)
39         push    %ebp
40         movl    %esp, %ebp
41         push    %ebx
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 */
46         pop     %ebx
47         pop     %ebp
48         ret
50 ENTRY(_minix_kernel_info_struct)
51         push    %ebp
52         movl    %esp, %ebp
53         push    %ebx
54         movl    $0, %eax
55         movl    $0, %ebx
56         movl    $MINIX_KERNINFO, %ecx
57         int     $IPCVEC_ORIG    /* trap to the kernel */
58         movl    8(%ebp), %ecx   /* ecx = return struct ptr */
59         movl    %ebx, (%ecx)
60         pop     %ebx
61         pop     %ebp
62         ret
64 ENTRY(_notify_orig)
65         push    %ebp
66         movl    %esp, %ebp
67         push    %ebx
68         movl    SRC_DST(%ebp), %eax     /* eax = destination  */
69         movl    $NOTIFY, %ecx   /* _notify(srcdst) */
70         int     $IPCVEC_ORIG    /* trap to the kernel */
71         pop     %ebx
72         pop     %ebp
73         ret
75 ENTRY(_sendnb_orig)
76         push    %ebp
77         movl    %esp, %ebp
78         push    %ebx
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 */
83         pop     %ebx
84         pop     %ebp
85         ret
87 ENTRY(_do_kernel_call_orig)
88         /* pass the message pointer to kernel in the %eax register */
89         movl    4(%esp), %eax
90         int     $KERVEC_ORIG
91         ret