etc/services - sync with NetBSD-8
[minix.git] / minix / lib / libc / arch / arm / sys / _ipc.S
blob26cee013167d89a344866cd2edac59c49cf4da9a
1 #include <minix/ipcconst.h>
2 #include <machine/asm.h>
4 /**========================================================================* */
5 /*                           IPC assembly routines                        * */
6 /**========================================================================* */
7 ENTRY(_ipc_send_intr)
8         push    {fp}
9         mov     fp, sp
10         mov     r2, r1       /* r2 = msg ptr */
11         mov     r1, r0       /* r1 = src_dest */
12         mov     r0, #SEND    /* _ipc_send(dest, ptr) */
13         mov     r3, #IPCVEC_INTR  /* r3 determines the SVC type */
14         svc     #0           /* trap to kernel */
15         pop     {fp}
16         bx      lr
18 ENTRY(_ipc_receive_intr)
19         push    {fp}
20         mov     fp, sp
21         push    {r2}         /* save status ptr */
22         mov     r2, r1       /* r2 = msg ptr */
23         mov     r1, r0       /* r1 = src_dest */
24         mov     r0, #RECEIVE /* _ipc_receive(src, ptr) */
25         mov     r3, #IPCVEC_INTR  /* r3 determines the SVC type */
26         svc     #0           /* trap to kernel */
27         pop     {r2}         /* restore status ptr */
28         str     r1, [r2]
29         pop     {fp}
30         bx      lr
32 ENTRY(_ipc_sendrec_intr)
33         push    {fp}
34         mov     fp, sp
35         mov     r2, r1       /* r2 = msg ptr */
36         mov     r1, r0       /* r1 = src_dest */
37         mov     r0, #SENDREC /* _ipc_sendrec(srcdest, ptr) */
38         mov     r3, #IPCVEC_INTR  /* r3 determines the SVC type */
39         svc     #0           /* trap to kernel */
40         pop     {fp}
41         bx      lr
43 ENTRY(_ipc_notify_intr)
44         push    {fp}
45         mov     fp, sp
46         mov     r1, r0       /* r1 = src_dest */
47         mov     r0, #NOTIFY  /* _ipc_notify(srcdst) */
48         mov     r3, #IPCVEC_INTR  /* r3 determines the SVC type */
49         svc     #0           /* trap to kernel */
50         pop     {fp}
51         bx      lr
53 ENTRY(_ipc_sendnb_intr)
54         push    {fp}
55         mov     fp, sp
56         mov     r2, r1       /* r2 = msg ptr */
57         mov     r1, r0       /* r1 = src_dest */
58         mov     r0, #SENDNB  /* _ipc_sendnb(dest, ptr) */
59         mov     r3, #IPCVEC_INTR  /* r3 determines the SVC type */
60         svc     #0           /* trap to kernel */
61         pop     {fp}
62         bx      lr
64 ENTRY(_ipc_senda_intr)
65         push    {fp}
66         mov     fp, sp
67         mov     r2, r0       /* r2 = table */
68         /* r1 already holds count */
69         mov     r0, #SENDA   /* _ipc_senda(table, count) */
70         mov     r3, #IPCVEC_INTR  /* r3 determines the SVC type */
71         svc     #0           /* trap to kernel */
72         pop     {fp}
73         bx      lr